데이터 분석/딥러닝

Transformer Model

yessen 2022. 12. 27. 17:20
728x90

● Attention Is All You Need (NIPS 2017) 핵심 개념

    - 자연어 처리와 같은 시계열 데이터의 처리에서 RNN 계열의 모델이 아닌 Attention 개념이 등장함.

    - 트랜스포머는 Encoder 부분과 Decoder 부분으로 구성되어 있음.

    - Encoder에는 Input 데이터를 Positional Encoding하고, Multi-head Attention 레이어를 거쳐 Feed-Forward

      레이어로 전달하는 부분이 구성되어 있으며, 이 레이어들을 거쳐 나온 Output이 Decoder부분으로 전달됨.

    - 그리고 각 레이어에는 Residual 레이어가 추가되어 있음 (skip connection)

    - Decoder에는 Encoder와 같은 구조 앞뒤로 Masked Multi-Head Attention레이어와 Linear - Softmax 레이어로 구성.

    - Masked layer는 학습해야 하는 것을 가리고(masked) 학습하는 것을 유도하는 장치.

 

    - 이 구조는 번역기를 기반으로 설계된 것임. 예를 들어, 한국어를 encoder로 입력받아 이해한 다음

      이에 합당한 말을 decoder에서 생성하여 번역된 말을 output으로 출력하는 구조라고 이해할 수 있음.

      따라서, Encoder만 이용하여 '분류기'로 사용할 수 있음.

Transformer Model Architecture

 

Positional Encoding

- transformer의 입력은 matrix의 형태를 띠고 있으며, 이는 위치(순서) 정보가 없다는 뜻임. 

- 각 토큰의 위치 정보를 추가하기 위해 Input embedding에 positional encoding 정보를 추가함.

- positional encoding은 embedding과 같은 차원을 가지므로 덧셈할 수 있음.

  (이 positional encoding이 트랜스포머의 큰 아이디어 중 하나라고 생각함)

  예를 들어 one-hot encoding을 생각해 보면, 각 위치 정보를 나타내기 위해 0,1로 이루어진 방대한 정보가

  있어야 함. 이 논문에서는 주기 함수인 sin함수와 cos함수를 이용했음. 

이미지 출처: https://www.researchgate.net/figure/Visualization-of-the-positional-encoding_fig2_346516047

 

- 위 그림을 보면 dimension이 1, 128, 256, 384인 주기 함수가 있고, 이러한 주기함수는 얼마든지 만들어낼 수 있음.

  그리고 이 주기함수들의 교점을 위치(position) 정보로 이용하면, 거의 무한대의 위치 정보를 활용할 수 있다는 뜻임.

  또한 주기 함수의 특성 상 물리적인 용량이 크게 증가하지 않아도 됨 (one-hot encoding은 계속 증가).

  따라서 물리적인 용량과 한계에 영향을 크게 받지 않고 위치 정보를 encoding하여 추가할 수 있는 것.

 

 

Self-Attention & Multi-Head Attention     

- 일반적으로 쓰이는 Attention 함수는 Additive attention function과 dot-product attention이 있다고 함

- Additive attention은 하나의 은닉층을 가진 feed forward network구조

- Self-attention은 Scale 과정을 빼면 Dot-product attention과 같은 구조 

 

- 좌측의 그림은 Scaling이 추가된 dot-product attention. 즉, self-attention의 구조임.

  Q(query), K(key)를 입력받아 학습하고 softmax를 거쳐 나온 결과값을 입력받은 V(value)와 연산하여

  Attention 값을 구함.

- 우측의 그림은 병렬로 여러개의 attention 레이어가 구성된 Multi-head attention 구조임.

 

-  Query, Key, Value를 각 차원에 대해 서로 다르게 학습하여 h번 선형 투사(projection)하는 것이 유익하다는 것을 발견.

- 이 결과값들을 다시 한번 연결하고 선형 투사하여 최종 출력.

- 예를 들어, 512차원의 입력 단어가 있으면 8개의 헤드 속에서 64차원의 벡터로 처리하여 연결하고 투사.

- 즉, 각각의 헤드에 따라 각각 다른 attention weight가 곱해져서 헤드 수 만큼의 결과가 나오는 것들 연결하여 투사하는 것

 

encoder self-attention in layer 5 of 6

- 위 그림에서 각 색깔은 각각의 attention head를 나타냄. 많은 attention head가 'making...more difficult'라는 문구를

  완성하면서 'making'의 종속성에 attending하고 있는 것이 보임.
- 즉, head를 여러개 가진다는 것은 여러 관점에서 수행하는 것이라고 볼 수 있고 robust한 결과를 얻을 수 있음.

 

 

이러한 구조로 얻은 정보를 Fully connected layer를 거치고 Softmax를 거쳐 출력