質問

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

Tensorflowの書き込み

オリジナルペーパー

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

  1. NCEがどのように機能するかについての簡単な説明(私は上記を解析して理解するのが難しいと感じたので、そこに提示された数学につながる直感的な何かが素晴らしいでしょう)
  2. 上記のポイント1の後、これがネガティブサンプリングとどのように異なるかについての自然に直感的な説明。フォーミュラにはわずかな変化があるが、数学を理解できなかったことがわかります。私は、の文脈で否定的なサンプリングについて直感的に理解しています word2vec - 語彙からいくつかのサンプルをランダムに選択します V そして、それらのみを更新します |V| 大きく、これはスピードアップを提供します。間違っている場合は修正してください。
  3. どちらを使用するのか、それはどのように決定されますか?例を含めることができれば、それは素晴らしいことです(おそらく理解しやすいアプリケーション)
  4. nceは負のサンプリングよりも優れていますか?どんな方法で良いですか?

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

役に立ちましたか?

解決

この投稿から取られた:https://stats.stackexchange.com/a/245452/154812

問題

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

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

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

(a)ソリューション

この問題、つまりSoftMaxの高価な計算に対処するために、Word2Vecはノイズ制御推定と呼ばれる手法を使用します。この手法は、[c]、[d]、[e]で使用され、[a]([b]によって再定式化された)によって導入され、無効な自然言語テキストから単語の埋め込みを学習しました。

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

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

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

word2vecはプロセスをわずかにカスタマイズし、ネガティブサンプリングと呼びます。 word2vecでは、負のサンプル(破損したペアに使用)の単語は、特別に設計された分布から引き出されます。

参照

A](2005) - 対照的な推定:非標識データでの対数線形モデルのトレーニング

B](2010) - ノイズ制御推定:非正規化された統計モデルの新しい推定原則

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

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

e](2013) - ノイズ制御推定を使用して、単語の埋め込みを効率的に学習します。

他のヒント

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

NCE損失が機能する理由は、NCEが実際のデータとノイズの比率が最大尤度推定(MLE)に近似するためです $ k $ 増加します。

Tensorflowの実装は実際に機能します。基本的に、各データについて $(x、y)$, $ y $ データからラベルの付いたクラス、Tensorflow nce損失サンプル $ k $ ノイズ分布からのクラス。各クラスの数字の特別なバージョンを計算します(データ +から1 $ k $ ノイズ分布から)方程式を使用します

$$ delta s _ { theta^0}(w、h)= s _ { theta^0}(w、h) - log kp_n(w)$$

どこ $ p_n(w)$ ノイズ分布です。各クラスの数字が計算された場合、Tensorflowは数字を使用して、各クラスのバイナリ分類のソフトマックス損失(ロジスティック回帰のログ損失)を計算し、これらの損失を最終的なNCE損失として一緒に追加します。

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

元のNCE論文は、証明の派生物を大いにスキップしたので、NCEを理解するのが本当に難しいようになりました。 NCEについての数学を簡単に理解するために、NCE論文から数学に注釈を付けたブログ投稿があります。

https://leimao.github.io/article/noise-contrastive-estimation/.

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

基本的に、これは、真のクラスと他のいくつかの騒々しいクラスラベルで構成される真の分布からサンプルを選択しています。次に、その上にソフトマックスを取ります。

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

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

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

ノイズ対照推定:高価なソフトマックスのソリューション。

ライセンス: CC-BY-SA帰属
所属していません datascience.stackexchange
scroll top