층 정규화
정의1
신경망의 어떤 층의 출력을 $\mathbf{a} = \begin{bmatrix} a_{1} & \cdots & a_{H} \end{bmatrix}^{\mathsf{T}} \in \mathbb{R}^{H}$라 하자. $\mathbf{a}$의 성분들의 평균 $\mu$와 표준편차 $\sigma$는 다음과 같다.
$$ \mu := \frac{1}{H} \sum_{i=1}^{H} a_{i} , \qquad \sigma := \sqrt{ \frac{1}{H} \sum_{i=1}^{H} \left( a_{i} - \mu \right)^{2} } $$
게인gain $\mathbf{g} \in \mathbb{R}^{H}$과 바이어스bias $\mathbf{b} \in \mathbb{R}^{H}$에 대해서 다음과 같이 정의된 표준화 함수 $\operatorname{LN} : \mathbb{R}^{H} \to \mathbb{R}^{H}$를 층 정규화layer normalization라 한다.
$$ \operatorname{LN}(\mathbf{a}) := \mathbf{g} \odot \dfrac{ \mathbf{a} - \mu \mathbf{1} }{\sigma} + \mathbf{b} $$
여기서 $\mathbf{1} \in \mathbb{R}^{H}$은 모든 성분이 $1$인 벡터이고, $\odot$은 아다마르 곱이다. 성분별로 쓰면 $\left[ \operatorname{LN}(\mathbf{a}) \right]_{i} = \dfrac{g_{i}}{\sigma} \left( a_{i} - \mu \right) + b_{i}$ 이다.
설명
$X$의 평균과 표준편차에 대한 $Z = \dfrac{X - \mu}{\sigma}$와 같은 변환은 통계학에서 표준화standardization라 불리는 것인데, 머신러닝 분야에서는 이를 정규화normalization라 부른다. 데이터에 가하는 일체의 변환을 구분없이 정규화라고 부르는 느낌이 강하다.
제안된 논문에서는 게인과 바이어스를 $\mathbf{g}$, $\mathbf{b}$로 쓰지만 $\boldsymbol{\gamma}$, $\boldsymbol{\beta}$라는 표기도 흔히 쓰인다. 한편 실제 구현에서는 $\sigma = 0$일 때 $0$으로 나누는 것을 막기 위해 분모에 작은 $\epsilon > 0$을 더해 다음과 같이 쓴다.
$$ \operatorname{LN}(\mathbf{a}) := \mathbf{g} \odot \dfrac{ \mathbf{a} - \mu \mathbf{1} }{\sqrt{\sigma^{2} + \epsilon}} + \mathbf{b} $$
🔒(26/09/02)배치 정규화는 입력 데이터를 특정한 배치로 묶고 그 배치마다 정규화하는 반면, 층 정규화는 입력 데이터 하나에 대해서 정규화한다. 즉 배치 정규화는 같은 특성에 대해 미니배치의 모든 데이터가 같은 $\mu$와 $\sigma$를 공유하지만, 층 정규화는 데이터마다 다른 $\mu$와 $\sigma$를 갖는다. 층 정규화는 데이터마다 수열의 길이가 다른 순환신경망처럼 배치 방향으로 정규화하기 어려운 경우에도 그대로 적용할 수 있으며, 트랜스포머가 배치 정규화가 아니라 층 정규화를 쓰는 이유도 여기에 있다.
배치 정규화와 비교하여 어떻게 작동하는지 시각적으로 나타내면 아래와 같다. $\mathbf{a}^{k}$를 $k$번째 데이터에 대한 출력이라고 하자.

같이보기
Jimmy Lei Ba, Jamie Ryan Kiros, and Geoffrey E. Hinton. Layer Normalization. arXiv preprint arXiv:1607.06450 (2016). https://arxiv.org/abs/1607.06450 ↩︎

저희들의 저서 「줄리아 프로그래밍」이 2024 세종도서 학술부문에 선정되었습니다!

