14강 / 20강
트랜스포머 — 같은 덩어리를 쌓는다
어텐션 + 완전연결 + 잔차 + 층 정규화
트랜스포머 한 덩어리에 든 것은 전부 앞에서 나온 것들입니다.
x
├──────────────┐
│ 층 정규화 (9강)
│ 멀티헤드 어텐션 (13강)
└──── + ───────┘ ← 잔차 연결 (6강)
│
├──────────────┐
│ 층 정규화
│ 완전연결 두 층 + ReLU (3강)
└──── + ───────┘ ← 잔차 연결
│
출력 → 다음 덩어리로
새로운 것은 멀티헤드 하나뿐입니다.
헤드마다 <b>다른 자리</b>를 봅니다. 차원을 쪼개 나눠 가지므로 계산량은 그대로예요.
Python
브라우저에서 실행
자리 정보를 따로 넣어야 한다
어텐션에는 순서 개념이 없습니다. Q·K 내적은 자리를 안 보거든요 — 서열을 뒤섞어도 결과가 같습니다.
그래서 위치 정보를 입력에 더해 넣습니다.
입력 = 토큰 임베딩 + 위치 임베딩
토큰 임베딩 "이 자리는 알라닌이다"
위치 임베딩 "이 자리는 앞에서 37번째다"
둘을 더한 것이 첫 덩어리로 들어갑니다. 이 한 줄이 없으면 트랜스포머는 서열을 순서 없는 주머니로 봅니다.
위치 임베딩 없이는 서열을 <b>뒤섞어도 결과가 같습니다</b>.
Python
브라우저에서 실행
🤔 확인 문제
트랜스포머에 위치 임베딩을 넣지 않으면?
해설 어텐션의 Q·K 내적은 자리를 보지 않습니다. 순서가 뜻을 가지는 자료라면 위치 정보를 따로 넣어 줘야 해요.