티스토리 뷰

Other Activation Functions


 - 이전에 gradient descent로는 해결이 안되었던 문제를 해결하려면 sigmoid function이 아닌

 - 다른 activation function을 사용하여야한다.

 - 바로 "Hyperbolic Tangent" 이다.

 - sigmoid function과 유사한 그래프를 보이지만, 기울기가 다르다.

 - 이 작은 차이가 neural networks에 엄청난 영향을 미친다.



 - 또 다른 activation function으로는 Rectified Linear Unit(ReLU)가 있다.

 - 이건 매우 간단하다. 

 - 만약 positive일 경우 동일한 값을 리턴, negative일 경우 0을 리턴한다.

 - 이 방법은 positive의 경우 미분했을때 기울기가 1이기에

 - sigmoid function을 대체하여 정확도를 많이 희생하지 않으면서도 머신러닝의 학습을 상당히 진전시킬 수 있다.

 - 선형성을 유지하고있는데도, 비선형의 해결책이 될 수 있다는점이 흥미롭다.

 


 - 따라서 ReLU activation function을 사용하면 위의 미분값들을 모두 곱하면

 - 그 결과가 gradient descent가 가능한 정도로 나오기 때문에 앞선 문제점을 극복할 수 있다.



 - 다층 레이어 구조의 예시이고, 이번엔 hidden layers단에서 ReLU function을 사용하여 처리해보자.

 - 주목할점은 마지막 output unit은 여전히 0과 1사이의 값이어야 하기 때문에 sigmoid function 이라는 점이다.

 - output layer 단에서도 ReLU function을 사용하게되면 regression models가 되는데, 이는 나중에 따로 다루게 됨.






Batch vs Stochastic Gradient Descent


 - 다시한번 gradient descent가 어떤역할을 하는지 되짚어보자.

 - error function으로부터 리턴받은 error를 바탕으로 음의 gradient 방향으로 error를 줄여나간다

 - 각 step은 epoch라 부른다.



 - input을 통해 순방향으로 네트워크를 진행해 나가 output을 도출해낸다.

 - 그 다음 다시 weights을 업데이트하기위해 backpropagation을 진행한다.

 - 근데 만약 우측의 네트워크 layers들이 엄청난 양의 데이터때문에 그에 비례하게

 - 엄청나게 많은 layer들이 존재한다면, 컴퓨터의 연산이 과부화에 걸릴것이다.

 - 근데 과연 우린 모든 data를 매번 네트워크에 대입하여 연산하여야할까???

 - 만약 특정 데이터들만 뽑아서 그 데이터들을 바탕으로 weights를 수정하며 네트워크를 변경해간다면?

 - 연산이 빨라질 것이고, 한번에 처리하는 양도 적어 과부화 걱정도 하지 않아도 된다.

 - 이 아이디어가 바로 Stochastic Gradient Descent 이다.



 - Stochastic Gradient Descent에서는 전체 데이터중 subset 데이터들을 랜덤하게 뽑아 이를 batch라 부른다.

 - 해당 batch를 대상으로 네트워크를 먼저 돌린다. 

 - 그리고 그 다음 batch를 대상으로 네트워크를 돌리며 새로운 weights를 계속 업데이트 한다.

 - 이렇게 얻어진 최종 네트워크 모델은, 최초에 단 한번의 시도로 전체 데이터를 대상으로 네트워크를 돌린것보다

 - 정확도는 떨어진다. 하지만 이것이 완벽하게 정확한 네트워크보다 더 낫다는것을 나중에 알게될 것임.






Learning Rate Decay


 - learning rate는 무슨역할을 할까?

 - 보통 learning rate는 클수록 더 급격하게 error를 줄여나간다.

 - 즉, step의 폭이 커서 금방 error의 최저점에 도달하더라도, 여기서 끝내지 않고

 - 다시 에러가 커진다거나 하는 오류를 범할 수 있다.

 - learning rate가 작게되면 느리지만, 정확하게 우리가 원하는 error의 최저점에 도달할 수 있다.

 - 따라서 만약 설계한 네트워크가 적절하게 작동하지 않는다면, learning rate를 줄여보면 된다.



 - 가장 이상적인 learning rate는 가파를땐 스텝을 길게, 평평할땐 스텝을 짧게 이동시킨다.






Momentum


 - global minimum에 도달하기위한 또 다른 아이디어로는 momentum이 있다.

 - momentum이란 local minimum에 도달하더라도 더 앞으로 나아가도록 

 - 0과 1사이의 상수인 베타를 가중치를 둬서 앞으로 나아가게 해 준다.

 - 즉, 최초 시작지점으로부터 local minimum까지의 각 step에 베타를 곱해주는 개념인데,

 - local minimum에 도달하기 바로 직전의 step은 1이다.

 - 그 전의 step엔 베타를, 그 전의 step엔 베타의 제곱을 곱해줘서 총 합을 고려해서

 - 앞으로 나아가게 해준다. 

 - 만약 global minimum에 도달하게 되더라도 또 앞으로 나아가지만 다시 뒤로 되돌아온다.

 - 개념상으로는 애매하지만 실제로 적용해보면 매우 정확하게 들어맞는다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함