word2vec:ネガティブサンプリング(素人用語で)?


回答:


166

のアイデアはword2vec、テキスト内で(互いにコンテキストで)近くに表示される単語のベクトル間の類似性(内積)を最大化し、そうでない単語の類似性を最小化することです。リンク先の論文の式(3)では、べき乗を少し無視します。あなたが持っている

      v_c * v_w
 -------------------
   sum(v_c1 * v_w)

分子は基本的に単語c(文脈)とw(ターゲット)単語の類似性です。分母は、他のすべてのコンテキストc1とターゲット単語の類似性を計算しwます。この比率を最大化すると、テキスト内で互いに近くに表示される単語は、そうでない単語よりも類似したベクトルを持つことが保証されます。ただし、コンテキストが多数あるため、これの計算は非常に遅くなる可能性がありますc1。ネガティブサンプリングは、この問題に対処する方法の1つですc1。いくつかのコンテキストをランダムに選択するだけです。最終的な結果は、その場合catのコンテキストに表示されfood、その後のベクトルfoodのベクトルとより類似しているcatのベクターよりも(それらのドット積によって測定されるように)いくつかの他のランダムに選択された単語(例えばdemocracygreedFreddy)、代わりの言語のすべて言い換えれ。これによりword2vec、トレーニングがはるかに高速になります。


15
ありがとうまたは素敵な説明。ただのサンプリングだと思います。しかし、なぜそれが「ネガティブ」と呼ばれたのか知っていますか?
HappyCoding 2016年

46
この用語は、ニューラルネットワークの一般的なアプリケーションである分類から借用されています。そこにはポジティブな例とネガティブな例がたくさんあります。を使用するword2vecと、任意の単語について、それに類似する必要のある単語のリスト(ポジティブクラス)がありますが、ネガティブクラス(ターガーワードに類似していない単語)はサンプリングによってコンパイルされます。
mbatchkarov 2016年

39

Softmax(現在のターゲット単語に類似している単語を判別する関数)の計算は、一般に非常に大きいV(分母)のすべての単語を合計する必要があるため、コストがかかります。

ここに画像の説明を入力してください

何ができるの?

ソフトマックスを概算するために、さまざまな戦略が提案されています。これらのアプローチは、softmaxベースのアプローチとサンプリングベースのアプローチにグループ化できます。Softmaxベースのアプローチは、softmax層をそのまま維持するが、そのアーキテクチャを変更して効率を向上させる方法です(階層型softmaxなど)。一方、サンプリングベースのアプローチは、softmax層を完全に排除し、代わりにsoftmaxを近似する他の損失関数を最適化します(softmaxの分母の正規化を、計算が安価な他の損失で近似することによってこれを行います。負のサンプリング)。

Word2vecの損失関数は次のようなものです。

ここに画像の説明を入力してください

どの対数が分解できるか:

ここに画像の説明を入力してください

いくつかの数学式と勾配式(詳細は6を参照)を使用すると、次のように変換されます。

ここに画像の説明を入力してください

ご覧のとおり、二項分類タスクに変換されています(y = 1ポジティブクラス、y = 0ネガティブクラス)。二項分類タスクを実行するにはラベルが必要なので、すべてのコンテキストワードcを真のラベル(y = 1、正のサンプル)として指定し、コーパスからランダムに選択されたkを偽のラベル(y = 0、負のサンプル)として指定します。


次の段落を見てください。ターゲットワードが「Word2vec」であると仮定します。3のウィンドウで、私たちのコンテキストの言葉は、次のとおりThewidelypopularalgorithmwasdeveloped。これらの文脈語はポジティブラベルと見なされます。ネガティブラベルも必要です。我々は、ランダムにコーパスからいくつかの単語を選ぶ(producesoftwareCollobertmargin-basedprobabilistic)と負のサンプルとして、それらを考慮してください。コーパスからランダムに例を選んだこの手法は、ネガティブサンプリングと呼ばれます。

ここに画像の説明を入力してください

参照


1
こんにちは@amir、私の最初の質問は、ネガティブサンプリングの概念を理解しているので、問題があります...
Andy K

1
非常によく説明されており、受け入れられた答えよりも少し技術的です。つまり、完璧なSOの状況です。受け入れられた回答を読んでアイデアを得てから、この回答を読んで詳細に理解してください。
UrsinBrunner19年

22

ネガティブサンプリングに関するチュートリアル記事をここに書きました。

なぜネガティブサンプリングを使用するのですか?->計算コストを削減する

バニラスキップグラム(SG)およびスキップグラム陰性サンプリング(SGNS)のコスト関数は次のようになります。

ここに画像の説明を入力してください

これTがすべてのボーカブの数であることに注意してください。と同等Vです。言い換えれば、T= V

p(w_t+j|w_t)SGの確率分布はV、コーパス内のすべてのボーカに対して次のように計算されます。

ここに画像の説明を入力してください

VSkip-Gramモデルをトレーニングする場合、簡単に数万を超える可能性があります。確率は計算V時間である必要があり、計算コストが高くなります。さらに、分母の正規化係数には追加のV計算が必要です。

一方、SGNSの確率分布は、次のように計算されます。

ここに画像の説明を入力してください

c_posは正の単語のW_neg単語ベクトルでありK、は出力重み行列のすべての負のサンプルの単語ベクトルです。SGNSの場合、確率はK + 1時間のみ計算する必要がありますK。通常は5〜20です。さらに、分母の正規化係数を計算するために追加の反復は必要ありません。

SGNSを使用すると、各トレーニングサンプルの重みの一部のみが更新されますが、SGは各トレーニングサンプルの数百万の重みすべてを更新します。

ここに画像の説明を入力してください

SGNSはどのようにしてこれを達成しますか?->複数分類タスクを二項分類タスクに変換する。

SGNSを使用すると、中心単語の文脈単語を予測することによって単語ベクトルが学習されなくなります。実際の文脈の単語(ポジティブ)とランダムに描かれた単語(ネガティブ)をノイズ分布から区別することを学習します。

ここに画像の説明を入力してください

実際の生活の中で、あなたは通常、守らないregressionようなランダムな言葉でGangnam-Style、またはpimples。モデルが可能性のある(正の)ペアと可能性の低い(負の)ペアを区別できる場合、適切な単語ベクトルが学習されるという考え方です。

ここに画像の説明を入力してください

上の図では、現在の正の単語とコンテキストのペアは(drillingengineer)です。K=5ネガティブサンプルはれるランダムに描かからノイズ分布minimizedprimaryconcernsledpage。モデルがトレーニングサンプルを反復処理するときに、正のペアの確率が出力されp(D=1|w,c_pos)≈1、負のペアの確率が出力されるように重みが最適化されますp(D=1|w,c_neg)≈0


1
Tは、トークンの数(テキスト内の単語の出現)を表します。語彙のV(ユニークな言葉)私は言うでしょう。
アダム

Kとして設定するとV -1、負のサンプリングはバニラスキップグラムモデルと同じになります。私の理解は正しいですか?
Shashwat

各トレーニングサンプル用に更新単語ベクトルの数は同じですが、トレーニングの目的関数は、まだ根本的に異なるものになります@Shashwat
エリック・キム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.