ノイズ対照推定(NCE)損失の直感的な説明?


32

これら2つのソースからNCE(候補サンプリングの形式)について読みました。

テンソルフローの評価

オリジナルペーパー

誰かが次のことで私を助けることができます:

  1. NCEの仕組みの簡単な説明(上記を解析して理解するのは難しいことがわかったので、そこに提示された数学につながる直感的なものは素晴らしいでしょう)
  2. 上記のポイント1の後、これがネガティブサンプリングとどのように異なるかについての自然に直感的な説明。数式にわずかな変更があることがわかりますが、数学を理解できませんでした。ネガティブサンプリングのコンテキストでの直感的な理解はありword2vecます。ボキャブラリーからランダムにいくつかのサンプルを選択し、Vそれらのみを更新するため|V|、サイズが大きくなり、高速化が実現します。間違っている場合は修正してください。
  3. どちらをいつ使用するか、どのように決定されますか?例を含めることができれば素晴らしいと思います(アプリケーションを理解しやすいかもしれません)
  4. NCEはネガティブサンプリングより優れていますか?どのような方法で良いですか?

ありがとうございました。


私の投稿が役立つかもしれません。nanjiang.quora.com/Noise-contrastive-Estimationおよびその後のtheanoの実験は、私のgithub.com/jiangnanHugo/language_modelingで見つけることができます。私の理解が正しいことを願っています。
江南ヒューゴ

回答:


27

この投稿から引用:https : //stats.stackexchange.com/a/245452/154812

問題

「標準」ニューラルネットワークを使用して単語ベクトルを学習する場合、いくつかの問題があります。このようにして、単語のウィンドウ(ネットワークの入力)が与えられると、ネットワークが次の単語の予測を学習しながら単語ベクトルが学習されます。

次の単語を予測することは、クラスを予測することに似ています。つまり、このようなネットワークは単なる「標準」の多項(マルチクラス)分類器です。また、このネットワークには、クラスと同数の出力ニューロンが必要です。クラスが実際の単語である場合、ニューロンの数は非常に膨大です。

「標準」ニューラルネットワークは、通常、確率を表す出力ニューロンの値を必要とするクロスエントロピーコスト関数でトレーニングされます。つまり、各クラスのネットワークによって計算された出力「スコア」は、正規化され、各クラスの実際の確率。この正規化手順は、softmax関数によって実現されます。Softmaxは、巨大な出力レイヤーに適用すると非常にコストがかかります。

(a)ソリューション

この問題、つまりソフトマックスの高価な計算に対処するために、Word2Vecはノイズ対比推定と呼ばれる手法を使用します。この手法は[A]([B]で再構成)によって導入され、[C]、[D]、[E]で使用され、ラベルのない自然言語テキストから単語の埋め込みを学習します。

基本的な考え方は、多項分類問題(次の単語を予測する問題であるため)をバイナリ分類問題に変換することです。つまり、softmaxを使用して出力ワードの真の確率分布を推定する代わりに、バイナリロジスティック回帰(バイナリ分類)が代わりに使用されます。

各トレーニングサンプルについて、強化された(最適化された)分類器には、真のペア(中心語とそのコンテキストに表示される別の語)とkk個のランダムに破損したペア(中心語とランダムに選択された語から構成される)単語)。真のペアと破損したペアを区別することを学習することにより、分類器は最終的に単語ベクトルを学習します。

これは重要です。次の単語(「標準」のトレーニング手法)を予測する代わりに、最適化された分類器は、単語のペアが良いか悪いかを単に予測します。

Word2Vecはプロセスをわずかにカスタマイズし、ネガティブサンプリングと呼びます。Word2Vecでは、ネガティブサンプル(破損したペアに使用)の単語は特別に設計された分布から描画されます。これにより、頻度の低い単語がより頻繁に描画されます。

参照資料

[A] (2005)-対照的推定:ラベルなしデータの対数線形モデルのトレーニング

[B] (2010)-ノイズ対比推定:非正規化統計モデルの新しい推定原理

[C] (2008)-自然言語処理のための統合アーキテクチャ:マルチタスク学習を備えたディープニューラルネットワーク

[D] (2012)-ニューラル確率言語モデルをトレーニングするための高速でシンプルなアルゴリズム

[E] (2013)-ノイズを抑えた推定による単語埋め込みの効率的な学習


3

正直に言って、NCEの損失がその数学を深く理解することなく機能する理由を理解する直観的な方法はありません。数学を理解するには、元の論文を読む必要があります。

NCE損失が機能する理由は、実データに対するノイズの比率が増加すると、NCEが最尤推定(MLE)に近づくためです。k

TensorFlow実装は実際に機能します。基本的に、各データに対して、はデータからラベル付けされたクラス、TensorFlow NCE損失はノイズ分布からクラスをサンプリングします。式を使用して、各クラス(データから1 + ノイズ分布から)の数字の特別なバージョンを計算します(x,y)ykk

Δsθ0(w,h)=sθ0(w,h)logkPn(w)

ここで、はノイズ分布です。TensorFlowは、計算された各クラスの数字を使用して、数字を使用して各クラスのバイナリ分類のソフトマックス損失(ロジスティック回帰のログ損失)を計算し、これらの損失を最終NCE損失として加算します。Pn(w)

ただし、実データに対するノイズの比率は、ノイズ分布からサンプリングされたクラスの数と異なるため、その実装は概念的に間違っています。TensorFlow NCEは、ノイズとデータの比率の変数を提供せず、を暗黙的に想定していますが、これは概念的に正しくないと思います。knn=k

NCEの最初の論文では、証明の派生物をかなりスキップしたため、NCEを理解するのは非常に困難です。NCEに関する数学を理解しやすくするために、NCE論文の数学に注釈を付けたブログ投稿があります。

https://leimao.github.io/article/Noise-Contrastive-Estimation/

大学2年生以上はそれを理解できるはずです。


1

基本的に、これは、真のクラスと他のノイズの多いクラスラベルで構成される真の分布からサンプルを選択することです。次に、ソフトマックスを取得します。

これは、真の分布とノイズ分布からのサンプリングワードに基づいています。

ここでの基本的な考え方は、真の分布から取得したサンプルとノイズ分布から取得したサンプルを分離できるロジスティック回帰分類器をトレーニングすることです。真の分布から取得したサンプルについて話しているときは、モデル分布から取得した真のクラスである1つのサンプルのみについて話していることに注意してください。

ここで私はNCE損失とそれがNCE損失とどう異なるかについて説明しました。

ノイズコントラスト推定:高価なSoftmaxのソリューション。


1
このリンクは質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供する方が良いでしょう。リンクされたページが変更されると、リンクのみの回答が無効になる可能性があります。
-tuomastik

0

簡単に言えば、NCEは、1つの正のラベルとk個の負のラベルのみを持つ単なるマルチラベル分類損失関数です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.