Skip-Thought Vectors

MingQOOK·2023년 1월 27일
0

Paper_review

목록 보기
34/56

Sentence embedding을 unsupervised 방식을 통해 수행한 skip-thought를 소개하는 논문입니다. Word2vec의 skip-gram 학습 아이디어롤 문장 수준으로 확장하여 사용하였습니다.

[Abstract]

해당 논문에서는 포괄적인 distributed sentece encoder의 unsupervised 방법을 소개합니다. 도서의 연속적인 text를 활용하여 encoder-decoder model을 학습하여 주변 문장을 재구성할 수 있도록 하였습니다. 의미적, 구조적으로 유사한 문장들은 유사한 vector representation을 갖게 됩니다. 이에 더해, 학습에 사용되지 않은 단어들을 사용할 수 있도록 vocabulary expansion 방법도 소개합니다.

1. Introduction

단어의 distributed compositional semantic을 학습하는 알고리즘을 만드는 것은 오랫동안 language understanding과 machine learing의 공통적인 관심사였습니다. 최근에는 word vector를 sentence vetor로 mapping하기 위한 여러가지 접근법들이 소개되었습니다. 이런 방법들은 모두 supervised task를 활용하였고, class label에 의존하여 sentence representation을 만들었습니다. 결과적으로 이런 방식들은 좋은 성능의 sentence representaion을 얻을 수 있더라도 특정 task에 국한될 수 밖에 없었습니다.
해당 논문에서는 어떠한 구성에서도 활용할 수 있도록 loss function의 대안을 고려하였습니다. 또한 특정 supervised task에 국한되지 않은 좋은 성능의 sentence representaion을 만들고자 했습니다. Word vector의 학습 방식에서 착안하여 해당 논문에서는 skip-gram 모델을 문장 차원으로 확장시켰습니다. Sentence vector를 얻기 위하여 해당 문장의 주변 문장을 예측하는 과정을 수행하였습니다.
아래 그림이 해당 논문에서 소개하는 Skip-thought라는 이름의 모델입니다. 해당 모델을 통해서 얻은 문장 vector를 skip-thought vector라고 합니다.

해당 모델을 학습하기 위하여 BookCorpus dataset을 활용하였습니다. 해당 dataset의 summay는 아래 표와 같습니다.

아래 표의 결과는 skip-thought 모델이 문장 수준의 encoding을 통하여 의미와 문법적은 측면 모두를 잘 포착할 수 있다는 것을 보여줍니다.

해당 논문에서는 skip-thought vector의 성능 측정을 위해 새로운 방식을 사용하였습니다. Skip-thought 학습이 끝나면 model은 따로 수정하지 않은 채로 encoder를 다양한 task에 활용할 수 있는 일반적인 feature extractor로 사용하였습니다.
8개의 task를 수행하면서 해당 논문은 skip-thought vector를 얻은 후 해당 vector의 성능을 직접적으로 판단하기 위하여 fine-tuning 과정 없이 linear model을 학습합니다.
실험 환경의 어려움 중 하나는 학습 과정에 사용되지 않은 많은 수의 단어들이 등장한다는 점이었습니다. 이를 해결하기 위하여 해당 논문에서는 하나의 model의 word representation을 다른 model로 mapping할 수 있는 방법을 제안하였습니다. 해당 논문에서는 word2vec의 space에 학습된 word vector를 encoder의 word vector 공간으로 mapping 시키는 linear mapping을 학습하였습니다. Mapping은 두 사전에서 공통적으로 사용된 단어들을 기준으로 학습되었으며 학습이 끝난 후 word2vec에서 등장하는 모든 단어들은 해당 linear mapping을 통해 encoder word vector space의 vector로 표현될 수 있습니다.

2. Approach

2.1 Inducing skip-thought vectors

해당 논문에서는 skip-thought에 encoder-decoder model framework를 사용하였습니다. Encoder는 단어를 문장으로 mapping시키고 decoder는 주변 문장들을 생성하는 역할을 합니다. 해당 논문에서는 GRU가 있는 RNN encoder와 conditional GRU가 있는 RNN decoder를 활용하였습니다. GRU는 2개의 gates만을 갖고 있으면 cell을 사용하지 않습니다.
(s(i-1), s_i, s(i+1)) 문장 tuple이 있다고 가정합니다. (w_i)^t는 문장 s_i의 t번째 단어를 의미합니다. 해당 단어의 vector는 (x_i)^t로 표현합니다.

Encoder
문장 s_i에 (w_i)^1 ~ (w_i)^N 단어가 있다고 합시다. 각 time stamp t마다 encoder는 hidden state (h_i)^t를 만들어내며 해당 hidden state는 t 시점까지 등장한 단어들 즉, (w_i)^1 ~ (w_i)^t 들을 사용하여 만들어진 연속된 단어집합들의 representataion으로 볼 수 있습니다. 이에 따르면 hidden state (h_i)^N을 문장의 representation으로 생각할 수 있습니다.
문장을 encode하기 위하여 아래 식들을 반복하여 계산합니다.

Decoder
Decoder는 encoder output h_i을 조건으로 하는 neural language model입니다. Decoder에서의 계산은 encoder와 유사합니다. 하나의 차이는 decoder에는 update gate, reset gate, hidden state에 bias로 활용되는 C_z, C_r, C 행렬을 추가적으로 사용합니다. 하나의 decoder는 다음 문장을 위해 사용되고, 또 다른 decoder는 이전 문장을 위해 사용됩니다.
Decoding은 아래 식들을 반복 계산하는 과정을 통해 수행됩니다.

Objective
(s(i-1), s_i, s(i+1)) 문장 tuple이 주어졌을 때, 최적화시켜야 하는 목적식은 encoder representation의 앞, 뒤 문장의 log-probabilitiy의 합으로 표현할 수 있습니다.

2.2 Vocabulary expansion

학습 과정에 사용되지 않은 단어를 해당 논문의 encoder로 확장하는 방법을 소개합니다. V_w2v은 word2vec을 활용하여 만들어진 word vector들의 embedding 공간입니다. V_rnn은 RNN embedding 공간입니다. V_w2v의 단어 수가 V_rnn의 단어 수보다 많을 때, 최종 목적은 V_w2v-> V_rnn 방향의 mapping 함수 f를 v' = Wv 식을 만족하는 W 행렬로 parameterized 하는 것입니다. v'은 V_w2v의 원소이고, v는 V_rnn의 원소이며, W는 un-regularized L2 linear regression loss를 활용하여 구합니다. 이를 통해서 V_w2v에 있는 모든 단어들을 V_rnn에 mapping시켜 문장 encoding 에 활용할 수 있습니다.

3. Experiments

해당 논문에서는 소개한 encoder가 BookCorpus dataset을 통해 학습되어 generic feature extractor의 역할을 제대로 수행하는 지 평가합니다.

해당 논문에서는 2가지 이유로 linear classifier로 제한하였습니다. 첫째, sentence vector의 quality를 직접적으로 평가하고자 하였습니다. 둘째, reproducibility 때문입니다.

3.1 Details of training

Skip-thought vector를 얻기 위해 여러 개의 방식으로 모델을 학습하였습니다.

  • uni-skip : 2400차원의 단방향 encoder
  • bi-skip : foward. backward 양방향을 각각 1200차원으로 학습한 후 이어 붙인 2400 차원의 encoder
  • combine-skip : uni-skip과 bi-skip을 이어붙인 4800차원의 encoder
  • bow : baseline model, uni-skip model을 통해 학습된 word vector들의 평균으로 sentence vector 사용

모든 recurrent 행렬들은 orthogonal 초기화를 수행하였고, 128 크기의 mini-batch, 최적화를 위해서 Adam 알고리즘을 사용하였습니다.
모든 모델들을 학습한 뒤 word embedding을 RNN encoder 공간으로 mapping 해주는 vocabulary expansion을 수행하였습니다. 그 결과 skip-thoughts 모델이 20,000개의 단어로 학습을 수행하였지만 vocabulary expansion 후 930,911 개의 단어를 encoding 할 수 있게 되었습니다.
해당 논문의 목적은 skip-thoughts가 general feature extractor로써의 역할을 제대로 할 수 있는지 평가하는 것이기 때문에 전처리는 최소로 수행하였습니다. 새로운 문장을 encoding하더라도 기본적인 tokenizing을 제외한 그 어떤 전처리도 수행하지 않았습니다. 이는 skip-thoughts vector의 robustness를 확인할 수 있게해주었습니다.

3.2 Semantic relatedness

해당 task의 목적은 문장들이 의미적으로 얼마나 유사한 지 점수를 매기는 것입니다.

3.3 Paraphrase detection

해당 task의 목적은 2개의 문장이 주어졌을 때 서로가 paraphrase 된 것인지 예측하는 것입니다.

3.4 Image-sentence ranking

해당 task는 image와 해당 image를 설명하는 문장을 찾는 것입니다.

3.5 Classification benchmarks

5개의 dataset을 활용하여 sentence representation learning method를 평가하는 일반적인 classification 결과를 비교합니다.

3.6 Visualizing skip-thoughts

4. Conclusion

해당 논문에서는 일반화가 잘 된 sentence representation인 skip-thoughts vector를 소개하고 평가하였습니다. Skip-thoughts vector의 task를 가리지 않는 robustness를 고려한다면 좋은 성능을 보인다고 말할 수 있습니다.

profile
學而時習之 不亦說乎

0개의 댓글