정규화
일반적인 2가지 정규화 표현 방법이다.
기본적으로 정규화를 하는 이유는 학습을 더 빨리하고, Local optimum 문제에 빠지는 가능성을 줄이기 위해서이다.
아래의 그림을 보면 최저점을 찾을 때 정규화를 하지 않으면 global optimum지점을 찾지 못하고, local에 머물러 있게 되는 문제가 발생한다. 이러한 문제점은 정규화로 local optimum에 빠질 수 있는 가능성을 낮춰주게 된다.
Internal Convariate Shift
- Convariate Shift: 이전 레이어의 파라미터 변화가 현재 레이어의 입력 분포에 영향을 끼치는 현상
- Internal Convariate Shift: 레이어를 통과할 때 마다 Convariate Shift 가 일어나면서 입력의 분포가 약간씩 변하는 현상
위 그림을 보면 젤 왼쪽의 원본 이미지 부터 Activation을 통과할때마다 약간씩 분포가 변하고 있다. 이와 같이 Batch 단위로 학습을 할때 발생하는 문제이다. 이 문제를 개선하기 위한 방법이 Batch Normalization 이다.
Batch Normalization
위의 논문을 보면, 미니배치로 정규화를 한뒤, scale과 shift를 감마(γ) 값, 베타(β)값을 통해 실행한다. 위의 식을 처음부터 보면
- mini-batch mean: 평균을 구한다.
- mini-batch variance: 분산을 구한다.
- normalize: 표준편차를 구한다. (ε은 분모가 0이 되지 않게하기 위함)
- 학습시킬 scale 과 shift의 식을 구한다
Batch Normalization을 사용하지 않으면 오른쪽 그림처럼 변화값들이 점점 더 가중되면서 기존에 학습한 것과 다른 분포를 가지게 된다.
'컴퓨터비전 > CNN' 카테고리의 다른 글
[딥러닝] Kears의 전처리와 데이터 로딩의 이해 (0) | 2022.03.16 |
---|---|
[딥러닝] 전이 학습(Transfer Learning) (0) | 2022.03.15 |
[딥러닝] 데이터 증강(Data Augmentation) (2) | 2022.03.14 |
[딥러닝] GAP(Global Average Pooling) (0) | 2022.03.14 |
[딥러닝] CNN(Convolutional Neural Network)의 이해 (1) | 2022.03.11 |
댓글