본문 바로가기

papers

Convolutional Neural Networks for Sentence Classification

이 논문은 현재 MIT 교수로 있으신 Yoon Kim 교수님이 2014년에 진행한 연구이다.

이미지 도메인에 주로 활용되는 CNN으로 여러가지 문장분류 태스크에 적용해 좋은 성능을 거두었다. 알파고가 나오기 전의 논문으로 국내에서 4차산업혁명과 인공지능 붐이 나타나기 전의 논문이다. 논문이 공개된지 10년정도로 현재 인공지능 연구의 수준이 실험의 규모나 다양성에서 비약적인 발전을 이뤘다는 것이 새삼스레 느껴진다.

Abstract

저자들은 사전학습한 단어벡터에 CNN 모델을 학습시켜 문장단위의 분류 태스크를 해결하였다. 저자는 간단한 모델과 하이퍼파라미터 튜닝, 정적 벡터(static vector)로 여러 벤치마크에서 괜찮은 벤치마크 결과를 달성했다(7개 중 4개 태스크에서 SOTA 달성). 태스크에 특화된 벡터를 파인튜닝으로 학습하는 것은 성능에 추가적인 이점이 있다.

Introduction

연구당시에는 신경망 언어모델로 word vector 표현을 학습하는데 많은 연구가 있었다. 기존의 sparse한 방법은 V개수의 단어를 표현하려면 V차원의 벡터가 필요했다. 그러나 피쳐 추출기(feature extractor)라는 히든층(hidden layer)를 통해 작은 차원에 단어의 의미적인 특징을 인코딩하게 되었다. 이러한 밀집 표현(dense representation)에는 의미적으로 유사한 단어가 가까울 확률이 높다(euclidean, cosine score).

저자들은 구글 뉴스, 기타 공용 데이터를 활용하여 획득한 1,000조개의 단어를 학습한 word vector 위에 한 개 층의 CNN 모델을 올려 실험하였다. 파인튜닝을 거친 후 여러 태스크에서 성능이 좋았는데, 이를 통해 단어 벡터가 여러 태스크에서 사용할 수 있는 범용적인(universal) 피쳐 추출기임을 알 수 있다. 저자들은 사전학습된 벡터와 파인튜닝된 벡터를 동시에 활용하는 멀티채널 방법을 제안한다.

Model

문장의 벡터는 단어 벡터를 아래로 붙여 만들고 필요한 경우에는 패딩을 더한다. 모델의 필터는 h 단어만큼의 윈도우 크기를 가진다. 풀링은 최대값 풀링을 적용하였다(max pooling). 모델은 다양한 특징을 얻기 위해 다양한 크기의 필터를 사용한다. 최종적으로 FCN을 통과하여 레이블마다 확률 값을 얻는다. 일반적인 CNN 모델과 같다.


저자는 모델에 간단한 변형을 하는데, 단어 벡터를 두개의 채널로 입력하는 것이다. 하나는 학습하는 동안에도 변하지 않는 벡터이고(static) 다른 하나는 역전파(back propagation)을 통해 파인튜닝 되는 벡터이다. 각 필터는 두 채널에 모두 적용되고 계산된 결과는 더해진다.

Datasets and Experimental Setup

실험에 사용한 데이터셋 정보는 다음과 같다.


단어벡터의 초기화는 사전 학습된 word2vec 데이터셋을 사용하고 word2vec corpus에 포함되지 않은 단어는 랜덤하게 초기화하였다.

실험에 사용한 모델은 다음과 같다.

CNN-rand: 베이스라인 모델로 랜덤하게 초기화
CNN-static: word2vec으로 초기화, keep static, 모델의 다른 파라미터만 학습
CNN-non-static: CNN-static과 같지만 태스크 별로 파인튜닝
CNN-multichannel: word2vec으로 초기화한 두 가지 채널을 사용. 하나는 파인튜닝, 하나는 stitic

위의 실험을 보면 저자가 제안한 3개의 모델(베이스라인 제외)이 7개 분야 중 4개 태스크에서 SOTA를 달성.
단어벡터를 사전학습한 모델이 성능이 좋고, 파인튜닝한 경우 더 나은 개선이 있다.

저자들은 멀티채널 방식으로 학습하면 학습이 진행되면서 원래의 값에서 너무 크게 벗어나지 않기때문에 모델이 오버피팅하는 문제를 방지할 수 있을 거라 기대했다. 그리고 싱글채널 방식보다 특히 데이터셋의 규모가 작은 경우에 성능이 나을 거라 예상했었다.

결과적으로 반만 옳았다.


단일 non-static 채널로 학습한 경우 bad에 가까운 단어로 good이 포함되어있다(문법적으로 동등한 구조일거라 예상). 그러나 SST-2 태스크에서 멀티채널로 학습한 경우에는 포함되지 않는다. 여러 사례로 봤을 때 파인튜닝으로 의미적으로 나은 학습이 가능하다.

이 실험을 통해 저자는 단어벡터의 비지도 사전학습이 딥러닝 자연어처리에 효과적임을 증명했다.