2019. 2. 26. 00:00ㆍ풀잎스쿨 NLP Bootcamp
논문링크: https://arxiv.org/abs/1409.0473
참고자료: (한지윤님 발표자료) https://bit.ly/2EulaC3 (Google Slide)
Abstract
Contribution
Architecture
일단 Decoder의 구조에 대해 한번 짚고 넘어가보고자 한다. 해당 논문에서는 Context라고 불리는 요소를 사용하고 있는데, 이는 각 Sequence에 대한 Hidden State(여기서는 annotation이라고 칭하고 있다.)를 감안하기 위한 요소이다.
이렇게 해당되는 각 Hidden State에 대해 i번재 input과 j번째 output이 어느만큼 관련이 있느냐를 학습하려는 모델이 바로 이 논문이 제시하고자 하는 모델이다. 즉, alpha_ij를 학습하기 위해 c_i (Context)를 계산하며, 이는 i-1의 input, i번재의 Cell State, 그리고 i번째의 Hidden State를 이용해 연산을 하는 식이다. 위 수식은 Translate하고자 하는 Input Sentence에 대해 Output Sentence의 어느 부분을 더 고려해야 하느냐 계산하기 위함이다.
위에서도 언급했듯이 alpha_ij를 학습하기 위해서는 이를 구하는 공식이 필요하다. 여기서 alpha는 Feedforward Neural Network로 구성되는데, 기존의 NMT에서는 alignment를 Latent Variable로 간주했으나 이 모델에서는 Variable의 한가지로 제시한다.
여기서 e_ij가 바로 alignment이며 위 수식은 alignment model을 공식으로 표현한 내용이다. 이 모델에서는 input의 j번째 위치가 output의 i번째 위치와 얼마나 매치되는가를 Score를 통해 계산한다. 이 Score는 RNN의 Hidden State인 s_(i-1)과 Input Sentence의 j번째 Hidden State(annotation)를 기반으로 계산된다.
한가지 눈여겨 봐야 할 점은 Encoder가 구성하고 있는 구조가 Bidirectional RNN구조라는 것이다. 이는 Annotation이 앞 단어뿐 아니라 뒤에 있는 단어/정보도 포함할 수 있도록 구성한 구조이다. 여기서 h_j는 j번째 단어 앞뒤의 정보를 모두 포함한다.
모델의 상세 Hyperparameter는 다음과 같다.
- Encoder/Decoder 각 Hidden Size 1000
- Minibatch SGD
- Adadelta optimizer
Result & Conclusion
Result
결과 그래프는 Sentence길이에 따라 모델별 BLEU Score가 어떻게 달라지는가를 나타내고 있다. 기존의 방식인 RNNenc모델은 문장의 길이가 길어질수록 급격하게 성느이 떨어지는 것을 볼 수 있다. 그에 반해 논문에서 제시하는 모델인 RNNsearch의 경우 데이터셋에 따라 달라지지만 RNNsearch-50의 경우 문장의 길이가 길어짐에도 불구하고 BLEU Score가 그렇게 달라지지 않는 것을 확인할 수 있다. 여기서 하나 눈여겨봐야 할 점은, RNNsearch-30의 BLEU Score가 RNNenc-50의 BLEU Score보다 더 높다는 점이다. (RNNsearch-30: 학습 데이터셋 내 문장의 최대 길이가 30)
또한 Translation의 Input-Output과의 Weight(alpha_ij)를 시각적으로 살펴보면 Translation의 번역이 반드시 순차적으로 이루어지지 않는다는 점을 알 수 있다. 예를 들어, (a)에서 European이라는 단어가 영어 문장에서 나오는 순서와 프랑스어 문장에서 나오는 순서가 다름에도 불구하고 위치에 상관없이 번역하고자 하는 부분에 대해 Weight가 강하게 주어진 것을 알 수 있다. (영어에서는 5번째에, 프랑스어에서는 7번째에 위치해있다)
이번엔 데이터셋에 UNK(Unknown) 토큰의 유무를 통해 결과를 나타냈다. 결과를 살펴보면 UNK토큰이 포함된 데이터셋에서의 RNNencdec와 RNNsearch의 차이와 UNK토큰이 포함되지 않은 데이터셋에서의 RNNencdec와 RNNsearch의 차이가 크게 다르지 않은 것을 살펴볼 수 있으며, 모든 부분에 대해 RNNsearch의 성능이 더 나은 것을 확인할 수 있다. 또한 RNNsearch-50을 더 오랫동안 학습시킨 결과인 RNNsearch-50*는 더이상 성능이 개선되지 않을때까지 학습을 진행한 결과이며, 다른 모델에 비해 BLEU Score가 더 높게 나온 것을 확인할 수 있다.
Conclusion
개인적으로 아쉬웠던 점은 논문이 이해하기에 많이 난해해서 수식에 대한 이해를 제대로 하지 못하고 리뷰를 했었다는 점이다. 항상 논문을 보면서 느끼는 것이지만 논문에서 설명하지 않는 부분이 수식에서는 구현되어있는 경우가 빈번하게 있었기 때문에 이런 점을 더욱 느끼게 되는 것 같다.