
RNN은 짧은 참조 윈도우로 긴 입력을 처리하는 데 문제가 있음
LSTM, GRU는 상대적으로 긴 윈도우를 가지고 있지만 무한하지 않기에 똑같은 문제가 있음
또한 Seq2Seq 모델은 순차적으로 입력을 처리해야해서 병렬화가 불가능, 학습 시간이 지나치게 길어지는 문제 존재
위 기존 Seq2Seq 모델의 두 가지 문제에 대한 해결책이 된 메커니즘
이론적으로 리소스가 충분하다면 무한한 크기의 윈도우를 가질 수 있고 전체 문맥을 반영할 수 있음
병렬화도 가능하고 Query와 모든 Key를 비교하기 때문에 장기 기억 손실을 해결할 수 있어서 빠른 학습 속도와 더 큰 데이터셋의 적용이 가능
입력의 길이와 상관 없이 중요한 모든 부분에 대해 Attend to 하는 메커니즘

Query: 물어볼 것, Key: 비교할 것, Value: 데이터의 값
: 키 벡터의 차원 수
를 통해 query와 key 사이의 유사도 계산, Value 벡터들을 가중합하여 셀프 어텐션 계산 수행

head가 여러 개, Q,K,V를 linear projection을 통해 중간에 매핑하여 여러 개의 attention function들을 만드는 것이 더 효율적이라고 함
Encoder multi-head attention: Q,K,V 모두 encoder 출신, encoder의 position은 전 layer의 모든 position을 참조하여 해당 position과 모든 position 간의 correlation information을 더하여 사용.
Decoder masked multi-head attention: encoder와 비슷하지만 auto-regressive하기 위해 masking vector를 사용해 해당 position 이전의 벡터들만 참조
Encoder-decoder multi-head attention: Q는 decoder, K,V는 encoder 출신, decoder의 position들이 encoder의 모든 position을 참조하여 사용.

보통 n(sequence length)<d(representation dimensionality)
RNN보다 self-attention이 complexity가 작음
self-attention은 다른 모든 토큰들을 참조하여 correlation information을 더하여 사용하기 때문에 path length가 maximum O(1)
path length가 짧을수록 long dependency를 더 잘배움

Transformer는 attention으로만 구성된 구조, sequence 정보를 사용하지 못하기 때문에 positional encoding을 통해 sequence 정보를 추가
위치의 representation을 벡터로 표현한 것, embedding에 더해 사용
시작에 0, 끝에 1, 중간은 interpolation
I want you: I-0, want-0.5, you-1
다른 데이터일 때 거리가 동일하지 않음
선형 숫자 할당
I want you: I-1, want-2, you-3
거리는 동일, 숫자가 매우 커질 수 있고 학습할 때보다 큰 입력이 들어오면 문제 발생 가능
주기가 미세하게 변경되는 sin, cos 함수를 활용하여 유일성 확보
를 의 linear function(회전 변환 행렬 활용)으로 나타낼 수 있기 때문에 모델이 쉽게 상대적인 위치를 참조할 수 있을 것이라 생각
학습 가능한 layer로도 만들어서 실험해 보았지만 결과는 다를 바 없었다

Multi-head attention의 결과 x, 가중치 행렬 W들, ReLU 활성화 함수라 MAX,


Attention이 개선한 점은 뭔지?
기존 Seq2Seq 모델인 RNN은 long dependency를 학습하는 데 어려움이 있었다. LSTM이나 GRU는 어느정도 해결하긴 했지만 문제가 있었고, 입력 sequence를 하나 씩 보며 학습을 진행해야 해서 병렬화를 할 수 없었다.
Attention은 Long dependency 학습 문제를 Query를 모든 Key와 비교함으로써 해결했고, 병렬화 또한 가능하게 만들었다.
Transformer의 문제점?
sequence 길어지면 계산량 quadratic하게 증가
inference는 auto-regressive라 GPU 충분 이용 불가