Research Notes

[Paper Review] Transformer: Attention is All you Need 본문

Paper Review

[Paper Review] Transformer: Attention is All you Need

jiachoi 2022. 3. 31. 19:50

< Transformer: Attention is All you Need >

  • Transformer는 구글이 발표한 논문인 "Attention is All you Need"에서 나온 모델이며, Encoder-Decoder를 따르면서도 Attention만으로 구현한 모델이며 자연어 처리의 한 획을 그은 개념입니다. 
  • 자연어처리(NLP: Natural Language Processing) 분야를 발전시킨 모델이며, BERT 등의 최신 Text 모델에서 기본적으로 사용하는 구조입니다. 
  • 이 논문을 읽는 이유: 모델을 Explainable하게 설계할 수 있는 Attention 개념을 공부하여, 이 개념이 적용된 다른 DL(Deep Learning) 알고리즘을 이해하여 응용하기 위함입니다. 

< 목차 >

  1. 기존 자연어처리 모델의 한계 
  2. Transformer
  3. Transformer의 동작 원리 

1. 기존 자연어 처리 모델의 한계 

  • 기존 딥러닝 기반 기계 번역의 발전 과정은 아래와 같음 

Attention의 개념이 등장하기 이전에는 고정된 크기의 Context Vector를 사용하여, 언어의 특징을 벡터 1개에 다 표현해야 한다는 한계가 존재함.

 

1) Seq2Seq의 한계 

  • Context Vector에 소스 문장의 정보를 압축함. 병목이 발생하여 성능 하락 
  • 하나의 문맥 벡터가 소스 문장의 모든 정보를 다 내포함 -> 성능 저하 

 

2) Seq2Seq with Attention 

  • Seq2Seq의 한계를 해결하기 위해 나온 방법으로, 매번 소스 문장에서의 출력 전부를 입력으로 받음
  • Seq2Seq 모델에 Attention 매커니즘을 사용함

논리 구조: 매 단어에서 나오는 hidden state를 전부 가지고 있음 -> 이를 소스 문장 전체를 반영한 Weighted Sum Vector로 표현함 -> W 벡터로 어떤 단어를 검증할지 weight를 줌 -> 입력 값이 들어왔을 때, 고정된 크기의 Context Vector와 소스 문장의 weight vector가 같이 학습됨.

  • Decoder가 Encoder의 모든 출력을 참고한다는 뜻의 의미는 Encoder에 weighted sum(W Vector)가 모든 소스 문장 전체를 반영했다는 것. Decoder로 입력된 언어를 번역할 때, 이를 참고한다는 뜻임 

- Seq2Seq with Attention: Decoder 

  • Decoder에서의 Attention 매커니즘: 인코더의 출력 중 어떤 단어가 중요한지 계산함. 
  • 에너지(Energy) : decoder에서 현재 처리하고 있는 단어가 어떤 기존에 학습된 encoder에 존재하는 단어 중 어떤 것과 연관성이 높은지 파악하기 위한 벡터
    • s: decoder가 출력 단어를 만들기 위해 사용한 hidden state들, h: encoder의 hidden state
    • i : 현재 Decoder가 처리중인 인덱스 / j : 각 Encoder가 출력한 인덱스 
  • 가중치(Weight) : encoder에 있는 단어 중, h와의 연관성을 비율로 나타낸 것. ( softmax를 취해서 각 단어별 확률을 구함)          
  • 가중치에 hidden State를 weighted sum 해서 Decoder에 넣어줌 (그림 참고) 

 

2. Transformer

1) Transformer란? 

  • Transformer는 문장의 위치 정보를 표현하기 위해 Positional Encoding을 사용함 
  • Encoder와 Decoder로 구성되며, 다양한 Attention 과정을 N개의 레이어를 반복하여 학습함 

 

3. Transformer의 동작 원리

 

1) 입력 값의 Embedding 과정 

  • 전통적인 embedding 과정
    • 각 단어를 적은 차원으로 표현함. 아래의 그림과 같이 각 단어를 embedding dimension에 맞게 변형함 

  • Transformer의 embedding 방식: Positional Encoding 
    • Transformer는 위치 정보를 표현하기 위한 방법이었던 RNN, CNN을 사용하지 않음. 이를 위해 위치 정보를 포함하는 임베딩 방식인 Positional Encoding을 사용함
    • 각 단어의 정보는 정보대로 layer에 입력해주고, 단어의 위치 정보는 positional encoding을 통해 행렬 형태로 입력함 
    • positional encoding은 주기 함수(sin, cos)를 활용한 공식을 사용하여 각 단어의 상대적인 위치 정보를 네트워크에 입력

주기 함수를 사용한 positional encoding 예시

 

2) 인코더 (Encoder)

  • encoder에서는 Attention과 Normalization 과정을 반복함
    • 각 레이어별로 파라미터는 상이함 / 입력과 출력의 dimension은 동일함
  • Encoder에서는 embedding이 끝난 이후에 Attention을 진행함 (입력 문장의 정보와 위치 정보를 받음) 

  • 또한 모델의 성능 향상을 위해 Residual Learning을 사용함
    • Residual Learning이란 특정 레이어를  건너띄어서 입력된 값을 그대로 학습시키는 것. 원래는 레이어에서 입력 값이 갱신되지만, 한 레이어를 건너 띄어서 갱신되지 않은 잔여 부분을 학습함. 
    • Global Optimal한 값을 찾을 확률이 높아짐 

  • Transformer의 Encoder 동작 원리는 아래와 같음
    • 여러 Layer를 반복하며 학습함 
    • 한 레이어에 Attention, Normalization, Residual Learning이 수행됨 
    • 또한, Encoder의 마지막 Layer Output이 Decoder에 입력됨

 

 

3) 인코더(Encoder)와 디코더(Decoder)의 구조 

Transformer의 Encoder(왼쪽) Decoder(오른쪽) 구조

  • 핵심: encoder 마지막 레이어의 output을 매번 Decoder의 각 Layer에 넣어줌
    • 이러한 과정을 통해, decoder에 입력된 문장 중, encoder에 학습된 정보를 바탕으로 초점을 둬야하는 부분을 attention함
    • encoder의 output: decoder의 layer의 input 
    • decoder의 output: 입력된 문장의 번역 값이 됨 
  • decoder의 한 layer에는 Attention이 두 개가 있음 
    • 첫 번째 Multi-head Attention: self-attention
      • self-attention: decoder에 입력된 단어 간 서로 어떤 영향을 끼치는지 학습함
    • 두 번째 Multi-head Attention: encoder-decoder attention 
      • encoder-decoder attention: decoder에 입력된 문장과 encoder에서 학습된 단어들간의 관계를 확인하는 attention 과정
    • decoder도 encoder과 동일하게 여러개의 레이어로 구성됨 
  • 또한 encoder과 decoder에서는 문장 단위로 학습되기 때문에 처리 속도가 매우 빠름

 

4) 어텐션(Attention)

  • encoder와 decoder는 Multi-Head Attention을 사용함
  • Attention을 위해서는 세 가지 입력 요소가 필요함 
    • 쿼리(Query) : 물어보는 주체 (decoder에 입력된 값) 
    • 키(Key) : 물어보는 대상 (decoder에 입력된 값이 encoder에 있는 값 중 어떤 것과 연관이 높은지 질문하고자 하는 대상)
    • 값(Value) : random variable
    • 예를 들어, "I am a teacher" 이라는 문장을 입력받았다고 할 때, 각 단어가 다른 단어들과 어떤 연관성을 가지는지 파악하고 싶다고 하자
      • 여기에서 "I"를 다른 단어와 연관성을 알고싶은 대상이라고 하면, 이것이 Query 이다.
      • 이외 "I", "am", "a", "teacher"은 "I"와의 연관성을 파악하기 위한 대상이므로, Key 이다. 

아래는 Attention 매커니즘의 구조이다. 

Attention 매커니즘 구조

  • Scaled Dot-Product Attention 구조  
    • Query, Key의 행렬곱 → 스케일링 → 필요에 따라 마스킹  → Softmax로 각 Key들 중, 어떤 Key와 가장 높은 연관성을 가지는지 확률을 계산함 → 나온 확률과 Value 값을 행렬곱 함
  • Multi-Head Attention 구조 
    • V, K, Q가 각각 Linear하게 존재하며, Scaled Dot-Product Attention이 각각의 h(Head) 수 만큼 존재함. 즉, h개의 서로 다른 K, V, Q로 구분된다는 뜻임. 이를 통해 h개의 attention concept이 학습됨 
    • 학습된 개별 attention들을 concat하고, Output을 Linear한 형태로 표현하여 output을 출력함 
    • Multihead(Q,K,V)를 수행하여도 차원이 동일하게 유지됨 

  • Attention 동작 원리 예시

 

  • Attention의 종류 
    • Encoder Self-Attention : 입력된 문장에서 각 단어가 서로 어떤 연관성을 가지는지 전체 문장의 representation을 학습하는 것 
    • Masked Decoder Self Attention : decoder 파트에서 필요한 부분만 학습하도록 masking하여 학습하는 방법 
    • Encoder-Decoder Attention : Query(Decoder 입력)가 여러 Key/Value(Encoder 출력) 중,  어떤 것들과 가장 연관성이 높은지 Attention하는 방법 

< Lessons Learned > 

Attention이라는 개념이 복잡해보이지만, 사실은 엄청 심플했다. 번역을 위한 문장 중 단어 하나하나를 encoder에서 참고하여 각각의 Attention을 행렬곱으로 구하여 Decoder를 거친 후 번역이 되는 개념이다. 

GAT (Graph Attention Network)를 공부하기 이전에 Attention을 공부하였다. Attention이 왜 자연어처리, 비전 등 다양한 분야에 적용되고 있는지 너무 잘 이해되었다. GAT는 Graph Data를 학습시킬 때, Attention 개념이 적용된 것이다. 아직 GAT를 공부하지는 않았지만, 유추해보자면 기존에 학습된 Graph 노드 중(Encoder) 연관성이 높은 노드들을 reference하여 예측하고자 하는 값을 Decoder를 통해 출력하는 컨셉일 것 같다. 

Attention은 XAI(Explainable AI) 분야에서도 큰 획을 그었을 것 같다. Attention을 이용하면 encoder에서 참조한 부분이 어디인지 파악할 수 있기 때문에, 엄청 유용하게 사용될 것으로 보인다. Attention이 encoder에서 참조한 부분이 어떻게 표현될지도 궁금하다. Attention을 이용한 DL 알고리즘을 사용할 때, 내가 분석한 내용을 청중에게 어떻게 보여줄 수 있을지는 더 공부를 해봐야 할 것 같다.  


< Reference >

 

Attention Is All You Need

The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new

arxiv.org