【番外】負取樣原理
阿新 • • 發佈:2018-11-15
本來不想先寫這篇的,有個任務要用到,就花了一天時間弄清楚,然後總覺得要寫點什麼,就寫了。
NCE(噪聲對比估計)
負取樣可以看成 NCE 的特化,所以有必要先講一下 NCE。
在 Softmax 迴歸中,樣本屬於某個分類的概率是:
也就是說,要計算它屬於某個分類的概率,就要把所有分類的概率都計算出來。有的時候算力計算一個是夠的,但不夠計算這麼多。
NCE 的想法很簡潔,把多分類變成二分類,還用相同的引數。
我們需要在資料集上取樣。對於每個樣本,它的特徵為 ,選取它所屬的類別,並根據某個分佈 選取 個其它類別,作為標籤 。然後對於每個 ,把 當做新樣本的特徵。
然後給每個新樣本一個標籤 ,如果 屬於 ,那麼 ,否則 。
然後整個問題就變成了優化 。
我們觀察到,在新的資料集中,如果我們選取 的樣本,它們的 和原始樣本一樣。也就是:
為了避免混淆,把原資料集上的那個函式加了個下標 0。
如果我們選取 的樣本,它們的 就是分佈 ,與 無關。
還有,對於每個 , 總會有一個 1 和 個 0。
把它們乘一起,就得到了聯合分佈:
然後計算需要優化的那個函式:
負取樣
到現在還是算不出來,Mikolov 在此基礎上做了兩個改動:
第一,把 變成所抽樣標籤上的均勻分佈,那麼 。
第二,把配分項 變成模型的一個引數 。
於是,