Taste of Tech Topics

Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Convolutional Neural Networkを使う自然言語処理論文読破に挑戦!(後編)

皆さんこんにちは、@です。

数ヶ月前にConvolutional Neural Networkを使う自然言語処理論文の文書分類について紹介しました。
acro-engineer.hatenablog.com

今回の後編では機械翻訳や系列ラベリング、そして、その他利用されている分野を紹介します。

Question Answer

QANet: Combining Local Convolution with Global Self-Attention for Reading Comprehension

f:id:acro-engineer:20180428205111p:plain:h250

Recurrent Neural Network(RNN)は畳み込みと比較して計算時間がかかることが知られています。
そのため、畳み込みやSelf-Attentionを用いる構造を使って、高速化を行いました。

RNNと比較し、学習時で最大13.3倍、推論時で8.9倍の高速化を実現しました。
畳み込みが局所的な特徴、Self Attentionが大域的な特徴を獲得しています。

ニューラルネットワーク以外で面白いと思ったアイデアはデータを増加している部分です。
QAデータ(質問と回答のデータ)を機械翻訳を活用して増加させています。
例えば、英語 ⇒ フランス語 ⇒ 英語と翻訳することで、「原文とは異なる文章、かつ、同じ意味」の英語を生成しています。
このタスク以外でも自然言語のタスクであれば、応用できる方法です。

https://arxiv.org/abs/1804.09541

機械翻訳

Quasi-Recurrent Neural Networks

f:id:acro-engineer:20180424085048p:plain:h200
CNNを使って、高速な機械翻訳を行う論文です。
タイトルにはRecurrent Neural Networkと書いてありますが、利用しているアーキテクチャはCNNです。
CNNを用いて、擬似的(Quasi)にRNNを実現しています。

CNNの畳み込みでLSTMが持つ隠れ層や出力層、セルを表現しています。
畳み込みの後にf-pooling, fo-pooling, and ifo-poolingと呼ばれるPooling手法がLSTMにある構造の表現に該当します。(論文中式(3)〜(5))
Poolingに畳み込みと要素積を用いており、従来まで利用されているLSTMの実装と比較して高速な演算が可能です。
LSTMと比較し、性能が3倍高速化し、更に精度も向上しています。

https://arxiv.org/abs/1611.01576

Convolutional Sequence to Sequence Learning

f:id:acro-engineer:20180430110938p:plain:h250

InputとDecoder(左下)の埋め込みベクトルに畳み込みを行います。
これに前編で紹介したGLUの手法を用いて特徴量を獲得します。

Multi-step Attentionと呼ばれる構造で各予測のタイミングでAttentionを計算しています。
Multi-step Attentionは人間で言えば、翻訳時振り返って単語を探す行為と同様と主張しています。
最後にAttentionの計算結果とDecoderの結果を使って、次の翻訳単語を予測します。

こちらの記事に詳細なキーアイデアの紹介が記載されています。
https://code.facebook.com/posts/1978007565818999/a-%20novel-approach-to-neural-machine-translationcode.facebook.com

https://arxiv.org/abs/1705.03122

分かち書きなどの分割

Convolutional Neural Network with Word Embeddings for Chinese Word Segmentation

Chinese Word Segmentation(CWS)のタスクでは、既存の手法でも精度よく中国語の分かち書きができています。
この論文では、従来までの手法について、2つの課題があることを述べ、それに対するアイデアを提案しています。

  1. bigramなどの特徴量を人間の手で設計する必要がある。
    畳み込み演算を使い、人間による特徴量設計を行わず、特徴量を獲得しています。
  2. 言語が持つ情報を使い切れていない。文字と単語の情報の組み合せ、単語の特徴量を獲得しています。

この工夫により、PKU, MSRデータセットでState of the artを達成しました。

http://aclweb.org/anthology/I17-1017

A Deep Convolutional Neural Model for Character-Based Chinese Word Segmentation

入力文の各位置の表現を行うPosition Embedding Module、複数の下位表現を組み合わせた位置表現の役割を持つDeep Representation Module、最後にTag Scoring Moduleによりタグ付けを行います。
畳み込みを用いることで、階層的な表現を獲得することを目的としています。

このニューラルネットワークでは、複数のタスクを学習するMulti-task Learningにより標準的な特徴量を獲得しています。
ただし、データセットによって文書の分割の基準が異なることから、異なるデータセットを同様のTag Scoring Moduleで判定していません。

そのため、Tag Scoring Moduleに関して各々のタスクで再学習を行っています。

http://tcci.ccf.org.cn/conference/2017/papers/1075.pdf

Image Caption Generator

Image Caption Generatorは画像を入力として与えた場合、説明文を生成します。
一般的な手法は画像特徴の抽出にCNN, 文書生成にRNNを利用する方式です。
今回は、画像特徴・文章生成を共にCNNで行った手法を紹介します。

Convolutional Image Captioning

f:id:acro-engineer:20180730224543p:plain:h250

従来までのLSTMを用いた方式では、勾配消失問題が問題になっていました。
近年の翻訳や条件付き画像生成の研究では、畳み込み演算を用いて勾配消失が起きないようにしています。
その流れによってImage CaptioningにもCNNを適用しています。
CNNを用いることで1パラメータ辺りの学習時間は高速になっています。

LSTMとCNN間の交差エントロピー誤差を比較していますが、誤差の値はLSTMより非常に高いグラフとなっています。
しかし、単語の一致度ではCNNと同程度の性能を発揮しています。
CNNの方が、情報量が多いことがこの事象の理由としていますが、非常に面白い結果だと思います。

[1711.09151] Convolutional Image Captioning

その他

Improving Word Embeddings with Convolutional Feature Learning and Subword Information

f:id:acro-engineer:20180426225532p:plain:h250

Convolutional Neural Networkとsubword(部分語)の情報を使い、Word Embeddingの精度改善を行っています。
部分語はTri-Gram、接頭語、接尾語、-s, -ingなどを変化なしに変換した語(inflectional Affix)を用いたベクトルの生成を行っています。
そして、誤差関数は周辺単語から得られたContext VectorとWord間の距離(Similarity and Not Similarity)を考慮した計算式になっています。

この手法は類似語検索やWord AnalogyのタスクでState of the artを取得しています。

https://www.aaai.org/ocs/index.php/AAAI/AAAI17/paper/download/14724/14187

最後に

Convolutional Neural Networkは様々な分野で利用されており、自然言語処理の分野における活用を紹介しました。
画像処理の論文が多く、自然言語処理の論文は意識しないと読まないので、畳み込みやRNNの課題などを勉強する良い機会となりました。
自然言語処理に適用するにあたり、CNNの利点を工夫して活かそうとしているのが良いと思っています。

自然言語処理において、Recurrent Neural NetworkかConvolutional Neural Networkのどちらが主流になるか
まだまだわからないので、引き続き追いかけようと思います。

参考文献

  1. Convolutional Neural Netwoks で自然言語処理をする
  2. A novel approach to neural machine translation – Facebook Code
  3. [DL輪読会]Convolutional Sequence to Sequence Learning

Acroquest Technologyでは、キャリア採用を行っています。


  • ビッグデータHadoop/Spark、NoSQL)、データ分析(Elasticsearch、Python関連)、Web開発(SpringCloud/SpringBoot、AngularJS)といった最新のOSSを利用する開発プロジェクトに関わりたい。
  • マイクロサービスDevOpsなどの技術を使ったり、データ分析機械学習などのスキルを活かしたい。
  • 社会貢献性の高いプロジェクトや、顧客の価値を創造するようなプロジェクトで、提案からリリースまで携わりたい。
  • 書籍・雑誌等の執筆や、対外的な勉強会の開催・参加を通した技術の発信、社内勉強会での技術情報共有により、エンジニアとして成長したい。

 
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。
データ分析案件で時系列データの異常検知に挑戦したいエンジニアWanted! - Acroquest Technology株式会社のエンジニア中途・インターンシップ・契約・委託の求人 - Wantedlywww.wantedly.com