iMTE

Sparsity regularization 본문

Deep learning/Tensorflow

Sparsity regularization

Wonju Seo 2018. 6. 21. 20:52

Sparse regularization


Autoencoder는 입력된 데이터를 저차원으로 encoding하고 다시 고차원으로 decoding하는 unsupervised learning이다. 만약 hidden layer가 input layer의 dimension보다 작고, activation function으로 linear function을 사용하면, 이 autoencoder는 PCA와 동일한 역할을 한다. 즉, 분산이 큰 factor를 찾아내고 그 factor로 데이터를 transformation하는 것이다. 만약, hidden layer와 input layer의 차원이 같고 activation function이 linear function이라면, hidden layer는 identity matrix와 같은 항등 행렬을 학습할 것이다. 따라서 목적에 따라 layer를 구성해야한다.


희소한 feature를 학습하도록 하는 autoencoder를 설계하자. 여기서 희소하다는 것은 '의미'가 있는 표현을 의미한다. sparse autoencoder는 중간층의 차원을 입력의 차원보다 높임으로 희소한 feature를 학습하도록 한다. 다음은 cost function이다.



sparse feature를 학습하기 위해서 새로운 regularization term이 추가되었다. 이 term은 Kullback-Leibler divergence로 불리며, 두 개의 베르누이 random variable의 disctribution간의 차이를 나타낸다. 만약 둘의 분포가 같다면 KL 값은 0이 되고, 다르면 KL은 0보다 큰 값을 갖게 된다.


여기서 는 중간층 unit j의 평균 활성도의 추정치이다. 반대로 는 목표치가 되는 parameter이다.


KL term으로 인해서 gradient는 다음과 같은 과정을 통해서 계산된다.



최종적인 delta는 다음과 같이 계산된다.



Tensorflow로 구현한 결과 다음과 같다. p = 0.0001


Source: https://github.com/Apress/pro-deep-learning-w-tensorflow/blob/master/9781484230954/Chapter5.ipynb



학습된 결과 흐릿하게 MNIST가 복구되는 것을 확인할 수 있다.





학습된 encoder의 weight을 확인해본 결과 위와 같은 결과를 얻을 수 있었다. Sparse autoencoder가 숫자를 분석한 스트로크와 같은 패턴을 보여준다. 이 스트로크이 조합으로 숫자가 표현될 수 있다.


'Deep learning > Tensorflow' 카테고리의 다른 글

Restricted Boltzmann Machine  (0) 2018.06.21
Comments