배치 정규화는 각 층에서의 활성화 값이 적당하게 분포되도록 조정하는 것을 의미한다.
배치 정규화는 학습 시 '미니배치' 단위로 정규화한다. 이 때, 평균이 0, 분산이 1이 되도록 정규화 한다. 수식은 아래와 같다.
$ \Large \mu_B \leftarrow { 1 \over m } \sum_{i = 1}^{m}{x_{i}} $
$ \Large \sigma^{2}_{B} \leftarrow {1 \over m} \sum_{i=1}^{m}{(x_{i} - \mu_{B})^2} $
$ \Large \hat x_{i} \leftarrow { x_{i} - \mu_{B} \over \sqrt{\sigma_B^2 + \varepsilon}} $
$B = {x_1, x_2, ..., x_m}$ 는 $m$ 개의 입력데이터의 집합에 대해 각각의 평균 $\mu_{B}$, 분산 $\sigma^{2}_{B}$ 을 구한다 여기서 입력 데이터 평균이 $0$, 분산이 $1$이 되게 정규화 한다. (위 식에서 언급된 $\varepsilon^{epsilon}$ 기호는 작은 값으로, 0로 나누는 것을 예방하는 역할이다.)
위 식은 단순히 미니배치 입력 데이터 ${x_1, x_2, ..., x_m}$을 평균 0, 분산 1인 데이터 $\{\hat x_1, \hat x_2, ..., \hat x_m\}$ 으로 변환하는 일을 수행한다. 해당 처리를 $Activation\,Function$의 앞 or 뒤쪽에 삽입함으로서 데이터 분포가 덜 치우치게 할 수 있다. 더불어 배치 정규화 계층마다 이 정규화된 데이터에 고유한 확대$^{scale}$와 이동$^{shift}$변환을 수행한다. 수식으로는 아래와 같다.
$\Large y_{i} \leftarrow \gamma\hat x_{i} + \beta $
위 식에서 $\gamma$가 확대를, $\beta$가 이동을 담당한다. 두 값은 각각 1, 0 으로 시작하고 학습하면서 적절한 값으로 조정해 간다.
왜 써야 하나요?
- 초기값 분포를 다양하게 부여하여 학습속도를 비약적으로 향상시킬 수 있기 때문이다.
- 초기값에 의존할 필요가 없기 때문이다.
- Overfitting 을 억제할 수 있기 때문이다.
따로따로 설명 해 보자면.
- 초기값 분포를 다양하게 부여하여 학습속도를 비약적으로 향상시킬 수 있기 때문이다.
입력 데이터의 분포가 일정하게 유지되기 대문에 학습률을 높게 설정해도 최적화가 비교적 잘 이뤄지고 Gradient 소실, 폭주 문제를 방지하는데 있어 용이하다.
- 초기값에 의존할 필요가 없기 때문이다.
애초에 입력 데이터의 분포가 정규화 되어 있기에 가중치 초기값의 영향을 줄일 수 있기 때문이다.
- Overfitting 을 억제할 수 있기 때문이다.
배치 정규화 알고리즘은 각 미니배치의 평균과 분산을 이용하여 입력 데이터를 정규화 하기 때문에 각 미니배치마다 약간씩 다른 분포를 가지게 되어 신경망에 잡음이 추가된다. 해당 잡음은 신경망이 훈련 데이터에 과도하게 의존하지 못하게 하는 이점이 있다. 때문에 $dropout$이나 가중치 규제$^{weight\,regularization}$와 같은 추가적인 기법이 필요 없게 한다.
'Artificial Intelligence > Basic' 카테고리의 다른 글
벨만 방정식(Bellman Equation) (0) | 2023.05.29 |
---|---|
마르코프 결정 프로세스(Markov Decision Process) (0) | 2023.05.28 |
어텐션이란? (0) | 2023.04.14 |
점별 상호정보량(PMI, Pointwise Mutual Information) (0) | 2023.04.04 |
연쇄법칙(Chain Rule) (0) | 2023.03.31 |