본문 바로가기
Have Done/Attention

[Attention] Intro + Transformer Architecture

by 에아오요이가야 2022. 9. 13.

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에 들어갑니다!

 

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

 

 

댓글