본 논문에서는 사전 학습된 word vector에 CNN을 사용한 sentence classification 모델을 제안한다. 특히 간단한 CNN 모델 + 약간의 하이퍼파라미터 튜닝과 static vector를 통해 여러 벤치마크에서 훌륭한 성과를 거두었다. word vector를 task-specific하게 튜닝시켜줌으로서 성능을 향상시킬 수 있다.
또한, 추가적으로 아키텍쳐의 간단한 수정을 통해 task-specific word vector와 static vector를 둘 다 사용하는 새로운 아키텍처를 제안한다. 이 모델은 7개의 태스크 중 4개의 태스크(감성분석, 질문 분류 문제 포함)에서 SOTA를 달성했다.
CNN은 지역적 특징에 적용되는 convolving filter를 가진 layer를 활용한다. 원래는 비전 분야를 위해 고안되었지만, 이후 자연어처리에 대해서도 효과적임을 보여주었다.
본 논문에선 unsupervised neural language model에서 얻은 워드 벡터 위에 하나의 레이어를 갖는 간단한 CNN모델을 학습한다. 조금의 하이퍼파라미터 튜닝에도 불구하고, 이 간단한 모델은 여러 벤치마크에서 훌륭한 성과를 냈다. 이는 사전 학습된 벡터들이 다양한 분류 태스크에 활용될 수 있는 'universal' feature extractors라는 것을 보여준다.
순서
1. input-> 2. convolution -> 3. max-pooling -> 4. fully connected layer and regularization
데이터셋 : 7개 사용
activation function : relu
filter window size : h=3,4,5로 각각 100개의 피처맵 사용한다.
dropout rate= 0.5
L2 constrain : 3
mini batch size : 50
4가지 모델을 만듬
1. CNN-rand(baseline) : 모든 워드백터를 임의로 초기화해서 업데이트함
2. CNN-static : pretrained word2vec사용 (=finetuning하지않고 static하게 남겨둠)
3. CNN-nonstatic : pretrained word2vec사용+ finetuning
4. CNN-multichannel : input이 두 개인 모델로 pretrained word2vec사용/ pretrained word2vec사용+ finetuning 두가지 합친 모델이다.
-> CNN-multichannel이 언제나 우수하진 않다.
static과 Non static 모델을 비교할 때 최종 워드백터 비교해봄
파라미터 업데이트 하는 과정에서 non-static는 워드백터 바뀌고 static은 바뀌지 않는다.
static channel은 어떤 단어를 같이 수식해주는 bad와 유사한 문법형태가 나타나지만,
non-static channel은 의미또한 유사한 단어를 잡아내는 것을 확인할 수 있다.
약간의 하이퍼파라미터 튜닝에 불구하고 word2vec 위에 간단한 1개의 layer를 가진 CNN은 좋은 성능을 보인다. 결과는 단어백터의 비지도 pre-training이 NLP 딥러닝에 중요한 요소가 된다는 근거를 보인다.
참고
paper : Convolutional Neural Networks for Sentence Classification