content合理と非合理のあいだ人工知能・哲学・スタートアップについて綴ります。Autoencoderによる文の分散表現(文の意味をベクトルで表す)を扱ったが、今回はこの分野で最も良いパフォーマンスを出している畳み込みニューラルネットワーク(CNN)による文の分散表現を扱う。Network:以下CNN)は、画像認識で超ハイパフォーマンスを叩きだしたことで知られるネットワークアーキテクチャで(1999年ごろから存在はしたが、注目を集めたのは2012年以降?)、画像認識で用いられてきたが自然言語にも応用することができる。いうか、マトリックスを入力とする問題には基本すべて応用できるはずだ。CNN自体を解説したソースは他にたくさんあるので、CNNに関してはそちらを参照していただきたい。ものすごく簡単に言うと従来のニューラルネットワークは下図のようなフルコネクト(隠れ層のどのユニットも入力層のすべてのユニットに接続されている)であり、画像のような2次元の入力も無理やり1次元のベクトルに引き伸ばして扱ったいたが、CNNでは、隠れ層のある一点が入力のある領域に対応しているという重みを持っている。これによって、平行移動にロバストになるという特徴がある。重みの形からネットワークアーキテクチャまで全く通常のNNと異なる。CNNを自然言語処理に応用する畳み込みニューラルネットワークを自然言語処理に応用するには、文をマトリックスに見立てればよい。単語を適当な分散表現で表せば、単語はすべて同じ次元のベクトルで表せるが、これを単に文に登場する順番に並べてやれば、下図のように文をマトリックスとして表現できる。dは単語のembeddingの次元数である。通常はもっと大きいはずだがここでは簡単のため5とする。マトリックスの高さは文の中の単語数と等しくなる。従って、文ごとにマトリックスのサイズはことなる。フィルターのウィンドウサイズ(フィルタリングする領域の長さ、上図では3)は特徴マップごとに変更する。ように複数作ることでマップごとに異なる特徴を学習することができる。ところで、ウィンドウサイズはN-gramのNに当たる。サイズ3はtri-gramに対応する。ネットワーク全体のアーキテクチャは以下のようになる。フィルター(2列目)と入力(1列目)を畳み込んでつくった特徴マップ(左から3列目)をプーリングし、各プーリング層を連結させてひとつのベクトルを得る。これが文の分散表現Embeddingといえる。これの後ろのレイヤーに何層か挟んで、最終出力のレイヤーをクラスの確率分布とすれば、文を入力としてクラスを出力とする識別器がつくれる。まとめと性能[1]の実験によると、CNNによるモデルは、映画レビューや製品レビュー文のセンチメント解析(ポジティブ/ネガティブの解析)において、下図のような結果を出している。CNNを従来の他モデルすべてと比較している。..などは各タスクで、数字が精度(100%中)である。左列がモデルで、CNNが4つあるのはCNNバージョンの異なるモデルを表しているからである(たとえば単語の分散表現のモデルの違いや、プリトレーニングの有無など)。7タスク中4つでCNNが最高の成果を出す結果となった。Autoencoder(一番上)よりもずっと良いスコアを出しているのが確認できる。現状文の分散表現にはいろいろなモデルがあるが、2014年の時点ではそれらを含めて基本的にCNNがベスト(あくまでクラス識別問題だが)であるのだ。コメントをキャンセルメールアドレスが公開されることはありません。