負(fù)采樣算法
任何采樣算法都應(yīng)該保證頻次越高的樣本越容易被采樣出來牙躺∽荻基本的思路是對于長度為1的線段歼捏,根據(jù)詞語的詞頻將其公平地分配給每個(gè)詞語:
image
counter就是w的詞頻定鸟。
于是我們將該線段公平地分配了:
image
接下來我們只要生成一個(gè)0-1之間的隨機(jī)數(shù)而涉,看看落到哪個(gè)區(qū)間,就能采樣到該區(qū)間對應(yīng)的單詞了联予,很公平啼县。
但怎么根據(jù)小數(shù)找區(qū)間呢?速度慢可不行沸久。
word2vec用的是一種查表的方式季眷,將上述線段標(biāo)上M個(gè)“刻度”,刻度之間的間隔是相等的卷胯,即1/M:
image
接著我們就不生成0-1之間的隨機(jī)數(shù)了子刮,我們生成0-M之間的整數(shù),去這個(gè)刻度尺上一查就能抽中一個(gè)單詞了窑睁。
在word2vec中挺峡,該“刻度尺”對應(yīng)著table數(shù)組。具體實(shí)現(xiàn)時(shí)担钮,對詞頻取了0.75次冪:
image
這個(gè)冪實(shí)際上是一種“平滑”策略橱赠,能夠讓低頻詞多一些出場機(jī)會(huì),高頻詞貢獻(xiàn)一些出場機(jī)會(huì)裳朋,劫富濟(jì)貧病线。