Title: Attention Is All You NeedAuthors: Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia PolosukhinAffiliation: Google Brain, Google Research, University of TorontoarXiv ID: arXiv:1706.03762 [cs.CL]Topic: Transformer, Self-Attention, Scaled Dot-Product Attention, Multi-Head Attention, Encoder–Decoder Architecture, Positional Encoding, Sequence-to-Sequence Learning, Neural Machine TranslationVenue: Advances in Neural Information Processing Systems 30, 31st Conference on Neural Information Processing Systems, NIPS 2017Pages: 5998–6008Year: 2017
1. One-line Summary
2. Problem
The dominant sequence transduction models are based on complex recurrent or convolutional neural networks that include an encoder and a decoder.
이 논문이 나올때쯤, sequence transduction model에서 지배적이었던 구조는Encoder-Decoder의 복잡한 RNN 방식이나 CNN방식 이었음
Sequence Transduction이란 한 시퀀스를 다른 시퀀스로 변환하는 작업
영어 문장 → 독일어 문장
음성 신호 → 텍스트
긴 문장 → 요약문
The best performing models also connect the encoder and decoder through an attention mechanism.
성능이 가장 좋은 모델도 encoder-decoder 연결에 attention 기법을 활용한 경우.이전 발전 흐름은 크게 LSTM (Long short-term memory)와 gated recurrent neural networks였음
LSTM과 Gated Recurrent Neural Networks
LSTM과 GRU 같은 게이트 기반 RNN이 당시 시퀀스 모델링의 대표 방법이었다
1. 기본 RNN의 문제
기본 RNN은 현재 입력 xt와 이전 시점의 기억 ht−1로 새로운 기억 ht를 만듭니다.
ht=tanh(Wxxt+Whht−1+b)
하지만 기본 RNN에는 다음 문제가 있습니다.
이전 정보를 얼마나 남길지 결정하는 장치가 없음
새 정보가 들어올 때 기존 기억이 쉽게 덮어써짐
긴 시퀀스에서는 앞부분 정보가 소실되기 쉬움
역전파 과정에서 기울기 소실이 발생하기 쉬움
LSTM과 GRU는 이 문제를 완화하기 위해 gate를 도입한 RNN입니다.Gate는 0과 1 사이의 값을 출력하여 정보의 통과량을 조절합니다.
1. Reset gate : 새로운 정보를 계산할 때 이전 기억을 얼마나 참고할지 결정합니다.
rt=σ(Wrxt+Urht−1+br)
reset gate가 0에 가까우면 이전 기억을 거의 무시합니다.
2. Update gate : 이전 기억을 얼마나 유지하고 새로운 기억으로 얼마나 바꿀지 결정합
zt=σ(Wzxt+Uzht−1+bz)
후보 hidden state를 계산합니다.
h~ttanh(Whxt+Uh(rt⊙ht−1)+bh)
그리고 이전 기억과 후보 기억을 섞어 새로운 hidden state를 만듭니다.
ht(1−zt)⊙ht−1+zt⊙h~t
GRU는 LSTM과 달리 별도의 cell state가 없으며, hidden state 하나로 기억을 관리합니다.
4. LSTM과 GRU 비교
구분
LSTM
GRU
전체 명칭
Long Short-Term Memory
Gated Recurrent Unit
주요 gate
Forget, Input, Output
Reset, Update
상태
Hidden state + Cell state
Hidden state만 사용
구조
상대적으로 복잡함
상대적으로 단순함
파라미터 수
더 많음
더 적음
계산 속도
상대적으로 느릴 수 있음
상대적으로 빠를 수 있음
장기 정보 학습
가능
가능
기본 RNN 대비
기울기 소실 완화
기울기 소실 완화
5. 기본 RNN과의 핵심 차이
구분
기본 RNN
LSTM
GRU
정보 제어 gate
없음
3개
2개
별도 cell state
없음
있음
없음
장기 의존성
학습하기 어려움
상대적으로 잘 학습
상대적으로 잘 학습
구조 복잡도
낮음
높음
중간
순차 계산 필요
필요
필요
필요
기본 RNN → 기억 소실 문제
LSTM·GRU → gate를 사용해 기억 문제 완화 하지만 순차 계산 문제는 여전히 존재
The fundamental constraint of sequential computation, however, remains.
Transformer → recurrence 자체를 제거하고 attention으로 병렬 처리
그런데 지금까지는 Attention이 단순히 RNN과 결합하여 보조적인 방식으로만 사용되었음→ Recurrence 대신 attention에 의존하는 Transformer를 만들자!기대효과
Transformer allows for significantly more parallelization and can reach a new state of the art in translation quality after being trained for as little as twelve hours on eight P100 GPUs.
3. Method
Self-attention, sometimes called intra-attention is an attention mechanism relating different positions of a single sequence in order to compute a representation of the sequence.
Self-attention에서는 각 단어가 같은 문장 안의 다른 모든 단어를 참고한다.
Self Attention은 일종의 soft한 dictionary.
Source: author’s Notion noteSource: 3Blue1Brown 한국어, 「그 이름도 유명한 어텐션, 이 영상만 보면 이해 완료! - DL6, YouTube, [스크린샷 시점 06:12] 화면 캡처, https://www.youtube.com/watch?v=_Z3rXeJahMs예를 들어 creature이라는 단어를 처리할 때 다음과 같은 관계를 볼 수 있다.
수식하는 표현이 무엇이 있는가? → fluffy , blue
즉, creature의 새로운 표현은 creature만 보고 만드는 것이 아니라 문장 전체와의 관계를 이용해 계산된다.
auto-regressive : 모델이 이전에 자신이 생성한 출력들을 입력으로 다시 사용하여 다음 출력을 하나씩 생성한다모델이 번역문을 한 단어씩 생성한다면 다음과 같이 작동
1단계 입력: <START> 출력: 나는2단계 입력: <START> 나는 출력: 고양이를3단계 입력: <START> 나는 고양이를 출력: 좋아한다4단계 입력: <START> 나는 고양이를 좋아한다 출력: <END>
즉, 고양이를 생성할 때는 이전에 생성한 나는을 참고하고, 좋아한다를 생성할 때는 이전에 생성한 나는 고양이를을 참고합니다.이를 확률로 표현하면 전체 출력 시퀀스의 확률은 다음과 같이 분해됩니다.
P(y1,y2,…,yT∣x)=∏t=1TP(yt∣y1,…,yt−1,x)
x: 입력 문장
yt: 현재 생성할 출력 토큰
y1,…,yt−1: 이전까지 생성한 출력 토큰
핵심은 조건부 확률 P(yt∣y<t,x)
입력 x와 이전 출력 y<t가 주어졌을 때, 다음 토큰 yt의 확률을 계산한다
Auto-regressive 모델의 장단점
장점
이전 문맥을 반영하여 자연스러운 시퀀스를 생성할 수 있음
출력 길이를 미리 정하지 않아도 됨
번역, 문장 생성, 음성 생성 등에 적합함
단점
추론할 때 토큰을 순차적으로 생성하므로 완전한 병렬화가 어려움
앞에서 잘못 생성한 토큰이 이후 생성에도 영향을 줄 수 있음
긴 출력을 생성할수록 시간이 오래 걸림
3.1. Training
Training data and batching
English-German (4.5M sentence pairs) : byte-pair encoding 방식으로 문장을 인코딩함 (37000개 정도의 token생성)
English-French (36M sentences) : 마찬가지로 byte-pair encoding 방식으로 32000 word-piece vocabulrary 생성
각각의 training batch는 대략 25000 source token과 25000 target token이 있음
Hardware and Schedule
8 NVIDIA P100 GPUs : 각각의 training step이 0.4초정도 걸림 (
residual connection에서 sub-layer가 새로 계산한 출력에 dropout을 적용한 뒤, 원래 입력과 더하는 방식→ Residual branch, 즉 sub-layer가 만든 변화량에 dropout을 넣기 때문에 residual dropout이라고 부른다.
LayerNorm(x+Dropout(Sublayer(x)))
Label Smoothing
정답 토큰에 확률 1을 몰아주는 대신, 일부 확률을 다른 클래스에 분산
일반적인 one-hot label이 다음과 같다면:
[0,0,1,0]
Label smoothing을 적용하면 대략 다음처럼 됩니다.
[0.033,0.033,0.9,0.033]
정확한 분배 방식은 구현에 따라 달라질 수 있지만, 핵심은 모델이 정답 클래스에 지나치게 확신하지 않도록 만드는 것
4. Key Idea
We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely.
기존의 방법론들이 Attention을 활용하지 않는건 아니지만 Transformer가 sequence-aligned RNN이나 Convolution을 활용하지 않고 입출력의 representation을 계산하기 위해 self-attention을 사용한 첫번째 Transduction 모델이다.
왜 Transformer가 RNN, CNN 보다 유용할 수 있을까
layer 당 총 계산 복잡도 측면에서의 이익
parallelized 될 수 있는 계산량 측면에서의 이익
network 내부에서 long-range dependencies의 path length 측면에서의 이익
더 해석 가능한 모델의 설계
attention distribution을 통해 해석가능하다 → 각각의 attention head가 서로 다른 기능을 학습할 뿐만 아니라, 많은 head가 문장의 문법적 구조와 의미적 구조에 관련된 행동을 보이는 것으로 나타난다.
고전적인 RNN encoder–decoder에서는 입력 시퀀스의 정보를 최종 hidden state와 같은 제한된 표현에 압축하는 병목이 발생할 수 있다. 반면 Transformer는 각 입력 토큰의 문맥화된 표현을 유지하고, Decoder가 cross-attention을 통해 필요한 위치의 정보를 직접 참조한다.
Source: author’s Notion noteSource: Original DocumentSource: author’s Notion noteSource: Original Documentation
4.1. Encoder of Model Architecture
Self-attention은 토큰 사이의 관계를 학습하고, position-wise FFN은 문맥이 반영된 각 토큰의 특징을 개별적으로 변환→ Self-attention은 token mixing, FFN은 feature/channel mixing
Source: author’s Notion noteSource: ChatGPT의 Visualize ToolEncoder는 N=6의 동일한 layer로 구성된다→ 각 layer는 두개의 sub-layer로 나뉘는데 첫째는 multi-head self-attention mechanism이고, 둘째는 간단한 position-wise fully connected feed-forward network이다. 그리고 각 sub-layer를 개별적으로 residual connection과 layer normalization이 감싼다
layer normalization (각 sub-layer의 출력이 LayerNorm(x+Sublayer(x))로 된다.
→ 결과적으로 embeeding layer 뿐만 아니라 모델의 모든 sub-layer의 출력 공간은 512이다 ( dmodel=512, X∈Rn×512(n은입력문장의길이))
4.1.1. Multi-head self-attention
Self-attention의 의미self는 Query, Key, Value가 모두 같은 입력 시퀀스에서 만들어진다는 뜻. 즉 각 토큰이 같은 시퀀스의 모든 토큰과 관련성을 계산
Key는 관련성을 계산하기 위한 정보이고, Value는 실제로 전달할 정보
벡터
의미
역할
Query (Q)
찾고 싶은 정보
다른 토큰과의 관련성을 질문
Key (K)
자신이 가진 정보의 표지
Query와 비교되어 관련성 점수 계산
Value (V)
실제 전달할 정보
관련성 점수에 따라 가중합됨
Multi-head의 의미Attention을 한 번만 수행하지 않고, 서로 다른 가중치를 가진 여러 attention을 병렬로 수행한다원 논문에서는 다음 설정을 사용
dmodel=512,h=8, 따라서 각 head의 차원은 다음과 같다.
dk=dv=8512=64
512차원 입력 ├─ Head 1: 64차원 Attention ├─ Head 2: 64차원 Attention ├─ Head 3: 64차원 Attention ├─ ... └─ Head 8: 64차원 Attention ↓ 이어 붙임 ↓ 512차원
각 head는 서로 다른 projection을 학습하므로 서로 다른 관계에 주목할 수 있다. (e.g. 가까운 단어 관계, 주어와 동사의 관계, 멀리 떨어진 토큰 관계, 특정 위치나 문맥 관계)
다만 각 head가 반드시 사람이 해석할 수 있는 한 가지 문법 역할만 담당하는 것은 아니고 실제 역할은 학습 과정에서 결정된다.
position-wise는 각 토큰 위치에 같은 fully connected network를 독립적으로 적용한다는 뜻입니다.Attention을 통과한 출력이 다음과 같다고 할때, Position-wise FFN은 각 토큰 벡터에 동일한 함수를 적용합니다.
X=x1x2⋮xn,xi∈R512
FFN(x)=max(0,xW1+b1)W2+b2
원 논문의 차원은 다음과 같습니다.
512→2048→512,yi=FFN(xi)
모든 위치에 같은 (W1,W2,b1,b2)를 사용합니다. 다만 Encoder의 서로 다른 layer끼리는 FFN 파라미터를 공유하지 않습니다.
왜 position-wise라고 하는가
이 FFN은 한 번 계산할 때 다른 토큰 위치를 직접 참고하지 않기 때문예를 들어 두 번째 토큰을 처리할 때:
y2=FFN(x2) 이며, FFN 자체는 x1이나 x3를 입력으로 받지 않습니다.
따라서 역할을 구분하면 다음과 같습니다.
구성요소
정보를 섞는 방향
Self-attention
서로 다른 토큰 위치 사이
Position-wise FFN
한 토큰의 특징 차원 사이
4.2. Decoder of Model Architecture
Source: author’s Notion noteSource: ChatGPT의 Visualize ToolDecoder도 Encoder와 마찬가지로 6개의 동일한 layer로 구성되어있고 각각의 layer에는 3개의 sub-layer가 들어가 있으며 그 중 첫번쨰 두번쨰는 Encoder와 동일하게 multi-head self-attention과 position-wise FFN이다.→ 여기서 세번째 sub-layer로 들어오는게 바로 masked multi-head self-attention이다.
→ decoder에서는 encoder와는 달리 입력받는 sequence position 다음의 토큰을 출력하는 것이 목적이기에 입력받은 position 뒤의 position을 볼 수 없게 마스킹할 필요가 있다. 그렇기 때문에 도출한 position i에 대한 prediction이 i보다 작은 positions로만 기반했다라고 할 수 있기 때문이다.
4.3. Attention
An attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors.어텐션이란 결국 쿼리와 키밸류쌍을 매핑해주는 것.
Source: author’s Notion noteSource: Original Documentation, Attention sub-layer VisualizationMulti-Head Attention = 여러 개의 Scaled Dot-Product Attention을 병렬로 실행 → 결과를 연결 → 최종 Linear 변환
논문의 경우 h = 8 parallel attention layers, or head
4.3.1. Scaled Dot-Product Attention
입력값은 dk 차원의 queries (Q)와 keys (K), dv차원의 values (V)가 들어온다. 모든 key에 대해 query를 내적연산을 해준뒤, 입력의 key 차원 dk으로 나누어 준 뒤 softmax function을 도입해 weight 값을 value에 적용해준다
Attention(Q,K,V)=softmax(dkQKT)V
논문에 따르면, attention function으로 많이 사용되는 함수는 additive attention과 dot-product (또는 multiplicative) attention이다.
additive attention의 경우 feed forward network와 단일 은닉층을 활용해서 compatibility function을 계산하는데, 둘은 이론적인 복잡성 면에서는 비슷하지만 내적 방식의 경우 실제 구현에서는 훨ㅆ니 더 빠르고 공간복잡성에서 효율성을 보여준다고 한다.→ 최적화된 배열 연산 코드로 구현가능하기 때문
또한 dk가 작을때는 두 방식이 비슷하게 작동하고, dk가 커질때는 dk에 대해 스케일링을 하지 않는다라는 전제 하에 덧셈 방식이 훨씬 성능이 좋다고 한다. 그렇기에 연구진은 이번 케이스는 dk가 큰 경우이기에 dk1를 통해 스케일링을 해주어 내적 차원이 커지고, 그 결과 내적값의 분포가 더 넓어져 절댓값이 커지는 경향을 방지했다.
만약 내적값의 분포가 넓어지는 경우, 이에 따라 softmax 결과값도 극단적으로 0과 1에 가까워지기에 gradient가 대부분의 위치에서 작아져 학습이 불안정하거나 느려질 수 있다 (SGD)
4.3.2. Applications of Attentions in Transformer
Attention 종류
Query (Q)
Key, Value (K,V)
볼 수 있는 범위
Encoder self-attention
Encoder 이전 층 출력
Encoder 이전 층 출력
입력 전체
Decoder masked self-attention
Decoder 이전 층 출력
Decoder 이전 층 출력
현재와 이전 출력만
Encoder–decoder attention
Decoder 이전 sub-layer 출력
Encoder 최종 출력
입력 전체
4.3.3. Position-wise Feed Forward Networks
ReLU Activation이 적용된 모습.
FFN(x)=max(0,xW1+b1)W2+b2
4.4. Positional Encoding
Self-attention만으로는 토큰의 순서를 구분할 수 없기 때문에, sequence 내부 각 토큰 embedding에 relative/absolution position 정보를 추가한다.
… because we hypothesized it would allow the model to easily learn to attend by relative positions, since for any fixed offset k, PEpos+kcan be represented as a linear function of PEpos
5. Result
WMT 2014 Englishto-German
WMT 2014 English-to-French
This paper
28.4 (BLEU) / +2 BLEU
41.8 (BLEU) /SOTA
번역 작업에선 기존의 Recurrent 기반이나 Convolutional 기반의 아키텍쳐보다 훨씬 빠를뿐만 아니라 번역 결과 역시 최고 성능을 찍었다.
Source: author’s Notion noteSource: Original DocumentationSource: author’s Notion noteSource: Original Documentation(A) : the number of attention heads and the attention key and value dimensions,keeping the amount of computation constant
head의 증가가 반드시 성능의 증가로 이어지는 건 아님
(B) : Reducing the attention key size dk hurts model quality
We further observe in rows (C) and (D) that, as expected, bigger models are better, and dropout is very helpful in avoiding over-fitting
Source: author’s Notion noteSource: Original Documentation
Transformer가 기계번역에만 특화된 모델이 아니라, 다른 시퀀스 문제에도 일반화되는지 확인e.g. English constituency parsing(문장 성분 구문 분석)
학습 데이터가 제한된 경우
추가 데이터를 활용한 semi-supervised 환경
→ task-specific tuning이 거의 없었는데도 기존 전문 parser들과 비슷한 성능을 냈다.
Semi-supervised Learning이란 무엇인가?
Semi-supervised learning은:
소량의 정답 라벨이 있는 데이터와, 많은 라벨 없는 데이터를 함께 사용하는 학습 방식
Semi-supervised 방식에서는 기존 parser로 라벨 없는 문장의 구문 트리를 임시로 생성한 뒤, 이를 추가 학습 데이터처럼 사용할 수 있습니다.
라벨 있는 WSJ 데이터 ↓초기 parser 학습 ↓라벨 없는 문장에 임시 구문 트리 생성 ↓기존 데이터 + 임시 라벨 데이터로 재학습
이처럼 모델이 생성한 임시 라벨을 사용하는 방식을 흔히 pseudo-labeling 또는 구문 분석 문맥에서는 self-training이라고 합니다.→ Pseudo-label에 오류가 있더라도 전체적으로 맞는 정보가 더 많다면 유용할 수 있습니다.예를 들어 초기 parser의 정확도가 충분히 높아 추가 문장 100만 개 중 대부분의 구조를 올바르게 예측한다면, 일부 오류가 포함되어 있어도 학습 데이터의 규모가 크게 증가합니다.→ 물론 semi-supervised learning의 한계도 존재초기 parser가 특정 구조를 반복해서 틀리면:
초기 모델의 편향→ 잘못된 pseudo-label 생성→ 최종 모델이 같은 오류 학습→ 편향 강화
가 발생할 수 있습니다. 이를 confirmation bias라고 한다.
semi-supervised 학습의 핵심 질문은 “pseudo-label이 모두 맞는가?”가 아니라 다음입니다.
일부 오류가 있는 추가 학습 데이터를 사용했을 때, 인간 정답 테스트 세트에서 최종 모델의 성능이 실제로 향상되는가?
BLEU란 무엇인가?
Bilingual Evaluation Understudy, 기계번역 결과가 사람이 작성한 기준 번역문과 얼마나 비슷한지 측정하는 자동 평가 지표→ 모델 번역문과 정답 번역문에서 연속된 단어 묶음인 n-gram이 얼마나 일치하는지 계산
BLEU는 기본적으로 모델이 생성한 n-gram 중 기준 번역에도 존재하는 비율을 계산합니다.
pn=모델번역에포함된전체 n-gram 수기준번역과일치하는 n-gram 수
이러한 측면에서 modified n-gram precision이라고도 한다.
Brevity Penalty
모델이 아주 짧은 문장만 생성하면 precision이 높아질 수 있습니다.기준 문장:
the cat is sitting on the mat
모델 출력:
the cat
출력된 두 단어는 모두 맞으므로 단순 precision은 높지만 좋은 번역은 아닙니다. 이를 방지하기 위해 BLEU는 출력 문장이 지나치게 짧으면 brevity penalty, 즉 길이 패널티를 부여합니다.
BP={1e1−r/cc>rc≤r
c: 모델 번역 길이
r: 기준 번역 길이
BLEU=BP⋅exp(∑n=1Nwnlogpn)
일반적으로 N=4이고, 1-gram부터 4-gram까지 동일한 가중치를 사용합니다.
BLEU 점수 해석
BLEU는 보통 0에서 100 사이의 값처럼 표현됩니다.
BLEU 0: 기준 번역과 거의 일치하지 않음
BLEU 100: 기준 번역과 완전히 일치
다만 실제 계산값은 0에서 1 사이로 나온 뒤 100을 곱해 표시하는 경우가 많습니다.중요한 점은 다음과 같습니다.
BLEU 28.4는 번역 정확도가 28.4%라는 뜻이 아닙니다.
BLEU는 단어 및 n-gram 일치도, 문장 길이 패널티를 결합한 별도의 점수입니다.또한 BLEU 2점 상승도 정확도 2% 상승과 같은 의미가 아닙니다. 동일한 데이터셋과 동일한 계산 조건에서 모델끼리 비교할 때 의미가 있습니다.
6. Limitation
Transformer는 RNN의 순차 연산을 제거해 병렬화와 장거리 의존성 학습을 개선했지만, full self-attention의 O(n2)복잡도로 인해 긴 시퀀스 처리 비용이 크다.
또한 순서·지역성에 대한 inductive bias가 약하고, 원 논문의 실험이 기계번역과 구문 분석에 집중되어 있어 비디오와 같은 다른 데이터 유형에서의 효과는 추가 검증이 필요하다. Attention pattern 역시 모델 판단의 완전한 설명으로 해석하기 어렵다.
7. Connection to My Research
프레임 또는 영상 구간을 토큰으로 볼 수 있다 → 단 이는 영상이기 때문에 ViT 이후에 가능할 것 같다