1. Sequence model 의 한계
Transformer 모델은 recurrency와 convolution 을 배제한 attention 기반의 모델이다. 이는 sequence transduction 모델과 달리 병렬화가 가능하며 모델 훈련에 적은 시간이 소요된다는 특징이 있다. 이러한 sequence model 의 예시로 RNN, LSTM, GRU 가 주축으로 사용되는데 이는 순차적으로 입력값을 넣어주어야 하기 때문에 sequence 길이가 긴 인풋에 대해 메모리와 계산량에 부담이 생기는 문제가 있다.
2. Attention 설명
Attention 은 입력과 출력 sequence 의 거리에 무관하게 종속성을 모델링한다. 기존 모델은 recurrent network 와 attention 을 섞어 사용했다면, 본 논문에서 제시한 Transformer 는 attention 에만 의존하는 모델이다. 특히 self-attention 메커니즘을 사용하는데, 이는 단일 sequence 안에서 다른 위치에 있는 요소들의 의존성을 찾아내는 것이다. 이는 추상적 요약, 독해 등 다양한 task 에서 사용되고 있다.
3. Long term dependency 문제
recurrent model 인 RNN 이나 CNN 을 자연어 처리 시 주로 사용하지만, 이는 순차적인 특성이 유지되는 반면 먼거리에 있는 의존성을 알기 어렵다는 단점이 있다. RNN 은 sequence 길이가 길어질수록 정보 압축 문제가 있으며, CNN 은 합성곱 필터 크기를 넘어서는 문맥을 알기 어렵다. 반면 Transformer 는 attention 메커니즘만을 이용하기에 의존성 찾기에 수월하며 self-attention 에만 의존하는 최초의 모델이다.
4. Model architecture
self-attention 과 point-wise fully connected layer 로 구성된 것을 볼 수 있으며 encoder-decoder 형식을 지닌다.
하나의 인코더는 self-attention layer 와 feed forward neural network 라는 두개의 sub layer 로 이루어져 있다. 디코더는 self-attention layer 와 feed forward neural network 외의 하나의 레이어를 더 가지며, multi head attention 을 수행한다.
5. Attention 구조
이를 이해하려면 Query, Key, Value 를 알아야 한다. 예를 들어 "Attention is nice" 에서 Attention 라는 단어 기준으로, 이 문장에 있는 다른 단어와 얼마나 연관있는지 계산하려면, Attention 을 query라 하고 문장 내 모든 단어들을 key 라 한다. Attention 수식을 보면 query * key 이후 1√dk 만큼 스케일링을 하는 것을 확인할 수 있으며, 이는 query * key 값을 그대로 사용하면 softmax 가 0 근처에서는 gradient 가 높고, large positive / negative value 근처에서는 매우 낮은 gradient 를 가지기에 학습이 되지 않는 문제가 있으며 이를 scaling 을 통해 모든 값들이 0 근처로 오도록 만들어줌으로서 해결한다.
이후 softmax 를 통해 query 단어가 모든 단어들과 correlation 이 있는지 확률 분포의 형태로 만들고 이를 value matrix 와 dot product 를 함으로 기존 vector 의 query, key 간 correlation 을 더한 vector 를 만든다.
6. Multi head attention
하나의 attention function 을 사용하느 ㄴ것보다 queries, keys, values 를 linear projection 을 통해 매핑해주어 다른 값들을 입력으로 하는 여러개의 attention functions 를 만드는 것이 더 효율적이라고 한다. 이는 CNN 이 여러 필터들을 통해 convolution output 을 구하는 것과 비슷하다.
header 가 8개일 때 query, key, value 의 dimension 은 h=8로 두어
논문에서는 총 3 종류의 attention 을 사용했다.
a) Encoder-decoder attention: query는 이전 디코더 계층에서 오고 key, value 는 인코더의 출력에서 나온다. 이를 통해 디코더가 모든 위치 입력시 attention 을 기울일 수 있고, 이 attention 은 두번째 multi head attention 에서 사용된다.
b) Encoder self attention: query, key, value 모두 인코더에서 가져온다. 인코더의 position 은 그전 layers 의 positions 를 참조하고 이는 해당 position 과 모든 positions 간의 correlation information 을 더해지게 된다. 어떤 단어가 모든 단어 중 어떤 단어들과 correlation 이 높은지를 학습하게 된다.
c) Masked decoder self attention: 디코더에서 auto regressive property 를 보존해야 하기에 masking vector 를 사용해 해당 포지션 전의 벡터들만 참조한다. 이후 나오는 단어들을 참조하는 것은 치팅으로 간주한다.
8. Positional Encoding
Transformer 은 Recurrent model 없이 Attention 을 사용하기에 sequence 정보는 없다. 따라서 별도로 이런 sequence 데이터를 추가해야 하는데, 이는 positional encoding 이다. 논문에서는 sin 과 cosine 함수를 사용한다. 더 자세한 정보는 https://kazemnejad.com/blog/transformer_architecture_positional_encoding/ 를 참조하길 바란다.
9. Why self attention
a) the total computational complexity per layer: self attention 과 RNN 을 비교하면 sequence length 가 representation dimensionality 보다 작아야 complexity 가 낮아지게 된다. 보통은 작은 경우가 대부분이기에 self attention 이 complexity 가 작다 할 수 있다.
b) the amount of computation that can be parallelized: sequence 모델인 인풋이 들어오는 순서대로 계산되는 반면 self attention 모델은 인폿전체를 한번에 계산하기 때문에 O(1) 의 sequential operation 을 가지며 parallel system 에 유리하다.
c) the path length between long range dependencies: long range dependencies 를 학습시키는 건 많은 시퀀스 transduction 작업의 중요한 과제인데, 이는 네트워크에서 forward/backward signals 를 통과해야 하는 경로의 길이고 경로가 짧을수록 long range dependencies 학습에 수월하다. self attention 은 각 토큰들을 모든 토큰들과 참조해 correlation information을 구해 더해주기 때문에 maximun path length 가 O(1) 이라고 볼 수 있다.
'논문' 카테고리의 다른 글
[논문] From Word Embeddings To Document Distances (2) | 2024.11.16 |
---|---|
페이지랭크 알고리즘 (PageRank algorithm) (1) | 2024.11.03 |