任何採樣算法都應該保證頻次越高的樣本越容易被採樣出來。基本的思路是對於長度爲1的線段,根據詞語的詞頻將其公平地分配給每一個詞語:html
counter就是w的詞頻。算法
因而咱們將該線段公平地分配了:數組
接下來咱們只要生成一個0-1之間的隨機數,看看落到哪一個區間,就能採樣到該區間對應的單詞了,很公平。微信
但怎麼根據小數找區間呢?速度慢可不行。機器學習
word2vec用的是一種查表的方式,將上述線段標上M個「刻度」,刻度之間的間隔是相等的,即1/M:學習
接着咱們就不生成0-1之間的隨機數了,咱們生成0-M之間的整數,去這個刻度尺上一查就能抽中一個單詞了。spa
在word2vec中,該「刻度尺」對應着table數組。在具體實現時,不是直接用counter(w),而是對詞頻取了α次冪,通常去α=3/4=0.75,即:htm
這個冪其實是一種「平滑」策略,可以讓低頻詞多一些出場機會,高頻詞貢獻一些出場機會,劫富濟貧。get
原文:word2vec原理推導與代碼分析it
<b style="color:tomato;"></b>
<footer style="color:white;;background-color:rgb(24,24,24);padding:10px;border-radius:10px;"><br> <h3 style="text-align:center;color:tomato;font-size:16px;" id="autoid-2-0-0"><br> <br> <center> <span>微信公衆號:AutoML機器學習</span><br> <img src="https://ask.qcloudimg.com/draft/1215004/21ra82axnz.jpg" style="width:200px;height:200px"> </center> <b>MARSGGBO</b><b style="color:white;"><span style="font-size:25px;">♥</span>原創</b><br> <span>若有意合做或學術討論歡迎私戳聯繫~<br>郵箱:marsggbo@foxmail.com</span> <b style="color:white;"><br> 2019-1-1<p></p> </b><p><b style="color:white;"></b><br> </p></h3><br> </footer>