自然言語処理におけるディープラーニングの応用

自然言語処理におけるディープラーニングの応用

自然言語処理とは、自然言語を使用して人間とコンピューターが効果的にコミュニケーションするためのさまざまな理論と方法の研究と実装です。この記事では、主に自然言語処理におけるディープラーニングの応用について紹介します。

自然言語処理入門

自然言語処理とは、自然言語を使用して人間とコンピューターが効果的にコミュニケーションするためのさまざまな理論と方法の研究と実装です。具体的なタスクは次のとおりです。

  • 質問応答システム(Siri、Alexa、Cortana機能など)
  • 感情分析(文章が肯定的な感情を表現しているか否定的な感情を表現しているかを判断する)
  • 画像とテキストのマッピング(写真に基づいてストーリーを書く)
  • 機械翻訳(言語間の翻訳)
  • 音声認識
  • 文構成要素分析
  • 名前付きエンティティ認識

従来の NLP 手法では、多くの言語ドメイン知識が必要です。音素や形態素などの用語を理解することは基本的なスキルであり、そのための特別な言語トレーニングコースがあります。まず、従来の NLP 手法が次の単語をどのように理解するかを見てみましょう。

私たちの目標は、単語から何らかの情報(感情的な偏り、単語の意味など)を抽出することだとします。言語学的知識によれば、この単語は次の 3 つの部分に分けられます。

接頭辞「un」は反対または反対の意味を意味し、接尾辞「ed」は単語の時制(過去形)を示すことがわかっています。 「interest」という語幹の意味を特定することで、その単語の意味と感情を簡単に推測することができます。簡単そうに思えますよね? しかし、英語の接頭辞と接尾辞をすべて調べると、非常に経験豊富な言語学者だけが意味を理解できるほどの接頭辞と接尾辞の組み合わせがあることに気付くでしょう。

ディープラーニング介入

ディープラーニングは本質的には表現学習の手法です。たとえば、CNN モデルはフィルターの組み合わせを使用して、オブジェクトをさまざまなカテゴリに分類します。したがって、著者は、同じ方法を使用して単語を表すこともできると考えています。

概要

著者は、ディープ ニューラル ネットワーク モデルを構築する基本的な手順に従ってこの記事を書き、その後、最近の研究論文と併せていくつかの実用的なアプリケーションについて説明します。おそらく、全文を読んだ後でも、なぜ RNN モデルを使用するのか、なぜ LSTM ネットワークが効果的なのかといった疑問が残る読者もいるでしょう。しかし、著者の本来の意図は、自然言語処理の分野におけるディープラーニングの応用について、誰もが知覚的に理解できるようになることを願うことです。

単語ベクトル

ディープラーニング手法では数学記号を使用することが多いため、各単語を d 次元ベクトルとして表現します。 d=6と仮定します。

このベクトルを表すにはどのような数値を使用すればよいでしょうか? このベクトルが単語の意味やセマンティクスを表すことができると期待しています。これを行う 1 つの方法は、共起マトリックスを作成することです。次のような文があるとします。

文中の各単語をベクトルとして表現します。

共起マトリックスの各要素は、文書全体で単語が別の単語に隣接して出現する回数を表します。具体的には、次の図のようになります。

共起行列の各行を単語ベクトルの初期値として扱うことができます。

読者の皆さん、この単純なマトリックスを観察するだけで、多くの有用な情報を得ることができることに留意してください。たとえば、「love」と「like」という単語はどちらも名詞と 1 回共起し (NLP と dogs)、どちらも「I」という単語と 1 回共起しています。つまり、これら 2 つの単語は動詞である可能性が高いということです。データセットが十分に大きい場合、「like」と「love」の類似性はますます高くなることが想像できます。同様に、他の同義語の単語ベクトルも、常に同様のコンテキストで出現するため、ますます類似したものになります。

良い出発点は見つかりましたが、このベクトル表現の次元はコーパスの成長とともに直線的に増加することに注意することが重要です。 100 万語 (NLP の問題ではそれほど多くはありません) がある場合、1000,000 x 1000,000 の行列が得られ、非常にスパースになります。ストレージ効率の観点から見ると、これは明らかに適切な表現方法ではありません。すでに多くの優れた単語ベクトル表現方法がありますが、その中で最も有名なのは word2vec です。

ワード2ベクトル

単語埋め込み法の基本的な考え方は、ベクトルの次元を制御可能な範囲(適切な次元は 25 〜 1000 次元)に保ちながら、ベクトルが単語に含まれる情報を可能な限り完全に表現できるようにすることです。

Word2vec の考え方は、中心となる単語の近くに他の単語が出現する確率を予測することです。前の文「私はNLPが大好きで、犬が好きです。」を例に挙げてみましょう。まず、文の最初の 3 つの単語を見てみましょう。したがって、ウィンドウの幅は m=3 です。

次に、中心となる単語「愛」の左側と右側に現れる可能性のある単語を予測することが目標です。どうやってそれを実現するのでしょうか? もちろん、まず最適化目的関数を定義する必要があります。中心となる単語が決定されていると仮定すると、定義する関数は周囲の単語の対数確率を最大化する必要があります。

この機能は非常に重要であり、著者はこれを注意深く理解する必要があることを強調しています。目的関数は、中心単語として「愛」を例にとると、左側の「I」「愛」と右側の「NLP」「愛」の4つの単語の対数確率値を累計することを意味します。変数 T はトレーニング文の数を表します。対数関数の式は次のとおりです。

Vc は中心単語の単語ベクトルです。各単語には 2 つの表現ベクトル (Uo と Uw) があります。1 つは単語が中心単語であるシナリオ用で、もう 1 つは単語が中心単語ではないシナリオ用です。確率的勾配降下法を使用して単語埋め込みをトレーニングします。このプロセスは最もわかりにくいものです。読者が上記の説明に混乱した場合、著者は、最初の記事 (https://dzone.com/articles/natural-language-processing-adit-deshpande-cs-unde) と 2 番目の記事 (https://www.youtube.com/watch?v=D-ekE-Wlcds) という 2 つの追加記事も読むことを推奨しています。

一言でまとめると、中心となる単語が与えられた場合、Word2vec の目標はコンテキスト単語の対数関数値を最大化することであり、最適化方法は通常 SGD です。

word2vec メソッドの最も注目すべき効果は、単語ベクトル間の線形関係を発見できることです。トレーニング後、単語の埋め込みはさまざまな文法および意味の概念を捉えるようになります。

このような単純な目的関数と最適化方法でこの線形関係を捉えることができるのは驚くべきことです。

リカレントニューラルネットワーク

(リカレントニューラルネットワーク)

さて、単語の埋め込みができたので、次のステップはそれを再帰型ニューラル ネットワーク モデルに組み込むことです。 RNN は現在、NLP タスクで最も一般的に使用されている方法の 1 つです。 RNN モデルの利点の 1 つは、以前にネットワークに渡された情報を効果的に活用できることです。次の図は、RNN モデルの簡単な概略図です。

上の図の下部では、入力 x は単語の単語ベクトルです。各ベクトル x は、隠れ層ベクトル h に対応します。下の図のオレンジ色のボックスは入力ユニットです。

各ユニットの隠れベクトルは、現在の入力単語ベクトルと前の隠れ状態の関数であり、計算式は次のとおりです。

よく見ると、式の中に異なる上付き文字を持つ 2 つの重み行列 Whx と Whh があり、それぞれ入力単語ベクトルと前の隠し状態に掛けられていることがわかります。これら 2 つの重み行列は、ネットワークのすべてのユニットで共有されます。

これが RNN モデルの鍵です。このプロセスをよく考えてみると、従来の 2 層ニューラル ネットワークとは大きく異なります。従来の 2 層ニューラル ネットワークでは、各層の重みマトリックスは異なります (W1 と W2)。一方、再帰型コンピュータ ネットワークでは、シーケンス全体が同じ重みマトリックスを共有します。

特に特定のユニットの場合、その出力値 y は h と Ws の積、つまり別の重み行列になります。

RNN の利点を見てみましょう。 RNN と従来の NN の最大の違いは、RNN の入力がシーケンス (ここでは一連の単語) であることです。 CNN モデルの入力は 1 枚の画像だけですが、RNN の入力は短い文章または 5 段落の記事のいずれかになります。入力シーケンスの順序もトレーニング結果に大きな影響を与える可能性があります。理想的には、隠し状態は過去の情報(履歴入力コンテンツ)をキャプチャすることが期待されます。

ゲートリカレントユニット

(ゲート付きリカレントユニット)

ゲート付き再帰ユニットを紹介しましょう。このゲーティング ユニットの目的は、RNN モデルが隠れ状態を計算するためのより洗練された方法を提供することです。このアプローチにより、モデルはさらに過去の情報も保持できるようになります。従来のリカレント ニューラル ネットワークでは、長期的な依存関係を維持することがなぜ問題になるのでしょうか。それは、エラー バックプロパゲーション プロセス中に、勾配が RNN モデルに沿って近くから遠くに伝播するためです。初期勾配が非常に小さい値(例:< 0.25)の場合、3 番目または 4 番目のモジュールに伝播するときに勾配がほぼ消失するため(複数の勾配乗算)、以前のユニットの隠し状態は更新されません。

従来の RNN モデルでは、隠れ状態ベクトルは次のように計算されます。

GRU は別の計算方法を採用しています。計算プロセスは、更新ゲート、リセット ゲート、および新しいメモリ ストレージの 3 つの部分に分かれています。両方のゲートは、入力単語ベクトルと前のステップの隠れ状態の関数です。

実際、重要な違いは、異なるゲートには異なる重みマトリックスがあり、それが式の上付き文字によって区別されることです。更新ゲートのシンボルは Wz と Uz、リセット ゲートのシンボルは WT と UT です。

新しいメモリは次のように計算されます。

式内の白抜きの点は要素ごとの乗算を表します (https://en.wikipedia.org/wiki/Hadamard_product_%28matrices%29)。

式をよく見ると、リセット ゲート ユニットの出力値が 0 に近い場合、項目全体の値も 0 に近くなり、ht-1 ステップの状態を無視することと同じになることがわかります。この時点で、モデルは現在の入力単語ベクトル xt のみを考慮します。

h(t) の最終的な形は次の式で示されます。

h(t) 関数は、更新ゲート、リセット ゲート、およびメモリ ストレージの 3 つの部分で構成されます。 zt が 1 に近い場合、(1-zt) が 0 に近く、後者の項の積も 0 に近くなるため、新しい隠れ状態 ht は前の状態にほぼ完全に依存します。 zt が 0 に近い場合は、その逆が当てはまります。

長期短期記憶ユニット

(長期短期記憶単位)

GRU の原理をすでに理解していれば、LSTM も簡単に理解できます。 LSTM も複数のゲーティング モジュールで構成されています。

明らかに、LSTM はより多くの情報を導入します。 LSTM は GRU の考え方の拡張と見ることができるため、著者は詳細な分析を行うつもりはありません。読者が各ドアと各式の詳細を理解したい場合は、Chris Olah が書いた素晴らしい記事 (http://colah.github.io/posts/2015-08-Understanding-LSTMs/) を参照してください。これはこれまでで最もエキサイティングな LSTM を紹介するチュートリアルであり、各ユニットの原理を理解する上で間違いなく大きな助けとなるでしょう。

LSTMとGRUの比較

まず、両者の類似点を探ってみましょう。オリジナルの著者は、両方のモデルがシーケンスデータ内の長期的な情報依存関係を保持する特別な能力を持っていると考えています。長期情報とは、2 つの単語またはフレーズ間の距離を指しますが、それらの関係は文を理解する上で非常に重要です。 LSTM と GRU はどちらもゲーティング モジュールを使用して、これらの依存関係をキャプチャしたり、選択的に無視したりします。

両者の違いはゲートの数にあります。GRU には 2 つのゲートがあり、LSTM には 3 つのゲートがあります。ゲートの数は、入力ワード間の非線形関係にも影響し、最終的な計算結果にも影響します。 GRU には LSTM モデルのメモリ ユニットもありません。

論文を読む前に書く

NLP の分野には他にも多くの種類のディープラーニング モデルがあることを皆さんに思い出していただきたいと思います。NLP タスクではリカレント ニューラル ネットワークや畳み込みニューラル ネットワークも使用されることがありますが、RNN ほど普及していません。

さて、これで、自然言語処理分野におけるディープラーニングの応用について明確に理解できました。一緒にいくつかの論文を読んでみましょう。 NLP の分野には機械翻訳や質問応答システムなど多くの方向性があり、読むべき論文も数多くあります。著者は代表的なものを 3 つ選びました。

メモリネットワーク

原著者が選んだ最初の論文 (http://colah.github.io/posts/2015-08-Understanding-LSTMs/) は、質問応答の分野で非常に影響力のある論文です。 Jason Weston、Sumit Chopra、Antoine Bordes によるこの論文では、メモリ ネットワークと呼ばれるモデルのクラスを紹介しています。

直感的な考え方としては、テキストに関する質問に正確に答えるためには、何らかの方法で初期情報を保存する必要があるということです。 「RNN とは何を意味するのか?」と皆さんに尋ねれば、記事の前半を注意深く読んだ読者なら必ず答えられるでしょう。ただ、前のテキスト内の関連する段落を見つけるのに数秒かかる場合があります。人間の脳がどのようなメカニズムでこの行動を実行するのかはまだわかっていませんが、一般的には脳内にこの情報を保存する領域があると考えられています。

この記事で説明するメモリ ネットワークは、読み取りと書き込みが可能な連想メモリ領域を備えているという点で独特です。 CNN モデル、強化学習、従来のニューラル ネットワークには、このメモリ機能はありません。おそらくこれは、質問応答システムが、イベントのタイムラインの追跡など、長期的なコンテキスト情報に大きく依存しているためです。 CNN と強化学習の場合、さまざまなフィルターをトレーニングしたり、状態から動作への関係をマッピングしたりすることで、重みマトリックスに「メモリ」を組み込んでいます。一見すると、RNN と LSTM は要件を満たしていますが、一般的に入力履歴を記憶することができません (これは質問応答システムにとって重要です)。

ネットワーク構造

ネットワークが初期入力をどのように処理するかを見てみましょう。ほとんどの機械学習アルゴリズムと同様に、この方法は入力を特徴表現にマッピングすることから始まります。マッピング方法には、単語の埋め込み、コンポーネントのラベル付け、文法分析などがあります。

次のステップでは、メモリコンテンツmが特徴表現I(x)に従って更新され、新しい入力コンテンツxによって導入された情報がフィードバックされます。

m は複数の mi で構成される配列と考えることができます。それぞれの独立したmiは、m、特徴表現I(x)、およびそれ自体の関数Gとみなすことができます。メモリ内容の更新は G 関数を通じて行われます。 3番目と4番目のステップは、メモリ情報を読み取り、質問に応じて特徴表現oを生成し、それをデコードして出力し、最終的な回答rを取得することです。

関数 R は、特徴表現を人間が読めるテキスト回答に変換する RNN モデルになります。

3 番目のステップでは、O モジュールによって出力される特徴表現が、質問に最も一致する回答となることを期待します。次に、質問が各メモリ ユニットと 1 つずつ比較され、それらの間のマッチング スコアが計算されます。

最後に、argmax 関数を使用して、スコアが最も高い項目 (複数可) を選択します。スコアを計算する方法は、問題の埋め込みベクトルと各メモリユニットの特徴表現ベクトルを乗算することです(詳細については、論文 https://arxiv.org/pdf/1410.3916v11.pdf を参照してください)。このプロセスは、2 つの単語ベクトル間の類似性を計算することに似ています。出力表現特徴 o は RNN または LSTM モデルに入力され、最終的な読み取り可能な回答が生成されます。

トレーニングプロセス全体は教師あり学習に属し、トレーニングデータには質問、元のコーパス、ラベル付けされた回答が含まれます。目的関数は以下の図に示されています。

より詳しい情報については、以下の論文を参照してください。

  • エンドツーエンドのメモリネットワーク https://arxiv.org/pdf/1503.08895v5.pdf
  • 動的メモリネットワーク https://arxiv.org/pdf/1506.07285v5.pdf
  • 動的 Coattention ネットワーク https://arxiv.org/pdf/1611.01604v2.pdf

感情分析のためのツリー型 LSTM モデル

次の論文(https://arxiv.org/pdf/1503.00075v3.pdf)では、主にフレーズに肯定的な感情が含まれているか否定的な感情が含まれているかを分析する感情分析の手法を紹介しています。 「心理学辞典」では、「感情とは、客観的な物事が自分のニーズを満たしているかどうかに対する人の態度経験である」とされています。 LSTM は現在、感情分析で最も一般的に使用されているネットワーク構造です。 Kai Sheng Tai、Richard Socher、Christopher Manning によるこの論文では、LSTM ネットワークを非線形構造に連鎖させる新しいアプローチを紹介しています。

この非線形配置は、単語のシーケンスがフレーズを形成するという自然言語の特性に基づいています。単語の順序が異なると、形成されるフレーズの意味も異なり、個々の単語の意味とはまったく逆になることもあります。この特徴を反映するためには、LSTM ユニットで構成されたネットワークをツリー構造に配置する必要があり、異なるユニットはその子ノードの影響を受けます。

ネットワーク構造

ツリー型 LSTM と標準ネットワーク構造の違いの 1 つは、後者の隠し状態が現在の入力と前のステップの隠し状態の関数であるのに対し、前者の隠し状態は現在の入力とその子ノードの隠し状態の関数であることです。

ネットワーク構造の変更に伴い、学習方法も変更されています。詳しくはこちらの論文(https://arxiv.org/pdf/1503.00075v3.pdf)をご参照ください。著者は、なぜこのモデルが線形 LSTM よりも優れたパフォーマンスを発揮するのかということに焦点を当てています。

ツリー構造に基づいて、各独立ユニットの状態は、そのすべての子ノードの非表示の状態に関連付けられます。各ノードは子ノードを異なる方法で扱うことができるため、これは重要です。トレーニング プロセス中に、ネットワーク モデルは、特定の特殊な単語 (「not」や「very」など) が文全体の感情分析にとって非常に重要であることを学習できます。モデルがこれらのノードに大きな重みを与えることができれば、最終的な効果はより良くなります。

ニューラル機械翻訳

著者が選んだ最後の論文 (https://arxiv.org/pdf/1609.08144v2.pdf) は機械翻訳に関するものです。この記事の著者は、Jeff Dean、Greg Corrado、Orial Vinyals など、Google の機械学習の専門家です。この記事では、Google の翻訳サービスを支える基本的なシステムを紹介します。このシステムにより、Google が以前使用していたシステムと比較して、平均翻訳エラー率が 60% 削減されます。

従来の自動翻訳方法には、さまざまなフレーズマッチング方法が含まれます。このアプローチには多くの言語ドメイン知識が必要であり、最終的にその設計は脆弱すぎて一般化能力に欠けることが判明しました。従来のアプローチの問題の 1 つは、入力された文を部分的に翻訳しようとすることです。最も効果的なアプローチ(ニューラル機械翻訳と呼ばれる技術)は、文章全体を一度に翻訳することであり、これにより翻訳がより自然で流暢になることがわかりました。

ネットワーク構造

この論文では、エンドツーエンドのトレーニング プロセスを実装するために、8 つのエンコード層とデコード層で構成されるディープ LSTM ニューラル ネットワークを紹介します。このシステムは、エンコード RNN、デコード RNN、アテンション モジュールの 3 つの部分に分けられます。マクロ的な観点から見ると、エンコーダーは入力文をベクトルとして表現し、デコーダーは出力表現を生成し、アテンション モジュールはデコーダーにデコード フェーズ中にどの部分に焦点を当てるかを伝えます (ここから、文の全体的なコンテキストを使用するというアイデアが生まれます)。

残りの部分では、計算リソースの消費、レイテンシ、高い同時実行性など、このシステムを大規模に展開する際の課題について説明します。

要約する

著者は、将来、ディープラーニングが顧客サービスロボット、機械翻訳、複雑な質問応答システムで重要な役割を果たすと考えています。素晴らしい講義とスライドを提供してくれた Richard Socher 氏とスタンフォード CS224D コース (http://cs224d.stanford.edu/index.html) に特に感謝します。

<<:  機械学習研究動向の分析: TensorFlow が Caffe を上回り、最も一般的に使用される研究フレームワークに

>>:  OpenAIは、テキストを使用してユーザーの感情を検出できる教師なし感情ニューロンを「巧みに」発見した。

ブログ    

推薦する

Julia vs Python: 2019 年に機械学習でナンバー 1 になるプログラミング言語はどれでしょうか?

[[252207]] [51CTO.com クイック翻訳] Juliaは2018年に登場し、現在最...

...

メーター読み取りシステムにおける無線データ伝送モジュールの応用

周知のとおり、従来の手動メーター読み取り方法は時間がかかり、労働集約的であり、その正確性と適時性は保...

AIは数学データベースの問題の82%を証明でき、Transformerをベースにした新しいSOTAが達成されました。

科学者たちは最近、AI に数学の授業をさせることに夢中になっていると言わざるを得ません。現在、Fac...

機械学習モデルを評価する際にデータ漏洩を防ぐ方法

この記事では、モデルのパフォーマンスを評価する際のデータ漏洩の問題と、データ漏洩を回避する方法につい...

...

Baidu Apollo がインテリジェント時代のモバイル空間「Apollo II」を正式に開始

2021年8月5日、百度アポロの新世代自動運転ミニバス「アポロII」が広州市黄埔で正式に公開されまし...

「順序付きファネル」アルゴリズム問題は、iResearch A10サミットで新たなブレークスルーを達成すると期待されています。

新小売、新金融、新エンターテインメントなどの新しい業態の台頭により、ビッグデータの驚異的な力がインタ...

2022年、どのような技術トレンドが世界を変え続けるのでしょうか?以下は百度研究所の予測です。

あっという間に2021年が過ぎ去りました。今年、新型コロナウイルス感染症のパンデミックは世界経済と社...

...

BAIRは、3種類のモデルフリー強化学習アルゴリズムを組み合わせたRLコードライブラリrlpytをオープンソース化しました。

最近、BAIR は強化学習研究コードライブラリ rlpyt をオープンソース化しました。このライブラ...

自動運転車にロボットが殺される、これは今後ますます増えるかもしれない

CES ではさまざまな新技術が注目を集めようと競い合っていたが、同じ場所で悲劇が起きた。自動運転モー...

...

AIが再生可能エネルギーグリッドの回復力の鍵となる理由

[[393199]]画像提供:ロイター/セルジオ・ペレスエマニュエル・ラガリグシュナイダーエレクトリ...