<Seq2Seq (Sequence-to-Sequence)>
Seq2Seq 모델은 입력 sequence에서 다른 도메인의 sequence를 출력하는 모델로, 챗봇(Chat-bot),기계 번역(machine translation), 내용 요약(text summarization), STT(speech to text) 등에서 주로 쓰인다.
<Seq2Seq 모델의 구조>
Seq2Seq 모델은 encoder와 decoder로 나뉜다. encoder와 decoder는 RNN 구조이고, 그림에서는 둘 다 LSTM을 사용했다.
encoder | context vector | decoder |
입력 문장의 모든 단어를 입력받아 context vector를 만든다. encoder RNN 셀의 마지막 시점의 은닉 상태가 context vector이다. |
입력 문장에 대한 정보가 압축되어 있다. | context vector을 받아 번역하여 단어를 순차적으로 출력한다. context vecotr는 디코더 RNN 셀의 첫번째 은닉 상태로 사용된다. 예시에서 <sos>는 문장의 시작을, <eos>는 문장의 끝을 의미한다. |
encoder와 decoder에서 입력 단어들은 모두 embedding 되어 벡터로 표현된다.
<Training Seq2Seq>
train 과정 동안은 decoder이 context vector과 <sos>, je, suis, étudiant를 입력받았을 때 je, suis, étudiant, <eos>를 출력하도록 훈련한다. 이 때 교사 강요(teacher forcing) 방법으로 모델을 훈련한다.
교사 강요(teacher forcing)
: test 과정에서 틀린 예측을 하는 건 어쩔 수 없지만, train 과정에서는 주어진 sequence에 대해 항상 정답을 예측하도록 해야 한다. train 과정에서 특정 input에 대해 틀린 예측을 하게 되고, 그 예측이 다음 RNN cell로 들어간다면 연쇄적으로 틀린 단어들에 대해 학습을 진행하게 될 것이다. 교사 강요 방법은 이를 막기 위해서 train 과정에서 RNN cell의 input으로 이전 cell에서의 예측값이 아닌 실제 정답값을 input으로 넣어줘서 train을 효율적으로 하게 해준다.
<Testing Seq2Seq>
test 과정에서 decoder은 첫번째 은닉 상태로 context vector를 받고 첫번째 입력인 <sos>를 input으로 받는다. decoder의 첫번째 RNN cell은 첫 단어를 예측한다. 이 단어는 RNN의 두번째 cell에서 'je'와 함께 input으로 사용된다. 이렇게 decoder에서는 다음에 올 단어를 예측하고 그 단어를 다음 RNN cell의 입력으로 넣는다. 이 과정은 <eos>가 예측될 때까지 반복된다.
RNN cell에서 출력할 수 있는 다양한 예측값이 있고 이 중 하나를 softmax 함수를 통해 선택한다.
'딥러닝 > nlp 논문' 카테고리의 다른 글
Attention 논문 정리: Neural Machine Translation by Jointly Learning to Align and Translate (0) | 2021.04.05 |
---|---|
Attention 모델이란? (0) | 2021.04.04 |
LSTM (Long-Short Term Memory)이란? (0) | 2021.03.28 |
FastText (0) | 2021.03.18 |
Word2vec 논문 리뷰 (0) | 2021.03.18 |