電通生のにこにこ調布日記

自然言語処理を学ぶ大学生のブログ

最近読んだCNN系論文ざっくりまとめ [ 自然言語編 ]

前回の投稿では画像認識においてCNN(Convolutional Neural Network)に関して読んだ論文についてまとめました。
今回は、自分が専門として研究室でやっていこうと思っている自然言語処理においてCNNを応用した研究に関する論文で自分が読んだものの中から何本かを簡単にまとめようと思います。
自然言語処理の勉強をしようとしていて、どんな論文を読んでみようか迷っている方のお役に立ったとしたら幸いです。 初学者につき間違い等ありましたら、コメントなどでご教授いただければ幸いです。


  1. Multi-Perspective Sentence Similarity Modeling with Convolutional Neural Networks(link)
    この論文は、Toyota Technological Institute at Chicagoっていうそんなのあったんだ、っていう感じの場所の人が出している論文ですね。 タスクとしては二つの文章を入力としてそれらをモデリングした結果を利用して言い換え表現や、二文章間の類似度を学習しています。本論文でも行われている、NLPにおいてCNNを適応させる際に、畳み込み層を複数用意しkernelサイズをそれぞれ変えて元文章中の異なる粒度の情報を抽出することは多く行われているのですが、この論文ではpooing層の種類も複数(max, min, mean pooling)組み合わせておりそれぞれに対して実験結果を比較している点が興味深いです。CNNのkernelサイズがn-gramを表現しているという主張はなんとなく同意できそうな気もするのですが、poolingの種類を組み合わせることに関しては自然言語処理的にどんな結果を期待できるのかは理解しがたい印象を受けました。

  2. Tweet2Vec: Learning Tweet Embeddings Using Character-level CNN-LSTM Encoder-Decoder(link)
    これは論文のタイトルを見た瞬間に印刷して読み始めました。タイトルではtwitterを強調していますが、その背景としては近年増加してきている短い文章をうまくモデリングできるようにすることがモチベーションとしてあるようでした。
    実際のモデルは、encoder-decoderをベースとしていて特徴の抽出の際にmax-poolingとCNNを複数層重ねており、その特徴を利用して二層のLSTMでtweetをdecodeしています。CNNを使用した特徴量の抽出の手法は割と一般的なものですが、短い文章の特徴を学習するのにencoder-decoderモデルを使用するというのは自分でもいろいろ試してみる価値があるなと感じました。

  3. Deep Convolutional Neural Networks for Sentiment Analysis of Short Texts(link)
    これもまた短い文章を対象にしているモデルを提案している論文ですね。目的としては極性分析を行っており、モデルの特徴としては短い文章は保持している情報量の少ないので一つの文章を文字レベル、単語レベルの二つの方法で埋め込んでからそれらを入力としてCNNを用いたモデルで学習をしています。
    論文内では、単語レベルの埋め込みがsyntactic, semantic informationを捉えているのに対し、文字レベルの方はmorphological, shape informationを捉えていることを期待しているとありました。ここで若干、単語レベル、文字レベルの埋め込みベクトルは異なる空間?に存在していそうなのに、それらをただ連結したものを入力としていたので本当にそれでちゃんと情報が保持されているの中は気になったところです。(タスクにおける精度はちゃんと出ていた。)

  4. Convolutional Neural Network Architectures for Matching Natural Language Sentences(link)
    本論文は二つの文章間の関係性のモデリングを目標としており、畳み込み層とpooling層を使用して文章の階層的な特徴を抽出しながら、文章間のパターンマッチングも複数レイヤーで行おうというものです。
    モデルはarc-1, arc-2と二つ提案されており、arc-1が二文章の特徴を独立に抽出してから全結合層を使用してマッチングを取っているのに対して、arc-2では最初に同じ畳み込み層を通す頃で、二つの文章をまとめ上げた後に特徴をCNNを使用して抽出し学習をしている。二つの文章のマッチングを学習するという意味ではarc-2で行われているものの方が直感的であり、実際に実験結果でも精度がarc-1に比べて高くなっている。

  5. Multichannel Variable-Size Convolution for Sentence Classification(link)
    この論文はタイトルに"Multichannel"と入っていたので、自分が最近興味を持っていることに近い内容かと思って読んでみたものです。
    内容としては一般的には埋め込み層は一つのみ用意し、word2vec等で事前学習された行列を初期値として使用することが多いが、本論文は複数手法で学習された分散表現を初期値として持つ埋め込み層をそれぞれ用意し、それらで生成された分散表現を一つの文章に対して複数チャンネルという形でネットワークへの入力とするものです。実際に使用された分散表現の初期値としては、HLBL, Huang, Glove, SENNA, Word2Vecの五つで学習されたものが使用されていました。
    結果として、自分が興味が持っていた手法とは異なる意味での"Multichannel"でしたが、NNでの学習の強みでもある気がしていた、複数の情報を同じオペレーションで扱うことができるということを再確認した論文でした。

  6. Convolutional Neural Networks for Sentence Classification(link)
    これはCNNがNLPに使用され始めた頃の論文らしく、引用数が非常に多く有名なものらしいです。
    モデル自体はCNNを使用した基本的なものなのですが、実験内容として二つの埋め込み層を用意して両方ともword2vecで事前学習された分散表現を初期値として保持しておくのですが、片方は学習の対象として更新され、もう片方あはword2vecの初期値のまま学習しないということをしており、その結果が非常に興味深いものになっています。詳しくは論文の最後の方を見ていただきたいのですが、word2vecの特徴の一つに、good/badやlove/hateが似たようなベクトルになるというものがあるのですが、SST-2という極性分類タスクを学習した後の埋め込み層から取り出した分散表現を見てみると、goodにはポジティブな属性、badにはネガティブな属性がちゃんと学習されているということが報告されています。


論文メモの方は以上になります。紹介したものを含め、CNNの自然言語への応用に関する論文をいろいろ読んでみてざっくりと感じたのは画像認識等Computer Visionで十二分に証明されていたCNNの特徴を抽出する能力は非常に優れているというものはNLPに関しても言えるのだなということでした。文章分類をはじめとしてデータ数が十分にあるようなタスクでは大きな成功を収めていることからもそれは伺えます。(pythonを使用した実装もいくつかしているので、それもいつかここにメモできたらなと思っています。)
これはデータと計算資源があればCNNをとりあえず試すべきということではあるのですが、大学四年生としてはそこでの筋肉勝負ではなく自然言語の特徴をうまく発見・利用できるモデルを考えたいなと思ってはいるのですが、具体的には何も案が出ていない状態です。
だんだん暑くなってきたので体調に気をつけつつ、引き続き勉強していこと思います。