본문 바로가기

전체 글24

특이값 분해(SVD)의 응용: 이미지 압축 특이값 분해는 다음과 같이 어떤 \( m \times n \) 실수 행렬(real matrix) \( A \)를 3개의 행렬의 곱으로 분해한 것이다. \[ A = U \Sigma V^T \tag{1} \] 이 식을 풀어 쓰면 다음과 같다. \[ A = \sigma _1 \mathbf{u}_1 \mathbf{v}_1^T + \sigma _2 \mathbf{u}_2 \mathbf{v}_2^T + \cdots + \sigma _r \mathbf{u}_r \mathbf{v}_r^T \tag{2} \] 여기서 \( \sigma _i \)는 특이값으로서 그 숫자는 행렬 \( A \)의 랭크(rank)와 같다. 특이값은 큰 값에서 작은 값의 순서로 정렬시킨 것이다. \[ \sigma _1 \ge \sigma _2 \.. 2020. 7. 25.
컨볼루션 공식대로 계산하기 신호처리 분야에서는 LTI 시스템을 필터(filter)라고 한다. LTI 시스템의 임펄스 반응은 시스템 그 자체라고 했으므로 필터를 설계한다는 것은 곧 LTI 시스템의 임펄스 반응 \( h[n] \)을 결정하는 것과 같다. LTI 시스템의 출력 \( y[n] \)은 시스템의 임펄스 반응 \( h[n] \)과 입력 \( x[n] \)의 컨볼루션으로 주어지므로, \[ \begin{align} y[n] &= h[n]*x[n] \\ \\ &=\sum_{k=-\infty}^\infty h[n-k] x[k] \end{align} \] 필터 또는 임펄스 반응은 어떤 입력에 대해서 원하는 출력이 나오도록 설계되어야 한다. 임펄스 반응 \( h[n] \)의 길이가 무한대이면 무한임펄스반응 (IIR, infinite im.. 2020. 7. 25.
TensorFlow2 Model Subclassing API로 CNN 구현해 보기 Sequential API와 Functional API에 이어서 이번에는 Model Subclassing API를 이용하여 CNN을 구현해 보자. Model Subclassing API는 자유도가 제일 높은 모델 구축 방법으로서 사용자 자신의 방법으로 신경망을 학습시킬 수도 있다. 딥러닝을 깊게 공부하려면 반드시 알아야 할 API다. MNIST 숫자 분류 대신에 Fashion_MNIST 데이터셋을 이용해 보기로 한다. MNIST는 손글씨였지만 Fashion_MNIST는 신발, 가방, 옷 등의 흑백 그림을 모아 놓은 데이터셋이다. 텐서플로2에서는 Fashion_MNIST 데이터셋도 쉽게 다운로드할 수 있다. fashion_mnist = tf.keras.datasets.fashion_mnist (x_trai.. 2020. 7. 23.
LTI 시스템과 컨볼루션 이제 선형 시불변(LTI) 시스템을 알았으니 LTI 시스템에 임의의 입력 \( x[n] \) 을 가했을 때 출력 \( y[n] \) 이 어떻게 계산되는지 알아보자. 그 전에 먼저 특별한 입력 신호인 임펄스(impulse) 신호에 대해 알아보자. 임펄스 신호는 \( n=0 \) 일 때만 크기가 1 이고, \( n \ne 0 \) 에서는 크기가 모두 0 인 신호다. 기호로 \( \delta [n] \) 라 쓴다. 크기가 1 이므로 단위 임펄스라고 하기도 한다. 임펄스를 수식으로 표현하면 다음과 같다. \[ \delta [n]= \begin{cases} 1, & \mbox{if }n=0 \\ 0, & \mbox{if }n \ne 0 \end{cases} \] 그림으로 표현하면 다음과 같다. 임펄스 신호를 오른.. 2020. 7. 23.
특이값 분해(SVD)의 증명 어떤 \( m \times n \) 실수 행렬(real matrix) \( A \)와 그 전치 행렬 \( A^T \)의 행렬곱 \( AA^T \)와 \( A^T A \)는 대칭행렬이며 준정정 행렬(positive semi-definite matrix)이다. 먼저 대칭행렬인지 확인해 보자. 행렬곱을 전치한 다음에 원래 행렬과 같은 지 확인하면 된다. \[ (AA^T )^T=AA^T, \ \ \ (A^T A)^T=A^T A \] 그렇다면 \( AA^T \)이 준정정 행렬인지 확인해 보자. 어떤 벡터 \( \mathbf{x} \)에 대해서 다음 부등식을 만족하는지 확인하면 된다. \[ \begin{align} \mathbf{x} ^T (AA^T ) \mathbf{x} &= (A^T \mathbf{x} )^T .. 2020. 7. 23.