Deep Neural Network (DNN)

Posted 2015.12.02 15:24

딥러닝 시대에 '약간' 뒤쳐지는 Deep Belief Network (DBN)으로 pre-train 한 Deep Neural Network (DNN) 입니다. Multi-layer perceptron이라고 할 수도 있겠지만, pre-training이 추가됬으니까요. 물론 요즘엔 pre-training을 거의 하지 않는다고 합니다. ReLU가 나와서, SGD로 학습을 시키면 잘된다고 합니다. 


그림 출처는 아래 링크


DNN 학습 코드는 

http://www.mathworks.com/matlabcentral/fileexchange/42853-deep-neural-network

를 사용했고, 

http://enginius.tistory.com/606

와 같은 spiral data를 만들어서 분류 실험을 하였습니다. 


실험에 사용된 파라미터들은 다음과 같습니다. 

이 파라미터들에 따라 실험 결과가 어떻게 변하는지 확인해보는 것도 딥러닝을 이해하는데 큰 도움이 될 것같습니다. 


위에 사용된 파라미터들은 CNN에도 동일하게 적용되며, adaptive learning rate (RMSProp등)를 제외하면, 위의 파라미터 정도가 전부일 것 같습니다.. 위의 파라미터 중 DropOutRtae와 WeightCost는 regularizer 역할을 하며, 함수를 얼마나 smooth하게 할지 정해주므로 잘 설정해야 합니다. 개인적으로는 WeightCost를 바꿔가면서 decision surface가 어떻게 변하는지를 보는게 감을 잡는데 도움이 된다고 생각합니다. 


실험 결과

======== Deep Neural Network ========

DNN train: 2.948 sec 

DNN test: 0.009 sec 

DNN Train Accuracy: 99.5% AdaBoost Test Accuracy: 99.1%  

앞서 해본 Boosted Random Fern과 성능이 거의 비슷합니다. 


DNN으로 학습된 decision surface는 다음과 같습니다. 나름 잘 되고 있는 것을 알 수 있습니다. 한가지 재밌는 사실은 앞서 포스팅한 boosted random fern과 다르게 이것은 smooth한 곡면을 찾는다는 점입니다. 즉 맨 왼쪽의 decision을 보면 가장 인접한 데이터는 파란색이지만 빨간색으로 분류가 되고 있는 것을 알 수 있습니다. 이는 부드러운 곡면을 만들려다보니 한쪽이 내려가면 다른쪽을 올라가는 현상을 보여주는 것으로 regularizer가 있는 regression을 하는 경우 쉽게 나오는 풍경(?)입니다. 


매트랩 코드

더보기


신고

'Enginius > Machine Learning' 카테고리의 다른 글

Bayesian Optimization with Expected Improvement  (0) 2015.12.16
Convolutional Neural Network (CNN)  (5) 2015.12.03
Deep Neural Network (DNN)  (1) 2015.12.02
Boosting Methods  (0) 2015.12.02
Practical usage of Representer theorem  (5) 2015.11.07
Representer Theorem  (2) 2015.11.06
« PREV : 1 : ··· : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : ··· : 574 : NEXT »