Attention is All you need

김동하·2023년 7월 13일

paper_review

목록 보기
1/11

abstract

  • 대부분의 모델들이 인코더와 디코더로 이루어진 복잡한 RNN모델 혹은 CNN모델로 생성이 되고는 했다
  • 그 중 어텐션 메커니즘으로 이루어진 모델이 좋은 성능을 보였다.
  • 오직 어텐션 메커니즘만 사용한 Transformer를 만들었다

Introduction

  • RNN의 LSTM이나 GRU등의 모델이 특히 시퀀스 모델링에 언어 모델링과 같은 기계번역에 사용되었다.
  • 여러 노력 끝에 인코더와 디코더 모델구조를 가지게 되었다.
  • 순환 모델은 시퀀스에 대하여 순차적 계산이 필요
  • 각 스텝을 밟아가며 시퀀스마다 hth_t라는 히든 스테이트를 생성하였곡 이 기능은 이전의 히든 스테이트인 ht1h_{t-1}tt와 함께 입력된다.
  • 이러한 순차적인 특성때문에 병렬적인 계산을 하지 못한다. 긴 길이의 시퀀스가 생긴다면 메모리 문제와 시간이 오래걸리게 된다.
  • 어텐션 메커니즘은 필수적인 부분이 되었다.
  • 병렬화 메커니즘이 가능하며 어텐션 메커니즘을 사용한 Transformer를 제안한다.

Background

  • Transformer에서는 이를 효과적인 결과와 함께 평균 어텐션 가중치 포지션과 멀티 헤드 어텐션을 사용하여 대응한다.
  • Self-attention (intra-attention) 은 시퀀스의 표현을 계산하기 위해 단일 시퀀스의 읽기 이해, 추상적 요약을 포함한 다양한 작업에 성공적으로 사용됩니다
  • End-to-end memory 네트워크는 시퀀스 대신 순환 어텐션 메커니즘을 사용한다.

Model Architecture

abstract

  • 대부분의 모델들이 인코더와 디코더로 이루어진 복잡한 RNN모델 혹은 CNN모델로 생성이 되고는 했다
  • 그 중 어텐션 메커니즘으로 이루어진 모델이 좋은 성능을 보였다.
  • 오직 어텐션 메커니즘만 사용한 Transformer를 만들었다

Introduction

  • RNN의 LSTM이나 GRU등의 모델이 특히 시퀀스 모델링에 언어 모델링과 같은 기계번역에 사용되었다.
  • 여러 노력 끝에 인코더와 디코더 모델구조를 가지게 되었다.
  • 순환 모델은 시퀀스에 대하여 순차적 계산이 필요
  • 각 스텝을 밟아가며 시퀀스마다 hth_t라는 히든 스테이트를 생성하였곡 이 기능은 이전의 히든 스테이트인 ht1h_{t-1}tt와 함께 입력된다.
  • 이러한 순차적인 특성때문에 병렬적인 계산을 하지 못한다. 긴 길이의 시퀀스가 생긴다면 메모리 문제와 시간이 오래걸리게 된다.
  • 어텐션 메커니즘은 필수적인 부분이 되었다.
  • 병렬화 메커니즘이 가능하며 어텐션 메커니즘을 사용한 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)x + Sublayer(x))이다. Sublayer(x)Sublayer(x)는 서브레이어 자체에 의해 구현된다. resiudal한 연결을 용이하게 하기 위해 모델에 있는 모든 서브레이어들은 임베딩 레이어이고 모델의 결과의 차원 dmodel=512d_{model} = 512 이다.

Attention

어텐션 함수는 각 결과에 쿼리와 key-value 쌍을 매핑한다. 출력은 value의 가중치 합으로 계산되며, 여기서 각 value에 할당된 가중치는 해당 키와 쿼리의 호환성 함수에 의해 계산된다

Scaled Dot-Product Attention

입력은 dkd_k차원의 쿼리와 키, dvd_v차원의 값으로 구성됩니다. 우리는 모든 키로 쿼리의 도트 곱을 계산하고 각각을 dk\sqrt{d_k}로 나눈 다음 softmax 함수를 적용하여 값에 대한 가중치를 얻습니다

실제로, 우리는 행렬 Q로 함께 채워진 일련의 쿼리에 대한 주의 함수를 동시에 계산합니다. 키와 값은 또한 K와 V 행렬로 함께 채워집니다. 우리는 출력 행렬을 다음과 같이 계산합니다

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V

가장 일반적으로 사용되는 어텐션 기능은 additive 어텐션과 dot-product(multi-plcative) 어텐션이다. Dot-product 어텐션은 1dk\frac{1}{\sqrt{d_k}}의 스케일링 팩터를 제외하고 동일하다.

Additive 어텐션은 하나의 히든 레이어와 함께 피드 포워드 신경망을 계산한다. 두가지 비슷한 이론적 복잡도 중, dot-product 어텐션은 더 빠르고 더 효율적이다.

dkd_k의 작은 값의 경우 두 메커니즘이 유사하게 수행되지만, additive attention는 dkd_k의 큰 값에 대한 확장 없이 dot-product 어텐션를 능가한다. 우리는 dkd_k의 값이 큰 경우 softmax 함수가 작은 기울기를 가진 영역으로 밀려났다고 추정하고 우리는 dot productr를 1dk\frac{1}{\sqrt{d_k}} 만큼 확장한다.

Multi-Head Attention

single 어텐션 함수를 dmodeld_{model}의 차원의 키와 value, 쿼리로 하는 대신, 우리는 다양하고 학습된 쿼리, 키, value를 선형적으로 투영하는 것이 유리하다는 것을 확인하였다.

쿼리, 키 및 value을 병렬로 수행하여 dvd_{v}차원의 출력값을 예상 버전에서 출력하고 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+b2FFN(x) = max(0, xW_1 + b1)W_2 + b2

선형 변환은 서로 다른 위치에서 동일하지만 계층마다 다른 매개 변수를 사용한다. 입력 및 출력의 차원은 dmodeld_{model} = 512 이며, 내부 레이어는 dffd_{ff} = 2048 차원을 가진다.

Embeddings and softmax

다른 시퀀스 변환 모델과 마찬가지로 학습된 임베딩을 사용하여 입력을 변환한다. 토큰 및 출력 토큰을 차원 모델의 벡터로 변환한다. 우리는 또한 일반적으로 학습된 선형 변환을 사용한다

우리의 모델, 우리는 두 임베딩 레이어와 프리 소프트맥스 사이에 동일한 가중치 매트릭스를 공유한다.

Positional Encoding

합성곱층 및 순환층을 사용하지 않기에, 상대적인 위치 혹은 절대적인 위치에 대한 정보를 입력해야 한다. “positional encoding’을 인코더와 디코더 스택의 밑에 입력 임베딩에 추가를 한다.

포지셔널 인코딩은 dmodeld_{model}과 같은 차원을 가진다.

시간 복잡도


Why Self-Attention

recurrent, convolution layer와 self-attention을 비교할 때

  1. layer당 전체 계산 복잡도
  2. sequential parallelize 할 수 있는 계산의 양
  3. network에서 long-range dependency 사이의 path 길이
    • network에서 순회해야하는 forward 와 backward의 path 길이가 이런 dependency를 학습하는 능력에 영향을 주는 주요 요인
    • input과 output sequence에서 position의 조합 간의 path가 짧을수록, long-range dependecy를 학습하기가 쉬움
    • input과 output position 사이의 최대 path 길이를 비교할 것

self-attention은 더 interpretable한 모델을 만들 수 있다

  • attention distribution에 대해 다룸 (논문의 Appendix 참고)
  • 각 attention head들은 다양한 task를 잘 수행해내고, 문장의 구문적, 의미적 구조를 잘 연관시키는 성질을 보이기도 한다.

Training

Optimizer

  • Adam optimizer 사용
  • lrate=dmodel0.5min(stepnum0.5,step_numwarmup_step1.5)lrate = d_{model}^{-0.5} * min(step_num^{-0.5}, step\_num * warmup\_step^{-1.5})

Regularization

  • Residual Dropout : 우리는 드롭아웃과 포지셔널 인코딩을 인코더와 디코더 스택을 사용하였다.
    • Pdrop=0.1P_{drop} = 0.1
  • Label Smoothing : 학습 중에 적용하였다.

Conclusion

트랜스포머를 발표했고, 모델 전체를 순환층이 아닌 멀티헤드 셀프 어텐션을 사용한 어텐션으로 전부 구성하였다.

  • 대부분의 경쟁적인 신경 시퀀스 변환 모델에는 인코더-디코더 구조가 있다, 인코더의 입력 시퀀스(x1, ..., xn)를 시퀀스에 매핑하고 연속 표현의 z = (z1, ..., zn). z가 주어지면 디코더는 출력을 생성한다

\

0개의 댓글