「深層学習による自然言語処理」読解まとめ|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #1

f:id:lib-arts:20190321155845p:plain

基本的な言語処理の概論については、実務の観点で使えそうな考え方にフォーカスしつつ以下の記事でまとめました。

特徴語抽出とtf-idf|実践的自然言語処理入門 #2 - lib-arts’s diary

分散表現とWord2vec|実践的自然言語処理入門 #3 - lib-arts’s diary

cos類似度と文書分類|実践的自然言語処理入門 #4 - lib-arts’s diary

極性辞書を用いたネガポジ分析|実践的自然言語処理入門 #5 - lib-arts’s diary
だいたいの大枠はまとめられたので、新シリーズでは近年猛威を振るっているDeepLearningの言語処理への応用についてまとめていければと思います。2014年にRNN的なモデルを拡張して翻訳モデルに適用したSeq2Seqが出てきたり2018年に言語処理用の事前学習モデルであるBERTが出てきたりなど、様々な分野で研究が進められています。
#1では最近のトレンドに入っていく前に概論について抑えようということで、2015年〜2016年頃までのトレンドを概論とともにまとめた「深層学習による自然言語処理」の内容を要約を行いたいと思います。こちらを課題本とした理由は単にトレンドを追うにとどまらずベースの理解も手助けしてくれるような内容になっているからです。具体的には1,3,5章の要約を行います。
以下目次になります。

1. 自然言語処理のアプローチ(Ch.1)
2. 言語処理における深層学習の基礎(Ch.3)
3. 応用(Ch.5)
4. まとめ


1. 自然言語処理のアプローチ(Ch.1)
課題本の1章では、自然言語処理NLP; Natural Language Processing)の概論と深層学習への期待についてまとめられています。
まず1.1節では伝統的な言語処理の典型的な応用タスクとして、文書分類(document categorization)、機械翻訳(machine translation)、文書要約(text summarization)、質問応答(question answering)、対話(dialog)などが挙げられています。この応用タスクに対し伝統的な言語処理では、部分問題に分解して整理して解く方法を模索してきました。
部分問題は具体的には以下のようなものがあるとされています。

・品詞タグ付け(part-of-speech tagging)
・単語分割(word segmentation)
・語義曖昧性解消(word sense disambiguation)
・固有表現抽出(named entity extraction)
構文解析(syntactic parsing)
・述語項構造認識(predicate-argument recognition)

先人の多大な努力により問題定義や理解が進み、共通に使える部分問題のベンチマークなども整備されるようになり、解析性能がは年々向上を見せてきています。
一方で、伝統的な自然言語処理には部分問題へ分割されたことによって引き起こされた課題があり、それは部分問題へ最適化された各言語解析は複雑な依存関係を持っており、応用に向けて全体を最適化するのが困難になっている点です。このことが使いこなすにあたっての難しさ、分野適応(domain adaptation)の難しさ、パイプラインの依存性の難しさなど応用にあたっての大きな障壁となっています。
この困難性を受けて、1.2ではDeepLearningへの解決の期待についてまとめられています。DeepLearningを用いることで、部分問題への深い知識がなくとも全体最適ができる可能性に期待が集まっています。特にこれまで部分問題にどのように分解すべきかわからない問題において活用が期待されています。一方で、DeepLearningを使う欠点として「ブラックボックス」化する課題についても言及されています。
1.3ではテキストデータの特徴として、「単語」を処理の単位(token)とするなどが挙げられています。
1.4では他分野の広がりとしてテキスト以外の可変長の記号列の問題について言及されています。


2. 言語処理における深層学習の基礎(Ch.3)
3章ではDeepLearningの話題の中で自然言語処理分野の特徴的な題材となる言語モデルに関する話題が取り上げられています。
3.1では記号(単語 etc)とベクトルの変換にあたって1hotベクトル(1-of-Kベクトル表現)の導入がされています。0が並ぶベクトルの中でidに対応する1つの要素のみが1のベクトルを1hotベクトルと呼んでいます。1hotベクトルは以前のシリーズの#1で触れたBoWと類似の表し方なので合わせて押さえておくと良いかと思います。

3.2では確率的言語モデル(Probabilistic Language Model)について取り扱われています(言語モデルとだけ言われることの方が多いので、以下言語モデルと表記します)。言語モデルにおいてはYを文、y_{t}を文を構成する単語として、Y=(y_{0},y_{1},...,y_{t},y_{t+1})とした時にP(Y)を同時確率で考えるとこの複雑さは、語彙数を底、単語数を変数とする指数関数となってしまい直接取り扱うのが難しいです。そのため、言語モデルは条件付き確率の式で以下のように表すことが多いです。
P(Y)=P(y_{0})\Pi_{t=1}^{T+1}P(y_{t}|Y_{(0,t-1)})
ここでy_{0}y_{t+1}は課題本ではそれぞれ文頭を表すBOS(beginning of sentence)と文末を表すEOS(end of sentence)としています(ここは定義の問題なので、必ずしも必要ではない気もしますが、この表記の方がわかりやすいと思います)。またこの言語モデルニューラルネットワークを用いたものをニューラル言語モデルと呼んでいます。
3.3では深層学習における言語処理分野の特徴的な話題の1つとして分散表現(distributed representaition)について取り扱われています。分散表現は1-of-K表現(離散オブジェクト)をD次元ベクトルで表現したもののことです。分散表現は1-of-K表現を空間に埋め込む操作と見なせるので、単語埋め込み(word embeddings)と呼ぶ場合もあります。単語からベクトルに変換するので、Word2Vecも同様のことを表しています。またここで単語埋め込みをRNN系の視点でみると、エンコードデコードのエンコードにあたると認識しておくと、深層学習と分散表現についての考察も深まります。分散表現については以前のシリーズの#3でまとめていますので、こちらも参考にしていただけたらと思います。

3.4では系列変換モデル(seq2seq; sequence-to-sequence model)について紹介されています。系列(sequence)とは、文などのデータの連なりをより抽象的に捉えたものです。この辺はSeq2Seqの論文まとめでも言及したので、こちらも参考にしていただければと思います。

 

3. 応用(Ch.5)
5章では深層学習による発展を遂げた応用について紹介されています。
機械翻訳(5.1)、文書要約(5.2)、対話(5.3)、質問応答(5.4)に関してそれぞれまとまっていますが、応用レベルでの成果の記載が多い、5.1の機械翻訳についてのみまとめます。
5.1の機械翻訳(MT; Machine Translation)では、統計翻訳(SMT; statistical machine learning)からニューラル機械翻訳(NMT;Neural Machine Translation)が2015年、2016年で研究の大きな以降が起こったことをまとめています。コンテスト形式の機械翻訳国際会議であるWMT15、WMT16においてニューラル機械翻訳が統計翻訳を大きく上回る結果を挙げたということがきっかけに挙げられることが多いとされています。


4. まとめ
改めて読み返しましたが、新興の話題とfundamentalな内容をバランスよくまとめており、非常に良い本だったと思います。
とはいえ、出版が2017年の1月であり、その後のトレンドについては入っていないため、#2以降ではその後の話題も含めて取り扱っていければと思います。

 

↓また、当記事のシリーズの内容を元に再構成と少しだけ加筆を行い電子書籍化を行いました!pdf版が欲しいなどありましたら下記をご購入いただけたら大変嬉しいです!!