Pre-trained 된 language model을 사용하는데는 크게 2가지 방식이 있다.
Fine-tuning 을 기반으로 하는 BERT, GPT 와 같은 방식과, Feature-based 방식인 ELMo 와 CoVe 등이 있다.
이번 논문에서는 CoVe 에 대한 내용이다.
논문의 원본은 여기에서 볼 수 있다.
# Introduction
컴퓨터 비젼 분야를 보면, CNN을 ImageNet의 데이터로 사전 학습을 하고 사용하는 것이 일반적인 초기화 방법으로 알려져 있다. 이러한 초기화 방법은 관련된 다양한 task를 수행하는데 있어서 성능 향상을 제공했다. NLP의 경우, word2vec, GloVe와 같은 pre-trained representation이 일반적인 초기화 방법이었다. CNN에서 ImageNet을 이용한 초기화 방법이 가져온 성능 향상으로 미루어 보아, 이런 새로운 초기화 방식을 NLP 에도 적용해볼 수 있다고 생각했다. 이에 딸, 큰 NLP task에 대한 인코더를 학습하고, 이러한 인코더를 다른 task로 transfer 해서 사용하는 방법을 제안한다. 이번 논문에서는 machine translation(MT)를 기반으로 파라미터들을 초기화하는 것이, CNN에서 ImageNet을 이용해서 파라미터를 초기화하는 것과 같은 효과를 가져온다는 것을 보인다. MT-LSTM은 컴퓨터 비전 분야에서 ImageNet-CNN 과의 관계라고 볼 수 있다.
[그림-1]을 보면 전체적인 학습 과정을 확인할 수 있다. LSTM 디코더를 몇 가지의 machine translation (MT) task에 대해서 학습을 한다. 이렇게 학습된 인코더는 다른 task의 성능 향상에 도움이 될 수 있다. MT-LSTM의 결과로 생성된 representation을 context vectors (CoVe) 라고 부른다. CoVe를 다른 pretrained representation과 연결해서 target task의 입력으로 사용한다. 이런 방식으로 pretrained representation만 단독으로 사용할 때보다 더 좋은 성능을 제공할 수 있었다. 또한, MT-LSTM을 학습시키는 학습 데이터의 양과 target task의 성능은 비례한다는 것을 알 수 있다. 그렇기에, 다른 NLP task에 비해 데이터가 많은 MT 를 사용하는 것이 더 적합하다고 할 수 있다.
# Related Work
# Transfer Learning
NLP 분야에서는 unsupervised learning 을 통해서 학습된 representation을 supervised task의 성능 향상을 위해 사용하는 방식이 존재했었다. 최근에는 pretrained representation을 이용해서 모델의 성능을 향상시키는 방향으로 연구가 진행되었다. 이러한 방식으로 entailment, sentiment analysis, summarization, question answering 등의 task에서 성능 향상을 이뤄낼 수 있었다. 이번 논문에서는 단어보다 더 높은 차원을 representation을 transfer 할 수 있는 방법은 제안한다.
# Neural Machine Translation
이번 모델의 source domain은 machine translation이다. Machine translation(MT) 에서는 인코더와 디코더로 구성된 seqence-to-sequence 모델을 사용한다. 이후에는 sequence-to-sequence 모델에 attention 기법을 추가해서 인코더에서 생성한 representation을 디코더에서 직접적으로 접근할 수 있는 구조가 제안되었다. Attention 기법은 entailment, summarization, question answering, semantic parsing 등의 task에 대해 성능 향상을 이뤄낼 수 있었다. 이번 논문에서는 Neural Machine Translation (NMT) 에 대해서 학습된 attentional encoder가 다른 다양한 NLP task에 transfer 될 수 있다는 것을 보인다.
# Transfer Learning and Machine Translation
MT는 transfer learning 을 하기에 적합한 domain 이다. Source language의 정보를 잃어버리지 않고 target language로 재생성 해야한다는 점에서 효과적인 domain이 될 수 있다. 이번 논문에서는 input sequence 에서 생성된 토큰들을 transfer 해서 사용한다.
# Machine Translation Model
해당 논문에서는 영어에서 독일어로 번역하는 task를 위해 attentional sequence-to-sequence 모델을 학습한다. 이후에 해당 모델을 다른 task에 transfer 될 것이다. 이후에 식들에서 사용되는 표현들을 정리하면 다음과 같다 :
- $ w^x = [ w^x_1, w^x_2, ..., x^x_n ] $ : 입력으로 제공되는 source language
- $ w^z = [ w^z_1, w^z_2, ..., w^z_m ] $ : target langauge
- $ GloVe(w^x) $ : 모든 $ w^x $ 에 해당하는 GloVe 벡터
- $ z $ : $ w^z $ 의 임의로 초기화된 word vector
우선, $ GloVe(w^x) $ 를 2개의 층으로 구성된 bidirectional LSTM 의 입력으로 제공한다. 해당 LSTM은 hidden state $ h $ 를 계산하게 된다.
Attentional decoder에서는 각 time-step 마다 출력으로 제공되는 단어들에 대한 확률분포를 다음과 같이 제공한다.
이후, 디코더의 결과는 attention weight $ \alpha $ 를 이용해서 현재의 결과가 모든 time-step에 대한 인코더의 결과와의 상관관계를 계산하게 된다. [식-3]에서 $ H $ 는 [식-1]의 $ h $를 시간 순서대로 쌓아서 만들 배열이다.
[식-3] 에서 구한 attention weight $ \alpha $ 를 coefficient 로 사용해서 attentional sum을 구한다. Attentional sum은 이후에 tanh layer의 입력으로 제공되고, 결과로 context-adjusted hidden state $ \overline{h} $ 를 제공한다.
최종적인 결과에 대한 distribution은 softmax 함수를 통해서 다음과 같이 구하게 된다.
# Context Vectors (CoVe)
우리는 MT-LSTM의 결과로 제공된 context vector 들을 다른 target task에 적용시킨다. $ w $ 가 입력으로 제공된 순차적인 단어의 집합이라면, $ GloVe(w) $ 는 해당 단어의 집합에 대한 GloVe representation을 나타낸다. MT-LSTM을 통해서 생성된 Context Vectors (CoVe)는 다음과 같이 정의한다.
Classification과 Question-answering task에 대해서 입력으로 $ w $ 가 제공된다면, MT-LSTM으로 생성된 CoVe representation과 GloVe 를 통해서 생성된 GloVe representation을 연결해서 입력 $ w $ 에 대한 representation을 [식-7]과 같이 생성하게 된다.
# Classification with CoVe
CoVe의 성능을 평가하기 위해서 biattentive classification network(BCM)을 사용한다. BCN은 [그림-2]와 같은 구조로 되어있는 모델로서, 단일 문장의 입력과 한 쌍의 문장의 입력을 모두 처리할 수 있다. 단일 문장 입력의 경우, 입력으로 제공된 문장을 복제해서 두개의 문장이 입력으로 제공된 것과 같이 처리한다.
입력 sequence $ w^x, w^y $ 는 vector의 sequence 인 $ \overline{w}^x, \overline{w}^y $ 로 변환된다. ([식-7] 참고) 해당 벡터들은 함수 $ f $ 의 입력으로 제공되는데, 해당 함수는 feedforward network로 ReLU 를 활성화 함수로 사용한다. 이후, bidirectional LSTM 을 통해서 task specific representation을 구하게 된다.
[식-8]을 통해서 얻은 벡터 $ x, y $ 를 시간 순서대로 이어서 $ X, Y $ matrix로 생성한다.
서로 관련있는 representation을 계산하기 위해 biattention mechanism (BiDAF 에서 사용한 기법) 을 사용했다. 우선, 두 matrix 의 affinity matrix 를 생성하기 위해 $ A = XY^T $ 를 계산한다. 이후, 생성된 $ A $ 를 이용해서 다음과 같은 연산을 수행한다. ( $ A^T = YX^T $ )
[식-9]를 통해서 생성된 $ A_x, A_y $ 를 이용해서 context summary를 생성한다.
여태까지 구한 내용을을 연결해서 각 sequence에 대한 representation을 생성하게 된다. 두개의 서로 다른 one-layer bidriectional LSTM을 사용한다. 입력으로는 다음과 같은 정보를 연결해서 사용한다.
original representation : $ X, Y $
original representation $ X, Y $ 와 context summary $ C_x, C_y $ 사이의 차이
original representation $ X, Y $ 와 context summary $ C_x, C_y $ 사이의 element-wise production
[식-11]에서 구한 값에 대해서 pooling을 진행한다. max, min, mean pooling 과 함께, self-attentive pooling의 결과를 모두 사용한다. self-attentive pooling 은 전체 sequence에 대해서 각 time step의 weight를 계산하게 된다.
[식-12]를 통해서 구해진 weight를 통해서 모든 sequence의 합을 구하게 된다.
마지막으로 pooling된 값들을 모두 연결해서 최종 representation을 생성하게 된다.
# Question Answering with CoVe
Question Answering과 Classification은 대부분 동일하게 동작한다. 몇 가지 차이점은 다음과 같다.
- 함수 $ f $ 의 활성화 함수가 ReLU가 아닌 tanh 를 사용한다.
- 두 개의 입력 중 하나는 본문 (document)이고, 나머지 하나는 질문(question) 이다.
- 이렇게 생성된 representation은 Dynamic Coattention Network(DCN)의 입력으로 제공한다.
# Datasets
Machine Translation : 3개의 English-German mahcine translation datasets 을 사용해서 서로 다른 3개의 MT-LSTM 모델을 학습했다.
- WMT 2016 multi-modal translation shared task (가장 작은 데이터셋) : 30,000 개의 문장으로 구성
- 2016 version of MT task prepared for the International Workshop on Spoken Languag Translation (중간 크기의 데이터셋) : 209,772 개의 문장으로 구성
- news translation shared from WMT 2017 (가장 큰 데이터셋) : 7 million sentences
위와 같은 데이터셋으로 학습한 모델을 각각 MT-Small, MT-Medium, MT-Large 라고 부르기로 하고, 해당 모델에서 생성한 CoVe representation을 CoVe-S, CoVe-M, CoVe-L 라고 부르기로 한다.
Sentiment Analysis : 두 개의 sentiment analysis dataset 을 사용한다 : Stanford Sentiment Treebank(SST), IMDb dataset.
Question Classification : Small TREC dataset 을 사용했다. TREC에서 6개의 class로 구성된 TREC-6 와 50개의 class 로 구성된 TREC-50 을 사용했다.
Entailment : Stanford Natural Language Inference Corpus(SNLI) 를 사용했다. 두 문장으로 구성되는데, 첫 번째 문장에 대해서 두번 째 문장이 entails, contradicts, neutral 인지 구분하는 task 이다.
Question Answering : The Stanford Question Answering Dataset(SQuAD) 를 사용했다.
# Experiments
# Machine Translation
MT-Small 의 경우, 38.5의 BLEU 점수를 얻을 수 있었다.MT-Medium의 경우 25.54 를 얻었고, MT-Large 의 경우 28.96 BLEU 점수를 얻을 수 있었다. (모두 WMT 2016 test set 기준 점수)
Training Details : 300-dimentional word vector 로 크기를 제한했다. Bidirectional LSTM이기 때문에, 출력으로는 600-dim의 벡터가 제공된다. CommonCrawl-840B GloVe model 을 사용했다. Stochastic Gradient Descent 를 사용했고, 0.2 의 dropout ratio를 사용했다.
# Classification and Question Answering
Classification과 Question Answering task에 대해서는 입력을 다르게 함으로 인해서 결과에 어떠한 영향을 끼치는지 확인해보았다.
CoVe 의 장점 : CoVe 와 GloVe를 함께 사용한 경우 GloVe 만 사용한 것 보다 더 좋은 성능을 제공할 수 있었다. [그림-3]의 오른쪽 표(b)를 보면, character n-gram embedding을 사용하는 경우 특정한 task에서는 더 좋은 성능을 제공할 수 있다는 것을 알 수 있다. 이것으로 미루어 보아, CoVe representation은 word level 뿐만 아니라 character level 의 정보도 학습한다는 것을 알 수 있다.
MT Training의 장점 : MT의 training data를 바꿔서 사용하는 것이 target task의 성능에 어떠한 영향을 끼치는지 실험해봤다. 실험 결과, 더 복잡하고 많은 데이터를 포함하고 있는 데이터셋을 기반으로 학습한 경우 더 좋은 성능을 제공한다는 것을 알 수 있었다.
Test Performance : [표-3] 은 각 데이터셋에 대한 CoVe representation의 성능을 나타낸다. [표-4]는 SQuAD 데이터셋에 대한 F1 score를 나타낸다.
Comparison to Skip-Thought Vectors : 한 문장을 인코딩한 skip-thought vector와 CoVe를 비교한다. 두 representation모두 word-level 이상의 표현을 학습한다. 4800 차원의 벡터를 사용하는 skip-thought 에 비해, 600 차원의 벡터를 사용하는 CoVe 가 더 안정적으로 학습할 수 있다는 장점이 있다. [표-5]를 보면, CoVe 가 transfer learning에서 더 좋은 성능을 제공한다는 것을 알 수 있다.
# 관련 논문
- Efficient estimation of word representations in vector space. : pre-trained representation (1) (word2vec, 리뷰)
- Glove: Global vectors for word representation. : pre-trained representation (2) (GloVe, 리뷰)
- Natural language processing (almost) from scratch :
- Sequence to sequence learning with neural networks. : machine translation (1) (seq2seq, 리뷰)
- Neural machine translation by jointly learning to align and translate. : machine translation (2) (seq2seq + attention, 리뷰)
- Bidirectional attention flow for machine comprehension. : BiDAF
- Skip-thought vectors. : skip-thought
댓글