- overfitting과 stablize training(안정화 훈련)을 위한 특별한 layer
Dropout 드롭아웃
- dropout layer는 정확한 과적합을 방지하는데 도움을 준다.
- 과적합은 의미 없는 패턴을 학습하여 발생
- 의미없는 패턴을 인식을 위해 네트워크는 가중치의 특정 조합인 "conspiracy"을 사용
- 이 조합 (conspiracy)은 특정한 가중치 하나를 제거하면 무너지는데, 이를 드롭아웃(drop out)이라고 한다
- conspiracy를 깨뜨리기 위하여 훈련단계에서 레이어의 input units를 무작위로 생략(drop out)하여 네트워크가 훈련데이터에서 의미 없는 패턴을 학습할 수 없게 만든다.

드롭아웃의 장단점
장점
- 과적합 감소
- 무작위로 뉴런을 제거하여 특정 뉴런에 지나치게 의존하는 것을 방지하여 모델이 일반적인 패턴을 학습하도록 함
- 앙상블 효과
단점
- 훈련 시간 증가
- 일부 정보 손실
- 무작위로 일부 뉴런을 제거하여 정보의 손실이 발생할 수 있음
Adding Dropout
keras.Sequential([
# ...
layers.Dropout(rate=0.3), # apply 30% dropout to the next layer
layers.Dense(16),
# ...
])
Batch Normalization 배치 정규화
-
훈련이 느리거나 불안정한 경우에 도움이 되는 레이어
-
확률적 경사 하강법(SGD)이 데이터가 생성하는 활성화에 비례하여 네트워크 가중치를 조절하기 때문에 신경망에서는 데이터를 공통 스케일(scale)에 맞추는 것이 좋다
-
scikit-learn의 StandardScaler나 MinMaxScaler를 사용하여 적용
-
크기가 매우 다른 활성화를 생성하는 피처는 불안정한 훈련 행동을 유발할 수도 있음
-
배치 정규화 레이어(batch normalization layer)는 각 배치를 확인하면서 해당 배치를 자체의 평균과 표준편차로 정규화하여, 스케일(scale)과 시프트(shift)라는 학습가능한 재조정 매개변수로 데이터를 새로운 스케일에 맞추고 이동시킨다.
- 배치 정규화는 최적화 프로세스를 돕기 위해 추가된다. 때로는 예측 성능 향상에도 도움이 된다.
- 배치정규화가 있는 모델의 경우, 에포크(epoch)가 적게 필요하며, 훈련이 멈추는 여러 문제를 해결할 수 있다. 훈련 도중 문제가 발생하는 경우, 정규화가 도움이 될 수 있다.
배치 정규화 장단점
장점
- 훈련 안정성
- 그래디언트 소실 감소(기울기)
- 그래디언트 소실 문제를 완화하여 신경망 성능을 향상
- 일반화 향상
단점
- 계산비용
- 배치 정규화의 평균과 표준편차 계산 과정에서 계산비용 증가
- 적용시 주의점
- 미니배치에서 불안정할 수 있고, 노이즈가 생겨 성능이 저하될 수 있음
Adding Batch Normalization
- 배치 정규화 하는 방법은 두가지임
- (방법 1) layer 다음으로 아래 코드를 추가하는 방법
layers.Dense(16, activation='relu'),
layers.BatchNormalization(),
- (방법 2) layer와 활성화함수 사이에 추가하는 방법
layers.Dense(16),
layers.BatchNormalization(),
layers.Activation('relu'),
- 참고로, 배치 정규화 레이어는 dense layer에 이전, 이후 모두에 사용할 수 있지만, 활성화 함수 이후에 적용하는 것이 모델의 안정성을 돕는다.
참고