LayerNorm과 Residual Connection

transformerlayernormresidual

Transformer block을 실제 구조에 가깝게 보면 attention과 MLP만 덩그러니 있는 것이 아니다. 보통 LayerNorm과 residual connection이 함께 있다.

단순화하면 이런 흐름이다.

x
  -> attention
  -> add back to x
  -> MLP
  -> add back again

Residual connection은 입력을 변환 결과에 더해 준다.

output = x + f(x)

이 구조는 block이 입력을 완전히 덮어쓰는 대신, 기존 표현 위에 필요한 변화를 추가하게 만든다.

왜 residual이 중요한가

Transformer는 같은 block을 수십, 수백 층 쌓는다. 각 block이 입력을 완전히 새로 만들면 학습이 불안정해지기 쉽다.

Residual connection이 있으면 정보가 깊은 layer까지 비교적 직접 흐를 수 있다.

기존 표현을 유지하면서
각 block이 조금씩 수정한다.

LayerNorm의 역할

LayerNorm은 각 token 벡터의 값 분포를 정리한다. 값의 scale이 너무 커지거나 작아지는 것을 완화해 학습을 안정적으로 만든다.

현대 decoder-only Transformer에서는 보통 계산 앞에 LayerNorm을 두는 pre-norm 구조를 많이 쓴다.

x
  -> LayerNorm
  -> attention
  -> residual add
  -> LayerNorm
  -> MLP
  -> residual add

확인

  • Residual connection을 수식으로 쓰면 어떤 형태인가?
  • residual은 기존 표현을 지우는가, 기존 표현에 변화를 더하는가?
  • LayerNorm은 Transformer 학습에서 어떤 안정화 역할을 하는가?