저번 시간에 Attention에 대해 다루었습니다. 솔직히 제일 처음에 Transformer를 공부할 때 이해가 되질 않았던 기억이 있습니다. 또한 논문 'Attention is all you need'도 초보자가 읽기에 너무 힘들었던 기억이 납니다. 여러 글(Jay alammar의 블로그와 ratsgo님의 블로그)과 유튜브 영상 등을 보고 구현을 하다 보니 이해가 되었고 이를 간단히 정리하고자 합니다.
Transformer는 Attention 연산을 통해 정보의 encoding과 decoding을 해결합니다. RNN은 구조상 순서의 정보가 반영이 되어있지만 Attention은 그렇지 않아 순서의 사상을 반영해야하기 때문에 Positional Encoding을 사용하여 반영합니다.
Positional Encoding은 여기 글이 잘 설명이 되어있는 것 같아 참고하시길 바랍니다.
Transformer의 구조를 간단하게 조금씩 점검을 해보겠습니다.
1. 3가지 Attention으로 구성이 되어있습니다. 위 아키텍처 그림에서 주황색 부분을 뜻합니다.
- encoder의 self-attention
- decoder의 mask가 있는 self-attention : 미래 time-step을 반영해서는 안되기 때문에 masking을 실시해야 합니다.
- decoder의 encoder로부터 받은 attention
2. Residual Connection을 이용해서 깊게 쌓을 수 있습니다. N_x개 만큼 쌓을 수 있다는 뜻입니다. 추후에 BERT와 같은 큰 LM을 탄생시킬 수 있습니다.
3. 상당히 중요한 부분은 Multi-Head Attention입니다.
Seq2Seq에서의 Attention은 좋은 query를 만들어서 상당히 유사한 key를 찾는 과정입니다. 그리고 key와 value로부터 필요한 정보를 얻어내는 과정입니다. 그래서 Decoder의 각 time-step마다 encoder로부터 Attention을 통해 좋은 정보를 얻고, 생성하는 토큰의 quality를 올릴 수 있었습니다.
하지만 Transformer에서의 Multi-Head Attention은 각 Head 별로 Attention을 수행하여 다양한 정보를 얻어올 수 있습니다. Single-head가 Attention을 수행하는 사람 한명라고 하면, 이제는 여러 사람이 문장을 쳐다보고 다양하고 좋은 정보를 얻어올 수 있다는 뜻입니다. 위 그림처럼 각 Head마다 다른 Linear Transform을 적용시킨다는 뜻이고, 여러 개의 query를 만들어 다양한 정보를 잘 얻어오자는 취지로 검색할 때마다 좋은 query, key, value를 생성한다는 뜻입니다.
현재 Transformer의 위치는 NLP 뿐만 아니라 딥러닝 전반에 큰 영향을 주었습니다. 일단은 NLP 분야에서는 Transformer가 기본이 되어버렸고, 음성도 요긴하게 쓰입니다. 또한 비전 분야에서도 인기가 있고 GNN(Graph Neural Networks)에서도 활용이 되고 있습니다. 상당히 임팩트 있는 아키텍처 Transformer에 대해 다루어 보았습니다. 이제 다음 글부터는 GPT, BERT 이전에 알아야할 부분을 조금 더 정리해보는 시간을 가지겠습니다.
<Reference>
https://peltarion.com/blog/data-science/self-attention-video
'AI > NLP' 카테고리의 다른 글
Pretrained Language Model - 10. Tokenization (0) | 2021.10.31 |
---|---|
Pretrained Language Model - 9. Language Model (0) | 2021.10.24 |
Pretrained Language Model - 7. Attention (0) | 2021.10.09 |
Pretrained Language Model - 6. ELMo (0) | 2021.10.02 |
Pretrained Language Model - 5. Word Embedding (0) | 2021.09.23 |