【論文要約・全訳】Convolutional Neural Networks for Sentence Classification

0. 論文

Convolutional Neural Networks for Sentence Classification https://arxiv.org/pdf/1408.5882.pdf

1. どんなもの?

CNNを用いて文章分類を行った。 深層学習モデルとしては比較的シンプルな構成でも既存のモデルよりも高い精度を出した。

2. 先行研究と比べてどこがすごい?

既存のアルゴリズムではなく、 画像分類よく使われているCNNを応用し成功した。

3. 技術や手法のキモはどこ

入力値に単語の分散表現であるword2vecを使ったのがキモ。 word2vecをファインチューニングしたものを合わせて使うとなお良くなる。

4. どうやって有効だと検証した?

7つのデータセットで分類精度を試した。 そのうちの4つで既存のものより高い精度をあげた。 特に感情分析と質問の分類

5. 議論はある?

  • 層を増やしたモデルで精度が上がらなかったという報告があるが、おそらくキャパシティ不足のため。
  • 他の単語の分散表現モデルを使っても面白そう。
  • ドロップアウトを使うと2-4%精度が向上した。

6. 次に読むべき論文は?

気になった点

  • 調整器Adadeltaを使っているがAdamはどうか。
    =>Adamでも良さそう。
  • マルチチャンネルの実装方法がいまいち曖昧
  • ベクトルの微調整はどうやってやっている?誤差逆伝播法でできるのか?
    =>fine-tuningを誤解していた。Embedding層を使えば実装可能
  • ニューラルネットワークの層を増やすとどうなる?
  • word2vec以外のベクトル表現を使ってみたい。
    => 単語ベクトル混ぜる手法にも興味がある。
    => 試しにone-hotとword2vecをconcatして実装してみたが、(データソースにもよるだろうが)精度は上がらなかった。

以下、全訳

文章分類のための畳込みニューラルネットワーク

要約

我々は、訓練済みの単語ベクトルにより訓練された畳込みニューラルネットワーク(CNN)による、文章レベルでの分類タスクについての実験を報告する。 わずかなハイパーパラメータチューニングと静的なベクトルを用いたシンプルなCNNが、複数のベンチマークにおいて素晴らしい結果を出した。 ファインチューニングによりタスクに特化したベクトルを学習することで、更に良いパフォーマンスを得ることができる。 我々は更に、タスクに特化したベクトルと、静的なベクトルの両方を使えるような、アーキテクチャへの簡単な修正も提案する。 ここで論じられたCNNモデルは、7つのタスクのうち4つのタスクにおいて既存の手法よりも良い結果を出した。その中には、感情分析と質問の分類が含まれている。

導入

近年、ディープラーニングモデルはコンピュータビジョンの分野(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は単語数)から、隠れ層を通じてより低次元のベクトル空間へと射影されたものである。これは、本質的には単語の意味的な特徴をベクトル次元にエンコードすることで特徴を抽出したものである。このような密な表現により、意味的に近い単語は低次元のベクトル空間の中でユークリッド距離でもコサイン距離を用いても同様に近い位置となる。

畳込みニューラルネットワーク(CNN)は、局所的な特徴を扱う畳み込みフィルターを持つ層を用いる(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) によって、Google Newsから千億単語を用いて訓練されたもので、万人に使えるよう公開されているものである。我々はまず、単語ベクトルを静的に保ったまま、モデルの他のパラメータのみを学習するようにした。ハイパーパラメータをほとんどチューニングしていないにもかかわらず、このシンプルなモデルは複数のベンチマークにおいて素晴らしい成果をあげた。これは、訓練済みのベクトルは「普遍的な」特徴抽出器であり、種々の分類タスクに使うことが出来るということを示唆している。ファインチューニングされタスクに特化したベクトルを学習することは、さらなる精度の向上を生み出した。最終的に、複数のチャンネルを使うことで、訓練済みとタスクに特化したベクトルの両方を使えるようにアーキテクチャに単純な変更を加えた。

我々の研究は哲学的にはRazavian et al. (2014) のものと同じである。そこでは画像の分類において、訓練済みのディープラーニングモデルから得られた特徴抽出器が、様々なタスクにおいて良いパフォーマンスを出すことが示されている。そのタスクには、その特徴抽出器がトレーニングされた元々のタスクとはかなり異なるタスクも含まれている。

2 モデル

図1で示されているモデルアーキテクチャは、 Collobert et al. (2011)のCNNアーキテクチャを少し変えたものだ。ここで、{\bf x}_i \in \mathbb{R}^{k}はk次元の単語ベクトルで、文中のi番目の単語に対応する。nの長さの文は(必要ならパディングして)下記のように表される。

{ \displaystyle
{\bf x}_{1:n} = {\bf x}_1 \oplus {\bf x}_2 \oplus ... \oplus {\bf x}_n   (1)
}

ここで、  \oplus は連結演算子である。一般的に、 {\bf x}_{i:i+j}は単語 {\bf x}_{i}, {\bf x}_{i+1}, ..., {\bf x}_{i+j} 畳み込み演算は、フィルター {\bf w} \in \mathbb{R}^{hk}を持ち、ウィンドウサイズ h 個の単語に適応され、新たな特徴を作り出す。例えば、特徴量c_iは単語{\bf x}_{i:i+h-1} のウィンドウサイズの単語から、

{ \displaystyle
c_i = f({\bf w}\cdot {\bf x}_{i:i+h-1} + b)   (2)
}

の式によって導き出される。ここで、b \in \mathbb{R}はバイアス項であり、fはハイパーボリックタンジェントのようなは非線形関数である。このフィルターは、文中の取りうる単語のウィンドウ\{{\bf x}_{1:h}, {\bf x}_{2:h+1}, ..., {\bf x}_{n-h+1:n}\}毎に適用され、下記の特徴マップを得る。

{ \displaystyle
{\bf c} = [c_1, c_2, ..., c_{n-h+1}]   (3)
}

なお{\bf c} \in \mathbb{R}^{n-h+1}である。その後、特徴マップに対して max-over-time プーリング演算 (Collobert et al., 2011)を行い、最大値 \hat{c} = max \{ {\bf c}\}をそのフィルターに対応する値として抜き出す。この考えは、それぞれの特徴マップのなかで、最もインパクトのある値 − 最も大きな値 − を捉ようということである。このプーリングスキーマは自然と、種々の文の長さを扱うことになる。

我々は、このプロセスを、一つの特徴が一つのフィルターから抽出するものとして記述した。このモデルは、異なるウィンドウサイズのもと複数のフィルターを用いて、複数の特徴を獲得する。これらの特徴が最後から二つ目の層を形成し、全結合されたソフトマックス層に渡され、ラベル毎の確立分布を出力する。

モデルのバリエーションの一つとして、我々は二つの単語ベクトルの「チャンネル」を持つものを試してみた。一つはトレーニングの過程を通して静的に保ったままのもので、もう一つはバックプロパゲーション(節3.2)を通じでファインチューニングされたものである。図1で示される複数チャンネルのアーキテクチャにおいて、それぞれのフィルターは両方のチャンネルに対して適用され、その結果は加算され、(2)で示したc_iを計算するために使われる。その他の点ではチャンネルが一つのモデルと同じである。

2.1 正則化

正則化のため、我々は最後から二つ目の層でドロップアウトとベクトルの重みへのl2ノルムの制約を用いる(Hinton et al., 2012)。ドロップアウトは、誤差逆伝播法を進める間、隠れユニットのうちpの割合をランダムにドロップアウトさせるー例えば0にセットするーことで、隠れユニットの共同適応?(co-adaptation)を防ぐことができる。つまり、最後から二つめの層{\bf z} =[\hat{c}_1,...,\hat{c}_m](ここではmのフィルターがある)において、順伝播のアウトプットユニットをyとして

{ \displaystyle
y = {\bf w} \cdot {\bf z} + b (4)
}

を使う代わりに、ドロップアウトでは

{ \displaystyle
y = {\bf w} \cdot ({\bf z} \circ {\bf r}) + b, (5)
}

を使う。ここで、\circは要素ごとの乗算演算子であり、{\bf r} \in \mathbb{R}^mは「マスキング」ベクトルで、確率pで1をとるベルヌーイ確率変数である。勾配は、マスクされていないユニットからのみ逆伝播される。テストの際には、学習された重みベクトルは、\hat {\bf w} = p{\bf w}を満たすpにより縮尺(scaled)され、\hat {\bf w}ドロップアウトなしにまだ使われていないテキストをスコアリングするために使われる。我々はそれに追加して、重みベクトルへのl2ノルムの制約をつける。最急降下法の過程で、||{\bf w}||_2 > sとなる時に||{\bf w}||_2 = sとなるようにスケールし直す。

3 データセットと実験のセットアップ

我々は、様々なベンチマークでモデルをテストする。データセットの統計情報のサマリーは表1で示す。

  • MR : 映画レビュー(Movie reviews)。一レビューにつき一センテンスある。分類は、ポジティブ/ネガティブなレビューを検知することも含む(Pang and Lee, 2005)。
  • SST-1 : Stanford Sentiment Treebank。MRのエクステンションだが、訓練/開発/テスト(train/dev/test)の分割ときめ細かなラベル(とても肯定的、肯定的、中立的、否定的、とても否定的)を含む。 Socher et al. (2013)により再度ラベル付された。
  • SST-2 : SST-1と同じだが、中立的なレビューが除かれ、二値のラベルになっている。
  • Subj : Subjectivity dataset。ここでのタスクは文章が主観的か客観的かを分類することである(Pang and Lee, 2004)。
  • TREC : TREC question dataset。質問を6つのタイプ(質問が人についてか、場所についてか、数字についてかなど)に分類するタスクを含んでいる(Li and Roth, 2002)。
  • CR : 様々な製品(カメラ、MP3など)についてのCustomer reviews。タスクはレビューがポジティブ/ネガティブかを予測すること。
  • MPQA : MPQA datasetの中の、意見のポジティブ/ネガティブ(polarity)を検知するサブタスク。

3.1 ハイパーパラメータとトレーニン

我々が使うすべてのデータセット対して:ReLU(rectified linear units)、100の特徴マップ毎に3, 4, 5のフィルターウインドウ(h)、ドロップアウト率(p)を0.5、l_2制約(s)を3、そしてミニバッチサイズを50とした。これらの値は、SST-2のdevセットも用いてグリッドサーチにより選択された。

我々は、devセットへのearly stoppingを以外にはデータセット特有のチューニングはなんら行わなかった。標準化されたdevセットを持たないデータセットについては、トレーニングデータからランダムに選んだ10%をdevセットとした。トレーニングはシャッフルされたミニバッチに対し、Adadeltaの更新規則(Zeiler, 2012)を使った確率的勾配降下法を用いた。

3.2 訓練済み単語ベクトル

教師なしニューラル言語モデルから得られた単語ベクトルを用いて単語ベクトルを初期化することは、巨大な教師あり訓練データがない場合にパフォーマンスを改善させる定評のある手法だ (Collobert et al., 2011; Socher et al., 2011; Iyyer et al., 2014)。我々は、Google Newsから千億単語を使いトレーニングされ、一般に公開されているword2vecを用いる。このベクトルは300次元であり、continuous bag-of-wordsアーキテクチャを用いて訓練されている(Mikolov et al., 2013)。訓練済みの単語の中に存在しない単語はランダムに初期化されている。

3.3 モデルのバリエーション

我々はいくつかのモデルのバリエーションを試した。

  • CNN-rand : 我々のベースラインのモデルで、すべての単語はランダムに初期化され訓練期間中に修正される。
  • CNN-static : word2vecの訓練済みベクトルを使用するモデル。すべての単語ーランダムに初期化される未知語を含むーは静的に保たれ、他のモデルのパラメータのみが学習される。
  • CNN-non-static : 上と同じだが、訓練済みベクトルはそれぞれのタスクでファインチューニングされる。
  • CNN-multichannel : 二つの単語ベクトルセットを持つモデル。それぞれのベクトルセットは「チャンネル」として扱われ、それぞれのフィルターは両方のチャンネルに対して適用されるが、勾配は一つのチャンネルにのみ逆伝播される。そうすることでモデルは一つのベクトルセットをファインチューニングできる一方、もう一つのベクトルは静的に保たれる。チャンネルは両方共word2vecを用いて初期化される。

上記のバリエーションの効果とその他のランダムな要素を切り分けるため、我々は、その他のランダム性の元となる要素ーCV-foldの割当、未知語のベクトルの初期化、CNNパラメータの初期化ーをそれぞれのデータセットで統一することで、それらの影響を排除した。

4 結果と議論

他の手法に対する我々のモデルの結果はテーブル2にリスト化している。我々のベースラインのモデルである単語をすべてランダムに初期化するモデルは(CNN-rand)はそれ自体ではあまり良い成果を上げていない。一方我々は訓練済みベクトルを使用することでパフォーマンスが上がることを期待していたが、その上がる幅の大きさに驚かされた。静的ベクトルを使ったシンプルなもでる(CNN-static)でさえも著しく効果を上げており、他の洗練されたディープラーニングモデルである複雑なプーリングスキーマを用いたもの(Kalchbrenner et al., 2014)や構文木の計算を予め必要とするもの(Socher et al., 2013)の結果と比肩する。この結果は、訓練済みベクトルは良い「普遍的」な特徴抽出器であり、データセットをまたいで効力を発揮しうるということを示唆する。それぞれのタスクに対する訓練済みベクトルのファインチューニングは、さらなる改良を得た(CNN-non-static)。

4.1 マルチチャンネル vs. シングルチャンネルモデル

我々は当初、マルチチャンネルモデルが(学習されるベクトルがオリジナルのものからそれほど逸脱しないよう保証することで)オーバーフィッティングを防ぎ、その結果、特に小さなデータセットにおいて、シングルチャンネルモデルよりも効果を発揮することを望んでいた。しかし、結果は良い場合と悪い場合が混在しており、さらなるファインチューニングのプロセスの正則化の研究が保証?(warranted その必要があるという意味か?)されている。例えば、静的でない部分を持つチャンネルを追加する代わりに、一つのチャンネルのみを使い、訓練期間中に修正されうる余分な次元をもたせるということも良いだろう。

4.2 静的 vs. 静的でない表現

シングルチャンネルで静的でないモデルと同様に、マルチチャンネルモデルも静的でないチャンネルをファインチューニングして、該当タスクに特化させることができる。例えば、good はword2vecにおいてbadと最も近くなる。それはおそらくそれらは構文的(syntactically)には(ほぼ)同じ意味だからだろう。しかし、SST-2データセットにおいて静的でないチャンネルでファインチューニングされたベクトルは、もはやそうではない(表3)。同様に、goodも間違いなく、感情の表現としてgreatよりもniseに近くなっている。これは確かに学習されたベクトルを反映している。

訓練済みベクトルに存在しない(ランダムに初期化された)語についても、ファインチューニングによりそれらはより意味のある表現として学習される。ネットワークは、ビックリマークを感情の発露と、コンマは接続詞と関連があると学習する。

4.3 さらなる観察結果

我々は、さらなる実験と観察を報告する。

  • Kalchbrenner et al. (2014)は我々のシングルチャンネルモデルと本質的に同じアーキテクチャーを使ったCNNで、より悪い結果を報告している。例えば、彼らのランダムに初期化されたベクトルを用いたMax-TDNN(Time Delay Neural Network)はSST-1において、我々のモデルが45.0%の結果を得たのに対し、37.4%の精度を得た。我々は、この食い違いが起きたのは、我々のCNNがより多くのキャパシティ(複数のフィルターの長さと特徴マップ)を持っていたからだと考える。
  • ドロップアウトは優れた正則化であることが証明された。ネットワークに必要だからというだけでなく、単にドロップアウト正則化として使って良い。ドロップアウトはいつでも2%-4%のパフォーマンスの向上をもたらした。
  • word2vecに存在しない単語をランダムに初期化するとき、我々は、ランダムに初期化されたベクトルが事前に訓練されたものと同じ分散を有するようにaが選択されたU [-a、a]から各次元をサンプリングすることによって、わずかな改善を得た。初期化のプロセスにおいて訓練済みベクトルの分布を反映するよより洗練された方法を採用することでされなる改善がなされるかを確かめてみるのも面白そうだ。
  • 我々は、Wikipediaのデータを使いCollobert et al. (2011)によって訓練された、一般に公開されている別の単語ベクトルも簡単に試してみた。そして、word2vecがより良いパフォーマンスを出すことを確認した。これがMikolov et al. (2013)のアーキテクチャによるものか、千億単語をもつGoogle Newsデータセットによるものかは定かではない。
  • Adadelta(Zeiler, 2012)はAdagrad (Duchi et al., 2011)と同じ結果を与えるが、より少ないエポックしか必要としなかった。

5 結論

今回の研究において我々はword2vecを用いた畳込みニューラルネットワークについての一連の実験を記述した。ハイパーパラメータをあまりチューニングしていないにもかかわらず、一層の畳み込み層を持つ単純なCNNが著しく良いパフォーマンスを上げた。我々の結果は、教師なしでの単語ベクトルの事前トレーニングはディープラーニングを用いてNLPをする上で重要な要素だという確立された証拠を、一段と補強するものとなった。