본문 바로가기
C.W.K.
Stream
Lesson 04 of 07 · published

Attention과 정규화

~9 min · layers

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

MultiHeadAttention은 Transformer의 중심이야

MultiHeadAttention은 시퀀스의 각 위치가 다른 모든 위치를 살펴 관련성을 정하게 해. 이 탐색을 여러 독립된 헤드에서 동시에 수행하므로 서로 다른 관계를 병렬로 배울 수 있어. num_heads는 학습할 Attention 패턴 수, key_dim은 각 헤드의 query와 key 공간 폭을 정해.

Query, key, value에 같은 텐서를 넘기면 시퀀스가 자신과 관계를 맺는 self-attention이고, key와 value에 다른 소스를 넘기면 인코더와 디코더를 잇는 cross-attention이 돼.

정규화는 깊은 모델의 수치를 안정시켜

정규화 레이어는 활성값의 분포를 다듬어 모델이 깊어져도 기울기가 터지거나 사라지는 문제를 줄여. 어느 축을 기준으로 삼는지에 따라 나뉘어.

레이어정규화 단위알맞은 곳
BatchNormalization배치의 여러 샘플CNN, 일반 학습
LayerNormalization샘플 안의 특징Transformer, RNN
GroupNormalization채널 그룹작은 배치

BatchNormalization은 배치 통계에 의존해 배치가 작거나 시퀀스 길이가 들쭉날쭉할 때 약해. LayerNormalization은 각 샘플 안에서 특징의 평균과 분산을 구하므로 배치가 1이어도 안정적이야. Transformer와 RNN에서 Attention·FFN 블록 앞(pre-norm)이나 뒤(post-norm)에 사용하는 이유지.

Code

Flash Attention을 켠 MultiHeadAttention·python
# Multi-head attention (Transformer key component)
layers.MultiHeadAttention(
    num_heads=8,          # Number of attention heads
    key_dim=64,           # Dimension of each head
    flash_attention=True,  # Enable Flash Attention (3.7+)
)

External links

Exercise

x → LayerNorm → MHA → 잔차 더하기 → LayerNorm → FFN(Dense→Dense) → 잔차 더하기 순서의 pre-norm Transformer 인코더 블록을 만들어. 무작위 데이터에서 손실이 줄어드는지 확인한 뒤 LayerNorm 하나를 빼 비교해.
Hint
pre-norm은 하위 레이어 앞에 LayerNorm을 두고 원래 입력을 다시 더해. key_dim × num_heads를 모델 폭과 맞춰.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.