Skip to content
keicoon15 edited this page Aug 21, 2018 · 1 revision

대부분의 내용은 guide를 따랐습니다.

sparse auto-encoder는 auto-encoder에 sparse한 성격을 더한 것으로 일반적인 auto-encoder의 immediately layer에서는 hidden unit의 수가 input(=output) layer unit수 보다 작기 때문에 그러한 성격을 띄우지만 unit 수가 많은 경우 sparse한 성격을 넣어줄 수 있다.

sparse coding이 이점은 논외로 두고 sparse하다는 것을 어떻게 표현할지 생각해보면 hidden layer의 일정 수 unit의 output 값을 강제로 잠구면 된다. 이런 효과는 hidden unit을 update(back-propagation)할 때 추가할 수 있는데 J(W,b) <- (수학 공식을 사용하기가 불편하여 양해를 구한다)를 계산 (sum of (Weight * next layer's cost) * f'(z(i))^2) 할 때 penalty를 더함으로 얻을 수 있다. penalty는 (beta * sum of (KL(rho||hat of rho))로 KL은 (sum of (rho * log(rho / hat of rho) + (1 - rho) * log((1 - rho) / (1 - hat of rho))) 이다.

아무튼 rho(sparsity parameter)는 average activation of hidden unit 이고 rho를 임의의 value로 수렴하게 만드는 것이 앞에서 말한 일정 수 unit을 잠그는 과정이다. 일반적인 back-propagation 대신 sparsity back-propagation을 사용하면 보다 정확한 gradient descent를 얻을 수 있다고 하니 auto-encoder보다 더 나은 성능을 기대할수 있다.

Clone this wiki locally