1. 개요[편집]
| 층 정규화 Layer Normalization (LN) | |
|---|---|
| 제안 | Ba · Kiros · Hinton (2016), arXiv |
| 통계 축 | 표본마다 특징 축 — 배치를 보지 않는다 |
| 학습 파라미터 | 특징마다 gain $g$, bias $b$ |
| 학습 = 추론 | 같은 함수. 이동평균 버퍼 없음 |
| 배치 크기 1 | 정상 동작 |
| 주 무대 | 트랜스포머, 순환 신경망 |
| 경량판 | RMSNorm — 평균 빼기 생략 (Zhang & Sennrich 2019) |
층 정규화(Layer Normalization, LN)는 표본 하나의 특징 벡터 안에서 평균과 분산을 내어 표준화한 뒤, 특징마다 학습 가능한 gain과 bias를 얹는 계층이다. 바·키로스·힌턴이 2016년에 제안했고, 설계 의도는 처음부터 명확했다 — 배치 정규화에서 배치 축을 떼어내는 것.
차이는 한 줄로 끝난다. BN은 “여러 표본의 같은 채널”을 모아 통계를 내고, LN은 “한 표본의 모든 특징”을 모아 통계를 낸다. 통계를 내는 축이 바뀌었을 뿐인데 따라오는 결과가 전혀 다르다. 배치를 안 보므로 배치 크기와 무관하고, 시퀀스 길이가 제각각이어도 상관없으며, 학습과 추론이 문자 그대로 같은 함수다. BN 문서에 길게 적힌 함정들 — 평가 모드 전환, 덜 익은 이동평균, 장치 수에 따라 결과가 달라지는 분산 학습, 표본 간 정보 누출 — 이 통째로 사라진다. LN이 트랜스포머 시대의 기본값이 된 이유는 성능이 더 좋아서가 아니라 고장 날 구석이 없어서에 가깝다.
BN 자체의 동작·역사·접기(folding)는 배치 정규화에 있으니 여기서 반복하지 않는다. 이 문서는 LN의 정의와 불변성, 트랜스포머에서의 배치 위치(post-LN 대 pre-LN), RMSNorm, 친척 계층들과의 관계, 그리고 실무 함정을 다룬다.
2. 정의와 불변성[편집]
은닉 벡터 에 대해
이다. 가 학습 파라미터이고, 은 근처. BN과 파라미터 개수는 같지만(특징 수의 두 배) 통계는 표본마다 그 자리에서 계산되고 저장되지 않는다. 순전파 그래프에 이동평균 버퍼가 없다는 점이 결정적이다.
수식에서 바로 읽히는 불변성이 둘 있다. 입력 벡터 전체를 상수배하거나(, ) 상수를 더해도() 정규화 출력이 그대로다. 앞 층 가중치의 스케일과 바이어스의 전역 이동에 층이 둔감해진다는 뜻이고, 이게 학습률 민감도를 낮춘다. BN이 배치 방향의 스케일 불변성을 주는 것과 대칭인 성질이라고 보면 된다.
한 가지 자주 오해되는 지점. 트랜스포머에서 LN은 마지막 축(모형 차원 )에만 적용되지 시퀀스 축은 건드리지 않는다. 토큰마다 독립적으로 정규화한다는 뜻이며, 그래서 패딩 토큰이 다른 토큰의 통계를 오염시키지 않고 인과 마스킹과도 충돌하지 않는다. 반면 바 외의 원 논문은 CNN에 적용할 때 채널·공간 축을 다 뭉갰는데, 그 형태는 CNN에서 BN보다 성능이 떨어졌다. 공간 위치마다 통계량이 크게 다른데 하나로 뭉개면 정보를 버리기 때문. LN이 CNN에서 안 쓰이고 대신 그룹 단위로 쪼갠 그룹 정규화가 자리를 잡은 배경이다.1
3. 트랜스포머에서 — post-LN 대 pre-LN[편집]
정규화를 잔차 블록의 어디에 붙이느냐가 학습 안정성을 가른다. 잔차 연결과 부분층 (어텐션 또는 MLP)에 대해 두 가지 배치가 있다.
원 트랜스포머 논문(2017)은 post-LN이었다. 문제는 깨끗한 항등 경로가 없다는 것 — 잔차 합이 매 블록마다 LN을 통과하므로, 역전파 시 기울기가 블록 수만큼의 LN 야코비를 곱하고 지나간다. 시온 외(2020)는 초기화 시점의 기울기 크기를 분석해, post-LN에서는 출력 근처 층의 기울기가 깊이에 따라 커지는 반면 pre-LN은 기울기 크기가 깊이에 거의 무관함을 보였다. 그래서 post-LN은 학습 초반에 큰 스텝을 밟으면 그대로 발산하고, 이를 막으려고 학습률 워밍업(수천 스텝에 걸쳐 학습률을 0에서 올리는 스케줄)이 사실상 필수가 된다. 같은 논문은 pre-LN이면 워밍업을 없애도 학습이 된다는 것을 실험으로 확인했다.2
pre-LN에서는 잔차 경로가 정규화를 거치지 않고 입력에서 출력까지 직통으로 뚫린다. 대신 두 가지가 따라온다.
- 스택 맨 끝에 LN을 한 번 더 넣어야 한다. 블록마다 무언가를 계속 더하기만 하니 잔차 스트림의 분산이 깊이에 따라 커진다. 최종 LN(final layer norm)이 이걸 정리한다. 빼먹으면 로짓 스케일이 이상해진다.
- 깊은 층의 기여가 상대적으로 작아진다. 잔차 스트림이 이미 커진 상태에서 새 블록이 더하는 양의 비중이 줄어들기 때문. 같은 조건에서 post-LN이 끝까지 학습되면 최종 성능이 조금 더 좋다는 보고가 반복되는 이유이며, “잘 학습되기만 하면 post-LN이 낫다”는 미묘한 결론이 나온다.
그래서 후속 연구들은 post-LN을 살리면서 안정화하는 쪽으로도 갔다. DeepNorm(왕 외 2022)이 대표적인데, post-LN의 잔차 항에 상수 를 곱하고 초기화 스케일을 짝지어 잡아 1000층짜리 트랜스포머를 학습시켰다. 실무 현황은 단순하다 — 대형 모형은 거의 다 pre-LN이고, 워밍업은 다른 이유(옵티마이저 모멘텀 추정 안정화)로 어차피 쓴다.
4. RMSNorm — 평균 빼기를 버려도 되는 이유[편집]
장·센리치(2019)는 LN에서 평균 빼기(re-centering)를 통째로 지우고 스케일만 남긴 변형을 제안했다.
bias 도 대개 뺀다. 논지는 이렇다. LN이 주는 이득의 본체는 re-scaling 불변성이지 re-centering이 아니다. 층의 출력 스케일이 폭주하지 않게 붙들어 두는 것이 학습을 안정화하는 것이고, 평균을 0으로 맞추는 것은 그 위에 얹힌 부수적 효과에 가깝다는 것. 논문은 여러 과제에서 성능 저하 없이 계층 실행 시간이 7~64% 줄어드는 것을 보고했다.
속도 이득이 큰 이유는 정규화 계층이 연산량이 아니라 메모리 대역폭에 묶여 있기 때문이다. 평균을 빼려면 벡터를 한 번 훑어 를 구하고 다시 훑어 편차 제곱합을 구해야 하는데(또는 2차 모멘트를 같이 모아 한 번에 처리하되 수치적으로 불안정해진다), RMS만 필요하면 제곱합 하나면 끝난다. 파라미터도 절반이다. T5·Llama 계열을 필두로 최근 대형 언어모형은 사실상 RMSNorm이 기본값이다.
대가도 있다. RMSNorm은 입력의 상수 이동에 불변이 아니다. 특징 벡터에 큰 공통 오프셋이 실리면 그대로 살아남는다. 실측에서 문제가 안 되는 이유는 앞단 선형층에 bias가 없고 잔차 스트림의 평균이 대략 0 근처로 유지되기 때문인데, 그 가정이 깨지는 구조에서는 얌전히 LN을 쓰는 게 맞다.
부수 효과 하나. RMSNorm의 gain 는 다음 선형층 가중치에 흡수할 수 있다. 출력이 이고 다음 연산이 이면 로 접힌다. BN 접기만큼 화끈하진 않지만(RMS로 나누는 부분은 입력에 의존하므로 절대 접히지 않는다) 추론 커널 하나를 줄이는 데는 쓸모가 있다.
5. 정규화 계층 지형도에서의 위치[편집]
축만 바꾸면 서로 변환되는 한 가족이다. 입력 텐서를 (배치 N, 채널 C, 공간 H·W)로 두고 보면:
| 계층 | 통계 축 | 배치 의존 | 특징 |
|---|---|---|---|
| 배치 정규화 | N, H, W | 있음 | 추론 시 가중치로 접힘 |
| 층 정규화 | C, H, W (표본마다) | 없음 | 트랜스포머 기본값 |
| 그룹 정규화 | 채널 그룹 + H, W | 없음 | 작은 배치 CNN |
| 인스턴스 정규화 | H, W (표본·채널마다) | 없음 | 스타일 전이 |
| RMSNorm | C (평균 빼기 없음) | 없음 | LN의 경량판 |
이 표에 없는 이름이 매년 몇 개씩 더 나오지만 살아남는 것은 드물다.3 그룹 정규화는 채널을 개 그룹으로 나눠 그룹 안에서 통계를 낸다. 이면 층 정규화, 면 인스턴스 정규화이므로, LN과 IN은 같은 축 위의 두 끝점이고 GN이 그 사이를 보간한다고 보면 정확하다. 트랜스포머의 LN은 이 그림에서 공간 축이 없는 특수한 경우( 축만 존재)다.
6. 실무에서 실제로 물리는 것[편집]
- 정밀도. bf16 학습에서도 LN의 평균·분산 누산은 fp32로 하는 것이 표준이다. bf16은 가수 비트가 8개뿐이라 짜리 제곱합을 저정밀도로 누산하면 오차가 눈에 띄게 쌓인다. 혼합 정밀도 레시피에서 정규화·소프트맥스·손실을 fp32 목록에 넣어 두는 이유.
- 의 위치. 과 은 다르고, 프레임워크마다 기본값도 ·· 로 제각각이다. 가중치를 다른 구현으로 이식했는데 출력이 미세하게 다르면 90%는 여기다.
- 접히지 않는다. BN과 달리 LN은 추론 시에도 통계를 매번 계산해야 하는 런타임 계층이다. 원소별 연산이라 FLOPs는 무시할 만하지만 메모리 대역폭을 먹기 때문에, 실제 추론 지연시간에서 정규화가 차지하는 몫은 생각보다 크다. 커널 융합(LN + 다음 GEMM의 에필로그·프롤로그 결합)이 추론 최적화의 단골 항목인 이유.
- 역전파 비용. LN의 역방향은 가 대각이 아니다 — 와 를 통해 모든 원소가 얽히므로, 야코비에 형태의 랭크-1 보정과 항이 붙는다. 손으로 구현할 때 이 두 항을 빠뜨리면 기울기가 조용히 틀린다. 역전파의 수치미분 검증이 필요한 대표적 자리.
- 드롭아웃과 궁합이 좋다. BN이 드롭아웃의 분산 이동에 취약한 반면 LN은 배치 통계를 축적하지 않으니 그 사고가 원천적으로 없다. 트랜스포머가 정규화와 드롭아웃을 한 블록에서 태연히 같이 쓰는 배경.
- 재계산과 궁합이 좋다. LN은 결정적 함수라 그래디언트 체크포인팅에서 다시 계산해도 같은 값이 나온다. BN처럼 이동평균이 두 번 갱신되는 사고가 없다.
7. 관련 문서[편집]
- 배치 정규화 · 그룹 정규화 · 인스턴스 정규화
- 트랜스포머 · 어텐션 메커니즘 · 순환 신경망 · 심층 학습
- 잔차 연결 · 드롭아웃 · 그래디언트 체크포인팅
- 역전파 · 확률적 경사하강법 · 활성화 함수
- 혼합 정밀도 · GPU 컴퓨팅 · 부동소수점 연산
8. Footnotes[편집]
-
바 외(2016)는 LN을 순환 신경망용으로 밀었다. 시점마다 통계가 달라져 BN을 쓰기 곤란한 구조에서 확실한 대안이었기 때문. 정작 LN이 세계 정복을 한 무대는 1년 뒤에 나온 트랜스포머였고, 그쪽에서는 RNN이 밀려나는 데 일조하게 된다. 논문의 실험 절반이 자기가 밀어낼 구조를 위한 것이었던 셈. ↩
-
post-LN 트랜스포머가 워밍업 없이 발산하는 장면은 재현하기가 아주 쉽다. 워밍업 스텝을 0으로 두고 12층짜리를 돌리면 대개 수백 스텝 안에 손실이 NaN이 된다. “학습률 스케줄이 취향의 문제”라고 생각하는 사람에게 보여 주기 좋은 데모. ↩
-
정규화 계층 이름 짓기 대회는 여전히 진행 중이다. LayerNorm, RMSNorm, ScaleNorm, DeepNorm, PowerNorm, AdaNorm, SandwichNorm… 이쯤 되면 논문 한 편당 하나씩 나오는 수준이고, 실제로 살아남은 것은 두어 개다. 정규화 계층은 논문 통과용 부품으로 쓰기 좋다는 업계의 오랜 농담이 있다. ↩