본문 바로가기
딥러닝

알고리즘의 발전 - Drop-out

by 미스터탁 2017. 4. 3.


Drop-out 또한 신경망의 고질적인 문제인 over-fitting문제를 완화시킬 수 있는 테크닉(알고리즘이라고 말하기는 애매한듯.)인데, 


매우 심플하면서 효율적인 테크닉으로 학습과정에서 layer의 node을 random하게 drop함으로써, regularization효과를 가지게 한다.


Drop-out의 개념은 아래 그림을 보면 좀 더 직관적으로 이해가 된다.


input -> hidden, hidden -> hidden 으로 weight를 전파할 때에 random 하게 node를 꺼버리는 것으로서, 


실제로 구현 할때에는 drop-out 확률을 지정해 그 확률 만큼 random하게 노드를 선택해 그 노드들은 0을 곱해주는 식으로 연산이 진행된다.







Drop-out이 나오게 된 motivation이 매우 흥미로운데,


히튼 교수의 논문에서는 (A Simple Way to Prevent Neural Networks from Overfitting(Nitish Srivastava, Geoffrey Hinton ,2014))


Drop-out의 Motivation을 theory of the role of sex in evolution로 설명하고 있다. 자식 세대를 ½의 부모 유전과 1/2의 변이와 결합으로


만들 수 있고, random한 유전과 결합 했을 때 더 robust한 자식 세대를 만들 수 있다고 서술되어 있다. 


(The ability of a set of genes to be able to work well with another random set of genes makes them more robust. Each hidden unit in a neural network trained with dropout must learn to work with a randomly chosen sample of other units. This should make each hidden unit more robust and drive it towards creating useful features on its own without relying on other hidden units to correct its mistakes)




MNIST에 적용한 Drop-out의 실험 결과를 보면, 다양한 parameter를 적용하여 비교 실험한 결과 Drop-out을 한 쪽이 항상 더 좋은 성능을 


내었다고 한다.


Drop-out은 마치 random forest의 처럼 랜덤하게 변수(input, hidden node)를 선택하여 tree간(network)의 상관성을 줄임으로써


regularization 한 느낌이라고 이해하면 좋을 듯 싶다.






더불어, Drop-out + ReLU function을 적용한다면 효율적인 regularization 효과를 볼 수 있다.




[PyTorch] 쉽고 빠르게 배우는 딥러닝(할인쿠폰코드) 369-7c698142f82e

https://www.inflearn.com/course/PyTorch-%EB%94%A5%EB%9F%AC%EB%8B%9D

반응형

댓글