序文 自然言語処理 (略して NLP) は、コンピューターが人間の言語を処理する方法を研究するテクノロジーです。NLP テクノロジーにより、コンピューターは一連のテクノロジーと理論に基づいて人間のコミュニケーション コンテンツを分析および理解できるようになります。従来の自然言語処理手法は言語学自体の知識を多く必要としますが、ディープラーニングは表現学習の手法です。機械翻訳、自動質問応答、テキスト分類、感情分析、情報抽出、シーケンスラベル付け、文法解析などで広く使用されています。 2013年末にGoogleがリリースしたword2vecツールは、単語を単語ベクトルとして表現し、テキストをデジタル化し、テキスト分析に効果的に適用されます。 2016 年に、Google は自動テキスト要約モデルと関連する TensorFlow コードをオープンソース化しました。 Google は 2016/2017 年に言語処理フレームワーク SyntaxNet をリリース/アップグレードし、認識率が 25% 向上し、テキスト分割と形態素解析機能が 40 の言語に対応しました。 2017 年、Google は自動翻訳用の汎用エンコーダ/デコーダ フレームワークである tf-seq2seq を正式にオープンソース化しました。この記事では、主に TensorFlow プラットフォームを組み合わせて、TensorFlow 単語ベクトル生成モデル (単語のベクトル表現)、言語予測のための RNN および LSTM モデルの使用、および TensorFlow 自動翻訳モデルについて説明します。 Word2Vec の数学的原理の簡単な紹介 自然言語は機械学習に引き渡されますが、機械は人間の言語を直接理解することはできません。そこで最初にすべきことは、言語を数学化することです。1986 年にヒントンは、言語内の各単語をトレーニングを通じて固定長のベクトルにマッピングする分散表現法を提案しました。これらのベクトルはすべて単語ベクトル空間を構成し、各ベクトルは空間内の点とみなすことができます。このように、単語間の類似性は単語間の距離に基づいて判断でき、その応用は文章、文書、中国語の単語分割にまで拡張できます。 Word2Vec では、CBOW モデル (Continuous Bag-of-Words モデル) と Skip-gram モデル (Continuous Skip-gram Model) の 2 つのモデルが使用されます。モデル例は次のとおりです。これは、入力層、投影層、出力層を含む 3 層のニューラル ネットワーク モデルです。 このうち、score(wt, h)は、コンテキストにおける予測結果の確率スコアを表します。上記の目的関数は、次のように最大尤度関数に変換できます。 上記の確率モデルを解くための計算コストは非常に高く、以下に示すように、ニューラル ネットワークの各トレーニング プロセス中に、コンテキスト内に出現する各単語の確率スコアを計算する必要があります。 ただし、特徴学習に word2vec メソッドを使用する場合、完全な確率モデルを計算する必要はありません。 CBOW モデルとスキップグラム モデルでは、ロジスティック回帰バイナリ分類法が予測に使用されます。以下の CBOW モデルに示すように、モデルのトレーニング速度を向上させ、単語ベクトルの品質を向上させるために、通常はランダムネガティブサンプリング法が使用され、ノイズサンプル w1、w2、w3、wk... が選択されたネガティブサンプルになります。 TensorFlow 同義語モデル この章では、TensorFlow word2vec モデルを使用して同義語を検索する方法について説明します。入力データは長い英語の記事で、出力は対応する単語の同義語です。たとえば、冠詞を調べると、five と似た意味を持つ単語、four、three、seven、eight、six、two、zero、nineteen を見つけることができます。大規模な英語の記事のトレーニングを通じて、ニューラル ネットワークが 100,000 回の反復までトレーニングされ、ネットワーク損失値が約 4.6 に減少すると、学習された関連類似語は次の図のように表示されます。 以下は TensorFlow word2vec API の説明です。 単語ベクトル変数を構築します。vocabulary_sizeは辞書のサイズ、embedding_sizeは単語ベクトルのサイズです。
ネガティブサンプリングにおけるロジスティック回帰の重みとバイアスの定義
トレーニングデータへのアクセスを定義する
トレーニングデータに基づいて入力を定義し、対応する単語ベクトルを見つける
ネガティブサンプリング法に基づいて損失値を計算する
確率的勾配降下法を使用して最適化操作を実行し、損失値を最小化することを定義します。
TensorFlow Session Runメソッドを使用してモデルトレーニングを実行する
TensorFlow言語予測モデル この章では、主に RNN と LSTM テクノロジの原理を確認し、RNN/LSTM テクノロジに基づいて言語モデルをトレーニングします。つまり、一連の単語が与えられた場合、最も可能性の高い次の単語を予測します。たとえば、3 つの単語 [had、a、general] の LSTM 入力シーケンスが与えられた場合、次に予測する単語は何でしょうか? 次の図に示すように: RNNテクノロジーの原理 リカレント ニューラル ネットワーク (RNN) は、シーケンス データを処理するために使用されるニューラル ネットワークの一種です。畳み込みニューラル ネットワークと再帰型ニューラル ネットワークの違いは、畳み込みニューラル ネットワークはグリッド化されたデータ (画像データなど) の処理に適しているのに対し、再帰型ニューラル ネットワークはシリアル化されたデータの処理に適していることです。たとえば、文中の次の単語を予測したい場合、文中の前の単語と次の単語は独立していないため、通常は前の単語を使用する必要があります。 RNN がリカレント ニューラル ネットワークと呼ばれる理由は、シーケンスの現在の出力が以前の出力にも関連しているためです。具体的な現れは、ネットワークが以前の情報を記憶し、それを現在の出力の計算に適用することです。つまり、隠れ層間のノードは切断されなくなり、接続され、隠れ層の入力には入力層の出力だけでなく、前の瞬間の隠れ層の出力も含まれます。次の図に示すように: LSTMテクノロジーの原理 RNN には、バックプロパゲーション中に勾配も指数関数的に減少し、多くの伝播段階の後に勾配が消えてしまうという問題があり、長期的な依存関係の問題を処理できません。 RNN は理論的には任意の長さのシーケンスを処理できますが、実際のアプリケーションでは、10 を超えるシーケンスを処理することは困難です。 RNN 勾配消失の問題を解決するために、Long Short-Term Memory モジュールが提案されています。これは、ゲートを切り替えることでシーケンス上のメモリ機能を実現します。出力層からエラーが逆伝播されると、モジュールのメモリ要素を使用して記録できます。そのため、LSTM は比較的長期間情報を記憶することができます。一般的な LSTM モジュールを下の図に示します。 出力ゲートは入力ゲートに似ており、次の式に示すように、出力層へのメモリセルの出力を制御する 0-1 ベクトルも生成します。 3 つのゲートの連携により、LSTM メモリ ブロックは長期的な情報にアクセスできるようになります。たとえば、入力ゲートが閉じている限り、メモリ ユニット内の情報は、後で入力によって上書きされることはありません。 TensorFlow を使用した単語予測モデルの構築 まず、PTB モデル データをダウンロードします。データセットには約 10,000 種類の単語が含まれており、一般的でない単語には注釈が付けられています。 まず、サンプル データ セットを前処理し、各単語に整数のラベルを付ける、つまり、次に示すように辞書インデックスを構築する必要があります。 トレーニングデータの読み取り
次に、トレーニング データ テキストを読み取り、単語シーケンスを単語インデックス シーケンスに変換して、以下に示すようにトレーニング データを生成します。 トレーニングデータの単語を読み取り、単語インデックスシーケンスに変換する
トレーニングデータのデータとラベルを生成します。epoch_size はこのエポックのトレーニング反復回数、num_steps は LSTM のシーケンス長です。
LSTMセルを構築する。サイズは隠れニューロンの数である。
トレーニングモードの場合、トレーニングの堅牢性を確保するために、ドロップアウト操作を定義する
層の数に応じて多層RNNニューラルネットワークを定義する
辞書のサイズに基づいて単語ベクトルを定義する
下の図に示すように、単語インデックスに従って単語ベクトルを見つけます。単語インデックスから対応する One-hot エンコーディングを見つけると、赤の重みは出力ノードの値、つまり対応する埋め込みベクトルに直接対応します。
RNNネットワークを定義します。ここで、stateはLSTMセルの状態、cell_outputはLSTMセルの出力です。
トレーニングの損失値は次の式のように定義されます。
損失額
勾配と最適化操作の定義
言葉の困惑 eloss
TensorFlow 言語翻訳モデル このセクションでは、主に TensorFlow を使用して RNN および LSTM 言語翻訳モデルを実装する方法について説明します。基本的なシーケンスツーシーケンス モデルは主に 2 つの RNN ネットワークで構成され、1 つの RNN ネットワークはシーケンスの入力をエンコードするために使用され、もう 1 つの RNN ネットワークはシーケンスの出力を生成するために使用されます。基本的なアーキテクチャを下図に示します。 上図の各ボックスは、RNN 内のセルを表します。上記のモデルでは、各入力は固定長の状態ベクトルにエンコードされ、デコーダーに渡されます。 2014 年、Bahdanau は論文「Neural Machine Translation by Jointly Learning to Align and Translate」で Attention メカニズムを紹介しました。 Attention メカニズムにより、デコーダーは各出力ステップで元のテキストのさまざまな部分に注意を払うことができ、モデルは入力文と生成されたコンテンツに基づいて翻訳結果に影響を与えることができます。アテンション メカニズムを備えた多層 LSTM シーケンス間ネットワークの構造を下図に示します。 上記のシーケンスからシーケンスへのモデルの場合、TensorFlow はそれを直接呼び出すことができる関数 API にカプセル化します。基本的な翻訳モデルを実装するには、数百行のコードだけが必要です。 tf.nn.seq2seq ファイルは合計 5 つの seq2seq 関数を実装します。
embedding_rnn_seq2seq 関数インターフェースの使用手順は次のとおりです。
TensorFlow は、statmt Web サイトから提供されるコーパス データ (主に giga-fren.release2.fixed.en (英語コーパス、3.6G) と giga-fren.release2.fixed.fr (フランス語コーパス、4.3G) を含む) を使用する英語からフランス語への翻訳例を公式に提供しています。この例のコード構造は次のとおりです。
(画像をクリックすると拡大します) translate.py: メイン関数のエントリ、翻訳モデルのトレーニングを実行します モデルトレーニングを実行する
要約する TensorFlow の新しいバージョンが継続的にリリースされ、新しいモデルが継続的に増加しているため、TensorFlow は主流のディープラーニング プラットフォームになりました。この記事では、主に自然言語処理分野における TensorFlow の関連モデルとアプリケーションについて紹介します。まず、Word2Vec の数学的原理と TensorFlow を使用して単語ベクトルを学習する方法を紹介しました。次に、RNN と LSTM の技術的原理を確認し、TensorFlow の言語予測モデルについて説明しました。最後に、TensorFlow のシーケンス間機械翻訳 API と公式の例を例によって分析しました。 |
<<: 2017年にディープラーニングを学ばなければならない理由
>>: フロントエンドの面接でよく聞かれるアルゴリズムに関する質問
機械学習にとってデータがどれほど重要であるかは誰もが知っています。データ アクセス パターンを理解す...
囲碁チャンピオンのイ・セドルを破ったロボット「アルファ碁」から、卓球ができるKUKAロボット、遠隔手...
人工知能 (AI) は誕生以来長い道のりを歩み、大きな進歩を遂げています。これは、Amazon や ...
インターネット企業の中で、Google は間違いなく勝者であり、方向性をリードする企業です。同社の技...
デジタル経済の発展に伴い、全国の各省市がコンピューティングインフラの構築を競って推進し、人工知能コン...
テクノロジーは建設業界にかつてないほど大きな影響を与えています。クラウドベースのコラボレーションやデ...
[51CTO.comからのオリジナル記事] 2018年、人工知能の発展は消費者向け人工知能から企業向...
最近、ワールドモデルという概念が大きな盛り上がりを見せており、自動運転の分野もただ黙って見ているわけ...
ティム・アンダーソン編纂者:ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:...
大規模なモデルの場合、ローカライズされたエンコード タスクに優れています。しかし、タスクが複数の相互...
[[219776]]リアム・ヘーネル編纂者:趙怡雲、江宝尚、銭天培人工知能があらゆる分野に浸透してい...
[[429763]]今日の世界はデータ主導であり、手動のプロセスだけではすべてのデータを監視または保...