Sequence to Sequence Learning with Neural Networks (NIPS 2014)

박상우·2022년 12월 29일
0

Paper Review

목록 보기
2/45
post-thumbnail

seq2seq

논문 요약

딥러닝 기반 기계 번역의 돌파구
Transformer(2017) 이전 SOTA 알고리즘
토큰들이 모인 문장 -> sequence

Encoder

번역을 하고자 하는 sequence를 고정된 크기의 context(고정된) 벡터로 변환해줌

Decoder

벡터를 번역해 sequence로 변환

단점

context vector가 일종의 bottleneck 이기에 문장의 문맥 정보를 잘 담지 못한다면 성능이 하락

이후

seq2seq 이후 모델들은 입려 시퀀스 전체에서 정보를 추출하는 방향으로 발전 (Attention)
즉 seq2seq의 문제를 해결하기 위해 attention 알고리즘이 등장한 것이므로, seq2seq을 심층적으로 이해 해야 함

개념 요약

언어 모델

문장에 확률을 부여하는 모델
ex) 기계번역 - 'I love you'가 주어졌을 때 어떤 문장이 가장 높은 확률로 번역되는지
단어 예측 - '나는 밥을'이 주어졌을 때 어떤 단어가 주어질 확률이 가장 높은지

일종의 결합 확률 분포이며, 베이즈 정리의 Chain Rule로 확률을 정의 가능

전통적 언어 모델

카운트 기반 모델
단순히 개수를 이용해 개수가 가장 많은 단어를 가장 높은 확률로 지정
이는 모든 문장에 대한 확률이 필요하기에 방대한 양의 데이터가 필요
긴 문장은 처리하기 힘듬

N-gram

현실적인 대안
인접한 일부 단어만 고려하는 아이디어

RNN 기반 번역 과정

입력과 출력의 크기가 같다고 가정 (현실적으로 아닌 경우가 많음)
이전까지의 모든 문맥 정보를 포함한 Hidden state
직전 정보와 Hidden state를 함께 사용해 번역
어순이 다른 언어에서 낮은 정확도

이를 해결하기 위해 고정된 크기의 문맥 벡터를 추출하고자 하는 것

seq2seq은 long term dependency를 고려한 lstm 레이어로 문맥을 추출하고 마지막 hidden state를 context vector로 사용

Encoder와 Decoder는 비슷한 architecture이지만, 다른 parameter

RNN 기반 seq2seq

기존에 문장을 one-hot encoding 한다면 너무나 큰 차원
word embedding으로 차원을 줄이고, rnn과 같은 layer로 hidden state를 update
embedding 된 단어로 마지막 hidden state를 context vector로 사용

처음 들어올 때 start token(sos), 마지막 end token(eos)을 통해 문장의 시작과 끝을 알려줌
decoder의 end token이 등장하면 번역이 종료된 것을 알림
RNN 기반 번역과 달리 입력과 출력의 크기가 다를 수 있다는 것

성능 개선 포인트

대부분 lstm을 사용하였을 때 보통 높은 성능
입력 문장의 순서를 거꾸로 했을 때 성능이 높아지는 경우가 많음
보통 문장은 앞 쪽의 단어와 가장 높은 연관성을 가짐
문장을 거꾸로 했을 때 context vector에 앞 쪽 단어의 정보가 많이 포함되어 성능이 향상 되는 것

의의

seq2seq을 필두로 한 딥러닝 기계번역 모델의 등장으로 통계적 기법의 성능을 추월..

profile
세상아 덤벼라

0개의 댓글