nce loss 和
阿新 • • 發佈:2017-12-29
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 和