Have Done/Attention

[Attention] Intro + Transformer Architecture

에아오요이가야 2022. 9. 13. 10:56

RNN 구조의 모델을 사용할때 Encoder와 Decoder를 활용하는 경우가 있습니다.

또한 이의 성능을 높이기 위해 Attention module을 사용한다는 것을 소개 해드리며 시작하겠습니다.

 

사실 Attention개념까지 검색해서 들어왔다는 것은 대강 기본적인것들에 대해 알고계신다는 거 아니겠습니까?

 

쉽게쉽게 넘어가겠습니다.

 

Top-Down 방식의 이해를 먼저 시도하겠습니다.

 

이미지를 이렇게 막 가져와도 되는지 모르겠습니다? 출처는 남겨보도록 하겠슴둥..

MHA -> Multihead Attention

MMHA -> Masked Multihead Attention

FFN -> Feed Forward Network

 

 

왼쪽 부분이 Encoder이구요, 오른쪽 부분이 Decoder입니다.

둘다 연산들의 집합인 module(Encoder - 파란색통, Decoder - 초록색통)이 N개씩 존재하는 꼴입니다.

 

그림에 있는 빨간 선은 Residual connection입니다. encoder와 decoder 둘다에 있는 부분이 인상? 적이네요

 

1. Encoder 

Encoder는 2개의 sub-layer로 이루어져 있습니다.

Source가 되는 Token들이 high-dimensional space에 먼저 embedded 됩니다.

그렇게 embedding된 input이 positional encoding과 함께 더해집니다 (literally sum 개념)

 

합쳐진 embedding이 encoder에 들어가게 됩니다!

 

 

2. Decoder

Decoder 내부의 3개의 sub-layer에는 residual connection과 normalization operation이 포함돼있는 것을 알 수 있습니다.

첫번째 sublayer는 MHA가 아닌 MMHA가 있다는 것을 기억 합시다.

 

Target tokens는 1만큼 offset됩니다. -> wtf? 도대체 무슨말일까요?

encoder처럼 토큰은 우선 embedded into a high-dimensional space되고,

그 embeddings들은 positional encodings과 함께 더해집니다.

 

합쳐진 embeddings가 decoder에 들어갑니다!

 

말로하면 누가 모르겠습니까? 한문장 한문장이 읽어 내려가기 고역스럽네요 설명을 추가할수 있는 방안을 간구해보도록 하겠습니다.