Sequence transduction model은 encoder와 decoder를 포함하는 복잡한 RNN이나 CNN 구조에 기초한다. 가장 성능이 좋은 모델은 attention 메커니즘을 통해 encoder와 decoder를 연결한다. 논문에서는 RNN과 CNN을 배제하고 오직 attention 메커니즘을 기반으로하는 단순하지만 새로운 네트워크 구조를 제안한다. 두 가지 기계 번역 과제를 대상으로 실험한 결과 이 Transformer 모델이 품질이 우수하며 처리성도 높아 학습에 훨씬 적은 시간이 소요된다. Transformer는 대규모 또는 제한된 소규모 학습 데이터 기반의 영어 구문 분석 과제에서도 높은 성능을 보이며 다른 과제들 또한 일반화가 가능하다.
RNN, LSTM, RNN은 언어 모델링, 기계 번역 등의 sequence modeling과 번역 문제에 성과를 보여왔다. 이후 RNN의 encoder와 decoder 구조의 경계를 확장시키기 위해 수많은 노력이 있었다. RNN 모델은 이전 결과를 입력으로 받는 순차적 특성 때문에 병렬처리를 배제한다. 최근의 연구는 'factorization trick'과 '조건부 계산'을 통해 연산 효율을 대폭적으로 향상시켰으나 아직까지 순차적 계산의 근본적인 제약은 여전히 남아있다. Attention 메커니즘은 sequence 모델링 및 변환 모델을 처리하는데 필수적인 부분이 되어 encoder 및 decoder sequence의 거리에 관계없이 모델링이 가능하다. 몇 가지 경우를 제외하고는 RNN과 attection 메커니즘이 함께 사용된다. 논문에서는 RNN을 피하고 Attention 메커니즘에 전적으로 의존하여 입력과 출력 사이의 global dependence를 이끌어내는 모델 구조인 Transformer를 제안한다. Transformer는 짧은 교육 시간에 훨씬 더 많은 병렬화가 가능하여 번역 성능 면에서 새로운 수준에 도달 가능하다.
순차적 계산을 줄이려는 목표는 확장 GPU, ByteNet, ConvS2S 등의 기초를 형성하며 이들 모두 기본 구성 block으로 CNN을 사용하여 모든 입력 및 출력 위치에 대해 hidden repersentation을 병렬적으로 계산한다. 이 모델들에서 두 개의 임의 입력 또는 출력 위치의 신호를 연관시키는 데 필요한 연산량은 ConvS2S의 경우 선형적, ByteNet의 경우 대수적으로 증가한다. 이것은 먼 거리에서의 의존성을 학습하는 것을 어렵게 만든다. Transformer에서는 평균 attention weight를 사용하여 연산을 효율적으로 줄인다.(Multi-Head Attention 효과)
Self attention은 서로 다른 위치의 sequence를 계산하기 위해 만들어진 attention 메커니즘이다. self attention은 읽기 이해, 추상적 요약, 독립 문장 표현을 포함한 다양한 과제에서 성공적으로 사용되었다. End-to-end 메모리 네트워크는 sequence 정렬 반복 대신 recurrent attention 메커니즘을 기반으로 하여 질문 응답 및 언어 모델링 작업에서 잘 수행된다. 그러나 Transformer는 sequence 정렬 RNN이나 CNN을 사용하지 않고 입력 및 출력을 계산하는 데 전적으로 self attention에 의존하는 최초의 변환 모델이다.
성능이 뛰어난 neural sequence transduction 모델은 대부분 encoder-decoder 구조를 가지고 있다.
이 구조에서는 이전에 생성된 출력을 다음 단계에서 사용하기 때문에 이전 단계가 완료되어야 다음 단계를 수행할 수 있다. transformer 또한 이 구조를 따르며, 그 내부는 self-attention과 fully connected layer(완전연결층)으로 구성되어 있다. (아래 Transformer 구조 참고)
encoder와 decoder 모두 Self-Attention과 point-wise FC layer를 쌓아올려 사용한다.
Q(Query) : 영향을 받는 vector / K(Key) : 영향을 주는 vector / V(Value) : 주는 영향의 가중치 vector
Transformer에서는 Attention value를 Scaled dot-product attention 방식으로 계산하며 이는 다음과 같다.
Output은 value의 가중합으로 계산된다. 가중합에 이용되는 가중치는 Query와 연관된 key의 호환성 함수에 의해 계산된다. 한마디로 Query와 Key를 비교해 Query의 값을 찾는 것으로 볼 수 있다.
계산과정 요약
1. 워드 임베딩에 가중치를 곱하여 Query, Key, Value를 계산한다.
2. Query * Key = attention score이며 해당 값이 높을 수록 연관성이 높고, 낮을수록 연관성이 낮다.
3. key 차원수로 나누고 softmax를 적용한다. softmax 결과 값은 key값에 해당하는 단어가 현재 단어에 어느정도 연관성이 있는지를 나타낸다.
4. 문장 속에서 지닌 입력 워드의 값 = (softmax 값과 value 값을 곱하여 다 더한다.)
위 식에서 알 수 있듯이 Attention을 여러 head에서 실행한 후, concat 함으로써 이들을 합치는 것이다. 한마디로 Attention을 한 번에 그치는 것이 아니라 여러 embedding space 상에서 수행하는 개념이라고 볼 수 있다.
Multi-Head Attention은 Head (논문에서는 8개)를 두어 모델이 Head 개수만큼의 Scaled dot product Attention 연산을 수행할 수 있게 하여 다양한 관점의 Attention Map을 만들도록 한다.
각 head의 차원 수가 줄어들었으므로 전체 계산량은 single-head attention과 비슷하다.
Transformer는 multi-head attention을 3가지 방법으로 사용한다
(1) Encoder-decoder attention
이전 decoder layer에서 오는 Query들과 encoder의 출력으로 나오는 memory key, value들과의 attention이며 decoder의 모든 위치에서 input sequence의 모든 위치를 참조할 수 있게 한다.
(2) Self-attention in encoder
해당 Encoder의 각 위치들이 이전 layer의 모든 위치들을 참조할 수 있다.
(3) Self-attention in decoder
decoder의 각 위치들은 decoder 내의 다른 위치들을 참조할 수 있는데 이전부터 자신 위치까지만을 참조할 수 있다. 이는 auto-regressive 성질을 살리면서도 정보가 잘못 흐르는 것을 막기 위함이다.
Attention layer과 함께 fully connected feed-forward network가 사용되며 encoder 및 decoder의 각 계층에 따로 위치한다.
두 개의 선형 변환(linear transformation)으로 구성되는데 두 선형 변환 사이에는 ReLU 활성화가 있다.
다른 sequence transduction 모델과 마찬가지로, input과 ouput 토큰을 embedding layer를 거쳐서 사용한다. 이렇게 생성된 embedded vector는 semantic한 특성을 잘 나타낼 수 있다. 또한 input embedding 과 output embedding에서 weight matrix를 서로 공유하여 사용한다.
Transformer는 Recurrent model을 사용하지 않고 오직 Attention mechanism만을 사용하여 만들기 때문에 Sequence 정보를 담아낼 수가 없다. 따라서 별도로 이러한 sequence 정보를 데이터에 추가해야 하는데 이 역할을 하는 것이 바로 positional encoding이다.
논문에서는 positional encoding과 관련하여 sin과 cos 함수, 즉 주기 함수를 이용한 방법을 소개하고 있다.
모델(Encoder, Decoder)에 입력된 문장의 단어들은 Embedding을 거친 후, Positional Encoding을 통해 문장에서 자신의 위치가 어딘지 부여받게 된다. (고정된 offset k에 대해 PE_pos+k가 PE_pos의 선형 함수로 표현될 수 있기 때문에 모델이 쉽게 상대적인 위치를 참조할 수 있을 것이라 가정하고 있다.)
논문에서는 기존의 RNN,CNN과 Self-Attention layer을 비교한다. 비교를 위해 layer당 총 계산 복잡도, 요구되는 최소의 sequential operations을 통해 측정한 parallelized될 수 있는 연산의 양, 그리고 long-range dependency들간의 path 길이 등을 확인한다. 여기서 layer간 forward/backward가 가로지르는 경로의 길이는 학습 능력에 영향을 끼치게 된다. 경로의 길이가 짧을수록, long-range dependencies를 학습하기 쉬울 것이다.
Self-Attention layer은 layer의 모든 위치에 상수 번의 계산을 통해 연결된다. 이는 기존의 recurrent layer의 시간 복잡도에 비해 빠르다. Input sequence의 길이가 representation 차원 d보다 확실하게 작은 경우 network가 더 빠른 것을 보장할 수 있다. 여기서 neighborhood 크기를 r로 제한하면 가장 긴 path 길이를 O(n/r)로 단축할 수 있다.(O : 시간 복잡도)
Kernel 폭이 k(<n)인 single convolutional layer의 경우 input layer와 output layer의 모든 position을 연결하진 않는다. 이 경우 시간복잡도가 O(k*n*d + n*d^2)로 감소하고 심지어 k=n인 상황에서도 이 연구에서 사용하는 구조인 self-attention layer와 point-wise feed-forward layer의 조합과 같다. 또한, 이 연구의 self-attention 모델이 더 해석에 용이하였다.
Training에 사용된 data는 WMT 2014 영어-독일어 dataset이며, 약 4.5M 개의 문장들을 포함한다. 이들은 byte-pair encoding되어있고, 37k의 어휘 토큰을 이용한다. 영어-프랑스어 데이터는 36M개의 문장을 포함한다.
Optimizer로는 Adam optimizer에 beta1 = 0.9, beta2 = 0.98, eps = 10^(-9)를 이용했다. learning rate은 다음과 같다.
여기서 warmup_step = 4000으로 설정하여 그 이전에는 learning rate가 선형으로 상승하다 그 이후 inverse sqrt에 비례해 감소하도록 하였고, 이후 3가지 정규화를 실시했다. 각 sub-layer에 input이 들어가기 전에 dropout을 실시하고, encoder와 decoder 모두에 positional encoding과 droupout을 적용한다. 마지막으로, training 도중에 epx_{1s} = 0.1의 값을 label smoothing을 해준다.
영어-독일어 데이터에 연구진이 개발한 Transformer(big)을 적용했을 때, 앙상블 모형을 포함한 기존의 모형들보다 2.0 BLEU 높은, 28.4 BLEU를 기록하였다. 영어-프랑스어 데이터에는 훨씬 더 높은 41.0 BLEU를 기록하면서도 training cost가 기존에 비해 1/4로 낮아지는 성능을 보였다. Table 2는 여러 모델과 연구진의 Transformer 모델의 성능 차이를 보여준다.
Transformer의 두 모델 중 base 모델은 마지막 5개의 체크포인트를 평균내어 사용하였고, big 모델은 20개의 체크포인트를 평균 내어 사용하였다. Output의 길이가 Input보다 50을 초과해 길어질 때 모델의 작동이 종료되도록 설정했지만, 그 이전에도 종료가 가능하다.
Base 모델에 여러 변화를 주었을 때의 결과를 Table 3에 정리하였다.
(A)에서는 attention head의 수에 변화를, (B)에서는 attention key size인 d_k에 변화를 주었고, B의 경우에 d_k를 줄일 때 모델 성능이 감소하는 것을 확인할 수 있었다.
위 알고리즘이 다른 task에도 적용되는지 확인하기 위해 English constituency parsing에도 적용해보았다. 이 task는 output이 강한 구조적 제약이 있고, input에 비해 유의미하게 길다.
연구진은 d_model = 1024의 4-layer transformer을 Wall Street Journal의 40K개 문장으로 학습시키고, 또한 semi-supervised learning을 통해 BerkleyParser 말뭉치를 약 17M개 학습시켰다. 어휘 토큰은 각각 1만 6천개, 3만 2천개를 이용했다. Droupout을 선별하는데는 소수의 실험 수만이 이용되었다.
Table 4의 결과는, 이 알고리즘이 task별 tuning을 거치지 않았음에도 불구하고 여러 task에 높은 성능을 보임을 알 수 있었다. 즉, transformer 알고리즘은 task에 무관하게 높은 성능을 보였다.
이 논문에서는 attention 모델을 이용한 Transformer 알고리즘을 소개했다. 이 알고리즘은 RNN,CNN 기반 모델들에 비해 유의미하게 빠른 속도를 가지고 있으며, 기존의 앙상블 모형들에 비해서도 WMT 2014의 영어-독일어, 영어-프랑스어 번역 문제들에 높은 성능을 보였다.
[5주차/DL1팀/논문 리뷰] Gated Recurrent Neural Network (0) | 2023.08.09 |
---|---|
[5주차/DL2팀/논문리뷰] LSTM (0) | 2023.08.09 |
[4주차/DL2팀/논문 리뷰] (0) | 2023.08.08 |
[4주차 / DL 1팀 / 논문 리뷰 ] Deep Residual Learning for Image Recognition (0) | 2023.08.03 |
[3주차/DL1팀/논문 리뷰] Batch Normalization (0) | 2023.07.27 |
댓글 영역