2017-02-28 67 views

回答

1

採樣的softmax嘗試對輸出中的所有樣本進行歸一化。有一個非正態分佈(對數標籤),這不是一個最佳的損失函數。請注意,雖然它們具有相同的參數,但它們使用函數的方式不同。看看文檔在這裏:https://github.com/calebchoo/Tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard4/tf.nn.nce_loss.md並讀取此行:採樣

默認情況下,這個使用日誌統一(Zipfian)分佈,所以你的標籤必須按順序進行排序降低頻率,以達到良好的效果。有關更多詳細信息,請參閱log_uniform_candidate_sampler。

看看本文,他們解釋他們爲什麼使用它的嵌入字:http://papers.nips.cc/paper/5165-learning-word-embeddings-efficiently-with-noise-contrastive-estimation.pdf

希望這有助於!

+0

第一鏈路斷開時,使用:https://github.com/calebchoo/Tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard4/tf.nn.nce_loss.md –

+0

謝謝!修復了鏈接 – rmeertens

2

Softmax示例全部是關於選擇給定數量的樣本並嘗試獲得softmax損失。這裏的主要目標是使採樣的softmax的結果等於我們的真正的softmax。所以算法基本上集中在從給定分佈中選擇那些樣本。另一方面,NCE損失更多的是選擇噪聲樣本,並試圖模仿真正的softmax。它只需要一個真正的類和一個K噪聲類。

相關問題