통계, IT, AI

딥러닝: 화풍을 모방하기 (9) - 책 요약: 5. 자기부호화기 본문

머신러닝

딥러닝: 화풍을 모방하기 (9) - 책 요약: 5. 자기부호화기

Harold_Finch 2017. 4. 17. 21:28

5. 자기부호화기: Autoencoder

5.1. 개요


  자기부호화기(Autoencoder)란 출력이 입력과 같도록 설계한 신경망이다. 예를 들어 그림 5-1과 같이 입력층과 출력층의 유닛의 수가 서로 같은 2층의 신경망을 생각해보자.


그림 5-1 2층 자기부호화기

  1층에서는 입력 \(x\)가 \(f(Wx+b)\)를 거쳐 \(y(x)\)로 부호화된다. 2층에서는 \(y(x)\)가 \(\tilde{f}(\tilde{W}y(x)+\tilde{b})\)을 통하여 \(x\)로 복호화된다. 즉, 이 신경망의 목표는 입력을 부호화한 뒤 이어 다시 복호화했을 때 원래의 입력을 충실하게 재현할 수 있는 파라미터를 찾는 것이다.


5.2. 자기부호화기의 설계


5.2.1 출력층의 활성화 함수와 오차함수


  자기부호화기의 활성화 함수는 중간층의 \(f\)와 출력층의 \(\tilde{f}\)가 있다. 중간층의 \(f\)는 자유롭게 결정하되 일반적으로 비선형함수를 사용한다. 출력층의 \(\tilde{f}\)는 출력이 입력이 될 수 있도록 입력 데이터에 따라서 다르게 결정한다. 이에 따라 \(x\)와 \(\tilde{x}(x)\)의 거리 척도가 되는 오차함수도 입력데이터의 형식에 따라서 다르게 결정한다. 


5.2.2 가중치 공유


  입력층과 중간층의 유닛 수를 각각 \(D_x\), \(D_y\)라고 할 때, \(W\), \(\tilde{W}\)의 크기는 각각 \(D_y \times D_x\), \(D_x \times D_y\)가 된다. 이 두개의 가중치는 서로 다른 것을 사용하지만, 서로 크기가 유사하고, 신경망의 설계시 과적합(overfitting)을 방지하기 위하여 \(\tilde{W}=W^{T}\)와 같이 공유할 수도 있다.


5.3 자기부호화기의 동작


5.3.1 데이터를 나타내는 특징을 학습


  자기부호화기도 일반적인 신경망과 마찬가지로 오차함수를 최소화하는 과정을 통해 파라미터를 결정한다. 보통, 중간층의 \((W, b)\)와 출력층의 \((\tilde{W}, \tilde{b})\) 중 유용한 것은 전자 뿐이다. 이들 파라미터는 자질(feature)이라 불린다. 자기부호화기의 목적은 자질의 학습을 통해 샘플 \(x\)의 또 다른 표현인 \(y\)를 얻는 것이다.  


5.3.2 주성분 분석과의 관계


  내용이 어렵고 학습의 목적과 직접적인 관련이 없으므로 생략한다.


5.4 희소 규제화


5.4.1 데이터의 과완비한 표현


  좋은 자질은 입력 데이터에서 소음을 제거하고 신호만 추출하는 것이다. 그렇다면 입력 데이터의 성분 수 \(D_x\)보다도 그것을 부호화된 층의 성분 수 \(D_y\)가 더 작아야 한다. 하지만 항상 그렇게 신경망을 구성할 수 있는 것은 아닐 수도 있다. 이 절에서는 희소 규제화라는 방법을 통하여 여분의 자유도를 갖는 경우에도 좋은 자질을 얻는 것을 설명한다. 그리고 이것을 과완비(overcomplete)한 표현이라고 한다.


  희소 규제화는 입력 \(x\)로부터 중간층의 출력 \(y\)를 거쳐 출력 \(\tilde{x}\)가 계산되는 과정에 있어서, \(y\)의 각 유닛 중 되도록 적은 수의 유닛만이 0이 아닌 출력치를 갖고 나머지는 0의 출력을 갖도록 하는 제약을 가하는 것을 말한다. 구체적으로, 원래의 오차함수 \(E(w)\)에 희소 규제화 항을 추가한 \(\tilde{E}(w)\)를 최소화한다.


$$\tilde{E}(\boldsymbol{w})\equiv E(\boldsymbol{w})+\beta \sum_{j=1}^{D_y}KL(\rho||\hat{\rho_{j}})\tag{1}\label{(1)}$$


  여기서 \(\hat{\rho_{j}}\)는 중간층의 유닛 \(j\)의 평균 활성도의 추정치이며 \(\rho\)는 그 목표가 되는 파라미터이다. \(\rho\)에 작은 겂을 설정하고 식 (1)을 최소화하면 중간층의 각 유닛의 평균 활성도가 \(\rho\)에 가깝게 되고, \(E(\boldsymbol{w})\)가 작아지도록 \(\boldsymbol{w}\)가 정해진다. \(\beta\)는 이 두가지 목표의 균형을 결정하는 값이다. 그리고 평균 활성도 \(\hat{\rho}\)는 입력 \(x_n\)에 대하여 식 (2)와 같이 계산한다.


$$\hat{\rho}=\frac{1}{N}\sum_{n=1}^{N}y_{j}(x_n) \tag{2}\label{(2)}$$


  식 (1)의 \(KL(\rho||\hat{\rho})\)는 다음과 같이 정의된다.


$$KL(\rho||\hat{\rho})=\rho \log\left( \frac{\rho}{\hat{\rho}} \right) + (1-\rho) \log\left( \frac{1-\rho}{1-\hat{\rho}} \right) \tag{3} \label{(3)}$$


  이 식은 평균치가 각각 \(\rho\)와 \(\hat{\rho}_{j}\)인 두 개의 베르누이 분포 간의 쿨백-라이블러 발산(Kullback-Leibler divergence)을 나타낸다. 중간층의 유닛이 이진값(binary)의 출력을 갖고 그 출력이 확률 \(\rho\)로 1, \(1-\rho\)로 0이 되는 경우, 이 유닛의 출력의 실제 분포와 이상적인 분포 사이의 유사도를 측정한다. 중간층의 출력이 이진값이 아니더라도 활성화 함수의 출력이 0보다 크면 식 (2)의 규제화는 효과가 있다.

그림 5-2 쿨백-라이블러 발산의 예시

5.4.2 최적화


  식 (3)의 \(\tilde{E}(\boldsymbol{w})\)도 경사 하강법을 사용하여 최소화할 수 있다. 단, 희소 규제화 항이 추가되었기 때문에 \(\delta\)의 역전파를 수정해야 한다. \(\delta^{(l)}_j=\partial{\tilde{E}(\boldsymbol{w})}/\partial{u^{(l)}_j}\)에서 \(\tilde{E}(\boldsymbol{w})\)가 포함된 희소 규제화 항의 미분만 보면 식 (4)와 같다.


$$\frac{\partial{}}{\partial{u^{(l)}_j}}\left( \beta \sum_{j=1}^{D_l}KL(\rho||\hat{\rho}) \right)=\beta \frac{\partial{}}{\partial{\hat{\rho}_j}}KL(\rho||\hat{\rho}_j)\frac{\partial{\hat{\rho}_j}}{\partial{u^{(l)}_j}} \tag{4} \label{(4)}$$


  식 (4)에서 첫 번째 미분은 다음과 같다.


$$\frac{\partial{}}{\partial{\hat{\rho}_j}}KL(\rho||\hat{\rho}_j)=-\frac{\rho}{\hat{\rho}_j} + \frac{1-\rho}{1-\hat{\rho}_j} \tag{5} \label{(5)}$$


  두 번째 미분은 식 (2)의 정의에 의하여 다음과 같다.


$$\frac{\partial{\hat{\rho}_j}}{\partial{u^{(l)}_j}}=f'(u^{(l)}_j) \tag{6} \label{(6)}$$


  따라서 \(\delta^{(l)}_j\)는 식 (7)과 같다.


$$\delta^{(l)}_{j}=\left\{ \sum_{k}\delta_{k}^{(l+1)}w_{kj}^{(l+1)} + \beta\left( -\frac{\rho}{\hat{\rho}_j} + \frac{1-\rho}{1-\hat{\rho}_j}\right) \right\}f'(u^{(l)}_j) \tag{7} \label{(7)}$$


  이렇게 수정된 \(\delta^{(l)}_{j}\)에 따라 역전파를 하여 \(\partial{\tilde{E}(\boldsymbol{w})}/\partial{w^{(l)}_{ji}}=\delta^{(l)}_{j}z_{i}^{(l-1)}\)를 계산한다. 출력층은 규제화의 대상이 아니므로 출력층의 \(\delta^{(L)}_j\)는 바뀌지 않는다.


  식 (7)에서 \(\delta^{(l)}_{j}\)를 계산할 때 평균 활성도 \(\hat{\rho}_j\)의 값이 필요하다. 평균 활성도는 모든 \(N\)에 대한 평균이므로 이것을 엄밀하게 구하기 위해서는 모든 샘플을 사용하여 앞먹임(feedforward) 계산을 한 후 구해야 한다. 하지만 mini-batch를 사용하는 경우에는 이러한 방식이 매우 비효율적이므로 mini-batch 내의 샘플에 대해서만 이 작업을 수행한다. 그리고 mini-batch 간에 다음과 같은 가중평균을 샘플 전체에 대한 값의 근사치로 활용한다.


$$\hat{\rho}^{(t)}_j=\lambda \hat{\rho}^{(t-1)}_j + (1-\lambda)\hat{\rho}_j \tag{8} \label{(8)}$$


  \(\hat{\rho}^{(t-1)}_j\)는 이전 mini-batch에서 사용한 평균 활성도이며 \(\hat{\rho}_j\)는 현재 mini-batch에서 새롭게 계산한 평균 활성도이다. \(\lambda\)는 평균의 가중치로 0.9 정도의 값을 취한다.


5.4.3 희소 규제화의 효과


  지금까지 설명한 바와 같은 방법으로 자기부호화기에 희소 규제화 항을 추가하여 MNIST 데이터를 학습한 결과가 그림 5-3[각주:1]과 같다. 해당 학습에서는 \(\rho=0.05\)로 하고 \(\beta\)를 0.0에서 3.0까지 변화시켰을 때, 각 \(\beta\)에 대해 학습된 자질을 그림으로 표시하였다.

 

그림 5-3 희소 규제화 항의 가중치에 따라 학습되는 자질의 차이

  \(\beta=0.0\), 즉 희소 규제화를 하지 않은 경우에는 어수선한 패턴을 보이고 있다. 그에 비해 \(\beta=0.1\)인 경우에는 숫자의 일부분과 같은 패턴을 보인다. 이 패턴의 조합으로 임의의 숫자가 표현될 수 있으므로 직감적으로 이것이 좋은 자질이라고 볼 수 있을 듯 하다. 한편, \(\beta=3.0\)인 경우에는 파라미터가 숫자를 그대로 선택하고 만다. 이래서는 숫자의 매묘한 변화를 포착할 수 없을 것이다.


5.5 데이터의 백색화


  내용이 어렵고 학습의 목적과 직접적인 관련이 없으므로 생략한다.


5.6 딥 뉴럴넷의 사전훈련


  여러 층으로 구성된 신경망은 기울기 소실로 인하여 학습이 잘 되지 않는다. 이것을 해결할 수 있는 방법 중의 하나가 사전 훈련이다. 사전훈련은 학습을 진행하기 전 학습이 잘 일어날 수 있는 초기값을 설정하고자 하는 것이다. 자기부호화기를 이용한 방법이 가장 기본적이다.

그림 5-4 자기부호화기에 기초한 사전 훈련

  구체적인 방법은 다음과 같다. 그림 5-4 (b)의 가장 왼쪽과 같은 단층 신경망으로 자기부호화기를 구성하고 훈련 데이터 \(x_n\)을 학습하여 \(W^{(2)}\)와 \(b^{(2)}\)를 결정한다. 그리고 \(x_n\)을 여기에 입력하여 \(z_n^{(2)}\)를 얻는다. 이제 \(z_n^{(2)}\)를 입력으로 하여 \(W^{(3)}\)과 \(b^{(3)}\)을 포함하는 자기부호화기를 만들어 \(W^{(3)}\)과 \(b^{(3)}\)를 학습시킨다. 이 과정을 \(L-1\)층까지 반복한다. 마지막 층은 랜덤하게 결정한다.


  그림 5-4 (c)와 같이 이렇게 사전훈련을 거쳐서 얻은 파라미터를 초기값으로 사용하면 기울기 소실 문제가 발생할 가능성이 훨씬 낮고 학습이 더 잘 진행되는 것으로 알려져 있다. 하지만 이것은 경험적인 지식일 뿐 왜 그렇게 되는지는 이론적으로 밝혀진 바가 없다. 다만, 데이터의 분포를 자기부호화기를 통하여 잘 포착했기 때문이라고 추측해 볼 수는 있다.


5.7 그외의 자기부호화기


5.7.1. 심층 자기부호화기


  그림 5-4는 단층 자기부호화기이다. 자기부호화기도 여러층으로 구성할 수 있는데, 여러 층으로 구성된 신경망의 학습이 어려웠던 것과 마찬가지로 여러층으로 구성된 자기부호화기도 학습이 어렵다.


5.7.2. 디노이징 자기부호화기


  자기부호화기와 같은 역할을 하는 것으로 RMB(Restricted Boltzman Machine)이 있다. RBM도 단층 구조의 신명망을 통해 비지도학습을 수행하지만, 자기부호화기와는 다르게 확률적 생성 모델을 학습하며 최적화 방법에도 확률적인 요소가 포함된다. RBM은 자기부호화기보다 우수하지만 자기부호화기의 학습에 확률적인 요소를 도입하여 RBM과 비슷한 성능을 갖게 할 수 있다. 이를 디노이징 자기부호화기(Denoising autoencoder)라고 한다.


  지금까지 자기부호화기에서는 출력이 입력과 같았지만 디노이징 자기부호화기는 입력 \(x\)에 특정한 변형을 가한 후 \(x\)와 가까워지도록 학습시킨다. 예를 들면 \(x\)에 평균이 0, 분산이 \(\sigma^2\)인 정규분포를 따르는 노이즈를 더하여 \(\tilde{x}\)라고 한 후 이것을 입력, \(x\)을 출력으로 할 수 있다. 이를 통하여 훈련 후에는 입력을 재현할 수 있는 것 뿐만 아니라 노이즈를 제거하는 능력을 기대할 수 있다. \(\tilde{x}\)를 만드는 방법에는 여러가지 방법이 있을 수 있다.

  1. 책에서는 그림 5-6이다. [본문으로]
Comments