AI VIDEO BRIEFING
트랜스포머 구조 정리: 토크나이저·위치 인코딩·어텐션까지 CMU 딥러닝 강의 요약
카네기멜런대 딥러닝 강의가 RNN의 정보 병목과 병렬화 한계에서 출발해 토크나이저 선택, 사인·코사인 위치 인코딩, 멀티헤드 어텐션, 플래시 어텐션과 KV 캐시까지 트랜스포머 설계의 이유를 차례로 풀어낸다.

핵심 메시지
쉽게 이해하기
카네기멜런대 딥러닝 강좌 11785의 트랜스포머 회차는 새 구조를 소개하기 전에 먼저 이전 구조가 무엇에 걸려 넘어졌는지부터 짚는다. 순환신경망(RNN)은 문장 전체를 마지막 은닉 상태 하나에 눌러 담아 디코더로 넘기는데, 네 단어를 일곱 단어로 옮기는 정도라면 몰라도 문단 단위가 되면 그 고정 길이 벡터에 정보가 다 들어가지 않는다. 강연자는 이를 정보 병목이라고 부르며, 문단 첫 단어가 마지막 단어에 영향을 주는 경우를 예로 든다.
두 번째 문제는 거리다. 첫 번째 토큰이 백 번째 토큰과 소통하려면 아흔아홉 단계의 변환을 통과해야 하고, 그 사이에 기울기가 흐려지거나 폭주한다. LSTM의 게이트가 이를 완화했지만 없애지는 못했다. 세 번째는 속도다. t 시점의 은닉 상태는 t-1이 계산되기 전에는 만들 수 없어서, 대규모 병렬 연산에 최적화된 GPU가 순차 처리에 묶여 놀게 된다. 웹 규모 데이터를 학습하기에는 구조 자체가 맞지 않았다.
해법은 디코더가 인코더의 모든 은닉 상태를 직접 들여다보게 하는 것이었다. 질의와 각 은닉 상태의 내적으로 가중치를 구해 가중합을 만들면, 마지막 상태 하나에 의존하던 문맥 벡터를 매 시점 새로 만들 수 있다. 여기서 자연스럽게 다음 질문이 나온다. 순환이 정말 필요한가. 강연은 이 질문이 2017년 트랜스포머로 이어졌다고 정리한다. 순환을 걷어내자 정보 감쇠와 순차 병목이 동시에 사라졌다.
이어지는 절반은 파이프라인을 순서대로 따라간다. 토크나이저는 글자 단위로 가면 어휘는 작지만 시퀀스가 지나치게 길어지고 개별 글자에 의미가 거의 없으며, 단어 단위로 가면 love·loving·loved가 각각 자리를 차지해 출력 공간이 커지고 처음 보는 단어를 감당하지 못한다. 그 사이를 메우는 것이 바이트 페어 인코딩처럼 빈도 높은 쌍을 목표 어휘 크기에 닿을 때까지 병합해 올라가는 방식이고, 유니그램은 반대로 큰 후보 집합에서 쓸모가 적은 토큰을 깎아 내려온다. 센텐스피스는 공백 자체를 특수 토큰으로 다뤄 띄어쓰기가 없는 언어까지 처리한다.
어텐션 자체는 데이터베이스 조회에 빗대어 설명된다. 키를 정확히 맞춰 값을 꺼내는 하드 룩업 대신, 질의와 키의 유사도로 값을 가중합하는 소프트 룩업이라서 미분이 가능하다. 내적을 차원의 제곱근으로 나누는 이유는 값이 커지면 소프트맥스가 평평해져 기울기가 사라지기 때문이고, 멀티헤드를 쓰는 이유는 질의와 키가 문맥에 따라 여러 방식으로 닮을 수 있어서다. 마지막으로 강연은 로터리·앨리바이 같은 위치 인코딩 개선과, 결과는 그대로 두고 GPU의 빠른 SRAM 안에서 계산을 끝내 약 2.8배 속도를 얻는 플래시 어텐션, 그리고 추론 때 키와 값을 다시 계산하지 않는 KV 캐시를 짧게 훑는다.
주요 인사이트
- 구조를 외우는 대신 이전 구조가 무엇에 실패했는지를 먼저 보면, 잔차 연결이나 스케일링 같은 세부 항목이 임의의 규칙이 아니라 특정 실패에 대한 답이라는 점이 드러난다.
- 토크나이저는 성능 표에 잘 드러나지 않지만, 어휘 크기와 시퀀스 길이를 정하는 순간 어텐션의 제곱 비용까지 함께 결정하는 상류 선택이다.
- 위치 인코딩에서 차원마다 파장을 다르게 두는 이유는 한 차원에서 구분되지 않는 위치를 다른 차원에서 구분하기 위해서이며, 이는 위치를 여러 축척으로 동시에 보는 설계다.
- 사인·코사인 인코딩이 이론적으로는 더 긴 문장으로 확장 가능해 보이지만 실제로는 그렇지 않다는 점이, 이후 로터리나 앨리바이 같은 대안이 등장한 배경이다.
- 플래시 어텐션은 수식을 바꾸지 않고 메모리 계층을 다르게 쓰는 것만으로 속도를 얻는다. 알고리즘 개선이 반드시 수학의 변경을 뜻하지는 않는다.
자주 묻는 질문
어텐션 점수를 계산할 때 왜 차원의 제곱근으로 나누나요?
질의와 키가 평균 0, 분산 1이라고 가정하면 내적의 분산이 차원 수만큼 커집니다. 값이 지나치게 크거나 작아지면 소프트맥스가 한쪽으로 평평해져 학습에 쓸 기울기 정보가 거의 남지 않기 때문에, 제곱근으로 나눠 소프트맥스가 잘 작동하는 구간으로 값을 되돌립니다.
셀프 어텐션과 크로스 어텐션은 무엇이 다른가요?
연산은 같고 질의·키·값의 출처가 다릅니다. 셀프 어텐션은 셋 모두 같은 입력 시퀀스에서 나와 각 토큰이 주변 토큰과 얼마나 관련되는지를 따집니다. 크로스 어텐션은 질의가 디코더에서, 키와 값이 인코더 출력에서 나와, 번역이나 음성 인식처럼 다른 표현을 조건으로 생성할 때 쓰입니다.
프리놈(pre-norm)이 포스트놈보다 널리 쓰이는 이유는 무엇인가요?
강연은 주로 경험적 결과라고 전제하면서, 정규화를 먼저 적용하면 각 층이 안정된 입력을 받아 극단적인 활성값이 줄고 수렴이 나아진다고 설명합니다. 원논문의 포스트놈도 좋은 성능을 낼 수 있지만 학습률과 워밍업 일정을 훨씬 까다롭게 맞춰야 합니다.
플래시 어텐션을 쓰면 결과가 달라지나요?
달라지지 않습니다. 출력은 기존 어텐션과 같고, 계산을 타일 단위로 쪼개고 온라인 소프트맥스를 써서 읽고 쓰는 작업을 느린 메인 메모리 대신 빠른 GPU SRAM 안에 묶어 두는 입출력 최적화입니다. 강연은 단순 구현 대비 약 2.8배 빨라진다고 소개합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗