http://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf
dropout: a simple way to prevent neural networks from overfitting 논문 세미나
https://gaussian37.github.io/dl-concept-bayesian_neural_network/
Bayesian Neural Network (베이지안 뉴럴 네트워크) 내용 정리
gaussian37's blog
gaussian37.github.io
베이지안 뉴럴 네트워크에 대한 이해를 시켜준 블로그
DNN, 딥러닝에서의 큰 문제점인 overfitting을 막기위해 많은 방법이 사용되어왔음.
모델 conbination방법은 다양한 모델을 만들어보고 학습시키는건데 비싸고 너무 많은 데이터와 구조가 필요함
비슷한 효과를 내기위해 (근데 위랑 dropout이랑 비슷한 효과를 내는걸 입증한 논문은.. 없는듯..?) 아무튼 중간 중간 입출력 노드를 아예 랜덤적으로 끊는 방법을 사용함:dropout
training 방법이랑 test time 때 쓰이는 방법이 다른데, 훈련시킬때는 확률적으로 p의 확률로 노드가 살아있게 됨. test할때는 모든 노드를 살리고 훈련으로 만들어진 모델에 p의 가중치를 곱해줌. 이때 p 확률은 하이퍼 파라미터
원래 우리가 알던 노드 동작
dropout사용시 랜덤확률이 추가된다. 이때 우리는 하이퍼 파라미터 p의 확률에 따라 노드가 랜덤적으로 유지되며 이는 베르누이를 따른다.
아까와 똑같은 말, 훈련시와 테스트시 p 적용을 다르게 해주는 것을 기억할 것.
예시
MNIST 데이터에 드롭아웃 적용한 모습.
전반적으로봐도 드롭아웃 쓴게 정확도가 높음
위와 같음
maxout은 드롭아웃쓸때 효과가 좋은 활성함수라는데 뭐 같이 써서 좋은결과를 얻었겠죠
데이터 표본이 적은 집단에서는 베이지안 방법이 가장좋지만, SVM처럼 차원줄이는 방법이 아니고, 베이지안 처럼 비싸고 느린 모델보다 효율이 좋은게 드롭아웃을 쓰는방법
베이지안은 상단 블로그를 참고하는게 너무 좋을것같다.
드롭아웃이 모델에 미치는 영향, 모델 파라미터와의 관계. 논문에는 더있지만 세개만 알아보자
왼쪽에 비해 우측에서 더 특징적인 특성을 찾을 수 있음. 유닛과의 연관성을 끊어서 다른 유닛에 의존적이지 않게 한다고는 하는데, 마음으론 대강 알겠으나 co-adaptation에 대한 것도 심도있게 찾아보고 싶었으나 시간의 부족으로 .. 못함
실험은.. 읽어보고, 여기서는 0.6의 p값을 가질때 가장 좋은데, 실제 활용할때는 계산의 편리성도 그렇고 0.5를 많이 쓴다. cnn에서는 0.25 썼던것같은데 더 찾아봐야될듯...
이건 MNIST결관데 그냥 드롭아웃이 제일 효과적인 sweet spot이 있음만 알자
테스트 적용할 때 가중치에 p를 곱한 것이 왜 그렇게 되었느냐 의 파트
빨간색은 weight scaling으로 테스트시 가중치에 p를 곱하는 방법. MC 방법은 좀 더 깊게 공부할 필요가 있겠지만, 간략하게 하자면 더 정확한 방법으로, 각각의 드롭아웃을 적용한 모델에 대해 평균을 내서 예측값을 내는 것이다. 이게 베이지안 방법과 연관이 있기 때문에 위의 블로그를 읽는 것이 좋을 것 같다. 베이지안 방법에서 p(w)를 구할 수 없기 때문에 베이지안 모델이 사용되기 힘든데, 이러한 p(w)를 근사하는 방법 중 하나가 MC 방법인 걸로 기억한다.
아무튼 이 방법은 일정 k가 넘어가면 weight scaling방법과 유사한 정확도를 가지고, 더 좋아져도 분산 1내이기 때문에 효용성을 위해 weight scaling방법을 사용한다.
그리고 이떄 하면서 cifar-10 데이터도 같이 돌렸는데 드롭아웃을 썼을 떄 실제로 극적인 효과는 아니지만 정확도가 오름.
실습 결과 코드 올릴때 게시예정