반응형
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 |