1. 程式人生 > >nce loss 和

nce loss 和

regress 易懂 gpo 實現 gist 可能 gis max http

今天在訓練word vec的時候,用的是nce_loss. 官方sample和我寫的可視化示例裏面,都用的這個 nce_loss。

今天找了一下解釋,找到這個頁面:

https://www.zhihu.com/question/50043438/answer/254300443

說實話,沒怎麽看懂,先摘抄下來:


Tensorflow實現了兩種常用與word2vec的loss,sampled softmax和NCE,這兩種loss本身可以用於任意分類問題。

之前一直不太懂這兩種方法,感覺高深莫測,正好最近搞懂了,借tensorflow的代碼和大家一起分享一下我的理解,也記錄一下思路。

這兩個方法跟絕大多數deep learning的方法一樣,相當粗暴。

目的

兩個方法的目標是在分類的數量太大時,簡化softmax計算,采取估算的方法得到softmax的值。


Intuitive explanation

NCE loss的直觀想法:把多分類問題轉化成二分類。

之前計算softmax的時候class數量太大,NCE索性就把分類縮減為二分類問題。

之前的問題是計算某個類的歸一化概率是多少,二分類的問題是input和label正確匹配的概率是多少。

二分類問題群眾喜聞樂見,直接上logistic regression估算一下概率。

(這算不算是通俗易懂回答了答主的問題)


Sampled softmax則是只抽取一部分樣本計算softmax。這個想法也很好理解,訓練的時候我不需要特別精準的softmax歸一化概率,我只需要一個粗略值做back propoagation就好了。當然這麽粗糙的計算會不會出什麽問題,從我個人的理解上看,不會。

大部分優化器很可能比這粗糙的多,deep learning就是門亂拳打死老師傅的學科。

nce loss 和