오버피팅 다시 살펴보기
샘플들 보다 더 많은 특성(feature)들이 주어지면, 선형 모델은 오버핏(overfit) 될 수 있습니다. 반면에 특성(feature) 수 보다 샘플이 더 많은 경우에는 선형 모델은 일반적으로 오버핏(overfit) 되지 않습니다. 아쉽게도, 일반화를 잘하기 위해서는 그에 따른 비용이 들어갑니다. 매 특성(feature)에 대해서, 선형 모델은 양수 또는 음수의 가중치를 할당 해야합니다. 선형 모델은 특성(feature)들 사이의 미묘한 상호작용을 설명하지 못 합니다. 좀 더 공식적인 용어로 이야기하면, 편향-분산 트레이드오프(bias-variance tradeoff)로 논의되는 현상을 볼 것입니다. 선형 모델은 높은 편향(bias) (표현할 수 있는 함수의 개수가 적습니다)를 보이나, 분산(variance)은 낮습니다 (다른 랜덤 샘플 데이터에 대해서 비슷한 결과를 줍니다)
드롭아웃(dropout) 실제 적용하기
5개의 은닉 유닛(hidden unit)을 갖는 한개의 은닉층을 사용하는 다층 퍼셉트론(multilayer perceptron) 의 예를 다시 들어보겠습니다. 이 네트워크의 아키텍처는 다음과 같이 표현됩니다.
은닉층에 드롭아웃(dropout)을 확률 pp 로 적용하는 경우, 은닉 유닛들을 pp 확률로 제거하는 것이 됩니다. 이유는, 그 확률을 이용해서 출력을 0으로 설정하기 때문입니다. 이를 적용한 네트워크는 아래 그림과 같습니다. 여기서 h2h2 와 h5h5 가 제거되었습니다. 결과적으로 yy 를 계산할 때, h2h2 와 h5h5 는 사용되지 않게 되고, 역전파(backprop)을 수행할 때 이 것들에 대한 그래디언트(gradient)들도 적용되지 않습니다. 이렇게 해서 출력층으ㄹ 계산할 때 h1,…,h5h1,…,h5 중 어느 하나에 전적으로 의존되지 않게 합니다. 이것이 오버피팅(overfitting) 문제를 해결하는 정규화(regularization) 목적을 위해서 필요한 것입니다. 테스트 시에는, 더 확실한 결과를 얻기 위해서 드롭아웃(dropout)을 사용하지 않는 것이 일반적입니다.
요약
- 차원 수를 조절하고 가중치 벡터(weight vector)의 크기를 제어하는 것 이외에, 드롭아웃(dropout)은 오버피팅(overfitting)을 해결하는 또 다른 방법입니다. 이 세가지는 종종 함께 사용됩니다.
- 드롭아웃(dropout)은 h 를 같은 기대값 h 를 갖는 확률 변수 h′ 로 드롭아웃(dropout) 확률 p 만큼 바꾸는 것입니다.
- 드롭아웃(dropout)은 학습에만 적용합니다.
이러한 overfitting은 우리가 더 깊게 만들수록 일어날 확률이 커집니다.
왜냐하면 더 깊어질수록 더 많은 변수가 생기기 때문입니다.
우리가 원래 만들었던 layer를 dropout함수에 넣어서, 몇 퍼센트의 노드가 일하게 할 것인지 함께 적어줍니다.
위의 코드를 보면 Train에서는 0.7, 즉 70%의 노드들이 랜덤하게 훈련되게 하였습니다.
그리고 실수하면 안되는 점이 Evaluation 과정에서는 dropout_rate를 1로 함으로써 100%의 노드들을 참가시키도록 해야 합니다.
네트워크를 학습하는 동안 랜덤하게 일부뉴런이 동작하는 것을 생략해버리면 뉴런의 조합만큼 지수함수적으로 다양한 모델을 학습시키는 것과 같다. n개의 유닛이 있다고 가정한다면 2^n개의 모델이 생성될 것이다.
Dropout의 사용방법은 아래 그림처럼 일부 뉴런이 동작하지 않도록 하는 것이다. 각 뉴런이 존재할 확률 p를 가중치 w와 곱해주는 형태가 되어 존재할 확률이 0인 경우 동작하지 않게 된다.
'AI > 이론' 카테고리의 다른 글
[ML] Logistic regression, Binary Cross-Entropy Loss, binary classifcation (0) | 2021.02.08 |
---|---|
[ML] Regression 종류 (0) | 2021.02.04 |
Cross entropy의 이해, 사용 방법(Categorical, Binary, Focal loss) (0) | 2020.12.30 |
ImageNet (0) | 2020.12.28 |
[CNN] Batch Normalization (0) | 2020.08.18 |