Skip to content

CNNで文の分散表現

前回の記事では、Recursive Autoencoderによる文の分散表現(文の意味をベクトルで表す)を扱ったが、今回はこの分野で最も良いパフォーマンスを出している畳み込みニューラルネットワーク(CNN)による文の分散表現を扱う。

 

CNNとは

畳み込みニューラルネットワーク(Convolutional Neural Network:以下CNN)は、画像認識で超ハイパフォーマンスを叩きだしたことで知られるネットワークアーキテクチャで(1999年ごろから存在はしたが、注目を集めたのは2012年以降?)、画像認識で用いられてきたが自然言語にも応用することができる。というか、マトリックスを入力とする問題には基本すべて応用できるはずだ。

CNN自体を解説したソースは他にたくさんあるので、CNNに関してはそちらを参照していただきたい。ただ、ものすごく簡単に言うと従来のニューラルネットワークは下図のようなフルコネクト(隠れ層のどのユニットも入力層のすべてのユニットに接続されている)であり、画像のような2次元の入力も無理やり1次元のベクトルに引き伸ばして扱ったいたが、スクリーンショット 2016-04-16 20.55.32

CNNでは、隠れ層のある一点が入力のある領域に対応しているという重みを持っている。

スクリーンショット 2016-04-16 20.56.01 これによって、平行移動にロバストになるという特徴がある。重みの形からネットワークアーキテクチャまで全く通常のNNと異なる。

 

CNNを自然言語処理に応用する

畳み込みニューラルネットワークを自然言語処理に応用するには、文をマトリックスに見立てればよい。つまり、単語を適当な分散表現で表せば、単語はすべて同じ次元のベクトルで表せるが、これを単に文に登場する順番に並べてやれば、下図のように文をマトリックスとして表現できるスクリーンショット 2016-04-16 21.02.32

dは単語のembeddingの次元数である。通常はもっと大きいはずだがここでは簡単のため5とする。マトリックスの高さは文の中の単語数と等しくなる。従って、文ごとにマトリックスのサイズはことなる。

スクリーンショット 2016-04-16 21.07.43

フィルター(重み)を上図のように適当な長さに定めてマトリックスを上からスキャンすることで通常のCNNと同じように特徴マップ(Feature Map)を作れる。フィルターのウィンドウサイズ(フィルタリングする領域の長さ、上図では3)は特徴マップごとに変更する。つまり、ウィンドウサイズ2の特徴マップ、ウィンドウサイズ3の特徴マップ、ウィンドウサイズ4の特徴マップ… などのように複数作ることでマップごとに異なる特徴を学習することができる。ところで、ウィンドウサイズはN-gramのNに当たる。つまり、サイズ2はbi-gram, サイズ3はtri-gramに対応する。

ネットワーク全体のアーキテクチャは以下のようになる。

スクリーンショット 2016-04-16 21.15.20

フィルター(2列目)と入力(1列目)を畳み込んでつくった特徴マップ(左から3列目)をプーリングし、各プーリング層を連結させてひとつのベクトルを得る。これが文の分散表現Embeddingといえる。これの後ろのレイヤーに何層か挟んで、最終出力のレイヤーをクラスの確率分布とすれば、文を入力としてクラスを出力とする識別器がつくれる。

 

まとめと性能

[1]の実験によると、CNNによるモデルは、映画レビューや製品レビュー文のセンチメント解析(ポジティブ/ネガティブの解析)において、下図のような結果を出している。CNNを従来の他モデルすべてと比較している。
スクリーンショット 2016-04-16 21.28.28

MR, SST, TREC, CR ..などは各タスクで、数字が精度(100%中)である。左列がモデルで、CNNが4つあるのはCNNバージョンの異なるモデルを表しているからである(たとえば単語の分散表現のモデルの違いや、プリトレーニングの有無など)。7タスク中4つでCNNが最高の成果を出す結果となった。前回の記事で紹介したRecursive Autoencoder(一番上)よりもずっと良いスコアを出しているのが確認できる。

つまり、現状文の分散表現にはいろいろなモデルがあるが、2014年の時点ではそれらを含めて基本的にCNNがベスト(あくまでクラス識別問題だが)であるのだ。

 

参考文献

[1] Yoon Kim, Convolutional Neural Networks for Sentence Classification, EMNLP-2014
http://emnlp2014.org/papers/pdf/EMNLP2014181.pdf

Pocket

Published inDeep Learning人工知能知識表現(Knowledge Representation)自然言語処理

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です