CNN image classfication분류모델로 잘알려진 AlexNet 코드를 tensorflow로 실습하면서 특징을 추출하는 층과 분류층에 Batch Normalization과 Dropout라는 방법이 사용되어 관련 이론을 찾아보았다.
우선 이번에는 dropout에 대한 부분만 간략히 정리하고 Batch Normalization를 설명하기위해서는 SGD, Covariate shift 등 추가적인 이해가 필요하므로 학습 후 다음 기회에서 정리하겠다.
일반적으로 깊고 복잡한 신경망일 수록 복잡한 문제를 풀기에 유리하다. 하지만 과적합(overfitting) 또한 발생할 확률이 높기 때문에 이러한 복잡한 신경망에서 뉴런 일부를 끊어 줌으로써 해당 뉴런이 모델에 주는영향을 제거해 과적합을 방지해준다.
여러개의 모델을 결합하면 학습 성능이 개선될 수 있다. 하지만 모델이 굉장히 복잡하고 깊다면 하나의 모델에 데이터를 학습시키는데만해도 오랜시간이 걸릴 것이고 그렇기 때문에 여러개의 모델을 학습시키는 것은 더욱 어려울 것이라는 생각이든다.
따라서 하나의 모델로 여러개의 모델이 결합한 것과 같은 효과를 내기위해 dropout을 사용할 수 있다. 무작위로 네트워크를 끊어주면 모델 하나로부터 반복적으로 새로운 조합의 네트워크가 생성되는 효과가 생기기 때문이다.
Co-adaptation 을 피하는 효과가 있다. co-adaptation은 2개 이상의 노드가 서로 상호작용하여 하나처럼 동작하기 때문에 불필요하게 메모리 낭비나 컴퓨팅 비효율이 발생하며 모델이 보다 일반화된 학습을 하는 것을 방해한다. dropout을 사용하면 무작위로 노드의 연결이 삭제되므로 이처럼 2개 이상의 노드가 동조하는 것을 피할 수 있다.
마지막으로 한가지 주의해야할 점은 dropout은 데이터 학습(train data)시에만 적용해야하며 검증이나 test데이터 확인에는 사용해서는 안된다.
참고
Dropout