1. Sequence to Sequence model (Sutskever et al., 2014, Cho et al., 2014)
먼저, 이번 포스팅의 내용은 Jalammar의 블로그 내용과 그림을 참고하였다.
Seq2Seq model이란 일련의 항목 (단어, 문자 등)을 취하여 다른 항목의 시퀀스를 출력하는 모델을 뜻한다.
1.1 핵심 아이디어
Seq2Seq는 encoder와 decoder라는 두가지 구조로 구성되어 있다.
위 영상과 같이 입력된 각각의 item을 encoder에서 처리한 후 정보들을 컴파일하여 하나의 벡터로 처리한다. 이 벡터를 context vector라고 한다. 이후, 모든 input item을 받은 후, encoder는 context를 decoder로 보내게 된다. Decoder는 cotext vector를 받아 output item들을 반환하게 된다.
1.2 RNN 기반 Encoder-Decoder
encoder-decoder 구조를 표현하기 위한 가장 고전적인 방법으로 RNN이 사용되었었다.
다음과 같이 각각의 입력이 들어올 때 마다 hidden state가 업데이트 된다. 모든 입력이 들어온 후 가장 마지막의 hidden state가 context vector가 되어 decoder로 전달되게 된다. decoder는 context vector를 이용해 output을 배출하게 된다.
2. Attention
Context vector는 가장 마지막 item에 영향을 많이 받기 때문에 긴 길이의 시퀀스에 대해 bottleneck이 있다. 때문에 이후 Attention 방법을 도입하여 input 시퀀스에 대해 item이 주목해야 하는 부분에 대해 조금 더 활용할 수 있다.
2.1 Classic Seq2Seq vs. Attention Model
위 영상과 같이 Encoder가 더이상 마지막 hidden state를 넘겨주는 것이 아니라 모든 hidden state를 decoder로 넘겨주게 된다. 그리고 hidden state들 중에 가장 영향을 주는 hidden state에 가중치를 주어 decoder의 output을 배출하게 된다.
2.2 Decoder
Attention decoder는 output을 배출하기 전 다음과 같은 extra step을 거친다.
- encoder에서 배출된 hidden state를 모두 확인. (각각의 hidden state는 해당 입력 item의 정보를 가장 많이 가지고 있음)
- 각각의 hidden state에 score를 할당.
- softmax 시킨 score와 hidden state를 곱하여 결합.
위 step을 영상으로 보면 다음과 같다.
출처
Jay Alammar – Visualizing machine learning one concept at a time.
Visualizing machine learning one concept at a time.
jalammar.github.io
'딥러닝 > 개념 공부' 카테고리의 다른 글
Transformer (0) | 2022.07.16 |
---|