seq2seq은 두 개의 RNN 아키텍처를 사용하여 입력 시퀀스로부터 출력 시퀀스를 생성해 내는 자연어 생성 모델입니다
seq2seq 개요
원문을 첫 번째 RNN인 인코더로 입력하면, 인코더는 이를 하나의 고정된 벡터로 변환한다. 이 벡터를 문맥 정보를 가지고 있는 벡터라고 하여 컨텍스트 벡터(context vector)라고 하며, 두 번째 RNN인 디코더는 이 컨텍스트 벡터를 전달받아 한 단어씩 생성해내서 요약 문장을 완성하는 거죠.
LSTM와 Convext Vector
LSTM이 바닐라 RNN과 다른 점은 다음 time step의 셀에 hidden state뿐만 아니라, cell state도 함께 전달한다는 점이다. 다시 말해, 인코더가 디코더에 전달하는 컨텍스트 벡터 또한 hidden state h와 cell state c 두 개의 값 모두 존재해야 한다는 것을 의미한다.
seq2seq 구조에서 디코더는 시작토큰 SOS가 입력되면, 각 시점마다 단어를 생성하고 이 과정을 종료토큰 EOS를 예측하는 순간까지 멈추지 않는다.
어텐션 메커니즘을 통한 새로운 컨텍스트 벡터 사용하기
기존의 seq2seq는 인코더의 마지막 time step의 hidden state를 컨텍스트 벡터로 사용했으나, 이는 RNN의 한계로 인해 컨텍스트 정보에는 이미 입력 시퀸스의 많은 정보가 손실이 된 상태가 된다.
어텐션 메커니즘(Attention Mechanism)은 이와달리 인코더의 모든 step의 hidden state 정보가 컨텍스트 벡터에 전부 반영되도록 하는 방식이다. 모든 hidde state가 동일한 비중으로 반영되지 않고, 디코더의 현재 time step 예측에 인코더의 각step이 얼마나 영향을 미치는지에 대한 가중합으로 계산한다.
hidden state의 가중치값은 디코더의 현제 스탭이 어디냐에 따라 계속 달라지게 된다.
Summary
- seq2seq를 사용합니다.
- RNN 계열 중 LSTM을 사용하므로 hidden state뿐만 아니라 cell state도 사용해야 합니다.
- 디코더의 예측 시퀀스에는 시작 토큰 SOS와 예측 토큰 EOS를 시퀀스의 앞, 뒤로 붙입니다.
- seq2seq를 구동시키면 디코더는 시작 토큰을 입력받아 예측을 시작합니다.
- seq2seq 기본 모델과 달리, 어텐션 메커니즘을 이용해 인코더의 hidden state의 중요도를 취합한 컨텍스트 벡터를 디코더 스텝별로 계산합니다.
- 계산된 컨텍스트 벡터를 이용해서 디코더는 다음 등장할 단어를 예측합니다.
'Aiffel > Fundamental' 카테고리의 다른 글
Regularization, Normalization (0) | 2022.02.15 |
---|---|
TensorFlow2 API (0) | 2022.01.28 |
텍스트 요약(Text Summarization) (0) | 2022.01.27 |
Softmax 함수와 Cross Entropy (0) | 2022.01.24 |
로지스틱 회귀분석(Logistic Regression) (0) | 2022.01.24 |
댓글