LayerNorm
- LayerNorm은 딥러닝에서 각 토큰(또는 각 샘플)의 feature 차원(dimension) 방향으로 평균과 분산을 맞춰서(정규화해서) 학습을 안정화하는 기법이다.
- Transformer에서 거의 표준처럼 쓰이고, 특히 배치 크기나 시퀀스 길이가 바뀌어도 동작이 깔끔한 편이라 많이 사용한다.
- 수식적 정의
- 1. 입력 벡터 x는 d차원이라고 하자. ( transformer에서는 "한 토큰의 hidden vector"라고 생각하면 됨 )
- 2. feature차원에 대해서 평균/분산을 계산한다.
- 3. 그리고 정규화를 한다.
- 4. affine변환을 적용한다.
대부분의 LayerNorm은 마지막에 학습 가능한 scale / shift를 붙인다.- scale은 feature마다 곱해지는 것. (γ )
- shift는 feature마다 더해지는 바이어스다. ( β )
- 정규화만 하면 “항상 평균 0, 분산 1”로 고정되어 표현력이 줄어들 수 있는데,
γ,β 덕분에 모델이 “필요하면 다시 스케일/이동”을 학습할 수 있다.
- “어디를” 정규화하나? (차원 관점)
- transformer텐서는 보통 B*T*d차원이라고 하면.....
LayerNorm은 각 ( b , t )위치마다, d방향으로만 평균/분산을 낸다....- 즉, 토큰끼리 섞이지 않음 (t끼리 평균 내지 않음). 그리고 배치끼리도 섞이지 않음 (b끼리 평균 내지 않음)
- B : batch size
- T : sequence length
- d : hidden size
- 여기 그림 참고 ( https://docon.tistory.com/22 )
- transformer텐서는 보통 B*T*d차원이라고 하면.....
- 왜 이것이 학습을 안정화하나?
- (1) 폭주/소실 완화
- 레이어를 여러 개 쌓으면 활성값의 크기가 커지거나 작아질 수 있는데, LN은 이를 완화한다.
- (2) 최적화가 쉬워짐
- 입력 스케일이 매번 달라지면 같은 학습률이라도 업데이트가 들쑥날쑥해지는데, LN은 스케일을 정돈해줘서 SGD/Adam 같은 옵티마이저가 일하기 좋아진다.
- (3) residual 연결과 궁합
- Transformer는 residual이 핵심인데, residual은 “원 신호 + 변형 신호”를 더하기 때문에 스케일 관리가 중요하다. LN은 그 스케일 관리를 도와준다.
- (1) 폭주/소실 완화
- ==> LayerNorm은 “각 토큰의 hidden feature들을 평균 0, 분산 1로 정돈한 뒤(필요하면), 다시 학습 가능한 스케일/바이어스를 붙이는 정규화”이고, Transformer 학습 안정성의 핵심 부분이다.
- 비유를 “단어 토큰”으로 하면 "I am a boy"에서 I 위치(첫 번째 토큰)의 벡터를 따로 정규화한다고 보면 된다.
AdaLN이란? (Adaptive Layer Normalization)
- AdaLN(Adaptive Layer Normalization)은 LayerNorm의 “affine(스케일γ /시프트β )” 파라미터를 고정 학습값으로 두지 않고, 외부 조건(condition)으로부터 매번 생성해서 적용하는 방식이다.
- 확산모델(특히 DiT: Diffusion Transformer)에서는 조건이 보통 diffusion timestep 임베딩 + (클래스/텍스트 등) 조건 임베딩이고, 이 조건이 매 블록마다 특징을 “조절(modulation)”한다.
'코딩 및 기타' 카테고리의 다른 글
| multi-head attention과 cross-attention , self-attention차이 (0) | 2026.01.06 |
|---|---|
| attention이란 (0) | 2026.01.02 |
| world model이란 (1) | 2025.12.31 |
| 학교 복도 ynet 결과 (0) | 2025.11.20 |
| ynet 작업 1 (0) | 2025.11.18 |