대부분의 모델들이 인코더와 디코더로 이루어진 복잡한 RNN모델 혹은 CNN모델로 생성이 되고는 했다
그 중 어텐션 메커니즘으로 이루어진 모델이 좋은 성능을 보였다.
오직 어텐션 메커니즘만 사용한 Transformer를 만들었다
Introduction
RNN의 LSTM이나 GRU등의 모델이 특히 시퀀스 모델링에 언어 모델링과 같은 기계번역에 사용되었다.
여러 노력 끝에 인코더와 디코더 모델구조를 가지게 되었다.
순환 모델은 시퀀스에 대하여 순차적 계산이 필요
각 스텝을 밟아가며 시퀀스마다 ht라는 히든 스테이트를 생성하였곡 이 기능은 이전의 히든 스테이트인 ht−1과 t와 함께 입력된다.
이러한 순차적인 특성때문에 병렬적인 계산을 하지 못한다. 긴 길이의 시퀀스가 생긴다면 메모리 문제와 시간이 오래걸리게 된다.
어텐션 메커니즘은 필수적인 부분이 되었다.
병렬화 메커니즘이 가능하며 어텐션 메커니즘을 사용한 Transformer를 제안한다.
Background
Transformer에서는 이를 효과적인 결과와 함께 평균 어텐션 가중치 포지션과 멀티 헤드 어텐션을 사용하여 대응한다.
Self-attention (intra-attention) 은 시퀀스의 표현을 계산하기 위해 단일 시퀀스의 읽기 이해, 추상적 요약을 포함한 다양한 작업에 성공적으로 사용됩니다
End-to-end memory 네트워크는 시퀀스 대신 순환 어텐션 메커니즘을 사용한다.
Model Architecture
abstract
대부분의 모델들이 인코더와 디코더로 이루어진 복잡한 RNN모델 혹은 CNN모델로 생성이 되고는 했다
그 중 어텐션 메커니즘으로 이루어진 모델이 좋은 성능을 보였다.
오직 어텐션 메커니즘만 사용한 Transformer를 만들었다
Introduction
RNN의 LSTM이나 GRU등의 모델이 특히 시퀀스 모델링에 언어 모델링과 같은 기계번역에 사용되었다.
여러 노력 끝에 인코더와 디코더 모델구조를 가지게 되었다.
순환 모델은 시퀀스에 대하여 순차적 계산이 필요
각 스텝을 밟아가며 시퀀스마다 ht라는 히든 스테이트를 생성하였곡 이 기능은 이전의 히든 스테이트인 ht−1과 t와 함께 입력된다.
이러한 순차적인 특성때문에 병렬적인 계산을 하지 못한다. 긴 길이의 시퀀스가 생긴다면 메모리 문제와 시간이 오래걸리게 된다.
어텐션 메커니즘은 필수적인 부분이 되었다.
병렬화 메커니즘이 가능하며 어텐션 메커니즘을 사용한 Transformer를 제안한다.
Background
Transformer에서는 이를 효과적인 결과와 함께 평균 어텐션 가중치 포지션과 멀티 헤드 어텐션을 사용하여 대응한다.
Self-attention (intra-attention) 은 시퀀스의 표현을 계산하기 위해 단일 시퀀스의 읽기 이해, 추상적 요약을 포함한 다양한 작업에 성공적으로 사용됩니다
End-to-end memory 네트워크는 시퀀스 대신 순환 어텐션 메커니즘을 사용한다.
Model Architecture
대부분의 경쟁적인 신경 시퀀스 변환 모델에는 인코더-디코더 구조가 있다, 인코더의 입력 시퀀스(x1, ..., xn)를 시퀀스에 매핑하고 연속 표현의 z = (z1, ..., zn). z가 주어지면 디코더는 출력을 생성한다
Encoder and Decoder Stacks
Encoder : 인코더는 6개의 동일한 레이어로 구성된다. 각 레이어는 2개의 서브 레이어가 있다. 첫 번째는 multi-head self-attention 메커니즘이고 두번째는 간단한, 와이즈한 fully-connected 피드 포워드 신경망이다.
Decoder : 디코더는 6개의 동일한 레이어로 구성된다. 추가로 디코더에는 세가지 서브 레이어를 넣었다. 인코더 스택의 출력에 대해 멀티 헤드 어텐션을 수행한다. 인코더와 비슷하게 residual한 연결을 각 서브레이어에 사용하였고 층 정규화를 뒤에 이어 사용하였다. 또한 디코더 스택에서 셀프어텐션을 사용하여 위치가 후속 위치로 변하는 것을 방지하였다. 이 마스킹은 출력 임베딩이 하나의 위치로 오프셋된다는 사실과 결합되어 위치 i에 대한 예측이 i보다 작은 위치의 알려진 출력에만 의존할 수 있도록 보장한다.
각 두개의 서브 레이어 주변에 residual한 연결을 사용했고 그 뒤에 층 정규화를 사용하였다. 결과가 각 서브 레이어에 LayerNorm(x+Sublayer(x))이다. Sublayer(x)는 서브레이어 자체에 의해 구현된다. resiudal한 연결을 용이하게 하기 위해 모델에 있는 모든 서브레이어들은 임베딩 레이어이고 모델의 결과의 차원 dmodel=512 이다.
Attention
어텐션 함수는 각 결과에 쿼리와 key-value 쌍을 매핑한다. 출력은 value의 가중치 합으로 계산되며, 여기서 각 value에 할당된 가중치는 해당 키와 쿼리의 호환성 함수에 의해 계산된다
Scaled Dot-Product Attention
입력은 dk차원의 쿼리와 키, dv차원의 값으로 구성됩니다. 우리는 모든 키로 쿼리의 도트 곱을 계산하고 각각을 dk로 나눈 다음 softmax 함수를 적용하여 값에 대한 가중치를 얻습니다
실제로, 우리는 행렬 Q로 함께 채워진 일련의 쿼리에 대한 주의 함수를 동시에 계산합니다. 키와 값은 또한 K와 V 행렬로 함께 채워집니다. 우리는 출력 행렬을 다음과 같이 계산합니다
Attention(Q,K,V)=softmax(dkQKT)V
가장 일반적으로 사용되는 어텐션 기능은 additive 어텐션과 dot-product(multi-plcative) 어텐션이다. Dot-product 어텐션은 dk1의 스케일링 팩터를 제외하고 동일하다.
Additive 어텐션은 하나의 히든 레이어와 함께 피드 포워드 신경망을 계산한다. 두가지 비슷한 이론적 복잡도 중, dot-product 어텐션은 더 빠르고 더 효율적이다.
dk의 작은 값의 경우 두 메커니즘이 유사하게 수행되지만, additive attention는 dk의 큰 값에 대한 확장 없이 dot-product 어텐션를 능가한다. 우리는 dk의 값이 큰 경우 softmax 함수가 작은 기울기를 가진 영역으로 밀려났다고 추정하고 우리는 dot productr를 dk1 만큼 확장한다.
Multi-Head Attention
single 어텐션 함수를 dmodel의 차원의 키와 value, 쿼리로 하는 대신, 우리는 다양하고 학습된 쿼리, 키, value를 선형적으로 투영하는 것이 유리하다는 것을 확인하였다.
쿼리, 키 및 value을 병렬로 수행하여 dv차원의 출력값을 예상 버전에서 출력하고 concatenate하여 최종값이 생성된다.
멀티 헤드 어텐션은 서로 다른 위치에 있는 서로 다른 표현의 정보에 공동으로 주의를 기울일 수 있다.
Applications of Attention in out Model
트랜스포머는 세가지 방식으로 멀티 헤드 어텐션을 사용한다
‘인코더-디코더 어텐션’층, 쿼리는 이전 디코더 층에서 왔다. 그리고 메모리 키와 값은 인코더의 출력에서 나온다. 이렇게 하면 디코더의 모든 위치가 입력 시퀀스의 모든 위치에 걸쳐 참석할 수있고, 다음과 같은 시퀀스 대 시퀀스 모델에서 일반적인 인코더-디코더 주의 메커니즘을 모방한다
인코더는 셀프 어텐션 층을 포함한다. 셀프 어텐션 층에서 모든 키, value 및 쿼리는 동일한 위치이고, 이 경우 인코더의 이전 레이어의 결과이다. 인코더의 각 위치는 인코더의 이전 레이어에 있는 모든 위치에 대응할 수 있다.
마찬가지로, 디코더의 셀프 어텐션 레이어는 디코더의 각 위치가 해당 위치까지 포함하여 디코더의 모든 위치에 대응할 수 있다. 우리는 자동 회귀 속성을 보존하기 위해 디코더에서 왼쪽으로 정보 흐름을 방지해야 한다. 우리는 잘못된 연결에 해당하는 소프트맥스의 입력에 있는 모든 값을 마스킹(-max로 설정)하여 scaled-dot product attention 에서 이를 구현한다.
Position-wise Feed-Forward Networks
추가로 두 서브 어텐션 레이어, 인코더와 디코어의 각 레이어는 fully connected 피드포워드 신경망을 포함한다. 각 위치는 separately와 indentically하다.\
FFN(x)=max(0,xW1+b1)W2+b2
선형 변환은 서로 다른 위치에서 동일하지만 계층마다 다른 매개 변수를 사용한다. 입력 및 출력의 차원은 dmodel = 512 이며, 내부 레이어는 dff = 2048 차원을 가진다.
Embeddings and softmax
다른 시퀀스 변환 모델과 마찬가지로 학습된 임베딩을 사용하여 입력을 변환한다. 토큰 및 출력 토큰을 차원 모델의 벡터로 변환한다. 우리는 또한 일반적으로 학습된 선형 변환을 사용한다
우리의 모델, 우리는 두 임베딩 레이어와 프리 소프트맥스 사이에 동일한 가중치 매트릭스를 공유한다.
Positional Encoding
합성곱층 및 순환층을 사용하지 않기에, 상대적인 위치 혹은 절대적인 위치에 대한 정보를 입력해야 한다. “positional encoding’을 인코더와 디코더 스택의 밑에 입력 임베딩에 추가를 한다.
포지셔널 인코딩은 dmodel과 같은 차원을 가진다.
시간 복잡도
Why Self-Attention
recurrent, convolution layer와 self-attention을 비교할 때
layer당 전체 계산 복잡도
sequential parallelize 할 수 있는 계산의 양
network에서 long-range dependency 사이의 path 길이
network에서 순회해야하는 forward 와 backward의 path 길이가 이런 dependency를 학습하는 능력에 영향을 주는 주요 요인