この記事はDeepLearning論文紹介 Advent Calendar 2017の初日の記事になります. 時間があまりなく,五月雨式にほぼ直訳を書いてしまったので,すいません.後々修正を加えていきます. 社会人になってから初めてまともに記事を書く気がします.

今年のIJCAI-17で発表されたCombining Knowledge with Deep Convolutional Neural Networks for Short Text Classificationという論文を読んだので紹介します.

Introduction

従来のテキスト分類の研究は,人工的に設計された特徴量や深層学習によるテキストの分散表現に依存していた. しかし,ショートテキストにおいてこれらの手法には以下の通り限界がある:

  • ショートテキストは必ずしも自然言語の構文に即しているとは限らない
  • ショートテキストは文脈が欠けている
  • ショートテキストは多義語やタイポを含んでいるため,一般にあいまいである

これらを解決するために,ショートテキストから構文情報と同様により意味情報を捉える必要がある. これまでのテキスト表現モデルは明示的表現(explicit representation)と暗黙的表現(implicit representation)の2つにわけられる.

  • 明示的表現:係り受け解析や品詞タグ付け等.曖昧さ回避のための特徴量獲得が困難で,加えて,データがスパースになるという問題がある.例えば,知識ベースにあるエンティティが存在しなかったら,それについての特徴量を得ることがそもそもできない.
  • 暗黙的表現:ニューラル言語モデル[Bengio et al. 2003]等で表現される.これは,テキストを暗黙的意味空間に写像し,それらをベクトルとして表現することができる.文脈から豊富な情報を獲得でき,テキスト理解を容易にする.欠点として,新語や出現頻度が低い語に弱いことがあげられる.また,共起性以外の重要な関係(e.g. IsAやIsPropertyOf)を無視するという欠点もある.例えば,”the Angles won the World Series.“というテキストについて”Angles”を野球チーム名として解釈することができない.

これらの欠点から,ショートテキストの分類には明示的または暗黙的な表現を個別に用いても効果的ではない. しかし,先行研究[Huet al., 2016]では,これらの表現が互いに補完的あることが示されている.

本研究では,ショートテキストの明示的表現と暗黙的表現を組み合わせた表現を獲得する深層ニューラルネットワークを提案する. まず始めに,各ショートテキストに知識ベースの関連するコンセプトを関連づける.次に,ショートテキスト中の単語と関連コンセプトを,事前学習された単語埋め込み(word embedding)に変換する.そして,この埋め込みをCNNに食わせ,結合埋め込み(joint embedding)から明示的な知識を学習する.

明示的表現と暗黙的表現の両方を用いても解決できない問題がある.例えば,”buy apple iPhone7”というショートテキストがあったときに,知識ベースと事前学習された単語埋め込みは”iPhone7”という新語を認識できない. そこで,文字レベル言語モデル[Kim et al., 2016]にインスパイアされ,より意味的特徴量を得るために文字レベル埋め込みも用いる.

Related Work

  • Short Text Understanding
  • Text Classification
  • Neural Language Model
    • AutoEncoder using Recurrent Neural Networks [Socher et al., 2011]
    • Recursive Neural Tensor Network [Socher et al., 2013]
    • CNN with pre-trained word embedding [Collobert et al., 2011] and [Kim, 2014]
    • Very deep CNN with only character level input [Zhang et al., 2015] and [Conneau et al., 2016]

Model Design

Knowledge Powered Convolutional Neural Network (KPCNN)を提案.2つのsub-networksにより単語-コンセプト(word-concept)と文字(character)特徴量を抽出する.

Short Text Conceptualization

Probase APIを使いショートテキストからコンセプトベクトル

$$ C = \{< c_1, w_1 >, < c_2, w_2 >, ..., < c_k, w_k > \} $$

を計算する.$c_i$は知識ベース中のコンセプト,$w_i$は$c_i$に関する重みである. $k$は10に設定され,Probaseが10以上のコンセプトを返してきたら上位10件のみを使う. 例として,”CNOOC Signed a PSC with ROC”というショートテキストが与えられた際には,

$$ C = \{<\text{client},0.9>, <\text{channel},0.6>, <\text{mythological creature},0.6>, \\ <\text{international well-known enterprise},0.2>, <\text{chinese oil major},0.2> \} $$

というベクトルが計算される.

Overall Architecture of the Model

単語とコンセプトに関しては事前学習済みの単語埋め込みを用いて初期値とする. 文字埋め込みについては,事前学習済みのものが無いので学習のサイクルでチューニングする.

画像上段が単語とコンセプト埋め込みのためのサブネットワークとなっている. 入力層,畳み込み層2層,プーリング層2層,全結合層2層の計7層から構成される.

Input Layer

入力層はショートテキストを行列(埋め込みの系列)に変換する層で,$\boldsymbol{W} \in \mathbb{R}^{(k+n) \times m}$で表される.$m$は単語埋め込みの次元,$n$と$k$はそれぞれ単語とコンセプトの最大長を表す.更に詳しく,$\boldsymbol{W}$は

$$ \boldsymbol{W} = \boldsymbol{W}_w \oplus \boldsymbol{W}_c $$

と分解でき,それぞれ,単語とコンセプトの埋め込み(による行列)である. ちなみに$\oplus$はconcat演算です.それぞれさらに詳しく見ていくと,

$$ \boldsymbol{W}_w = \boldsymbol{v}_1^w \oplus \boldsymbol{v}_2^w \oplus \dots \oplus \boldsymbol{v}_n^w \\ \text{where } \boldsymbol{v}_i^w \in \mathbb{R}^m $$

$$ \boldsymbol{W}_c = w_1 \boldsymbol{v}_1^c \oplus w_2 \boldsymbol{v}_2^c \oplus \dots \oplus w_n \boldsymbol{v}_n^c \\ \text{where } \boldsymbol{v}_i^c \in \mathbb{R}^m $$

となります.$w_i$は前段で紹介したとおりコンセプトベクトルの重みですね.

Convolution Layer

Temporal (one-dimensional) Convolutionを適用後,活性化関数としてReLUを適用.複数サイズの畳み込みフィルターを用いている.

Pooling Layer

max-over-time pooling演算を適用.

Hidden Layer

活性化関数としてtanhを適用.また,正則化のためにDropoutも適用.

画像下段は文字埋め込みのためのサブネットワークとなっている. 各文字は$m_c$次元のランダムに初期化された文字埋め込みに変換される. 入力は$\boldsymbol{W_c} \in \mathbb{R}^{L \times m_c}$(あれ同じ記号登場してる...?)の行列に変換される. $L$は文字の最大数を決定するハイパーパラメータで,今回は256に設定.$m_c$は文字埋め込みの次元.

最終的に2つのサブネットワークで出力されたベクトルをconcatして出力層についないでいる.

Training

出力はソフトマックス.対数尤度を最大化するように学習を行う.最適化手法としてAdaGradを使用.

Evaluation

Setup

各種データセットを以下の通り用意

  • TREC: 6種類のQuestionを含むQ&Aデータセット.
  • Twitter: potivive,neutral,negativeの3種類の感情分析のためのツイートデータセット.
  • AG news: [Zhang et al., 2015]で採用された4カテゴリを含むニュースデータセット.ショートテキストについて検証したいので今回はタイトルのみ使用.
  • Bing: [Wang et al., 2014]で採用された検索クエリのログデータセット.4カテゴリ.
  • Movie Review: [Pang and Lee, 2005]で採用されたpositive,negativeの2種類の感情分析のための映画レビューデータセット.

データセットのサマリは以下の通り.

各種ハイパーパラメータは以下の通り.

単語埋め込みの学習にはword2vecを使用.とあるが,CBoWとSkip-gramどっちなんだ...あとこれに関するその他ハイパーパラメータ等々は省略されている模様.

Baseline Methods

Word-Concept Embedding + LR

コンセプトについては埋め込みを重み$w_i$を用いて加重平均をとり($\boldsymbol{V_c}$),単語については埋め込みをtf-idfを用いて加重平均とり($\boldsymbol{V_w}$),

$$ \boldsymbol{V}_c = \frac{\sum_{i=0}^{k} w_i \boldsymbol{v}_i^c}{\sum_{i=0}^{k} w_i} $$

最後に$\boldsymbol{V_c}$と$\boldsymbol{V_w}$の平均を取った値を入力としてロジスティック回帰する.

その他ベースライン

  • BoW + SVM: [Wang and Manning, 2012]
  • CNN: [Kim, 2014]によって提案された単語埋め込みをCNNする手法.畳み込み層1層.
  • CharCNN: [Zhang et al., 2015]によって提案された文字入力をCNNする手法.単語は使わない.合計12層のCNN.
  • WCCNN: 本研究で提案するベースラインで,KPCNNの上段のサブネットワークのみを使う手法.

Results

とりあえずstate-of-the-art.

word2vec以外の単語埋め込み(Word-Concept,Glove)でも実験.しかしword2vec程よくない.

何故か?word2vecよりもunknown wordが多すぎるから.

個人的な所感

今回はデータセットが小規模かつ入力もショートテキストだったのでCharCNNが不利だった感じがした. 最後の方駆け足ですいません.また追記します.