1. Abstarct
pre-trained word vectors를 CNN에 사용하여 sentence classification에 적용하면 괜찮은 성능을 보여준다.
2. Introduction
- pre-trained 된 word vector를 다양한 channel로 분석하는 architecture 제시
- pre-trained vectors는 ‘universal’ feature extractors이므로 다양한 classification 작업에 적용 가능하다.
3. Model
- input
- 차원의 vector 개로 이루어진 sentence = matrix로 표현가능
- convolution
- window size를 바꿔가며 여러개의 filter를 생성
- 일반적인 CNN과 다른 것은 filter의 모양, m*m 크기의 filter를 사용하지 않음
- 단어가 k차원의 vector이므로 m*k크기의 filter를 사용, m-gram과 같은 효과
- activation
- tanh, relu와 같은 non-linear 함수 사용
- pooling
- max-over-time-pooling(max pooling)을 통하여 filter에서 가장 영향력이 큰 값을 추출
- 문장의 길이에 따라 pooling방식을 조절
- output
- fully-connected layer로 구성하여 softmax 적용
3.1 Regulation
- dropout
- output layer에 적용
- 베르누이분포로 random하게 선택된 unit만 back propagation으로 학습
- =
- 형태의 vector, 베르누이확률로 학습될 unit 선택
- = pooling으로 추출된 결과
- l2-norm
- norm(w) > s인 경우, norm(w) = s가 되도록 보정
4. Datasets and Experimental Setup
- word2vec을 사용하여 pre-trained word vector를 만듦
4.1 Model Variants
- CNN-rand : 모든 단어를 random하게 initialize한다. 즉 pre-trained되지 않은 벡터 사용
- CNN-static : 모든 단어를 학습한 후 벡터를 구성한다.(word2vec)
- CNN-non-static : CNN-static에 사용된 vector가 fine-tunning된다.
- CNN-multichannel
- CNN-static과 CNN-non-static을 동시에 적용한다.
- 각각의 vector는 channel이 되고, filter는 같이 사용된다.
- back propagation은 둘 중 하나에만 적용하여 하나는 static, 하나는 fine-tuning이 된다.
5. Results and Discussion
5.1 Multi channel vs. Single Channel
Multi channel이 vector들이 weighted될 때, 원래 값으로부터 멀어지지 않게하여 overfitting을 방지할 것이라고 기대했지만, 실제 결과는 큰 차이가 없었다.
5.2 Static vs Non-static
word2vec은 문맥적인 것을 학습하기 때문에 ‘good’과 ‘bad’가 비슷한 공간에 위치하게 된다. 하지만 Non-static 방식을 쓰면 긍정/부정도 포함되어 vector가 학습되는 것을 알 수 있다. 즉, fine-tuning이 vector를 더 meaningful하게 만들어준다.
6. Conclusion
- supervised pre-training of word vectors is an important ingredient in deep learning for NLP.
7. Reference
- https://arxiv.org/abs/1408.5882
- Ybigta deepNLP-study