[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

과적합방지 - Drop out, 배치정규화

inu 2020. 8. 7. 17:40
반응형

Drop out

  • 딥러닝 모델 학습 시 몇 개의 노드를 제외하고 학습하는 방법이다.
  • 랜덤하게 사용하지 않을 노드를 결정한다.
  • 계산이 줄어드는 만큼 variance가 줄어들어 overfitting을 줄일 수 있게 된다.
  • 사실 랜덤하게 사용하지 않을 노드를 결정하는 수식이 필요해 실질적인 '계산량'이 줄어드는 것은 아니다. 다만 학습에 사용되는 노드가 제외되면서 그만큼 학습 자체에서의 계산량이 줄어든다는 것이다.
  • 즉, 지속적으로 학습과정에 교란을 줌으로서 모델이 과하게 학습 데이터에 맞춰지는 것을 방지할 수 있는 것이다.
tf.keras.layers.Dropout(rate = 0.3)
  • 텐서플로우에서 Dropout 레이어를 만들어 관리할 수 있다.
  • rate는 제외될 비율이다.

배치정규화(Batch Normalization)

  • 일반 정규화(Normalization)은 입력 데이터를 정규화하는 것이었다.
  • 배치 정규화는 은닉층 사이에 들어가 중강중간 연산 결과를 정규화한다. (평균 0, 표준편차 1의 분포로 변경)
  • 각 성분 간의 분포 차이로 인한 가중치 학습의 불균형을 방지하기 위해 도입되었다. (신경망을 깊게 쌓다보면 역전파 도중 가중치의 분포 차이로 기울기가 소멸 혹은 폭주한다. 이를 방지하기 위한 것이다.)
  • 물론 분포를 강제로 바꿔주기 때문에 학습은 더 어려워진다. 하지만 이러한 효과로 자연스럽게 모델이 과하게 학습 데이터에 맞춰지는 것을 방지할 수 있다.
tf.layers.batch_normalization()
  • 마찬가지로 텐서플로우 레이어로 구현이 가능하다.
반응형

'🛠 기타 > Data & AI' 카테고리의 다른 글

앙상블 학습  (0) 2020.08.12
Pandas 데이터프레임 apply, replace  (0) 2020.08.09
로그 스케일로 분포 그리기  (0) 2020.08.07
TensorFlow 레이어  (0) 2020.08.07
문자열 형태소 제거하기  (0) 2020.08.06