2016.03.02@tkengoCNNによるテキスト分類
View Slide
目次• 畳み込みニューラルネット(CNN)• CNNのNLPへの適用• テキスト分類デモ• 参考
畳み込みニューラルネット
畳み込みニューラルネット• 人間の視覚野をシミュレーション• 画像認識の分野で広く使われる• カーネルをスライドさせて特徴マップを得る
畳み込みニューラルネット• NLPへCNNを適用してうまくいくのか?• そもそもどうやって適用するのか?• NLPでは既にRNNが良く使われているのでは?
畳み込みニューラルネット• NLPへCNNを適用してうまくいくのか?• そもそもどうやって適用するのか?• NLPでは既にRNNが良く使われているのでは?➜いくつかの実験で良い結果が出ている➜このあと説明します➜使われていると思う。現時点ではCNNが全て において万能だという結論ではないと思う
CNNのNLPへの適用
CNNのNLPへの適用• テキスト内の単語をベクトル化する必要がある• BoWモデルやWordEmbeddingモデル• BoWは単純だけど各単語間の関連が皆無• WordEmbeddingは話題のword2vecvector('Paris') - vector('France') + vector(‘Italy’) vector(‘Roma’)vector('king') - vector('man') + vector(‘woman') vector('queen')⇡⇡
CNNのNLPへの適用• 分類したいテキストに含まれる単語をベクトル化• それを並べた行列がそのテキストの表現• 単語数が一致しない場合はパディングで埋める犬も猫も好き犬も猫も好き ʜ ʜʜʜʜトトロが好きトトロが好き ʜ ʜʜʜʜ“トトロ”のベクトル“犬”のベクトル
CNNのNLPへの適用• カーネルの幅は単語ベクトルと同じ幅に固定• カーネルの高さは2-5くらいの範囲• 1単語ずつスライドさせて畳み込んでいく ʜ ʜʜʜʜ ʜ ʜʜʜʜ ʜ ʜʜʜʜ
CNNのNLPへの適用• 畳み込み層の後にはプーリング層も配置• 活性化関数ReLUを適用した後に全結合層• 最後にsoftmax関数を適用
テキスト分類デモ
モチベーション• LINE占い内で悩み相談所というサービスを展開• 悩み内容にはそれぞれカテゴリが紐付いている• 悩み内容のカテゴリを自動分類できないかな?カテゴリ
単純なNNでテキスト分類• 最初は隠れ層が1つの単純な順伝播型で実装• 単語ベクトルにはBoWモデルを使用• 130,000件のデータを数時間かけて学習• 65%〜70%程度の精度。もう少し精度ほしい
CNNでテキスト分類• 全部で5層のディープニューラルネット• 単語ベクトルにはWordEmbeddingモデルを使用• 130,000件のデータを20時間かけて学習• 75%〜80%程度の精度
参考
参考• Convolutional Neural Networks for Sentence Classification• http://arxiv.org/pdf/1408.5882v2.pdf• word2vec• https://code.google.com/archive/p/word2vec/• 実装• https://github.com/tkengo/tf/blob/master/cnn_text_classification/train.py• TensorFlow• https://www.tensorflow.org/