深層学習による自然言語処理
1、自然言語処理のアプローチ
言語解析タスクには、品詞タグ付け、単語分解、語義曖昧性解消、固有表現抽出、構文解析、述語項構造認識などの部分問題のベンチマークデータなども整備されてきたが、部分問題に複雑な依存関係を持っており、応用に向けて全体を最適化するのか困難になっています。よって、自然言語処理技術を使いこなすには部分問題を全て理解する必要があります。また、訓練データと違う種類のテキストを解析すると大幅に解析精度が下がるため、適用先のテキストデータを使って再学習する分野適応が必要になります。大規模な訓練データを使用して学習されたニューラルねっとは伝統的な言語解析機を絶妙に組み合わせて構築された手法と同程度または上回る性能を示した。これまで、どのように部分問題を組み合わせて良いかわからない問題において活躍が期待されている。
テキストデータは定義は自明ではなく、また可変長であることが特徴である。
商品と商品IDとの対応や、購買履歴も可変長でテキストと同一視できる。分子構造の生成モデルや変換モデルを学習して創薬に繋げる試みもある。
2、ニューラルネットの基礎
深層学習は機械学習の中で、何層にもなるニューラルネットを関数近侍に使う手法のことです。学習とは最適化アルゴリズムを使ってある関数を最小化するパラメータ値を求める最適化問題と捉えることもできます。損失関数には交差エントロピー損失やヒンジ損失がある。交差エントロピー損失と呼ばれる所以は、真の分布とモデルとの距離を表す交差エントロピーを訓練データで経験近似していることになっているからです。
3、言語処理における深層学習の基礎
画像認識や音声認識といった他分野と比較して、自然言語処理分野で利用される深層学習の処理対象は離散的な記号であるという点が1つの大きな特徴になります。ニューラルネットで扱うためには、記号の世界から数値連続領域の世界へ変換する必要があります。行列Eは埋め込み行列といい、one-hot vectorをかけて得られたベクトルを埋め込みベクトルと呼ぶ場合があります。ベクトルを言語の世界に戻す場合は、ソフトマックス関数にスケーリング定数を導入したものを考えるときもある。言語モデルとは、人間が扱う自然言語で書かれた文書が生成される確率をモデル化したものです。文頭を表す仮想単語をBOS、文末を表す仮想単語をEOSと言います。言語モデルはニューラルネットを用いる方法を除くと、依存する文脈長を固定したNグラムモデルが最も多く用いられてきました。ニューラルネットを用いた言語モデルをニューラル言語モデルと言います。Nグラムモデルに比べてニューラル言語モデルは圧倒的に学習コストが高い。ただし、精度はニューラル言語モデルの方が高い。言語モデルにおいて、ある単語の出現確率を計算する際に用いる周辺の単語を文脈という。言語モデルは直前に出現したいくつかの単語を文脈として次の単語の出現確率をモデル化したものと言えるので、条件付き確率に分解することができる。順伝播型ニューラル言語モデルでは、前C単語だけを入力とし、順伝播型ニューラルネットを用いてt番目の単語の出現確率をモデル化します。ニューラル言語モデルの出力は、出力層のベクトルの各次元を、対応する単語番号の単語が生成される尤度と考え、そのベクトルにソフトマックス関数をかけた値を確率として用います。
再帰ニューラル言語モデルは文脈長を固定することなく可変長入力を自然に扱うことができるため、言語モデルのように系列データをモデル化するのに適しています。
言語モデルの評価にはパープレキシティが用いられます。パープレキシティは次の単語を予測する確率分布にどれだけばらつきがあるかを評価していると解釈できる。言語モデルがデータに適合している良い言語モデルの確率分布はデータと一致する次の単語にだけ高い確率を持ったばらつきの小さい分布になると予測できます。程頻度の単語は未知語を表す仮想単語に変換し、評価から除くことが一般的です。言語モデルの生成確率に基づいて単語をサンプリングすると、それっぽい文を作ることができます。一般的には文の終わりを表すEOSが予測されたところで文が完成したを皆し、サンプリングを終了します。与えられた文に対して確率を計算することに言語モデルを用いる場合と、文を生成するために用いる場合とでは原理的に大きく異なるということを認識する必要があります。文字単位の言語モデルもあります。分散表現とは、各離散オブジェクトにD次元ベクトルを割り当て、D次元ベクトルで表したものになります。離散表現を分散表現に変換する処理過程は、離散オブジェクトをベクトル空間内に埋め込む操作と捉えることもできます。つまり、離散オブジェクトを類似度や関連性を計算する道具として利用するというのが分散表現の中心的な考え方となります。分散表現と局所表現は対になる単語である。分布仮説とは、単語の意味はその単語が出現した際の周囲の単語によって決まるという考え方です。ニューラル言語モデルは、ニューラルネットの研究分野でいうところの分散表現を獲得するのに、自然言語処理でいうところの分布仮説を用いて獲得していると解釈できます。分散表現を獲得する方法とは、普通にニューラル言語モデルを学習するという方法です。word2vecというモデルは実際には存在せず、skip-gramとCBoWという2種類のモデルを総称して用いられている用語です。これはword2vecという名のツールにこの2つのモデルが実装されているのに由来します。skip-gramは入力単語が1つだけ与えられる際のCBoWの特殊系とみなせることがわかります。これらのモデルを総称して、対数双線形モデルと呼びます。対数双線形モデルは1層のみで構成されるニューラル言語モデルと解釈することができます。これは対数双線形モデルがニューラル言語モデルの計算量の問題を軽減するために考案された方法論であるという位置付けになる理由です。語彙数に対する計算の高速化の方法として、例えばword2vecツールでは階層的ソフトマックスと負例サンプリングの2種類の方法が実装されています。負例サンプリングが現在の主流です。(GANと似ている?)分散表現の獲得法としては、2017年現在では、word2vecツールを利用するのが安定的でよいという考えが主流になっています。単語以上の単位は今の所はうまい分散表現が獲得できていません。系列変換モデルは、文から文への変換です。ある入力系列Xが与えられた時にある出力系列Yへ変換する条件付き確率を考えます。これをモデル化したものが系列変換モデルです。系列変換モデルは、出力系列の各位置jでyjが生成される条件付き確率の積で構成されるモデルとします。驚くべきことに、系列変換モデルと再帰ニューラル言語モデルの違いは、初期値をどのように設定するかの違いだけと解釈することもできます。モデルは、符号化器埋め込み層、符号化器再帰層、復号化器埋め込み層、復号化器再帰層、復号化器出力層となる。復号化器埋め込み層では、必ず位置を1つずつずらして処理を行う必要がある。系列変換モデルでは、最適解は無限の計算量がないと計算できないので貪欲方もしくはビーム探索がよく用いられています。貪欲方はビーム探索のk=1の時のもの。系列変換モデルの課題として、exposure biasという課題がある。というのも、学習の時は答えの1つ前の単語がわかるが、予測する時は予測したものを利用しなければならないからである。つまり、一度間違いがあると、その間違いを引きずってしまう。構文解析は一見すると、系列変換モデルでは扱えなさそうだが、木構造をS式で表現することで系列変換モデルとして扱うことができる。また、復号化器の入力を画像の特徴量などを用いることで画像キャプションなどを行うことができます。
4、言語処理特有の深層学習の発展
LSTMモデルを用いても、長い系列の扱いが難しくなるので、直接的に入力情報を出力時に利用する仕組みである注意機構があります。複数のベクトルがあった時にどのベクトルを重要視するかも含めて学習させる仕組みのことを注意機構と呼びます。通常の系列変換モデルでは最後の状態出力のみを使って復号化を行いましたが、x1の情報は関数を系列長回適用される間、ずっと保持される必要がありますが、もっと直接的に伝達することを可能にしたのが注意機構です。有限個の標本で近似することをモンテカルロ法とおいいます。注意機構には、ソフトとハード、局所があります。記憶ネットワークは、記憶したい事項を書き込み、また必要な時に読み込みという操作をモデル化しています。記憶ネットワークは内部にN個の記憶情報を列として持ちます。この内部は、I:入力情報変換つまり入力された情報を内部表現に変換する、G:一般化つまり新しい知識源の情報を利用して内部の記憶情報を更新する、O:出力情報変換つまり内部の記憶情報を利用して外からの質問に対して返答のための内部表現を生成します、R:応答つまり出力情報に適切な返答に変換の4つの部品に分解してモデル化します。記憶情報を使う一般かの部分を除けば、入力情報変換は符号化器に、出力情報変換と応答が復号化器に対応していると考えることができます。全体として重要なのは出力情報変換で、この部分が記憶情報を元して返答を考える部分となる。この学習方法ではどの記憶を参照するかという中間的な部分課題の解が全てわかっていると仮定して学習を行いましたが、実際は中間的な課題の解が明示的にわかることは稀です。基本的な考えとしては、全ての部品が微分可能な関数の形でかけるとしたらendtoend記憶ネットワークの学習ができるということです。endtoend記憶ネットワークでは、記憶集合に足して注意気候を利用して情報を引き出します。動的記憶ネットワークはエピソード記憶という機構を加えたものです。出力層の高速化には重点サンプリングや雑音対象推定、負例サンプリング、ブラックアウト、階層的ソフトマックスなどがある。
5、応用
機械翻訳
時代とともに、ルールベース翻訳、用例ベース翻訳、統計翻訳ときてニューラル翻訳が登場しました。
現在、ニューラル翻訳で用いられている典型的なモデルを1つ紹介します。注意機構付き系列変換モデルがニューラル翻訳を含めた機械翻訳のベースラインと考えられるようになってきました。
ベースラインとしてよく利用されるツールとしては、GroundHog、OpenNMTがあります。
機械翻訳タスクのテーマとしては、語彙数の問題があります。未知語をどのように扱うかも問題になっています。統計的翻訳時代の考え方では、未知語と判定されたものは後処理で何かの語に置き換えるという方法が用いられます。ニューラル翻訳に移行してからは、入出力の単位を単語ではなく文字にしてしまうという方法も用いられます。ただし、系列長が単語の時と比べて圧倒的に長くなるという問題があります。また、バイト対符号化という方法も提案されており、この方法は、与えられたデータを使い出現頻度が最も大きい文字ペアを1つの文字としてまとめるという処理を繰り返し行い、事前に決めた語彙数になるまでその処理を続けるという方法です。文字単位、バイト対符号化、単語単位の3種類のうち、どれが翻訳制度や計算時間などで総合的に優れているかの決着は現時点ではついていません。また、ニューラル翻訳の問題として、同じ単語やフレーズを繰り返し生成してしまう過剰生成問題や元の文の必要な語やフレーズを無視してしまう不足生成問題があります。これは注意機構を使っていても復号化器が実際に入力文のどの部分を翻訳したかという情報を知らないため引き起こされる問題です。この問題を解決するために被覆という概念を導入する方法が提案されています。この概念は統計翻訳時代には普通に使われていた概念ですが、ニューラル翻訳に移行した際に一旦忘れられました。それは、ニューラル翻訳にこの概念をうまく導入する方法はそれほど自明ではなかったからです。具体的には注意機構で計算される注意確率を利用します。注意機構で計算される確率は復号化器の時刻jで得られた固定長ベクトルが入力文のどの部分と適合するかの確率を計算したものになります。つまりこの確率の合計が復号下記の処理が終わった時に何らかの値になるように学習を行います。研究の余地は非常に多く残されている研究領域で、どのような方向性が有望そうかという感覚を身につけて独自技術を開発する必要があると考えられます。
文書要約
文書要約では、訓練データの問題とタスク定義の曖昧さという2つの課題がありました。というのも、機械翻訳に比べて多くの訓練データが必要であるということと、どの程度要約すればいいのかという基準が明確ではないからです。
もう少しタスクを簡単にして、ニュース記事の1文目を入力として、そこから見出しを生成するようやく問題が考えられました。このタスクはデータの調達が簡単で、機械翻訳と同等のデータ量でタスクができると思われたからです。
ニューラル翻訳で使われる系列変換モデルと文書ようやくタスクで使われるモデルは基本的に同じもので問題ないということがこれまでの研究成果でわかってきました。しかし、文書要約の特徴に合わせてモデルを改良した方法もいくつか提案されています。
1つ目の話題として、要約文長の制御に関する話題があります。
2つ目の話題として、意味表現の利用があります。AMRと呼ばれる意味表現に対する符号化器を提案し、その意味表現から得られた符号を符号化復号化モデルに追加することで、見出し生成タスクの性能向上に取り組んでいます。このARMを木構造LSTMの一種を用いて符号化し、得られた符号を注意機構の枠組みで復号化木に受け渡すようにしています。
3つ目にコピー機構があります。文書ようやくタスクでは入力側に出現した単語そのものを出力として利用することが多いです。機械翻訳タスクと比較すると文書要約タスクは同じ言語であるがゆえにその割合は圧倒的に大きくなります。よって、入力側の情報を効果的に出力側で利用する方法論が提案されています。具体的には、注意機構で計算される確率や各入力単語がコピーされる確率を計算し、その確率に従って入力単語をそのまま出力するかを決定する方法になっています。
対話
旅行案内など特定のタスクを目的としたタスク思考対話システムは言語の認識・対話の状態管理・言語の生成など個別のサブシステムの組み合わせで構成されてきた。近年は、ニューラルネットに基づく手法で人の発話などを入力として応答を出力とするシステムを直接学習することが行われてきました。自然な会話の記録があれば学習できることが利点の1つです。機械翻訳の枠組みで大規模な対話データを使って対話システムの学習が可能になることは示されていました。ここではテキストによる会話について説明します。文章が与えられた時の応答の条件付き確率をモデル化しているとも言えます。入力に対する妥当な出力の多様性が多いので自動評価が問題になります。応答生成を直接行わず、複数の応答候補群から正しい参照応答を選択する応答選択タスクによる評価法も提案されています。
質問応答
質問応答といっても様々な種類があり、事実型質問応答と非事実型質問応答がある。非事実型の方が難易度は高い。対象とする分野の違いとして、クローズドドメイン質問応答や、オープンドメイン質問応答がある。また、近年は、画像質問応答や、文書読解などの新しいタスクも登場している。
質問応答は非常に複雑なので、質問解析が行われ、関連文書が検索され、検索結果から回答候補の抽出を行い、最後にそこから回答を抽出します。
深層学習を回答選択タスクに適用する場合、多くの手法は質問文と回答候補を選択するという方法をとります。この問題は、Nこの回答候補から1つを選択する分類問題の一種と捉えることもできます。深層学習を回答選択タスクに適用する場合、多くの手法は質問文と回答候補をそれぞれベクトル化し、できたベクトルを使って回答としてふさわしいかの得点を計算するという方法です。工夫の鍵となるのは質問文や回答候補をベクトル化する方法とできたベクトルから得点を計算する部分となります。ベクトルかの方法としては双方向LSTM、木構造再帰ニューラルネット、畳み込みニューラルネットといった手法がああります。質問文と回答文ベクトルができたらこれらを使って損失を計算します。類似度関数によって類似度を計算する。重み付き近似順位ペアワイズ損失はTripletLossと同じような気持ち?回答選択問題の評価は、平均適合率の平均や平均逆順位で評価されることが一般的です。回答選択のように、質問応答の部分問題に深層学習を適用する研究がある一方で、質問応答全体を単一のニューラルネットで解決しようとする研究もあります。この時質問応答を実施するための知識源の情報もニューラルネットで扱う必要があり、知識の元になる外部の情報を扱うために記憶ネットワークを適用する研究も行われています。知識ベースとは機械可読な形で知識に相当する情報を蓄えた仕組みのことです。具体的な知識ベースの例として、FreeBaseやDBpediaといったデータが整備されています。いずれの知識ベースも主語、述語、目的語の3つの組みの巨大な集合となっており、グラフデータで表されています。
6、汎化性能を向上させる技術
汎化誤差は、モデルの表現力が足りないことによる近似誤差と偏った事例を使ったことによる推定誤差、目的関数を最小化するアルゴリズムによる最適化誤差の3つがある。非常に多くの深層学習関連手法が提案されているので、全てを試すのは不可能で、本章ではこれらの3つの誤差についてそれぞれ誤差提言に効果のある手法を紹介します。
典型的な対処方法としては、近似誤差が大きい時はパラメータを増やして自由度を上げる、推定誤差が大きい時は訓練データを増やすかパラメータを減らす、最適化誤差が大きい時は洗練された最適化アルゴリズムを使うなどの対処法があります。近似誤差は、幅や深さを増やすことで比較的容易に減らすことができ、深層学習ではそれほど問題となることはありません。それなので、推定誤差と最適化誤差を減らす手法を紹介します。
推定誤差は、正則化、早期終了、学習立元帥、パラメータ共有、事前学習、アンサンブル、ドロップアウトなどがある。
最適化誤差は、初期値設定、活性化関数の選択、カリキュラム学習、正規化、確率的勾配法の拡張などがある。
ハイパーパラメータ選択
ハイパーパラメータ選択は、グリッド探索やランダム探索、ベイズ的最適化などがある。
7、実装
GPUとGPGPU
GPUは同じ処理を大量・並列に行うことに特化している。GPUは多くのコアで計算を早く行うが、1つのコアの性能はCPUに比べて低いので、一つ前の単語に依存した単語生成などの依存関係のあるタスクはCPUが得意とする。言語モデルの学習は依存関係のない大量の計算なのでGPUが得意とする。CPUとGPUのデータのやり取りはインターフェースを介して行われるが、これが律速になって計算効率が上がらないこともあります。複数のデータに対して同時に同じ処理を行うことで並列度を上げることもできます。対象のデータが全く同じ形式の場合、ミニバッチ化は簡単ですが、自然ぶんは文調が異なるためデータの形式も異なり、特別な工夫が必要になります。解決策として、RNNで同一文長でまとめる、パディング、文長でソートする、バケッティングがある。
多層RNNは時間的に1つ前の層と空間的に1つ前の層が依存しないのを利用して、これらを並列に計算することで速度を向上することができる。
時間方向に順番に演算をせずに、一度に計算できるだけ行列情報を読み込んで計算することでRNNを高速化するのを持続性再帰ニューラルネットと言います。
RNNに比べると、複雑な構造を持った木構造再帰ニューラルネットをミニバッチ化させることは困難です。というのも木構造再帰ニューラルネットは各データに対する計算順序が全く異なるからです。しかし、スタックを利用して木構造に対する計算を繰り返し計算に変換することでミニバッチ化することができます。
無作為抽出
任意の確率分布から無作為抽出を行うにはどうすれば良いでしょう。累積分布関数の逆関数が分かっている場合、逆関数法を利用する方法があります。
また、ガンベル最大トリック、別名法などといった方法もあります。
メモリ使用量の削減
深層学習の実装には多くの場合自動微分ライブラリを使うことになりますが、この時メモリ使用量が問題になります。
誤差逆電波を行うためには、誤差逆電波を実行する順序を示す依存関係のグラフを構築する必要があります。このグラフを計算グラフと言います。多くの深層学習向けのライブラリでは、先に計算過程を定義して計算グラフを構築し、できたグラフ構造を使って順電波と逆電波を行います。一方、順伝播を行った時に計算過程を記録して、動的に計算グラフを構築してから逆電波処理を行う時モアあります。前者は静的グラフと言い、後者を動的グラフと言います。動的グラフの場合、先に計算グラフを作るので、できた計算グラフに対して最適化をかけやすい。一方静的グラフの場合、データの中身を見る前に計算グラフを構築する必要があるため、データによって計算グラフを変えることが難しくなる。このように、自然言語処理で扱うような対象のデータの構造をうまく生かしたネットワーク構造を扱うのに苦労します。一方、動的グラフの場合、計算グラフはデータの基づいて動的に決定するため、特別な工夫は必要ありません。そのため複雑な計算過程も直感的に記述することができます。
8、今後の展望
すでに系列変換モデルを使った研究では新規性は乏しいと思われる状況である。
今後の展望としては、GANのような新しい学習法の適用が期待される。2つ目は、ニューラルネットのパラメータ削減・圧縮です。3つ目は、ニューラルネットの構造学習です。応用タスクに合わせたニューラルネットの構造の探索を学習問題として捉える研究も多くあり、自動的に選ばれたネットワーク構造が言語モデルとして最高性能を示しています。4つ目は、複数の異なる情報形式に拘る処理の研究が増えることです。
コーパス:言語が実際に書かれたり話されたりした結果が記録された言語資源
オントロジー:我々の時空間にどのような実態が存在するか、それらはどのようにカテゴリ化されるか、そのようなカテゴリの間に成り立つ本質的な関係はどのようなものかといった存在に関する議論を行う哲学の領域
隠れマルコフモデル:P(x|y)を生成するモデルにより推定
最大エントロピー法:識別モデルの1つ
条件付き確率ば:1つの指数関数モデルを用いて条件付き確率を表現する識別モデル
識別関数、識別モデル、生成モデルで難易度はこの順に上がっていく。
——————————————————————————————————————————————————————————————