Yoon Kim - 문장 분류를 위한 컨볼루션 신경망

1 개요[ | ]

Convolutional Neural Networks for Sentence Classification
문장 분류를 위한 컨볼루션 신경망

2 Abstract[ | ]

문장 수준 분류 작업을 위해 사전학습된 단어 벡터에 대해 학습하는 CNN(Convolutional Neural Network)을 사용한 일련의 실험에 대해 보고한다. 하이퍼파라미터 튜닝과 정적 벡터가 거의 없는 간단한 CNN으로 여러 벤치마크에서 우수한 결과를 달성했다. 파인튜닝(fine-tuning)을 통해 작업별 벡터를 학습하면 성능이 더욱 향상된다. 또한 작업별 벡터와 정적 벡터를 모두 사용할 수 있도록 아키텍처에 대한 간단한 수정을 제안한다. 여기서 논의된 CNN 모델은 감성 분석 및 질문 분류를 포함하여 7개의 작업 중 4개 작업에서 최신 기술을 개선했다.

3 서론[ | ]

딥러닝 모델은 최근 몇 년 동안 컴퓨터 비전(Krizhevsky et al., 2012) 및 음성 인식(Graves et al., 2013)에서 놀라운 결과를 달성했다. 자연어 처리에서, 딥러닝 방법을 사용한 많은 작업들은 신경 언어 모델을 통한 단어 벡터 표현 학습(Bengio et al., 2003; Yih et al., 2011; Mikolov et al., 2013), 분류를 위한 학습된 단어 벡터를 통한 구성(Collobert et al., 2011)과 관련이 있다. 히든 레이어를 통해 희소한 1-of-V 인코딩(여기서 V는 어휘 크기)에서 더 낮은 차원의 벡터 공간으로 투영되는 단어 벡터는, 본질적으로 단어들의 의미적 특성을 그들의 차원에서 인코딩하는 특성(feature) 추출기이다. 밀집(dense) 표현에서도, 의미적으로 가까운(유클리드 또는 코사인 거리로) 단어들은 더 낮은 차원의 벡터 공간에 가깝다.

CNN(Convolutional Neural Network)은 로컬 특성에 적용되는 복잡한 필터가 있는 레이어를 활용한다(LeCun et al., 1998). 본래 컴퓨터 비전을 위해 발명되었던 CNN 모델은 NLP에도 효과적이며, 시맨틱 파싱(Yih et al., 2014), 검색 쿼리 조회(Shen et al., 2014), 문장 모델링(Kalchbrenner et al., 2014), 기타 전통적인 NLP 작업(Collobert et al., 2011)에서도 탁월한 결과를 보였다.

본 연구에서는 비지도 뉴럴 언어 모델에서 얻은 단어 벡터 위에 하나의 컨볼루션 레이어로 간단한 CNN을 학습시킨다. 이들 벡터는 Mikolov et al. (2013)가 구글 뉴스의 단어 1000억개를 학습시킨 것으로 공개적으로 사용가능하다.[1] 처음에는 단어 벡터를 정적으로 유지한 채로 모델의 다른 매개변수만 학습시킨다. 하이퍼파라미터를 거의 튜닝하지 않아도, 이 간단한 모델은 여러 벤치마크에서 우수한 결과를 보였다. 이는 사전학습된 벡터들이 다양한 분류 작업에 활용할 수있는 '범용' 특성 추출기임을 의미한다. 파인튜닝을 통해 작업별 벡터를 학습하면 추가 향상이 이루어진다. 마지막으로는 여러 채널에서 사전학습, 작업별 벡터를 모두 쓸 수 있게 한 아키텍처의 간단한 변경을 설명한다.

우리 연구는, 다양한 작업(특성 추출기를 학습시키는 본래의 작업과 매우 다른 작업들 포함)에서 잘 작동하는 사전학습된 딥러닝모델로 얻은 특성 추출기로 이미지 분류를 선보인 Razavian et al. (2014)의 연구와 철학적으로 유사하다.

4 모델[ | ]

Convolutional Neural Networks for Sentence Classification-figure1.png

그림 1에 표시된 모델 아키텍처는 Collobert et al. (2011)의 CNN 아키텍처를 약간 변형한 것이다. [math]\displaystyle{ \mathbf{x}_i ∈ ℝ^k }[/math]를 문장에서 i번째 단어에 해당하는 k-차원 단어 벡터라고 해보자. 길이 n의 문장 (필요시 채워짐padded)은 다음과 같이 표현된다.

[math]\displaystyle{ \mathbf{x}_{1:n} = \mathbf{x}_1 ⊕ \mathbf{x}_2 ⊕ \cdots ⊕ \mathbf{x}_n }[/math]

 

 

 

 

(1)

여기서 ⊕는 접합concatenation 연산자이다. 일반적으로 [math]\displaystyle{ \mathbf{x}_{i:i+j} }[/math]는 단어 [math]\displaystyle{ \mathbf{x}_i, \mathbf{x}_{i+1}, \cdots, \mathbf{x}_{i+j} }[/math]의 접합을 나타낸다. 컨볼루션 연산은, 새로운 특성을 만들기 위해 h 단어들의 윈도우에 적용되는 필터 [math]\displaystyle{ w ∈ ℝ^{hk} }[/math]를 수반한다. 예를 들어, 특성 [math]\displaystyle{ c_i }[/math]는 다음과 같이 단어 [math]\displaystyle{ \mathbf{x}_{i:i+j} }[/math]의 윈도우로부터 생성된다.

[math]\displaystyle{ c_i = f(w · \mathbf{x}_{i:i+h-1} + b) }[/math]

 

 

 

 

(2)

여기서 [math]\displaystyle{ b ∈ ℝ }[/math]은 편향항bias term이고 f는 쌍곡선 탄젠트와 같은 비선형 함수이다. 이 필터는 문장 [math]\displaystyle{ \{\mathbf{x}_{1:h}, \mathbf{x}_{2:h+1}, \cdots, \mathbf{x}_{n−h+1:n}\} }[/math]에서 가능한 단어의 각 윈도우에 적용되어 다음의 특성 맵을 생성한다.

[math]\displaystyle{ \mathbf{c} = [c_1, c_2, \cdots, c_{n-h+1}] }[/math]

 

 

 

 

(3)

여기서 [math]\displaystyle{ \mathbf{c} ∈ ℝ^{n-h+1} }[/math]이다. 그런 다음 특성 맵에 max-over-time pooling 연산 (Collobert et al., 2011)을 적용하고 이 특정 필터에 해당하는 특성으로 최대값 [math]\displaystyle{ \hat{c} = \max\{\mathbf{c}\} }[/math]를 취한다. 아이디어는 각 특성 맵에서 가장 중요한 특성(가치가 높은 특성)을 잡아내는 것이다. 이 풀링 스킴은 다양한 문장 길이를 자연스럽게 처리한다.

하나의 필터에서 하나의 특성이 추출되는 프로세스를 설명했다. 이 모델은 여러 필터(윈도우 크기가 다름)를 사용하여 여러 특성을 얻는다. 이러한 특성들은 두 번째 레이어를 형성하고 레이블에 대한 확률 분포의 출력인 완전히 연결된 소프트맥스 레이어로 전달된다.

모델 변형판 중 하나로, 우리는 단어 벡터의 두 '채널들'을 가지고 실험한다. 하나는 학습하는 동안 정적으로 유지되고, 다른 하나는 역전파를 통해 파인튜닝된다 (섹션 3.2).[2] 그림 1에 나와 있는 멀티 채널 아키텍처에서 각 필터는 두 채널에 모두 적용되며 결과는 식 (2)에서 [math]\displaystyle{ c_i }[/math]를 계산하기 위해 추가된다. 이 모델은 그 외에는 단일 채널 아키텍처와 동일하다.

4.1 정규화[ | ]

정규화를 위해 가중치 벡터의 l2-norms에 대한 제약으로 두 번째 레이어에 드롭아웃을 사용한다 (Hinton et al., 2012). 드롭아웃은 순방향-역전파동안 히든 유닛의 비율 p를 임의로 드롭아웃(예, 0으로 설정)하여 히든 유닛의 동시적응을 방지한다. 즉, 두 번째 레이어 [math]\displaystyle{ \mathbf{z} = [\hat{c}_1, \cdots, \hat{c}_m] }[/math](여기서는 m 개의 필터가 있음)가 주어질 때,

[math]\displaystyle{ y=\mathbf{w} · \mathbf{z} + b }[/math]

 

 

 

 

(4)

를 사용하는 대신, 순방향 전파 출력 유닛 y에 대해 드롭아웃은 다음을 사용한다.

[math]\displaystyle{ y = \mathbf{w} · (\mathbf{z} ◦ \mathbf{r}) + b }[/math]

 

 

 

 

(5)

여기서 ◦는 요소별 곱셈 연산자이고, [math]\displaystyle{ r ∈ ℝ^m }[/math]은 확률 p가 1인 Bernoulli 랜덤 변수의 '마스킹' 벡터이다. 경사gradients는 마스크되지 않은 유닛을 통해서만 역전파된다. 테스트 때, 학습된 가중치 벡터들은 [math]\displaystyle{ \hat{\mathbf{w}} = p\mathbf{w} }[/math]와 같이 p로 스케일되고, [math]\displaystyle{ \hat{\mathbf{w}} }[/math]는 보이지 않은unseen 문장을 스코어링하기 위해 (드롭 아웃없이) 사용된다. 또한 경사 하강 단계 후 [math]\displaystyle{ ||\mathbf{w}||_2 \gt s }[/math]가 될 때마다 w를 재스케일하여 [math]\displaystyle{ ||\mathbf{w}||_2 = s }[/math]가 되도록 가중치 벡터의 l2-norms를 제한한다.

5 데이터세트 및 실험 셋업[ | ]

Convolutional Neural Networks for Sentence Classification-table1.png

다양한 벤치마크로 모델을 테스트한다. 데이터 세트의 요약 통계는 표 1에 있다.

  • MR : 한 문장 짜리 영화 리뷰. 분류에는 긍정적/부정적 리뷰 판별이 포함되어 있다 (Pang and Lee, 2005).[3]
  • SST-1 : 스탠포드 감성 트리뱅크(Stanford Sentiment Treebank) – MR의 확장판인데 학습/개발/테스트 분할과 세부 레이블(매우 긍정, 긍정, 중립, 부정, 매우 부정)들이 있다 (Socher et al. 2013).[4]
  • SST-2 : SST-1과 동일하지만 중립 리뷰가 제거되고 이진 레이블이 있다.
  • Subj : 주관적인 것과 객관적인 것으로 문장을 분류하는 주관성 데이터 세트 (Pang and Lee, 2004).
  • TREC : TREC 질문 데이터 세트 — 과제는 질문을 6가지 유형(질문이 사람, 장소, 숫자 정보 등에 관한 것인지 여부) 분류에 관한 것이다 (Li and Roth, 2002).[5]
  • CR : 다양한 제품(카메라, MP3 등)에 대한 고객 리뷰. 과제는 긍정적/부정적 리뷰를 예측하는 것이다 (Hu and Liu, 2004)[6]
  • MPQA : MPQA 데이터 세트의 의견 극성 분석 서브태스크 (Wiebe et al., 2005).[7]

5.1 하이퍼파라미터와 학습[ | ]

모든 데이터 세트에 대해 사용한 것: 정류선형유닛, 각각 100개의 특성 맵이 있는 필터 윈도우 (h) 3, 4, 5, 드롭아웃 비율 (p) 0.5, l2 제약조건 3, 미니-배치 크기 50. 이 값들은 SST-2 dev 세트에서 그리드 검색을 통해 선택되었다.

dev 세트에서 조기에 중지하는 것 이외의 데이터 세트별 조정은 달리 수행하지 않는다. 표준 dev 세트가 없는 데이터 세트의 경우 학습 데이터의 10 %를 임의로 개발 세트로 선택한다. 학습은 Adadelta 업데이트 규칙 (Zeiler, 2012)에 따라 섞인 미니-배치에 대한 확률적 경사 하강법으로 수행된다.

5.2 사전학습된 단어 벡터[ | ]

비지도 뉴럴 언어 모델에서 얻은 단어 벡터를 가지고 단어 벡터를 초기화하는 것은, 대규모 지도 학습 세트가 없을 때 성능을 향상시키기 위해 널리 사용되는 방법이다 (Collobert et al., 2011; Socher et al., 2011; Iyyer et al., 2014). 구글 뉴스에서 1000억 개의 단어로 학습된 공개적으로 사용가능한 word2vec 벡터를 사용한다. 벡터들은 차원이 300이며 연속 bag-of-words 아키텍처를 사용하여 학습되었다 (Mikolov et al., 2013). 사전학습된 단어 세트에 없는 단어는 랜덤하게 초기화된다.

5.3 모델 변형판[ | ]

우리는 모델의 여러가지 변형판을 실험했다.

  • CNN-rand: 모든 단어가 랜덤 초기화되고 학습 중에 수정되는 기준 모델
  • CNN-static: word2vec으로 사전학습된 벡터가 있는 모델. 모든 단어들(랜덤 초기화된 알 수 없는 단어들 포함)은 정적으로 유지되고, 모델의 다른 파라미터들만 학습된다.
  • CNN-non-static: 위와 동일하지만 사전학습된 벡터는 각 작업마다 파인튜닝된다.
  • CNN-multichannel: 단어 벡터들 두 세트를 가진 모델. 각 벡터 세트는 '채널'로 취급되며 각 필터는 두 채널에 적용되지만 경사gradients는 하나의 채널을 통해서만 역전파된다. 두 채널 모두 word2vec으로 초기화된다.

위의 변형판들의 효과에서 다른 랜덤 요인들의 영향을 배제하기 위해, 각 데이터세트 내에서 균등하게 하여(CV-분할 할당, 알 수 없는 단어 벡터들의 초기화, CNN 파라미터 초기화) 다른 랜덤 발생원들을 제거했다.

6 결과 및 논의[ | ]

Convolutional Neural Networks for Sentence Classification-table2.png

다른 방법에 대한 모델의 결과는 표 2에 나열되어 있다. 전체 랜덤 초기화된 단어(CNN-rand)를 가진 기준(baseline) 모델은 그 자체로는 성능이 좋지 않다. 그러나 사전학습된 벡터를 사용하니 기대 이상으로 놀라운 성능 향상이 있었다. 정적 벡터(CNN-static)를 사용하는 간단한 모델도 성능이 뛰어나, 복잡한 풀링 스킴를 사용하거나(Kalchbrenner et al., 2014) 사전에 파싱트리를 계산해야 하는(Socheret al., 2013) 보다 복잡한 딥러닝 모델들에 비해 경쟁력 있는 결과를 보였다. 이러한 결과는 사전학습된 벡터가 괜찮은 '범용' 특성 추출기이며 데이터세트들에 대해 활용할 수 있음을 나타낸다. 각 작업에 대해 사전학습된 벡터를 파인튜닝하면 추가 개선이 있다(CNN-non-static:).

6.1 멀티채널 vs 싱글채널 모델[ | ]

우리는 처음에 멀티 채널 아키텍처가 (학습된 벡터가 원래 값에서 너무 멀지 않도록 함으로써) 오버피팅을 방지하고 특히 작은 데이터 세트에서 단일 채널 모델보다 더 잘 작동하기를 기대했다. 그러나 결과는 혼재되어 파인튜닝 프로세스를 정규화하는 추가 작업이 필요하다. 예를 들어, 비정적 부분에 추가 채널을 사용하는 대신, 단일 채널을 유지하고 학습중 변경가능한 추가 차원을 적용할 수 있다.

6.2 정적 vs 비정적 표현[ | ]

Convolutional Neural Networks for Sentence Classification-table3.png

단일 채널 비정적 모델의 경우와 마찬가지로 다중 채널 모델은 비정적 채널을 직접 손으로 파인튜닝하여 처리할 수 있다. 예를 들어, word2vec에서 good은 bad와 가장 유사하다. 아마도 (거의) 문법적으로 동일하기 때문이다. 그러나 SST-2 데이터세트에 대해 파인튜닝된 비정적 채널의 벡터의 경우에는 그렇지 않다 (표 3). 이와 같이, good은 감정 표현으로서 great보다 거의 틀림없이 nice에 더 가깝고, 이는 실제로 학습된 벡터에 반영된다.

사전학습 벡터 세트에 없는 (랜덤 초기화된) 토큰의 경우, 파인튜닝을 통해 보다 의미있는 표현을 학습할 수 있다. 네트워크는 느낌표는 과장된 표현과 관련되며, 쉼표는 접속어라는 것을 학습한다 (표 3).

6.3 추가 의견[ | ]

몇 가지 추가적인 실험과 관찰에 대해 보고한다.

  • Kalchbrenner et al. (2014)는 단일 채널 모델과 본질적으로 동일한 아키텍처를 가진 CNN으로 훨씬 더 나쁜 결과를 보고했다. 예를 들어 랜덤 초기화된 단어가 있는 Max-TDNN (Time Delay Neural Network)은 SST-1 데이터세트에서 37.4 %가 나왔다 (우리 모델은 45.0 %). 이런 차이는 우리 CNN이 훨씬 더 많은 용량(멀티 필터 너비 및 특성 맵)을 가졌기 때문이라고 본다.
  • 드롭아웃은 필요한 네트워크보다 더 큰 네트워크를 사용하여 드롭아웃으로 정규화하는 것이 괜찮은 정규화 장치라는 것을 입증한다. 드롭아웃은 일관되게 2 % ~ 4 %의 상대적 성능을 더 냈다.
  • word2vec에 없는 단어를 랜덤 초기화할 때, 랜덤 초기화된 벡터가 사전학습된 벡터와 동일한 분산을 갖도록 a가 선택된 U[-a, a]에서 각 차원을 샘플링하여 약간의 개선을 얻었다. 초기화 과정에서 사전학습된 벡터의 분포를 반영하는 보다 정교한 방법을 사용하여 추가 개선이 있는지를 알아보면 흥미로울 것이다.
  • Collobert et al. (2011)이 위키백과를 통해 학습한 공개적으로 사용가능한 다른 단어 벡터들 세트[8]로 간단히 실험했고, word2vec이 훨씬 뛰어난 성능을 보이는 것을 확인했다. 이것이 Mikolov et al. (2013)의 아키텍처에 의한 것인지, 1000억 단어 구글 뉴스 데이터세트에 의한 것인지는 확실치 않다.
  • Adadelta (Zeiler, 2012)는 Adagrad와 비슷한 결과를 보였지만 (Duchi et al., 2011), 더 적은 세대(epoch)가 필요했다.

7 결론[ | ]

본 연구에서 우리는 word2vec 위에 구축된 컨볼루션 신경망을 이용한 일련의 실험을 설명했다. 하이퍼파라미터 튜닝이 적음에도 하나의 컨볼루션 레이어가 있는 간단한 CNN을 상당히 잘 수행한다. 이 결과는 단어 벡터의 비지도 사전학습이 NLP 딥러닝의 주요 요소라는 잘 확립된 증거로 추가되었다.

8 같이 보기[ | ]

9 참고[ | ]

  1. https://code.google.com/p/word2vec/
  2. 우리는 컬러 이미지에 빨강, 녹색, 파랑 채널이 있는 컴퓨터 비전 언어를 사용한다.
  3. https://www.cs.cornell.edu/people/pabo/movie-review-data/
  4. http://nlp.stanford.edu/sentiment/ Socher et al. (2013), Kalchbrenner et al. (2014), Le and Mikolov (2014)에서와 같이, 데이터는 실제로 구(phrase)-수준으로 제공되므로 구와 문장 모두에서 모델을 학습하지만 테스트시에는 문장에서만 점수를 매긴다. 따라서 학습 세트는 표 1에 나열된 것보다 큰 규모의 순서order이다.
  5. http://cogcomp.cs.illinois.edu/Data/QA/QC/
  6. http://www.cs.uic.edu/∼liub/FBS/sentiment-analysis.html
  7. http://www.cs.pitt.edu/mpqa/
  8. http://ronan.collobert.com/senna/
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}