한양과학기술고등학교

에듀테크 프로젝트 대시보드

트랜스포머 아키텍처 (Transformer)

셀프 어텐션 페이지에서 Query·Key·Value로 문장이 스스로를 참조하는 법을 봤다. 트랜스포머는 이 어텐션을 여러 개 나란히 두고(멀티헤드), 순서 정보를 따로 주입하고, 잔차연결·정규화·피드포워드로 감싼 블록을 여러 층 쌓아 만든 전체 구조다. GPT·BERT·번역기 대부분이 이 뼈대 위에 있다.

1. 전체 파이프라인 — 인코더 · 디코더

번역처럼 "문장을 통째로 이해하고(인코더) → 한 단어씩 생성한다(디코더)" 과제를 기준으로 보면 이렇다.

인코더 (입력 문장을 이해)

입력 임베딩 + 위치 인코딩
↓
멀티헤드 셀프 어텐션
Add & Norm (잔차연결 + 정규화)
↓
피드포워드 신경망
Add & Norm
↑ 이 블록을 N번 반복 (보통 6~24층)

디코더 (한 단어씩 생성)

출력 임베딩 + 위치 인코딩
↓
마스크드 멀티헤드 셀프 어텐션
Add & Norm
↓
교차 어텐션 (Q=디코더, K·V=인코더 출력)
Add & Norm
↓
피드포워드 신경망
Add & Norm
↑ N번 반복 → Linear + Softmax → 다음 단어 확률
GPT류(디코더 전용)는 인코더 없이 디코더 스택만 쌓아 "다음 단어 맞히기"만으로 학습한다. BERT류(인코더 전용)는 디코더 없이 인코더만 써서 문장을 이해하는 표현을 만든다.

2. 멀티헤드 어텐션 — 여러 관점을 동시에

임베딩을 head 개수만큼 조각내어 각 조각끼리 독립적으로 어텐션을 계산한다. 한 헤드는 "누가 누구를 만났나"에, 다른 헤드는 "언제·어디서"에 주목하는 식으로 서로 다른 관계를 잡을 수 있다. 토큰을 클릭해 Query를 바꾸고, 헤드 개수를 바꿔보자.

헤드 개수:
각 칸은 지금 선택한 Query 토큰이 그 위치의 토큰에 두는 주목 비율(밝을수록 큼, 해당 헤드가 담당하는 임베딩 조각끼리의 내적+softmax로 계산). 헤드 수를 늘리면 조각이 더 잘게 나뉘어 헤드별로 다른 패턴이 더 뚜렷해진다.

3. 위치 인코딩 — 순서를 잃지 않으려면

셀프 어텐션은 모든 토큰을 동시에, 순서 없이 본다(집합처럼). "나는 너를 좋아해"와 "너는 나를 좋아해"를 구별하려면 순서 정보를 따로 더해줘야 한다. 트랜스포머는 위치마다 서로 다른 사인·코사인 패턴을 더한다.

PE(pos, 2i) = sin(pos / 10000^(2i/d))    PE(pos, 2i+1) = cos(pos / 10000^(2i/d))
차원 인덱스가 낮을수록(왼쪽) 빠르게 진동해 가까운 위치 차이를 구별하고, 높을수록(오른쪽) 느리게 진동해 먼 위치 차이를 구별한다 — 시계의 초침·분침·시침처럼 겹겹이 순서를 표현한다.

4. 인코더 vs 디코더 어텐션 차이

종류Q·K·V 출처특징
인코더 셀프 어텐션모두 입력 문장모든 위치가 서로를 양방향으로 볼 수 있음
디코더 마스크드 셀프 어텐션모두 지금까지 생성된 출력미래 토큰은 −∞로 가려서(마스킹) 아직 안 나온 단어를 못 훔쳐봄
디코더 교차 어텐션Q=디코더, K·V=인코더 출력지금 생성 중인 단어가 원문의 어느 부분과 관련있는지 참조 (번역의 핵심)

5. 핵심 정리

멀티헤드

임베딩을 조각내 여러 관점으로 동시에 어텐션 → 다양한 관계를 병렬로 포착.

위치 인코딩

순서 없는 어텐션에 사인·코사인 패턴을 더해 위치 정보를 주입.

잔차 + 정규화

층을 깊게 쌓아도 기울기가 안정적으로 흐르도록 Add & Norm을 반복.

인코더 · 디코더

이해는 양방향 셀프 어텐션, 생성은 마스킹 + 교차 어텐션으로 원문을 참조.