핵심요약

순환(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]

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 비교의 세 축

  • 층당 계산 복잡도 / 병렬화 가능한 계산량 / 장거리 의존의 경로 길이 [6]
  • 근거는 명확하다 — 신호가 오가는 경로가 짧을수록 장거리 의존을 배우기 쉽다 [6]

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]

함께 보기