2019. 3. 7. 13:38ㆍ풀잎스쿨 NLP Bootcamp
논문링크: https://arxiv.org/abs/1610.10099
참고자료: (김동현님 발표자료) https://tinyurl.com/y3l98x8w (Google Slide)
참고자료2: (Kakalab) https://tinyurl.com/y22kw2l2
Abstract
Contribution
ByteNet Architecture
일단 ByteNet의 구조를 살펴보자. ByteNet은 크게 다음 4가지로 구성된다.
FCN (1D CNN): ByteNet내 Encoder/Decoder가 구성하고 있는 방법
Enc-Dec Stacking: 두 Representation의 Bandwidth를 최소화 하기 위해 Encoder위에 Decoder를 쌓아놓은 구조
Dynamic Unfolding: 다양한 길이의 Source/Target Sequence를 다루기 위함
Masking: Decoder CNN에서 Target Sequence의 향후 토큰들을 보는 것을 막기 위함
Dynamic Unfolding
Dynamic Unfolding에 대해 조금 더 살펴보자. 우리는 모든 언어에 대해 Source Sequence와 Target Sequence의 길이가 동일할 것이라고 이야기 할 수 없다. 그도 그럴것이 언어마다 동일한 정보를 표현하기 위해 사용되는 문장의 길이는 언어의 특성을 따를 것이기 때문이다. 따라서 서로 다른 Sequence의 길이를 처리할 수 있어야 하는데, 이를 위해 사용되는 개념이 Dynamic Unfolding이다.
Dynamic Unfolding은 바로 위 수식을 사용하여 각 Sequence에 대한 길이를 미리 추정하게 된다. 여기서 |s|는 Source Sequence의 길이, |t_hat|은 Target Sequence의 예측/추정 길이, 그리고 t는 Target Sequence의 실제 길이를 뜻한다.
여기서 상수 a와 b는 각각 Encoder/Decoder에 사용되는 언어에 대한 Hyperparameter이다. 예를들면, 현재 논문에서는 English-German 번역모델을 제시하고 있는데, English에 비해 German의 어휘가 약 1.2배 더 많다고 한다. 따라서 a는 1.2, b는 0으로 설정하는 것이다.
Residual Blocks
해당 논문에서는 깊은 학습을 위해 Residual Learning을 하고자 한다. 그 방법으로 각 구조에 대해 Residual Block 구조를 제시한다. 일단 가장 왼쪽에 있는 구조는 기존 방식 그대로 ReLU를 이용한 구조이며, 중간에 있는 구조는 Residual Multiplicative Block이라는 방식을 사용한 구조이다. 가장 오른쪽은 MU Block의 구조가 어떻게 이루어져 있는지에 대해 설명하는 그림이다.
여기서 ReLU Residual block은 machine translation experiment에, 그리고 Residual Multiplicative Block은 Language Modeling에 사용되었다고 언급하고 있다.
Recurrent ByteNet
논문에서는 Dilated CNN을 이용한 ByteNet 뿐만이 아닌 RNN을 이용한 Recurrent한 구조의 ByteNet의 성능을 측정하고자 했다. 위 그림에서 왼쪽은 Encoder는 그대로 Dilated CNN으로 유지한 채 Decoder부분만 RNN으로 대체한 구조이며, 오른쪽은 Encoder와 Decoder 모두 RNN구조로 대체한 구조이다.
Result & Conclusion
Result
위 표는 모델의 특성에 따라 달라지는 실행 시간과 같은 특징을 표로 나타낸 것이다. 여기서 RP는 Resolution Preserving이라고 해서 Sequence의 길이가 다양하게 변할수 있는지에 대한 여부 정도로 이해할 수 있을 것이다. Path_S는 Source Token과 Output Token 사이의 거리를 지칭하며, Path_T는 Target Token과 Output Token 사이의 거리를 지칭한다.
여기서는 각 모델간의 성능을 BLEU Score로 비교하고 있는데, 역시나 이 논문에서 제시하는 모델이 가장 성능이 좋게 나온다고 주장하고 있다. 여기서 Inputs/Outputs은 Unit의 최소 단위를 말한다. Word-pieces의 경우 https://lovit.github.io/nlp/2018/04/02/wpm/ 를 참고하면 이해하는데 도움이 될 것이다. BPE는 Word-pieces 모델의 한 종류로서 Byte-pair Encoding을 뜻한다. 이 부분은 지난주 논문인 Neural Machine Translation of Rare Words with Subword Units(https://arxiv.org/abs/1508.07909)에서 다룬 바 있다.
Conclusion
'풀잎스쿨 NLP Bootcamp' 카테고리의 다른 글
9주차(1) - End-to-End Memory Network (0) | 2019.03.14 |
---|---|
8주차(1) - Convolutional Sequence to Sequence Learning (0) | 2019.03.11 |
7주차(1) - Effective Approaches to Attention-based Neural Machine Translation (0) | 2019.03.06 |
6주차(1) - Neural Machine Translation by Jointly Learning to Align and Translate (0) | 2019.02.26 |
5주차(2) - Sequence to Sequence Learning with Neural Networks (0) | 2019.02.19 |