티스토리 뷰

Dropout


 - 만약 우리가 운동을 하는데 자기가 더 많이 사용하는 손(오른손잡이 와 같이)으로만 운동을 한다면?  

 - 한쪽 팔뚝만 굵어지는 일이 생기게 된다.

 - 한쪽 팔뚝만 키우려고 운동하는 사람은 없지 않은가? 따라서 성공한 운동이 되었다고 볼 수 없다.

 - 마찬가지로 네트워크를 학습하는 과정에서도 한쪽의 weight이 더 큰 경우

 - 특정 방향으로 편향되어 네트워크가 진행되는 경향이 생길 수 있다.

 - 따라서 이와같은 경우를 방지하고자, 특정 unit을 끄고(turn off) 나머지 네트워크 학습을 진행하곤 한다.



 - 이를 구현하는 방법으로는 각 노드들이 연산에서 (순방향 및 역방향 모두) 제외될 확률을 주는 알고리즘을 통해

 - 랜덤하게 특정 노드들을 연산에서 제외시킨다.

 - 위의 경우 0.2로 명시해 둔 것과 같이 확률상으로 보면 어떤 노드는 한번도 제외되지 않을 수 있고

 - 어떤 노드는 매번 제외 될 수 있다. 하지만 이는 epoch의 수가 증가함에 따라 큰수의 법칙에 의해

 - 대부분의 노드들이 평균값을 유지하게 되므로 괜찮다.

 - 이 방법을 dropout 이라고 하며 neural network 를 설계 및 학습함에 있어 매우 자주 쓰이는 방법이다.






Local Minima


 - gradient descent를 다시 되짚어보면, error의 정점에서 기울기가 가장 급격하게 내려가는 방향으로

 - 하향하도록 방향을 설정할 수 있게 해준다.

 - 따라서 좌측 점에서 출발하여 우측 깃발까지 가야할 경우

 - 위와같은 그래프 상에서는 저 첫번째 굴곡에서 갇히게 된다.(기울기가 더 내려가는곳이 없으므로)

 - 즉 gradient descent의 방법으로는 우리가 원하는 방향까지 더 나아갈 수 없다는 얘기

 - 따라서 우린 또다른 뭔가가 필요하다.

 - 우리의 목표는 global minimum point인 초록지점에 도달하는것이 최종 목표이기 때문.






Random Restart


 - 이를 해결할 수 있는 방법으로는, 몇몇의 랜덤한 여러 지점에서 gradient descent를 시도하는것이다.

 - 따라서 각 저점에서의 error를 비교해서 최저점을 판단해 내면 된다.

 - 이렇게 이동한 최저점은 말 그대로 global minimun 이거나 적어도 local minimum point가 되기 때문.






Vanishing Gradient


 - sigmoid function에 대해 봐보자. 그래프 상에서 봐보면 윗부분에서의 미분값이 거의 0에 가깝다

 - 이렇게 되면 gradient descent를 이용하여 error를 줄여나가기가 매우 어렵다.



 - 노드와 함께 봐보면, 이전에 weights에 대한 error function의 미분값을 우리는 

 - output으로 가는 경로의 모든 노드에서 계산된 미분값의 곱으로 배웠다.

 - 이 모든 미분값들은 sigmoid function의 미분값이므로 값이 매우 작고, 그 최종 결과는 진짜 매우매우 작다.



 - 이는 gradient descent를 통해 error를 줄여 나감에 있어, 그 이동하는 step이 매우 극미하므로

 - error의 최저점까지 도달하기가 거의 어렵다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함