一般的な自然言語処理システムでは、単語のエンコードは任意であるため、個々の記号間の可能な関係に関する有用な情報をシステムに提供できず、データのスパース性の問題も発生します。ベクトルを使用して単語を表すと、これらの障害の一部を克服できます。この記事では、推論、例、数式を通じて生のテキストから「単語の埋め込み」を学習するモデルである Word2Vec を紹介します。このモデルは通常、計算効率を向上させるために前処理段階で使用されます。
推論、例、数式を使用して Word2Vec を紹介します。 導入 Word2Vec モデルは、「単語埋め込み」と呼ばれる単語のベクトル表現を学習するために使用されます。これは通常、前処理段階に使用されます。その後、学習された単語ベクトルは識別モデル (通常は RNN) に入力され、予測を生成したり、他の興味深いタスクの処理に使用したりできます。 なぜ単語埋め込み表現を学ぶのでしょうか? 画像および音声処理システムは、豊富な高次元データセットで動作します。処理される画像データは、個々の生のピクセル強度のベクトルとしてエンコードされるため、すべての情報がデータ内にエンコードされ、システム内のさまざまなエンティティ (猫と犬など) 間の関係を簡単に確立できます。 ただし、一般的な自然言語処理システムでは、単語は個別の原子記号として扱われるため、「cat」は Id537 として表され、「dog」は Id143 として表されます。これらのコードは任意であるため、シンボル間の関係性に関する有用な情報をシステムに提供しません。つまり、モデルは「犬」に関するデータを処理する際に、「猫」に関する知識(動物であり、ペットであり、4 本足であるなど)を十分に活用できません。 単語を一意の個別のシリアル番号として表すと、データのスパース性の問題も発生します。つまり、統計モデルを正常にトレーニングするには、より多くのデータが必要になる場合が多く、単語をベクトルで表すと、これらの障害の一部を克服できます。 例えば: 従来の自然言語処理手法には、言語学自体に関する多くの知識が必要です。音素や形態素などの用語を理解することは、そのような研究に特化した言語学の分野が多数あるため、非常に基本的かつ必要です。従来の自然言語処理が次の単語をどのように理解しようとしているかを見てみましょう。 私たちの目標が、単語に関する情報(感情の特徴付け、定義の発見など)を収集することだとします。言語学の知識を活用すると、この単語を 3 つの部分に分解できます。 ディープラーニングの最も基本的なレベルは表現学習です。ここでは、同じアプローチを使用して、大規模なデータセット上の単語のベクトル表現を構築します。 単語ベクトル 各単語をd次元ベクトルとして表します。ここでd=6です。この文に基づいて、個々の単語のベクトル表現を構築したいと考えています。 それでは、これらの値をどのように入力するかを考えてみましょう。これらの値が、単語とその文脈、意味、または意味情報をある程度表現できることを願っています。 1 つの方法は、共起マトリックスを構築することです。 共起マトリックスには、次の単語とともに出現するコーパス (またはトレーニング セット) 内の各単語の統計情報が含まれています。次の表は、上記の文の共起マトリックスです。 このシンプルなマトリックスを使用すると、非常に役立つ情報を得ることができます。たとえば、「love」と「like」という単語はどちらも名詞(NLP と dogs)のカウントが 1 です。また、「I」の数は 1 であるため、これらの単語は何らかの動詞である可能性が高いことがわかります。文章よりもはるかに大きいデータセットの場合、「like」、「love」、および同様のコンテキストを持つ他の同義語が同様のベクトル表現を持ち始めるため、この類似性はさらに明確になることが予想されます。 これは良いスタートですが、各単語の次元はコーパスのサイズに応じて直線的に増加することに注意してください。 100 万語 (自然言語処理タスクではそれほど多くありません) がある場合、100 万行 100 万列の非常にスパースな (ゼロが多数ある) 行列が生成されますが、これを保存するのは非常に非効率的です。その後、人々はより優れた単語ベクトル表現の探求において大きな進歩を遂げました。最も人気があるのは Word2Vec です。 正式な紹介 ベクトル空間モデル (VSM) は、連続したベクトル空間に単語を表現 (埋め込み) します。この空間では、意味的に類似した単語が近くのポイントにマッピングされます (「互いに近くに埋め込まれます」)。ベクトル空間モデルは自然言語処理において長く豊かな歴史を持っていますが、すべてのアプローチは、同じコンテキストに現れる単語は同様の意味を持つという分布仮説に何らかの形で依存しています。この原則に基づく方法は、次の 2 つのカテゴリに分けられます。
両者の違いは次のとおりです。 カウントベースの方法では、大規模なテキスト コーパス内で単語が隣接する単語と共起する頻度に関する統計を計算し、これらの統計を各単語の小さな密なベクトルにマッピングします。 予測モデルは、学習した隣接する単語の小さな密な埋め込みベクトル(モデルのパラメータとみなされる)に基づいて、単語を直接予測しようとします。 Word2vec は、生のテキストから単語の埋め込みを学習するためのモデルであり、計算効率が非常に優れています。主な実装方法は 2 つあり、1 つは Continuous Bag of Words モデル (CBOW)、もう 1 つは Skip-Gram モデルです。 2 つのアプローチはアルゴリズム的には似ていますが、唯一の違いは、CBOW がソース コンテキストの単語からターゲットの単語を予測するのに対し、Skip-Gram はその逆で、ターゲットの単語に基づいてソース コンテキストの単語を予測することです。 次に、スキップグラムモデルに焦点を当てます。 応用数学 ニューラル確率言語モデルは、一般的に最大尤度原理を使用してトレーニングされ、その目的は、前の単語h(「履歴」)を与えられた次の単語wt(「ターゲット」)のソフトマックス確率を最適化することです。 ここで、score(wt, h) は、ターゲット単語 wt とコンテキスト h 間の互換性 (通常はドット積) を計算します。 このモデルは、トレーニング セットの対数尤度を最大化することでトレーニングします。したがって、次の損失関数を***する必要があります。 これにより、言語モデリングに適した正規化された確率モデルが提供されます。 このアプローチは、目的関数を最適化するためにトレーニング中に常に変更される選択された変数 (またはパラメーター) を明確に示す別の形式でよりよく実証できます。 私たちの目標は、現在の単語を予測するために使用できる周囲の単語のベクトル表現を見つけることです。特に、コーパス全体にわたって平均対数確率を最大化したいと考えています。 この式の主な意味は、単語 wt が現在の単語の特定のウィンドウ範囲 c 内に特定の確率 p で出現することです。この確率は、現在の単語 wt と設定したパラメータ theta に関連しています。コーパス全体に対して上記の確率を最大化するために、パラメータ theta を設定したいと考えています。 基本的なパラメータ化: ソフトマックスモデル 基本的なスキップグラム モデルは、ソフトマックス関数によって計算される確率 p を定義します。語彙に N 個の単語があり、次元 k の埋め込みベクトルを学習したい場合、wi を N 次元のオンホットベクトルに設定し、theta を N×K 埋め込み行列に設定できます。 学習後、行列 theta は埋め込み検索行列として考えることができることに注意してください。 アーキテクチャ的には、シンプルな 3 層ニューラル ネットワークです。
このパラメータ化方法を大規模コーパスに適用することを制限する主な欠点は、計算効率です。具体的には、単一の順方向伝播プロセスを計算するには、コーパス全体の語彙を数えてソフトマックス関数を計算する必要があります。これは大規模なデータセットでは非常にコストがかかるため、このモデルと計算効率のバランスをとることを期待しています。 計算効率の向上 word2vec での特徴学習には、完全な確率モデルは必要ありません。 CBOW モデルと skip-gram モデルは、バイナリ分類目標 (ロジスティック回帰) を使用してトレーニングされ、同じコンテキスト内の k 個の疑似 (ノイズ) 単語 -w から真のターゲット単語 (wt) を区別します。 モデルが実際の単語に高い確率を割り当て、ノイズ単語に低い確率を割り当てると、最適化された目的関数を得ることができます。技術的には、一般的にこれをネガティブ サンプリングと呼び、提案される更新はソフトマックス関数の更新の限界に近くなります。しかし、計算の観点から見ると、損失関数の複雑さは語彙内のすべての単語 (V) ではなく、選択したノイズ単語の数 (k) のみに依存するため、非常に効率的です。これにより、トレーニングの速度が大幅に向上します。 Tensorflow のようなパッケージは、Noise Contrastive Estimation (NCE) 損失と呼ばれる非常によく似た損失関数を使用します。 SKIP-GRAMモデルの直感 次のデータセットを例に挙げます。
まず、すべての単語とそのコンテキストを含むデータセットを構築します。ここでは、元の定義を維持し、「コンテキスト」をターゲット単語の左右にあるウィンドウ単語として定義します。ウィンドウ サイズを 1 に設定すると、(コンテキスト、ターゲット) ペアの形式でデータセットを取得できます。
skip-gram はコンテキストとターゲットを逆にして、ターゲット単語が与えられた場合に各コンテキスト単語を予測しようとするため、タスクは「quick」から「the」と「brown」を予測したり、「brown」から「quick」と「fox」を予測したりするようになります。 このようにして、データセットは次のように (入力、出力) のペアに整理できます。
定義により、目的関数はデータセット全体に依存しますが、通常は確率的勾配降下法 (SGD) を使用して、一度に 1 つの例のみ (または一度に少量のデータ バッチ。各バッチのサイズは通常 16 ~ 512) を使用してモデルを最適化します。次に、トレーニングプロセスの各ステップを見てみましょう。 上記の例のトレーニング プロセスを想像してみましょう。ここでの目標は、 から素早く予測することです。ノイズ分布P(w)からnum_noise個のノイズサンプルを選択します。ノイズ分布は通常、1文字の分布です(1文字の分布では、各単語の出現が他のすべての単語から独立していると想定されます。つまり、生成プロセスをサイコロを順番に振るプロセスと考えることができます)。 簡単にするために、num_noise = 1 に設定し、ノイズ サンプルとして羊を選択します。次に、観測された例とノイズのある例のペアの損失を計算します。つまり、時刻「t」での目的関数は次のようになります。 私たちの目標は埋め込みパラメータを更新することです theta はこの目的関数を最適化するために使用されます。これを実行するには、損失の勾配をそれに応じて導出します。 次に、勾配の方向に小さなステップを踏んで埋め込みを更新します。このプロセスをトレーニング セット全体で繰り返すと、モデルが実際の単語とノイズ ワードを正常に区別できるようになるまで、各単語の埋め込みベクトルを「移動」する効果が得られます。 学習したベクトルを 2 次元に投影することで視覚化できます。これらの視覚化を見ると、これらのベクトルが単語と単語間の関係についての意味情報を捉えていることが明らかになり、これは実際に非常に役立ちます。 オリジナルリンク: https://towardsdatascience.com/word2vec-a-baby-step-in-deep-learning-but-a-giant-leap-towards-natural-language-processing-40fe4e8602ba [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
<<: ブロックチェーン技術の 6 つのコア アルゴリズム。6 つのコア アルゴリズムを理解すれば、ブロックチェーンの専門家になれます。
人工知能 (AI) は、世界中の家庭や企業において、未来の夢から現代の現実へと変化しました。 AI ...
これは、3D ポイント クラウド用に提案された教師なしカプセル アーキテクチャであり、3D ポイント...
[51CTO.com クイック翻訳] ご存知のとおり、決定木は実生活で多くの実用的なシナリオで利用さ...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
「最初のディープラーニングフレームワークをどのように選択するか」は、初心者にとって常に頭痛の種でし...
2020 年は非常に困難な年でしたが、私にとってはコーネル大学でコンピューターサイエンスの博士号を取...
科学者は長い間ロボット工学の分野に興味を持っており、最近のバイオニックソフトロボットはロボット工学の...
近年、民間ドローンの急速な普及は、空中撮影、レジャーや娯楽、農作物の保護、電力検査など、人々の生産と...
コンピュータ サイエンスでは、スタックは、テーブルの末尾での挿入または削除操作に制限された線形テーブ...
マルチモーダルキングボムモデルGPT-4V、 166ページの「取扱説明書」を公開!これは Micro...