핵심요약
순환(RNN)을 완전히 걷어내고 어텐션만으로 시퀀스를 처리해도 된다는 걸 보인 논문이다. 저자들의 진단은 "순차 계산이 병목이다"였고, 그걸 없애자 번역 품질이 오르면서 학습 비용이 오히려 한 자릿수 줄었다. 오늘날 언어 모델 대부분의 골격인 트랜스포머(Transformer)가 여기서 나왔다.
PART 1 · 무엇이 막혀 있었나
1-1 순차 계산이 근본 병목이었다
- RNN은 위치
t의 은닉상태를t-1에서 만든다. 이 구조상 한 예제 안에서는 병렬화가 원천적으로 불가능하다 [1] - 시퀀스가 길수록 치명적이다. 메모리 제약이 배치 크기를 묶어서 예제 사이의 병렬화도 막힌다 [1]
- 인수분해 트릭·조건부 계산으로 효율을 올린 선행 연구가 있었지만, 순차성이라는 제약 자체는 남아 있었다 [1]
1-2 합성곱 대안도 "거리" 문제를 못 풀었다
- ByteNet·ConvS2S는 병렬화는 되지만, 두 위치를 연결하는 데 필요한 연산 수가 거리에 따라 늘어난다 — ConvS2S는 선형, ByteNet은 로그 [2]
- 그래서 멀리 떨어진 의존 관계를 배우기가 어렵다 [2]
PART 2 · 아이디어
2-1 어텐션은 "거리를 상수로 만드는 장치"다
2-2 Scaled Dot-Product — 왜 √d_k로 나누나
- 쿼리와 모든 키의 내적을 구하고 √d_k로 나눈 뒤 소프트맥스를 걸어 값에 대한 가중치를 얻는다 [3]
- 덧셈 어텐션과 이론적 복잡도는 비슷하지만, 내적 방식은 고도로 최적화된 행렬곱으로 구현할 수 있어 실제로 훨씬 빠르고 메모리 효율이 좋다 [3]
- 나누는 이유는 저자들도 추측으로 제시한다 — d_k가 크면 내적 값이 커지고, 소프트맥스가 기울기가 극도로 작은 영역으로 밀려난다는 것 [3]
2-3 멀티헤드 — 왜 나눠서 여러 번 보나
- 한 번의 어텐션 대신, 서로 다른 학습된 사영으로 h번 병렬 수행한 뒤 결합한다 [4]
- 목적은 서로 다른 위치의 서로 다른 표현 부분공간을 동시에 보는 것 [4]
- 헤드마다 차원을 줄이기 때문에 총 계산 비용은 단일 헤드와 비슷하게 유지된다 [4]
2-4 순서 정보는 어디서 오나
- 순환도 합성곱도 없으니 모델은 토큰의 순서를 알 방법이 없다. 그래서 위치 인코딩을 입력 임베딩에 더한다 [5]
- 서로 다른 주파수의 사인·코사인 함수를 쓴다. 학습된 위치 임베딩과 성능은 거의 같았지만, 훈련 때보다 긴 시퀀스로 외삽할 수 있으리라 기대해 이쪽을 골랐다 [5]
PART 3 · 무엇으로 증명했나
3-1 비교의 세 축
3-2 번역 성능과 비용
- WMT 2014 영→독에서 28.4 BLEU로, 앙상블을 포함한 기존 최고 기록을 2.0 이상 넘겼다 [7]
- 학습은 P100 GPU 8장으로 3.5일 [7]
- base 모델조차 기존에 발표된 모델과 앙상블을 전부 넘었고, 경쟁 모델 대비 학습 비용은 일부에 불과했다 [7]
- 영→불에서는 기존 단일 모델을 모두 상회하면서 학습 비용은 1/4 미만 [7]
3-3 번역 전용 구조가 아니다
- 영어 구문 분석(constituency parsing)에도 적용해 일반화 가능성을 보였다 [8]
PART 4 · 논문이 남긴 것
4-1 저자들이 밝힌 다음 계획
- 텍스트 외 다른 modality로 확장, 이미지·오디오·비디오처럼 큰 입출력을 다루기 위한 국소·제한 어텐션 연구, 그리고 생성의 순차성 줄이기 [9]
- 학습·평가 코드는 tensor2tensor로 공개했다 [9]
맥락
- 영→불 BLEU가 논문 안에서 어긋난다 — 표 2는 41.8, 본문 서술은 41.0이다. v7 개정 과정에서 한쪽만 갱신된 것으로 보인다. 인용할 때 어느 쪽을 쓰는지 밝히는 게 안전하다 [7]
- √d_k 스케일링의 근거는 증명이 아니라 저자들의 추측("We suspect")으로 제시된다 [3]
함께 보기
- Jensen Huang: The Mindset That Built NVIDIA — 2-1의 어텐션을 "범용 함수 근사기의 발견"으로 읽은 관점. 같은 대상을 다른 렌즈로 본 사례