皆さんこんにちは、@tereka114です。
画像処理の分野の方はお馴染みかと思いますが、画像処理では、Convolutional Neural Network(CNN)をよく利用されています。
このニューラルネットワークのアーキテクチャは画像処理の分野で非常に大きな成果をあげており、近年ではより、様々な分野に使われています。
例えば、CNNは音声や自然言語処理の分野でも時々、登場し、応用されています。
私自身が今まで興味があったのもあり、CNNを使った自然言語処理の論文を調べてみました!
少し長くなったので、前後編に分割してご紹介します。
今回はCNNを使った文書分類について記載します。
Convolutional Neural Network
Convolutional Neural Network(CNN)は画像処理でよく使われるニューラルネットワークのモデルです。
(http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdfより引用)
自然言語処理における畳み込みのメリットは次の通りです。
- 時間方向に畳み込みを行うため、時間方向の特徴を得られる。
- (RNNと異なり)計算を並列化できるため、高速である。
- 文脈上、遠い関係にある情報間の関係も学習できる。
今回、調べた論文を読んでみると、精度が改善されただけでなく、
性能も改善されている論文も多く見られます。
CNNと文書分類
Convolutional Neural Networks for Sentence Classification
この論文は学習済の既存の単語を埋め込みベクトル(100 billion words of Google News)を結合し、複数のフィルタサイズでの畳み込みを用いています。
畳み込みの構造で得られた結果に対して、Max Poolingを行い、文書を分類しています。
このニューラルネットワークのアーキテクチャで7個中4個のタスクで当時のState of the artを更新し、成果を上げました。
この結果は、既存の学習済の埋め込みベクトルを用いたため、CNNの設計が良かったことだけでなく、教師なしの良い特徴を得ることが重要であることを示しています。
逆に言えば、得られている特徴の質が悪いと、CNNの結果も悪くなるとも言えます。
A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification
CNNを用いた感情分析の実験を行っています。
その感情分析を行いつつ、CNNのパラメータチューニングにも触れられています。
1つ前の論文で紹介した「Convolutional Neural Networks for Sentence Classification」では、CNNを使い、精度向上ができたといった結果が得られました。
しかし、CNNはハイパーパラメータが多く、どのパラメータを調整するのが良いのか非常に難しいです。
本論文では、パラメータを変化させた場合の精度の実験を行い、どのパラメータを重点的にチューニングをするのかが良いのかの検証を行っています。
論文中では、畳み込む複数のフィルタサイズ、word2vecのモデルの重要性について議論されています。
Character-level Convolutional Networks for Text Classification
先程まで単語単位でCNNへ入力をしていました。
本論文では、文字(アルファベット)+一部の記号の埋め込みベクトルをCNNの入力しています。
今回は、分類におけるデータ拡張の工夫として、シソーラス(同義語集)を使った語彙拡張も利用しています。
LSTM, Bag of Wordsなど従来の手法と比較して精度が向上しているタスクが4種類あります。
Combination of Convolutional and Recurrent Neural Network for Sentiment Analysis of Short Texts
CNNとRecurrent Neural Network(RNN)を使った短いテキストの感情分析を行っています。
短いテキストは伝えたい情報の細部を省略していることもあり、テキスト上の情報が少なくなる傾向があります。
局所特徴を取得することのできるCNN、そして、長期的な依存関係を獲得できるRNNを組み合わせ、2つのアルゴリズムの特性を活かすニューラルネットワークを構築しました。
word2vecで得られた単語の特徴量を用いて、畳み込みます。
畳み込みで得られた出力に対して、LSTMやGRUを使い、最後に分類を行います。
この手法により、MR, SST1 and SST2のデータセットでState of the artを取得しました。
Language Modeling with Gated Convolutional Networks
CNNにゲートを付与した構造が新規性に該当する部分です。
この構造をGated Linear Unit(GLU)と表現しています。
次の(1)と表現されている式が提案手法部分に該当します。
埋め込みベクトルに対して、Residual Networkに近しいゲート構造を構築しています。
※はsigmoid関数を示しています。
本提案手法を用いて、WikiText103 benchmarkでState of the artを獲得し、更にGoogle Billion Wordsと呼ばれるデータセットで評価しています。
これにより、従来のネットワークより収束が高速であること、そして、精度も高い手法であることを実験しました。
Very Deep Convolutional Networks for Text Classification
画像処理では非常に深いニューラルネットワーク(ResNetなど)が利用されています。
自然言語処理の分野では、そこまで深いネットワークが従来まで使われていませんでした。
VDCNNと呼ばれるResNetでも利用されているShort-cut構造を使い、ニューラルネットワークを深くしたアーキテクチャを提案しました。
従来のテキスト分類のデータセットを比較し、State of the artを超えています。
本論文ニューラルネットワークの構造の場合は、層が深いニューラルネットワークの方が精度が高い、そして、Short-cutの有無を比較し、Short-cut構造の効果があるといった実験結果が出ています。
Do Convolutional Networks need to be Deep for Text Classification ?
文書分類のCNNが深い必要があるか?といった研究。
従来の浅いニューラルネットワークとDense Netを参考にして、構築した深いニューラルネットワークを比較しています。
複数の文書分類のデータセットに対する実験の結果、
単語埋め込みのベクトルを用いたShallow Wide Networkが良い結果とのこと。
画像系のタスクとは異なり、単純に畳み込み層が深ければ良いといった傾向ではないことがわかります。
最後に
Convolutional Neural Networkは様々な分野で利用されており、自然言語処理の分野における活用の文書分類を紹介しました。
色々な論文を探してみると、様々なCNNのアーキテクチャが出てきて非常に勉強になりました。
次の後半では機械翻訳、その他系列ラベリングなどのタスクを紹介しようと思います。
参考文献
Acroquest Technologyでは、キャリア採用を行っています。
- ビッグデータ(Hadoop/Spark、NoSQL)、データ分析(Elasticsearch、Python関連)、Web開発(SpringCloud/SpringBoot、AngularJS)といった最新のOSSを利用する開発プロジェクトに関わりたい。
- マイクロサービス、DevOpsなどの技術を使ったり、データ分析、機械学習などのスキルを活かしたい。
- 社会貢献性の高いプロジェクトや、顧客の価値を創造するようなプロジェクトで、提案からリリースまで携わりたい。
- 書籍・雑誌等の執筆や、対外的な勉強会の開催・参加を通した技術の発信、社内勉強会での技術情報共有により、エンジニアとして成長したい。
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
データ分析案件で時系列データの異常検知に挑戦したいエンジニアWanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com