오늘은 Sequence to Sequence Learning with Neural Networks에 대한 간단한 리뷰이다.
sequence를 처리할 때 사용하는 모델로 RNN이 있다. 하지만, input과 output의 길이가 다르고, 복잡한 관계를 가질 경우 RNN을 적용하기 껄끄럽다.
그래서 LSTM 구조를 가져와 사용한다.
실제 논문에서 구성한 모델은 다음과 같은 특징을 가지고 있다.
1. input과 output을 각각 처리하는 두 개의 다른 LSTM 사용
2. LSTM을 깊게 쌓아서 성능을 높임
3. input sequence를 뒤집음으로써 성능 향상
task는 영어를 프랑스어로 번역하는 것이다.
모델은 위와 같이 입력이 주어졌을 때 올바른 번역을 할 확률을 높이는 것으로 학습된다. 학습 후에는 S가 입력으로 주어졌을 때 T가 나올 확률이 가장 높은 T를 추론한다.
재밌는 것은, 입력 문장을 뒤집어 넣었다는 것인데, 저자도 완벽한 설명은 힘들지만, 입력 문장을 뒤집으면 입력 문장과 출력 문장을 concat할 때, 몇 개의 단어들은 그에 대응하는 단어가 매우 가깝게 붙어있어서 학습이 잘 되는 것이라고 한다.
이 때문에 긴 문장에 대해서는 기존 LSTM보다 학습이 잘 되지 않을 것이라 예상했지만, 긴 문장도 잘 학습되었다고 한다.
성능은 위와 같다.
LSTM의 hidden state를 2차원으로 PCA한 것이다. 의미에 따라 잘 나눠져있는 것을 확인할 수 있다.
긴 문장에 대해서도 괜찮은 성능을 보여주고 있다.
첫 NLP 관련 논문이다. 논문이 짧아서 리뷰도 굉장히 짧은데, 그래도 배울 것이 많은 논문이었다. 입력 문장을 뒤집어 넣는 방식이 참신했고, 긴 문장에 대해서도 제대로 넣는 것보다 성능이 잘 나온다는 것이 놀랐다. 이번주는 NLP만 다룰 것 같은데, 기대가 된다.