레이어 정규화

IT 위키

레이어 정규화(Layer Normalization, 줄여서 LayerNorm)은 인공 신경망에서 각 층의 출력 값을 정규화하여 학습을 안정화하고 수렴 속도를 높이는 정규화 기법이다.

개요[편집 | 원본 편집]

LayerNorm은 배치 크기와 관계없이 각 데이터 샘플의 특징 차원(feature dimension)에 대해 정규화를 수행한다. 이는 배치 단위로 정규화를 수행하는 배치 정규화(BatchNorm)와 달리, 시퀀스 모델이나 온라인 학습 환경에서도 안정적으로 사용할 수 있도록 고안되었다.

작동 원리[편집 | 원본 편집]

LayerNorm은 입력 벡터의 평균과 분산을 구한 후, 이를 이용하여 정규화를 수행한다. 이때 정규화는 입력의 각 차원(feature)에 대해 동일한 방식으로 적용되며, 학습 가능한 스케일 파라미터와 시프트 파라미터를 통해 원래의 표현력을 유지할 수 있다.

수식 및 절차[편집 | 원본 편집]

LayerNorm은 다음과 같은 절차를 따른다:

  • 하나의 입력 벡터 x에 대해 평균 μ와 분산 σ²를 계산한다.
  • 정규화된 값은 다음과 같이 계산된다:
    • x̂ = (x - μ) / √(σ² + ε)
  • 최종 출력은 다음과 같다:
    • y = γ * x̂ + β
  • 여기서 γ는 스케일 파라미터, β는 시프트 파라미터이며, 학습 가능한 값이다.

특징[편집 | 원본 편집]

  • 배치 크기에 영향을 받지 않으며, 시퀀스 길이나 배치 수가 작을 때도 안정적으로 동작한다.
  • 트랜스포머 아키텍처와 같은 자기주의 기반 모델에서 표준적으로 사용된다.
  • 실시간 처리 및 순환 신경망(RNN)과의 호환성이 좋다.

활용[편집 | 원본 편집]

  • 트랜스포머 기반 모델(GPT, BERT 등)의 각 층에 포함되어 입력 안정화에 기여한다.
  • 순환 신경망(RNN, LSTM)과 결합하여 장기 의존성 문제를 완화한다.
  • 강화 학습 등 배치 정규화가 부적합한 환경에서 널리 활용된다.

구현 예시[편집 | 원본 편집]

다음은 PyTorch에서 LayerNorm을 적용하는 코드 예시이다:

import torch
import torch.nn as nn

layer_norm = nn.LayerNorm(normalized_shape=128)
x = torch.randn(32, 128)
output = layer_norm(x)

같이 보기[편집 | 원본 편집]

참고 문헌[편집 | 원본 편집]

  • Ba, J. L., Kiros, J. R., & Hinton, G. E. (2016). Layer Normalization. arXiv preprint arXiv:1607.06450.

각주[편집 | 원본 편집]