일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Clustering
- CV
- 군집화
- Faster R-CNN
- Region Proposal Networks
- K-means
- hierarchical clustering
- Deep Learning
- super-resolution
- Fast R-CNN
- RPN
- 이미지 초해상화
- 군집
- 비지도학습
- Object Detection
- SRGAN
- GAN
- 적대적 생성 신경망
- Today
- Total
수혁지능
[논문 리뷰] Attention is All You Need, Transformer (2017) 본문
개요
2021년 기준으로 최신 고성능 모델들은 Transformer 아키텍처를 기반으로 하고 있다.(우리가 Transformer를 알아야 하는 이유)
GPT: Transformer의 Decoder 아키텍쳐 활용
BERT: Transformer의 Encoder 아키텍쳐 활용
딥러닝 기반의 기계 번역 발전 과정
기존의 Seq2Seq 모델들의 한계점
가장 기본적인 Seq2Seq 모델의 형태
- context vector v에 소스 문장의 정보를 압축해야만 했음 >> bottleneck이 발생하여 성능 하락의 원인이 됨
- 디코더가 context vector를 매번 참고할수는 있으나, 여전히 소스 문장을 하나의 벡터에 압축해야 함
즉, 하나의 문맥 벡터가 소스 문장의 모든 정보를 가지고 있어야 하므로 성능이 저하됨.
Q: 매번 소스 문장에서의 출력 전부를 입력받게 할수는 없을까??
A: 어텐션 메커니즘을 적용해보자
Q: RNN과 CNN 구조를 꼭 이용해야 할까?
A: Transformer의 등장
Abstract
지금까지의 sequence transduction에서의 주류 model들은 모두 encoder-decoder 구조를 포함한 RNN or CNN 기반이었다. Best performing model은 attention mechanism을 적용한 encoder-decoder 구조의 모델. 저자들이 제안하는 새로운 모델인 Transformer는 오직 attention mechanism만을 사용하는 모델. 일체의 RNN, CNN구조가 사용되지 않는다. Transformer는 기존 모델들에 비해 more parallelizable하며, training에 걸리는 시간을 상당히 줄였다. 2014년, 영어 -> 프랑스어 번역 task에서 BLEU 기준 SOTA를 달성하였다. Transformer는 large and limited data 모두를 사용하여 영어 구문 분석에 성공적으로 적용하였기 때문에 다른 task에도 generalize할 수 있는 장점이 있다.
Introduction
기존 RNN model
- RNN은 기본적으로 input과 output sequence의 symbol position에 따라 factor computation을 진행
- t시점에 들어간 input과 이전 시점의 hidden state인 h(t-1)이 만나 현재 시점 t의 hidden state를 순차적으로 생성(h(t))
- 이러한 sequence의 성질때문에, training example간 병렬화는 불가능하며, 이는 longer sequence length에서 치명적
- 최근들어 factorization trick과 conditional computation 등의 improvement가 있었으나, sequential computation의 근본적인 제약은 바뀌지 않음 >> Attention mechanism이 나오기 전까지는..
Attention mechanism은 강력한 sequence modeling과 transduction model을 만들기 위한 필수적인 부분이 되었고, 이는 input, output sequence 안에서의 거리를 신경쓰지 않아도 되었기 때문이다. 이제까지 attention mechanism은 RNN와 결합되어 사용되고 있었다.
저자들은 input과 output간의 전체 맥락을 파악할 수 있는 attention mechanism에 전적으로 의존한 Transformer를 제안하게 되었으며, 일체의 RNN 혹은 CNN이 등장하지 않는다.
Model Architecture
Transformer의 model Architecture
Transformer는 Attention만으로 encoder, decoder를 구성한 모델이다.
이전에 generated된 symbol이 next를 generate하기 위한 additional input으로 들어가는 auto-regressive한 모델이다.
Encoder
- N = 6개의 동일한 블록으로 구성, 하나의 블록은 두개의 sub-layer로 구성. 처음 input이 첫 번째 층에 들어가고 그 층의 결과값이 다음 층의 input으로 들어가는 식.
- sub-layer의 첫 번째는 multi-head self-attention mechanism, 두 번째는 fully connected feed-forward network
- sub-layer 사이사이는 residual connection으로 연결되어 있고, layer normalization이 뒤따라옴.
- 각 sub-layer의 output은 LayerNorm(x+ Sublayer(x))이고, 이러한 residual connection을 용이하게 하기 위해 모델의 모든 레이어는 512 차원(dmodel)의 output을 만드는 것으로 통일함.
Decoder
- N = 6개의 동일한 블록으로 구성. Encoder 블록에 있는 2개의 sub-layer에 한 층 더 추가. 그 층은 Encoder의 최종 output에 대한 multi-head attention을 수행함.
- Encoder와 마찬가지로 sub-layer간 residual connection, layer normalization이 적용됨.
- 미래 시점의 정보가 흘러들어오는 것을 막기위해 self-attention layer를 변경함
- 그 변경된 layer는 masking 방식을 사용하여 i 번째의 prediction은 반드시 i번째 이전의 output에만 영향을 받게끔 만듦.
Attention
Transformer의 핵심 개념인 Attention은 Query와 Key-Value pairs를 output에 mapping하는 것으로 설명될 수 있다.
Output은 value들의 가중합으로 표현될 수 있으며, 가중치는 Query와 상응하는 Key간의 compatibility function으로 계산된다.
Scaled Dot-Product Attention
저자들이 Transformer에서 사용하는 attention의 이름은 'Scaled Dot-Product Attention'이다. 그 식은 아래와 같다.
Scaled Dot-Product Attention
- dk : keys of demension, dv : values of dimension
- input은 dk 차원의 queries, keys와 dv 차원의 values로 이루어져 있다. 먼저 query와 모든 key에 대해 dot products(내적)가 이루어지고, √dk만큼 스케일되어 최종적으로 value에 대한 가중치를 얻기 위해 Softmax를 적용한다.
- Dot products의 값이 너무 커지면, softmax가 너무 작은 gradient를 만들어내기 때문에 대표적으로 사용하는 attention 기법인 dot-product attention에서 추가적으로 스케일을 적용.
Multi-Head Attention
Multi-Head Attention
저자들은 dmodel 차원의 keys, values, queries에 대한 single attention function을 적용하는 것보다 dk, dk, dv 차원에 대해 각각 다르게 학습된 queries, keys, values에 대해 h번 linearly project하는 것이 더 좋다는 것을 발견하였다.
Multi-Head Attention
각각의 attention function들은 병렬적으로 dv차원의 output을 생성하며, 이것들은 모두 concatenated되어(dmodel의 차원으로 병합) final value를 산출하게 된다.
Multi-head attention은 model이 다른 시각에서 바라본 서로 다른 표현의 정보들을 결합할 수 있게 해준다.
Position-wise Feed-Forward Networks
앞서 살펴본 attention sub-layers 이외에도, encoder와 decoder는 fully-connected feed-forward network를 포함하고 있다.
Feed-Forward Networks
이 Network는 ReLU를 활성화함수로 사용하는 두개의 linear transformations로 구성되어 있다.
이는 kernel size가 1인 two convolutions으로 표현할 수도 있는데 input과 output의 차원은 8dmodel(=512)이고, inner-layer는 dff(=2048)의 차원을 가지고 있다.
Embeddings and Softmax
다른 sequence transduction model과 유사하게 input token과 output token을 dmodel차원의 벡터로 바꾸는 embedding 작업이 필요함. Decoder output을 0과 1 사이의 predicted next token probabilities로 변환하는 Softmax function도 사용. Two embedding layers와 pre-softmax linear transformation 사이에서는 동일한 가중치 matrix을 활용한다.
Positional Encoding
Transformer는 RNN이나 CNN을 일체 사용하지 않기 때문에, 시퀀스의 위치정보를 따로 주입해야 한다.(input으로 행렬이 한번에 들어가기 때문에) 이를 위해 저자들은 'positional encoding'을 encoder, decoder 블록 밑의 input embedding에 추가하였다. Positional encoding은 input embedding과 동일한 dmodel의 차원을 가지고 있어 더해질 수 있다.
Positional Encoding Function
위 식은 positional encoding에 적용되는 함수이다. 저자들은 이 함수가 모델이 상대적인 위치를 쉽게 학습하는데 용이하였다고 가정하였다.(어떤 고정된 k에 대해서, PE(pos+k)가 PE(pos)의 linear function으로 표현될 수 있기 때문)
Why Self Attention?
Transformer에서 Self Attention을 사용한 이유는? 3가지 지표를 고려
- Total computational complexity per layer : 계산복잡도
- sequence length n이 representation dimensionality d보다 작은 경우 self-attention is faster than RNN
- sequence length가 매우 클때는 self-attention 범위를 r로 제한시켜 연산복잡도 개선, 대신 maximum path length는 n/r로 증가
- The amount of computation that can be parallelized: 병렬연산이 가능한 양
- self-attention layer는 모든 포지션에 단 한번에 연결가능(O(1))
- RNN은 그에 반해 O(n)의 sequential operation이 필요함(이전 시점부터 은닉값이 계속 누적되므로)
- The path length between long-range dependencies in the network: long-sequence 학습의 용이성
- Learning long-range dependencies는 many sequence transduction task에서 매우 중요한 문제
- input과 ouput sequence에서 position 조합간의 path가 짧을수록, long-range dependencies를 학습하기 쉬움
- position 조합간의 maximum path length를 비교한 결과, Self-attention은 O(1)로 다른 방법에 비해 월등히 짧다.
Layer Type별 3가지 지표에 대한 비교
추가적인 비교
- CNN의 경우에도, kernel size k가 sequence length n보다 작은 경우, 모든 input and output pair에 한번에 연결 불가능.
- Contiguous kernel의 경우 Maximum path length로 O(n/k)의 layers가 필요하고, dilated convolutions의 경우 O(logk(n))의 layers가 필요함.
- CNN은 일반적으로 RNN보다 비용이 비싸지만, Separable convolution의 경우 complexity를 O(k*n*d + n*d^2)까지 줄일 수 있음.
- 만약 k=n이라면, Separable convolution의 complexity가 self-attention + feed-forward layer과 동일해짐
Self-attention은 추가적으로 더 해석가능한 모델을 만들어 낼 수 있음. Transformer에 있는 individual attention head들은 다른 작업들을 수행하는 방법을 명확하게 학습할 뿐만 아니라, 문장의 문법적, 의미적 구조와 관련하여 행동한다.
Experiments
Machine Translation
English-to-German, English-to-French Translation Task
Transformer는 기계 번역에서 다른 모델들을 제치고 BLEU와 Training Cost에서 좋은 모습을 보여주면서 SOTA를 달성하였다. BLEU는 기계 번역 결과와 사람이 직접 번역한 결과가 얼마나 유사한지 비교하여 번역에 대한 성능을 측정하는 방법이다. 높을수록 모델의 성능이 좋은것이다.
Model Variations
Variations on the Transformer architecture
위 결과는 Transformer model의 architecture 조건들을 변경해가면서 성능에 어떤 영향을 주는지 확인해본 것이다.
요약하자면, (A)(B)에서 key demension dk를 너무 줄이면 (512 -> 16) 성능이 안좋아지고 (C)에서 dmodel이 큰 것이 성능이 좋으며, (D)에서 drop-out을 주는 것이 오버피팅을 방지하는데 효과적이라는 것을 알 수 있다.
English Constituency Parsing
Transformer applying to English constituency parsing
마지막 실험은 Transformer가 다른 task에서도 잘 동작하는지를 보기 위해 기계 번역이 아닌 English Constituency Parsing task에 적용해본 것이다. Constituency Parsing은 어떠한 단어가 문법적으로 어떠한 것에 속하는지 분류하는 task이다. 예를 들어 I am a student라는 문장을 parsing하면, I와 student는 noun, am은 verb, a는 article로 분류될 것이다.
여기서 Transformer는 WSJ 데이터에 대해서만 training 했음에도 불구하고, Berkeley-Parser[29]를 outperform하는 모습을 보여준다.
Conclusion
Transformer는 attention으로만 이루어진 최초의 sequence transduction model이다.
Translation task에서 Transformer는 CNN,RNN 기반 모델들보다 확실히 빠르게 훈련되며, 성능도 그들을 압도하였다.
Transformer는 앞으로 텍스트 이외의 task에도 확장될 것이며, 특히 image, audio, video와 같은 대규모 input, output을 핸들하기 위한 local, restricted attention mechanism이 대두될 것이다.
Reference
https://aistudy9314.tistory.com/63
https://hipgyung.tistory.com/entry/ATTENTION-IS-ALL-YOU-NEED-논문-리뷰