Seq2Seq 은 인코더 디코더를 기반으로 하는 네트웍 모델의 이름이다. 임의의 길이의 입력이 들어오면, 임의의 길이의 출력을 생성하는 네트웍이라 이해하자!
하나씩 활용을 알아보자!
1) Encoder-decoder Network Concept
기계번역은 시퀀스를 입력으로 하고 시퀀스를 출력으로 하는 대표적인 예시이므로 이에 적합하다. 예컨대 한국어 문장을 하나의 벡터를 만들고, 벡터를 가지고 영어 문장을 만들어낼 수 있다.
2) document summarization
문서요약 또한 여러 단어가 긴 문장 형태로 들어오고, 짧은 문장으로 출력해주는 것이 필요하므로 사용될 수 있다.
3) Question Answering System
질의응답은 질문을 입력으로 하나의 벡터로 만들고, 하나의 벡터를 가지고 답(answering)을 시퀀스로 출력하는 형태이므로 이에 해당한다 할 수 있다.
++ Statistical Machine Translation
통계 모델 기반의 기계번역이라 하는, 병렬 코퍼스를 기반으로 구축된 통계모델이다. 2016년까지에도 Google Translate, Microsoft Translate 에 사용되었다. (그 후 Neural network으로 전환되긴했다.)
이를 비례 관계로만 전환하면 P(T)P(S|T) 와 같이 되므로, 정말 좋아 -> really love / really like 를 확정짓기 위해서는 P(really love)P(정말 좋아|really love) 와 P(really like)P(정말 좋아|really like) 를 비교하면 된다.
이때 target 이 등장할 때 source 가 등장할 확률을 비교하는 것 뿐만 아니라 target 자체의 등장확률을 비교하는 이유는 그런 단어 집합(n-gram)이 실제로 쓰이는 지까지 따지는 것이다. 만약 really love 라는 집합보다 reaaly like 가 더 많이, 자연스럽게 쓰인다면 조금 더 확률로써 가중치를 더 주는 식이다.
✅ RNN Encoder-decoder
input-encoder-context-decoder-output 으로 이루어진 구조를 제안한 논문이다.
추가적으로 Encoder-decoder의 특징으로, encoder 의 가장 마지막 RNN의 hidden state 를 decoder 로 inital hidden state 가 된다는 점, encoder 와 decoder 은 별도의 RNN 구조임을 알아두자.
이를 그림으로 확인하자!
✅ Seq2Seq
인코더-디코더 구조를 동일하게 하되, LSTM을 사용한 논문이 첫 시작이었다. Seq2Seq 의 contribution 을 보자.
eos 토큰을 문장의 끝에서 사용함으로써 문장 길이를 적당한 선에서 끝낼 수 있게되었다.
당시 Neural Machine Translation 기반의 번역 중 최고 성능을 기록했다.(end-to-end NMT, BLEU score:34.81)
입력 시퀀스를 반대로 뒤집어 사용했다. (I drink milk -> milk drink I 를 입력으로) 따라서 출력을 만들어내는 데 있어서 시작할 때 정보 (I 를 뜻하는 target lg. 로 시작해야 하므로) 를 바로 전 정보 (I로 끝남) 를 잘 가져올 수 있게 하였다.
첫 단어를 디코딩할 때 디코딩 하려는 time step 단어와 중요한 단어를 찾아야 한다는 아이디어의 근간이 된 논문이기도 하다. (attention 이 떠오른다.)
🤔 BLEU (Bilingual Evaluation Understudy)
기계 번역에서 자주 사용하는 성능 측정 점수이다. (최근에는 많이 쓰이지 않고 보조적 수단으로 사용한다.)
✅ Limitaitons of RNN Based Encoder-decoder
어텐션의 목표는, 예측해야 할 단어와 연관있는 입력 단어에 더 많이 집중하자는 것이다. (기존 RNN의 입력 문장을 단순히 하나의 벡터로 바꾸고 그것만 가지고 예측하는 것과는 차이가 있다.) 이렇게 예측하는 시점에서 입력 단어와의 연관성을 계산함으로써 얻을 수 있는 이점은
이렇게 Attention 이 나오게 된 근간에는 RNN 의 seq2seq 논문에서 순서를 뒤집어 입력으로 줬을 떄 아이디어를 가져온 것으로 예측해볼 수 있다. 예측을 함에 있어서 입력 단어들을 단순히 줘서는 안된다는 것.
두 논문은 비슷한 아이디어를 담고 있는데, 결국 앞에서 이야기 한 것처럼 현재 시점에서 예측해야 할 단어와 연관있는 입력 단어에 집중한 정보를 참고하는 아이디어를 사용한다.
✅ 구조
✅ Results
✅ Attention score 계산 Variation
✅ Visual Attention
이미지에 캡션을 다는 문제에서도 사용이 가능하다. 모델의 출력이 어떻게 나온 값인지 이해하기 쉽다?
✅ Implementation
아래 링크들을 읽어보고, 필요하다면 정리하자.