Dropout and Batch Normalization

이상해씨·2024년 1월 23일
0

DL

목록 보기
6/7
  • overfitting과 stablize training(안정화 훈련)을 위한 특별한 layer

Dropout 드롭아웃

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

드롭아웃의 장단점

장점

  1. 과적합 감소
  • 무작위로 뉴런을 제거하여 특정 뉴런에 지나치게 의존하는 것을 방지하여 모델이 일반적인 패턴을 학습하도록 함
  1. 앙상블 효과
  • 여러 서브네트워크의 앙상블 효과를 제공

단점

  1. 훈련 시간 증가
  • 훈련시간이 많이 소요될 수 있음
  1. 일부 정보 손실
  • 무작위로 일부 뉴런을 제거하여 정보의 손실이 발생할 수 있음

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)가 적게 필요하며, 훈련이 멈추는 여러 문제를 해결할 수 있다. 훈련 도중 문제가 발생하는 경우, 정규화가 도움이 될 수 있다.

배치 정규화 장단점

장점

  1. 훈련 안정성
  • 훈련을 안정화하여 빠른 수렴 도모
  1. 그래디언트 소실 감소(기울기)
  • 그래디언트 소실 문제를 완화하여 신경망 성능을 향상
  1. 일반화 향상
  • 정규화를 통해 모델의 일반화 성능을 향상

단점

  1. 계산비용
  • 배치 정규화의 평균과 표준편차 계산 과정에서 계산비용 증가
  1. 적용시 주의점
  • 미니배치에서 불안정할 수 있고, 노이즈가 생겨 성능이 저하될 수 있음

Adding Batch Normalization

  • 배치 정규화 하는 방법은 두가지임
  • (방법 1) layer 다음으로 아래 코드를 추가하는 방법
layers.Dense(16, activation='relu'),
layers.BatchNormalization(),
  • (방법 2) layer와 활성화함수 사이에 추가하는 방법
layers.Dense(16),
layers.BatchNormalization(),
layers.Activation('relu'),
  • 참고로, 배치 정규화 레이어는 dense layer에 이전, 이후 모두에 사용할 수 있지만, 활성화 함수 이후에 적용하는 것이 모델의 안정성을 돕는다.

참고

profile
공부에는 끝이 없다

0개의 댓글