본문 바로가기

카테고리 없음

[Transformer] Attention Is All You Need (3) : Attention

반응형

Transformer 논문을 아래 목차로 나눠 자세히 리뷰합니다. 

더보기
닫기

1. Abstract ~ Background 

2. Model Architecture(Encoder, Decoder)

3. Attention

4. FFN, Positional Encoding

5. Training

6. Result, Conclution


0. Self-Attention

N개의 Token으로 구성된 문장이 있을 때, Self-Attention은 N x N 번 연산을 수행해 모든 token들 사이의 관계를 직접 구함 (Query와 Attention이 가장 높은 token을 찾기 위해서 Key, Value를 문장의 처음부터 끝까지 탐색)

 

  • Query : 현재 시점의 token에 대한 정보를 담고 있는 vector (ex. cup)
  • Key : attention을 구하고 싶은 대상 token에 대한 정보를 담고 있는 vector 
  • Value : key와 동일한 정보를 담고 있는 vector

Key와 Value는 같은 토큰을 가리킴. 실제 vector 값은 다르지만 같은 토큰을 의미

 

Query, Key, Value vector 값 계산 과정

  • token embedding vector(input)을 fully connected layer에 넣어 각 vector 생성함(3개의 서로 다른 weight 행렬 사용)
  • Query = Key = Value라고 표현하는 것은 동일한 차원($d_k$)과 형태를 갖고, 같은 공간에서 정의 된다는 것으로      각 벡터가 내용적으로 동일하다는 이야기가 아님.

1. Scaled Dot-Product Attention

$$\text{Attention}(\text{query},{\text{key}_i},{\text{value}_i})=\sum_i\text{softmax}(\frac{\text{query}\cdot\text{key}_i}{\sqrt{d_k}})\cdot\text{value}_i$$

  • $d_k$ : 키(key)와 쿼리(query) 벡터의 차원 수, 값이 너무 커지지 않게 $\sqrt{d_k}$로 스케일링
  • $\text{softmax}$ 함수 :  입력된 벡터를 확률 분포로 변환, 쿼리와 키의 유사도 계산

 

이 유사도에 따라 각 값(value)에 가중치를 부여한 후, 가중 평균을 계산하여 출력값(Attention)을 구함 여기서 중요 포인트는 연산의 최종 output과  input이 같은 shape를 갖는 것


2. Scaled Dot-Product Attention 구하기 

sample sentence = Life is a journey

Attention : 입력 시퀀스의 특정 부분에 더 많은 가중치를 부여하는 것

Attention Score :  입력 시퀀스의 각 요소 간의 유사도를 나타내는 값

 

1. token 1개와 token 1개의 attention 구하기

2. token 1개와 문장 내의 모든 token 사이의 attention 구하기

3. 모든 token에 대해 attention 구하기


3. Multi-Head Attention

각 단어에 대해 서로 다른 관점에서의 정보를 추출할 수 있음

 

  • ex1. 진짜 웃기다!!
  • ex2. ㅋㅎ 웃기네

 두 문장에서 사용되는 웃기다는 문맥에 따라 다르게 해석됨. 이 경우 multi-head attention을 사용해 다양한 문맥을 고려하도록 하면 더 많은 정보를 추출할 수 있음.

 


4. Multi-Head Attention 구하기

1. Query, Key, Value에 각각의 가중치 행렬을 곱해 $d_k, d_k, d_v$로 변환

2. 변환된 벡터를 각각 h개로 나눔 $d_k/h, d_k/h, d_v/h$

3. 각 헤드에서 분할된 Quey, Key, Value를 가지고 attention score를 계산

4. 각 헤드에서 계산한 attention score로 attention(output vector) 계산

5. 모든 attention vector를 concat함

6. concated attention과 가중치 행렬을 내적해 최종 출력 vector를 계산함

 

Query, Key, Value의 차원 : 512
h = 8
➨ $d_k*h = d_{model}$

 

 

 

 

 

 

 

 

 

 

반응형