LayerNorm과 Residual Connection
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 학습에서 어떤 안정화 역할을 하는가?