Transformer
- Sequential model의 문제점이 있다
- trimmed sequence: 문장의 길이는 항상 달라질 수 있다 (뒤에 몇개가 없거나)
- omitted sequence: 중간에 몇개가 없을수도있고, 어순이 몇개 없을수도있다.
- permuted sequence: 중간에 밀려서 순서가 바뀔 수도 있다.
- transformer는 재귀적이지 않다
- Attention이라는 구조를 활용함
- 입력 seq와 출력seq의 수가 다를 수 있고 입력 도메인과 출력 도메인도 다를 수 있다.
Transformer에서 중요한 세가지
- n개의 단어가 어떻게 한번에 인코더에서 처리가 되는지
- 디코더와 인코더 사이에 어떤정보를 주고받는지
- 디코더가 어떻게 generation 할 수 있는지
encoder는 self attention와 feed forward neural netwrok로 구성되어있다.
Self Attention
- 각 단어를 벡터로 구성한다
A단어 x_1이 self attention을 거쳐서 z_1으로 갈 때 x_2, x_3 정보를 다 사용한다 - 모든 Input 정보를 다 사용
Transformer는 Query, Key, Value라는 세개의 Vector가 있다.
입
력받은 단어벡터 하나마다 위의 세개의 벡터를 만들게 되고 Q,K,V로 score라는 벡터를 만들게 된다.
ex) 'Thinking','Machine' 이라는 단어들에 대한 벡터가 존재하면 'Thinking'벡터의 Q벡터와 나머지 n개에 대한 K벡터를구한다.
그렇게 나온 Q와 K 벡터를 내적한다
-> i 번째 단어가 나머지 n개의 단어와 얼마나 유사도가 있는지 알게된다(score)
구해진 score를 8로(key vector의 square root // 여기선 key vector dim이 64) 나눈다
score에 root를 씌우고 나온값에 softmax를 취해준다
요약
embeding 벡터가 주어지면 각각의 임베딩 벡터마다 Q,K,V vector를 만들고 Q벡터와 k벡터의 내적으로 score scalar를 만들고 softmax를 취해서 어떠한 벡터를 만든다.
각각의 단어들에서 나오는 value vectore들의 weighted sum을 사용한다.
-> 입력이 고정되어있더라도 i의 옆의 입력이 달라짐에 따라 출력이 달라질 수 있는 여지가있다.
Multi head Attention
- n개의 attention을 반복한다
- 한개의 임베딩 벡터에 대해서 Q,K,V 벡터셋을 여러개 만든다
- n개의 헤드(Attention)를 사용해 n개의 인코딩된 벡터가 나오게되면 이 값을 concatenate해서 다음 인코더로 넘겨준다
- 여러번의 인코더에 넘겨줘야 하므로 인코딩된 벡터(출력값)의 차원을 인코딩하기전의 (입력값)차원과 동일하게 맞춰줘야한다
- 하지만 MHA의 출력벡터는 concatenate 되어있기 때문에 기존의 입력값에 비해 n배의 채원이 되었으므로 이를 W0 와의 행렬곱을 통해 기존크기로 변환시킨다
- 원래 주어진 임베딩단어의 차원이 100차원이고 10개의 head를 사용한다면 이를 10으로 나누고 10차원 짜리 입력을 가지고 K,Q,V vector를 만든다*
Pose Encoding
- Trans former는 입력에 특정 bias를 더해주는 Poseencoding을 수행한다
- 왜냐하면 TransFormer는 한개의 단어에 여러 단어들을 동시에 고려하도록 설계되었지만 sequential한 정보는 고려하지 않았기 때문이다.
- "나는 친구랑 밥을 먹는다", "나는 먹는다 밥을 친구랑" -> 그래서 b를 더해서 이 문제를 해결한다
Decoder
출력하려는 단어들에 맵핑하는 Attention map을 만드려면 k,v 벡터가 필요하다
마지막 인코더층(가장 상위인코더)의 출력값은 여러단어들의 [k,v]시리즈로 제공한다
이 값들을 각 Decoder 내부의 Encoder-Decoder Attention 계층에서 해석하여 입력 Sequence의 적절한 위치를 잡는다
MHA와 동일하지만 Query 벡터를 이전 디코더에서 받고 k,v벡터를 인코더 스택에서 받아온다
중요한 기술인만큼 나중에 다시 공부해야겠다..
'부스트캠프 AI Tech 2기 > 2기 U-Stage' 카테고리의 다른 글
2주차 학습정리 (0) | 2021.08.13 |
---|---|
2주차 Generative Models 1 (0) | 2021.08.13 |
2주차 Sequential Model - RNN (0) | 2021.08.12 |
2주차 Computer Vision Application (0) | 2021.08.12 |
2주차 조금..? Modern Convolution Neural Network (0) | 2021.08.12 |