(배경) seq2seq 모델의 한계점
context vector의 크기가 정해져 있어서 input으로 들어온 모든 정보를 제한된 크기의 vector에 넣어야 하므로 긴 sequence가 input으로 들어왔을 때 학습이 제대로 되지 않는다는 문제가 있었다.
이를 개선한 attention 모델은 단어들의 대응 관계를 파악하는 계산 과정이 추가되어 필요한 정보에 더 잘 주목할 수 있게 된다.
Attention model
: seq2seq model에서 encoder과 decoder을 개선하여 위의 seq2seq의 문제점을 해결했다.
(1) Encoder 개선
기존의 seq2seq 모델은 encoder을 거친 후 나온 context vector의 크기가 정해져 있다는 문제점이 있었는데, encoder의 출력을 input sequence의 길이에 맞게 바꿔주어 이를 개선한다. 이를 위해 encoder의 RNN 모델에서 나온 모든 시점에서의 hidden state 값을 결과 vector에 활용한다.
아래는 기존 seq2seq 모델에서 encoder의 마지막 hidden state의 값만 출력 vector로써 decoder 안에 넣어주는 모습이다.
아래는 이를 보완하여, encoder의 모든 hidden state 값을 hs라는 행렬로 넣어준 것이다.
(2) decoder 개선
사람이 '나는 고양이로소이다'를 'I am a cat'으로 번역할 때 한국어의 각 단어들이 영어에서 어떤 단어에 해당하는 단어인지를 계속 파악하며 읽어야 한다.
이렇게 단어간의 대응관계를 나타내는 정보를 alignment라고 하고 이 과정이 Attention model에서도 일어난다.
(a) attention을 거친 hs 행렬의 각 행벡터들이 decoder의 입력에 들어오는 단어들 중 어떤 단어와 연관이 있는 지 점수를 매겨야 하고, (b) 그 점수를 설정하는 기준도 설정해야 한다. (c) 그리고 마지막으로 이 두 과정을 하나의 흐름으로 이어줘야 한다. |
아직까지는 이 흐름을 '어떤 계산'이라고 표현을 하겠고(후에 이를 Attention 계층이라고 정정하겠다), 이는 decoder의 RNN의 각 cell에서 LSTM을 거친 출력값이 hs와 대응되어 일어나는 계산이다.
(a) weighted sum 구하기
decoder 과정에서 각 단어들이 input으로 들어올 때, 각 단어가 hs의 어떤 행과 연관이 높은지를 파악해서 대응관계를 파악해야 한다고 했다. a는 각 단어의 중요도를 나타내는 벡터이고 a를 hs와 가중합을 하여 맥락 벡터(context vector)를 얻을 수 있다.
decoder의 각 cell에서 LSTM을 거친 hidden state h가 hs와 내적하여 a를 구하고, 그렇게 출력된 a를 h와 가중합 하여 context vector를 구한다. context vector는 LSTM에서 나온 ht값과 함께 affine 계층으로 들어간다.
(b) Attention Weigh 구하기
위에서 각 단어의 중요도를 나타내는 벡터인 a를 구하기 위해선 decoder의 LSTM에서 나온 h와 hs를 비교해야 한다.
hs는 encoder에서 input에 대해 encoder의 cell들을 거친 hidden state 값들을 모아놓은 것이고,
h는 decoder에서 그 시점에서의 input에 대해 decoder의 cell을 거친 hidden state의 값이다.
즉 encoder의 입력 단어어와 대응되는 decoder의 입력 단어가 무엇인지 파악하는 것이다.
affine 계층에서 hs와 h를 내적을 통해 hs의 각 행과 h의 유사도를 계산할 수 있다. 이를 softmax 계층을 거쳐서 총 합을 1로 만들어 준다.
(c) Attention 계층에 대한 정의
decoder에선 input 단어가 embedding 계층을 거쳐 벡터로 만들어 지고 RNN cell을 거쳤다. (b)에서 decoder의 LSTM cell을 거친 h가 hs와 내적하여 Attention Weight인 a가 계산되었다. (a)에서는 a와 hs를 내적하여 Weight Sum이 계산되어 context vector를 출력했다. 이 context vector이 affine 계층과 softmax 계층을 거쳤다. 이 (a)와 (b)를 합쳐 Attention 계층이라고 할 수 있다.
'딥러닝 > nlp 논문' 카테고리의 다른 글
Transformer: multihead attention을 중심으로 (0) | 2021.07.25 |
---|---|
Attention 논문 정리: Neural Machine Translation by Jointly Learning to Align and Translate (0) | 2021.04.05 |
Seq2Seq (Sequence-to-Sequence) 이란? (0) | 2021.04.04 |
LSTM (Long-Short Term Memory)이란? (0) | 2021.03.28 |
FastText (0) | 2021.03.18 |