728x90

1. Transformer (Vaswani et al., 2017)

1.1 개요

Transformer는 Attention mechanism의 장점을 극대화한 모델이다. RNN처럼 순차적으로 데이터를 처리하는 것이 아니라 한꺼번에 시퀀스를 처리하는 것이 가장 큰 특징이다.

Transformer 구조

Transformer는 Encoding component와 Decoding component의 연결로 구성되어 있다.

여기서 encoding component와 decoding component는 encoder와 decoder의 stack들이다.

여기서 encoder는 구조가 모두 동일하지만 가중치를 공유하지는 않는다. 또한 각각의 encoder는 self-attention과 feed forward nn 두 개의 하위 계층으로 나뉜다. 반면, decoder는 encoder-decoder attention 계층 하나가 더 추가되어 있는 구조이다.

 

이제 자세히 transformer 구조를 알아보자.

1.2 Input Embeddings

먼저 Input Embeddings 과정이다.

input이 들어오게 되면 먼저 embedding algorithm을 이용해 각각의 단어들을 벡터화시킨다. 맨 처음 encoder만 embedding vector를 받고 그 다음 encoder부터는 바로 아래의 encoder의 ouput을 받게 된다.

Input Enbedding

1.3 Positional Encoding

두번째로 Positional Encoding 과정이다.

Transformer는 단어들이 한꺼번에 input으로 들어가기 때문에 어떤 단어가 몇번째로 들어갔는지에 대한 정보의 손실이 존재한다. 이러한 손실을 막기 위해 만들어진 것이 positional encoding 과정이다. 이번 포스팅에서는 간단하게만 다루고 추후에 독립적인 포스팅을 할 기회가 있을 것 같다.

positional encoding은 두 벡터의 거리가 멀수록 값이 커저야 한다는 개념이다. 

positional encoding 시각화

positional encoding vector는 input embedding과 더해지며 encoder의 input으로 들어가게 된다.

1.3  Self-Attention

그 다음 과정으로 Multi-head attention & Residual connection & Normalization 과정이다. 그 전에 먼저 self-attention의 역할부터 알아보자. 

self-attention은 연관 있는 단어들을 살펴보기 위한 역할을 하고 있다. self-attention은 다음과 같은 일련의 과정을 거치게 된다.

 

1. 각각의 input vector에 대해서 세 종류의 벡터를 생성한다.

  • Query : 다른 모든 단어에 대해 점수를 매기는 데 사용되는 현재 단어의 표현.
  • Key : 정보를 제공하는 단어의 집합. 즉, 단어의 label과 같은 의미.
  • Value : Key에 대한 실제 표현.

2. Score를 계산한다. score는 해당 단어에 대해 다른 단어들을 얼마나 집중하는지를 결정한다.

  • Query vector와 각각의 key vector를 곱하여 score를 산출

3. 산출된 score를 차원의 루트로 나눠준다. 이는 기울기의 안정성에 도움이 되기 때문이라고 한다.

4. softmax 함수를 통해 확률값으로 표현한다.

5. value vector들과 softmax score를 곱해준 후 모두 합하여 최종적인 output을 도출한다.

1.4 Multi-Head Attention

multi-head attention은 주어진 단어가 다른 단어를 참고할 때 하나의 경우의 수만 참고하는 것이 아닌 여러가지의 경우의 수를 참고하겠다는 아이디어이다. 즉, attention을 head의 수 많큼 쓰겠다라는 뜻이다.

1.5 Residual

residual connection은 resnet과 마찬가지로 입력의 output에 자기자신을 더해주는 방법이다. 

$${\operatorname{d}\over\operatorname{d}\!x}\{f(x)+x\}=f^\prime(x) + 1$$

그 이유는 위 식과 같이 미분을 하게 되면 도함수가 굉장히 작더라도 기울기가 최소한 1만큼은 흘려주게 되어 학습에 상당히 유리하다. 

1.6 Masked Multi-head Attention

다음으로 decoder부분의 Masked Multi-head attention 과정이다.

decoder에서의 self attention layer는 output sequence 내에서 현재 위치의 이전 위치들에 대해서만 고려해야 한다. 이는 self-attention 계산 과정에서 softmax를 취하기 전에 현재 스텝 이후의 위치들에 대해서 masking(-inf로 치환)을 해줌으로써 가능하다.

1.7 Multi-Head attention with Encoder outputs

그 다음 과정으로 encoder의 output과 decoder사이의 attention을 하는 과정이다. 

 

1.8 Final Linear and Softmax Layer

마지막 과정이다. Linear layer와 softmax layer를 통해 최종적으로 확률값을 구하고 argmax를 통해 해당하는 단어를 return하게 된다.

출처

Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems 30 (2017).
728x90

'딥러닝 > 개념 공부' 카테고리의 다른 글

Seq2Seq Model  (0) 2022.07.16

+ Recent posts