본문 바로가기
Study/NLP (Natural language processing)

[NLP] Attention과 Transformer

by 후이 (hui) 2020. 10. 21.
728x90
반응형
Q. Attention 과 Transformer에 대해 설명해주세요. 
Q. Query Key Value 가 뭔지 설명해주세요
Q. Attention, Transformer 학습 방식을 응용한 모델에는 무엇이 있는지. 

 

Q. Attention 과 Transformer에 대해 설명해주세요. 

간단한 A. (자세한 설명은 뒤에)

seq2seq의 dot product attention 이라면, 

어텐션은 기존 seq2seq 모델 구조에서 현재 시점 디코더 토큰 입력해서 다음 디코더 토큰을 예측할 때

현재 시점 디코더 토큰과 인코더 토큰들간의 유사도를 내적을 통해 구한 뒤

해당 계산값을 반영하여 다음 디코더 토큰을 예측의 성능을 높이는 것 

 

즉 "I am hungry" 를 "나는 배가 고프다" 로 번역할 때, 

내적을 통해 고프다는 hungry 와 유사도가 0.8, am 과 0.2, I 와 0.1 이 구해졌고 

이 값들을 다 더해 다음 토큰 예측에 반영하는 셈. 

 

이를 통해 현시점의 디코더가 어떤 인코더 토큰과 가장 유사한 지에 대한 정보가 반영이 되는 것. 

 

A. Transformer 는 이러한 Attention 학습 방법을 가져오는데 

seq2seq의 dot product attention와 다른점은 

기존의 RNN 계열을 인코더 디코더로 구성하지 않고, attention 으로 학습을 진행하며, 

이때 attention 의 query key value 에 여러개의 weight matrix 를 넣어 학습이 되게하는 

Multi - head attention 방법을 활용한다. 

 

이러한 Multi - head attention 으로 인코더, 디코더 구조가 된게 바로 Transformer

 

Q. Query Key Value 가 뭔지 설명해주세요

간단한 A. (자세한 설명은 뒤에)

위의 상황과 동일한 Seq2seq의 dot product attention 이라면 

 

Query :  디코더의 이전 레이어 hidden state , 영향을 받는 디코더의 토큰 (고프다)
K : 인코더의 output state , 영향을 주는 인코더의 토큰들 (I am hungry)
V : 인코더의 output state , 그 영향에 대한 가중치가 곱해질 인코더 토큰들

디코더 특정 시점 (사진에서는 it) hidden state 가 쿼리로 주어지면 

a, robust, must, obey 는 각각 key 이고 

query, key의 유사도가 곱해질 값이 결국 value 가 된다. 

 

 

(이건 루트씌운 차원으로 나눠주는 scaled dot product attention 이다)

Query * transpose(key) ==> 디코더 토큰과 인코더 토큰 전치한 행렬을 내적 

==> soft max 거쳐 가중치 구함 (0.8,0.2,0.1)

이를 다시 인코더 토큰 (I, am, hungry) 와 내적해 각각의 영향도 구함  0.8 * hungry + 0.2 * am + 0.1 * I

 

반면, 인코더 내부에서 인코더 한 토큰을 재구성하는 개념인  self-attention의 경우, Q=K=V : 인코더의 output state 


Q. Attention, Transformer 학습 방식을 응용한 모델에는 무엇이 있는지. 

 

간단한 A. (자세한 설명은 뒤에)

 

# 자연어처리 

최신 등장한 고성능의 임베딩 모델은 모두 ! Transformer 기반의 학습 구조를 가지고 있다. 

 

BERT - Transformer 의 Encoder (self attention)

GPT계열 - Transformer 의 Decoder (Multi-head attention)

XLnet - Transformer-XL (세그먼트 리커런스와 상대 위치 임베딩기법 - 약간 골아픔 설명은 다음에;..)

 

# Common Sense Reasoning  (상식추론)

매한가지로 BERT, GPT, XLNet

 

 

# 이미지 생성

이미지 쪽에서는 segmentation, image classification 보다는

Image Generation 쪽에서 많이 쓰인다 (아무래도 인코더 디코더 구조이다보니 생성에 더 적합한듯) 

 

Image Transformer 

Routing Transformer 

 

(style GAN 보다 둘다 우수한 성능을 보임) 

 

 

# 시계열 예측 연구에도 활용됨 

Multi-horizon forecasting ** 

미래를 예측하는 디코더 부분에서 마찬가지로 인코더 활용하는 트랜스포머 구조 사용함. 

 

===========================================================================================

 

 

자세히 살펴보자면 

0. Attention 

huidea.tistory.com/139

 

[기술면접] LSTM, GRU, Attention (day6 / 201015)

Q. Attention 은 무엇인가요? 개인적으로 딥러닝 역사(?) 라고 하긴 그렇지만 여태 맥락중에서 이 부분을 제일 좋아한다. 우선 LSTM GRU 의 특징과 한계를 다시 살펴보고 Attention 과 Transformer 가 등장한 �

huidea.tistory.com

앞선 포스팅에서 설명했듯이 Attention 은 RNN 계열의 seqseq 에서 

디코더 부분의 입출력을 진행할 때, 단지 context vector에만 의존하지 않고

인코더의 정보 중 어떤게 중요한 지 알려주는 과정을 추가하는 개념이다. 

 

어떤게 중요한 지 계산하는 방법은

인코더 모든 토큰 (i1,i2,....in)  *(내적) 디코더 입력 토큰 (k2)

--> 이 값은 각각의 인코더 토큰과 해당 시점 입력 디코더 토큰의 유사도 

== > 해당 유사도 다 더함  (i1 * k2 + i2 * k2 + i3 * k2 .... + in * kn) 

ex.

디코더 구조에서 "suis" 를 입력 토큰 I am a student 각 토큰과의 유사도를 구하고 

그 유사도와 각 입력토큰의 hidden state를 곱해 suis를 표현해내는 거다. 

따라서 suis = ( 0.1 * I의 hidden state) + (0.05 * am  hidden state) + (0.05 * a  hidden state) + (0.8 * student  hidden state)

 

 

여기서의 한계점 

1. 인코더 토큰 끼리의 유사도는 확인하지 못한다. 오로지 디코더 토큰 하나(k2)와 인코더 r(i1,i2,....in)간의 유사도만 구할뿐 ㅠ

2. 디코더 토큰 끼리의 유사도도 확인하지 못한다. 

 

따라서 같이 입력되는 토큰들끼리의 유사도도 구해보면 어떨까 ~ 하는 게 등장하는데

이게 self attention 이고 방금 언급한 일반적인 attention 과  self attention 를 같이 쓰는게

그러면서 RNN 모델을 제거하고 인코더 -디코더 구조를 만드는게 Transformer 다

 

+) 아니,, RNN 모델을 제거하고도 인코더 디코더 구조가 가능한가, 학습이 가능한가?

   어텐션은 어디까지나 어디가 더 중요한지 힌트를 주는 개념이지 않나? 

   가능하다 그것이 multi head attention 이라면 ! (자세한건 뒤에서)

 

1. Transformer 

 

transformer 의 구조다. seq2seq 와 마찬가지로 해당 구조도 인코더와 디코더로 나뉘어져 있는데 

좌측이 인코더, 우측이 디코더다 

 

=== 1. encoder === 

1) positional encoding 

2) Multi - Head attention (self attention) 

3) point wise feed forward network 

=== 2. decoder === 

4) positional encoding 

5) Masked multi - Head attention (self attention) 

6) multi - Head attention => inference

7) point wise feed forward network 

8) linear - softmax - output 

 

 

총 8단계로 나누어서 살펴보겠다.

 

 

728x90
반응형

댓글