web-dev-qa-db-ja.com

word2vec:負のサンプリング(素人用語)?

私は以下の論文を読んでいますが、ネガティブサンプリングの概念を理解するのに苦労しています。

http://arxiv.org/pdf/1402.3722v1.pdf

誰でも助けてください、お願いします?

70
Andy K

Word2vecの考え方は、テキスト内で(互いに関連して)近接して表示される単語のベクトル間の類似性(ドット積)を最大化し、そうでない単語の類似性を最小化することです。リンクする論文の式(3)で、指数関数をしばらく無視します。あなたが持っている

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

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

132
mbatchkarov

Softmax(どの単語が現在のターゲットWordに似ているかを判断する関数)の計算は、 [〜#〜] v [〜#〜](分母)のすべての単語の合計。これは一般に非常に大きくなります。

enter image description here

何ができますか?

ソフトマックスにapproximateするためのさまざまな戦略が提案されています。これらのアプローチは、softmax-basedsampling-basedアプローチに分類できます。 。 Softmaxベースのアプローチは、softmax層をそのまま保持するが、そのアーキテクチャを変更して、効率(例、階層的なソフトマックス)。 サンプリングベースの一方で、softmaxレイヤーを完全に廃止し、代わりに他のいくつかを最適化するソフトマックスに近似する損失関数(ソフトマックスの分母の正規化を、負のサンプリングのように計算するのに安価な他の損失で近似することによりこれを行います)。

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

enter image description here

どの対数は次のように分解できます:

enter image description here

数学および勾配式(詳細はを参照)を使用して、次のように変換されました。

enter image description here

ご覧のとおり、バイナリ分類タスクに変換されました(y = 1の陽性クラス、y = 0の陰性クラス)。バイナリ分類タスクを実行するにはラベルが必要なので、すべてのコンテキストワードcを真のラベル(y = 1、正のサンプル)、およびkとして指定しますコーパスから偽ラベルとしてランダムに選択(y = 0、負のサンプル)。


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

enter image description here

参照

29
Amir

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

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

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

enter image description here

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

enter image description here

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

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

enter image description here

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

SGNSでは、各トレーニングサンプルの重みの一部のみが更新されますが、SGは各トレーニングサンプルの何百万もの重みを更新します。

enter image description here

SGNSはこれをどのように達成しますか?->複数分類タスクをバイナリ分類タスクに変換することにより。

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

enter image description here

実際には、通常Gangnam-Styleregressionのようなランダムな単語でpimplesを観察することはありません。モデルが可能性のある(正の)ペアと可能性の低い(負の)ペアを区別できる場合、優れた単語ベクトルが学習されるという考え方です。

enter image description here

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

7
Eric Kim