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
앞선 포스팅에서 설명했듯이 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단계로 나누어서 살펴보겠다.
'Study > NLP (Natural language processing)' 카테고리의 다른 글
[NLP] 자연어처리 임베딩 모델 총정리 (word2vec부터 BERT까지) (0) | 2020.11.01 |
---|---|
한국어 텍스트 말뭉치 (도메인별 나눠져있음) (0) | 2020.10.24 |
[NLP] LSTM, GRU의 한계와 Attention 등장(201015) (0) | 2020.10.15 |
GPT- 한국어 적용 (0) | 2020.08.13 |
Fastbert 논문리뷰자료 (0) | 2020.08.08 |
댓글