【轉載】負採樣算法

任何採樣算法都應該保證頻次越高的樣本越容易被採樣出來。基本的思路是對於長度爲1的線段,根據詞語的詞頻將其公平地分配給每一個詞語:html

image.png

counter就是w的詞頻。算法

因而咱們將該線段公平地分配了:數組

image.png

接下來咱們只要生成一個0-1之間的隨機數,看看落到哪一個區間,就能採樣到該區間對應的單詞了,很公平。spa

但怎麼根據小數找區間呢?速度慢可不行。htm

word2vec用的是一種查表的方式,將上述線段標上M個「刻度」,刻度之間的間隔是相等的,即1/M:blog

image.png

接着咱們就不生成0-1之間的隨機數了,咱們生成0-M之間的整數,去這個刻度尺上一查就能抽中一個單詞了。get

在word2vec中,該「刻度尺」對應着table數組。在具體實現時,不是直接用counter(w),而是對詞頻取了α次冪,通常去α=3/4=0.75,即:it

image.png

這個冪其實是一種「平滑」策略,可以讓低頻詞多一些出場機會,高頻詞貢獻一些出場機會,劫富濟貧。table

原文:word2vec原理推導與代碼分析原理



MARSGGBO原創




2019-1-1