Word2Vec近似訓練原理

Word2Vec原理詳解中介紹了詞嵌入吊趾,跳字模型的核心在于使用softmax運算得到給定中心詞w_c來生成背景詞w_o的條件概率

P(w_o|w_c)=\frac{{\rm exp}(\boldsymbol u_o^{\top} \boldsymbol v_c)}{\sum_{i \in \mathcal{V}} {\rm exp}(\boldsymbol u_i^{\top} \boldsymbol v_c)}

該條件概率相應的對數(shù)損失

- {\rm log} P(w_o|w_c)= - \boldsymbol u_o^{\top} \boldsymbol v_c + {\rm log} \Big( \sum_{i \in \mathcal{V}} {\rm exp}(\boldsymbol u_i^{\top} \boldsymbol v_c) \Big)

由于softmax運算考慮了背景詞可能是詞典\mathcal{V}中的任一詞澳腹,以上損失包含了詞典大小數(shù)目的項的累加肢预。任何的更新或者對目標函數(shù)的評估都要花費O(|\mathcal{V}|)的時間復雜度。一個簡單的想法是不去直接計算润绎,而是去求近似值真椿。

Mikolov 在論文《Distributed Representations of Words and Phrases and their Compositionality》中提出了負采樣和層級softmax丽声,這是兩種有效的近似訓練方法。

1. 負采樣 (Negative Sampling)

負采樣修改了原來的目標函數(shù)壤短。給定中心詞w的一個背景窗口设拟,我們把背景詞c出現(xiàn)在該背景窗口看作一個事件,并將該事件的概率計算為

P(D=1|w, c,\theta) = \sigma (\boldsymbol v_c^{\top} \boldsymbol v_w)=\frac{1}{1+e^{(-\boldsymbol v_c^{\top} \boldsymbol v_w)}}

我們先考慮最大化文本序列中所有該事件的聯(lián)合概率來訓練詞向量久脯。負采樣通過采樣并添加負類樣本使目標函數(shù)更有意義纳胧。考慮最大化聯(lián)合概率P(D=1|w,c)帘撰,如果中心詞和上下文詞確實不在語料庫中跑慕,就最大化概率P(D=0|w,c)。我們對這兩個概率采用一個簡單的極大似然估計的方法(這里我們把\theta作為模型的參數(shù),在例子中是\mathcal{V}\mathcal{U}核行。

\begin{align} \theta &= \mathop{\arg\max}_{\theta} \prod_{(w,c) \in D} P(D=1|w,c,\theta) \prod_{(w,c) \in \widetilde{D}}P(D=0|w,c,\theta) \\ &= \mathop{\arg\max}_{\theta} \prod_{(w,c) \in D} P(D=1|w,c,\theta) \prod_{(w,c) \in \widetilde{D}}\left(1-P(D=1|w,c,\theta)\right) \\ &= \mathop{\arg\max}_{\theta} \sum_{(w,c) \in D} {\rm log} P(D=1|w,c,\theta) \sum_{(w,c) \in \widetilde{D}}{\rm log}\left(1-P(D=1|w,c,\theta)\right) \\ &= \mathop{\arg\max}_{\theta} \sum_{(w,c) \in D} {\rm log} \frac{1}{1+e^{(-\boldsymbol u_w^{\top} \boldsymbol v_c)}} \sum_{(w,c) \in \widetilde{D}}{\rm log}\left(1-\frac{1}{1+e^{(-\boldsymbol u_w^{\top} \boldsymbol v_c)}}\right) \\ &= \mathop{\arg\max}_{\theta} \sum_{(w,c) \in D} {\rm log} \frac{1}{1+e^{(-\boldsymbol u_w^{\top} \boldsymbol v_c)}} \sum_{(w,c) \in \widetilde{D}}{\rm log}\left(\frac{1}{1+e^{(\boldsymbol u_w^{\top} \boldsymbol v_c)}}\right) \end{align}

最大化似然函數(shù)等同于最小化負對數(shù)似然:

J = - \sum_{(w,c) \in D} {\rm log} \frac{1}{1+e^{(-\boldsymbol u_w^{\top} \boldsymbol v_c)}} - \sum_{(w,c) \in \widetilde{D}}{\rm log}\left(\frac{1}{1+e^{(\boldsymbol u_w^{\top} \boldsymbol v_c)}}\right)

其中\widetilde{D}表示“假的”或者“負的”語料牢硅。

對于 Skip-Gram 模型,我們對給定中心詞c來觀察的上下文單詞 c-m+j的新目標函數(shù)為

-{\rm log} \sigma \left(\boldsymbol u_{c-m+j}^{\top} \cdot \boldsymbol v_c\right)-\sum_{k=1}^K {\rm log} \sigma \left( - \tilde {\boldsymbol u}_k^{\top} \cdot \boldsymbol v_c \right)

對 CBOW 模型芝雪,我們對給定上下文向量\hat{v}=\scriptstyle{\frac{v_{c-m} + v_{c-m+1} + ... + v_{c+m}}{2m}}來觀察中心詞\boldsymbol u_c的新的目標函數(shù)為

-{\rm log} \sigma \left( \boldsymbol u_c^{\top} \cdot \hat{\boldsymbol v} \right) - \sum_{k=1}^K {\rm log} \sigma \left( - \tilde {\boldsymbol u}_k^{\top} \cdot \hat{\boldsymbol v} \right)

在上面的公式中减余,\{ \tilde {\boldsymbol u}_k | k=1...K \}是從P_{n}(w)中抽樣。

現(xiàn)在惩系,訓練中每一步的梯度計算開銷不再與詞典大小相關位岔,而與K線性相關。當K取較小的常數(shù)時堡牡,負采樣在每一步的梯度計算開銷較小赃承。

層序Softmax (Hierarchical Softmax)

層序softmax是另一種近似訓練法,相比普通的 softmax 這是一種更有效的替代方法悴侵。在實際中瞧剖,hierarchical softmax 對低頻詞往往表現(xiàn)得更好,負采樣對高頻詞和較低維度向量表現(xiàn)得更好可免。它使用了二叉樹這一數(shù)據(jù)結構抓于,樹的每個葉結點代表詞典\mathcal V中的每個詞。

層序softmax

假設L(w)為從二叉樹的根結點到詞w的葉結點的路徑(包括根結點和葉結點)上的結點數(shù)浇借,以上圖為例捉撮,L(w_3)=4。設n(w,j)為該路徑上第j個結點妇垢,并設該結點的背景詞向量為v_{n(w,j)}巾遭。因此n(w,1)是根結點,而n(w,L(w))w的父結點〈彻溃現(xiàn)在對每個內部結點n灼舍,我們任意選取一個它的子節(jié)點,定義為ch(n)(一般是左結點)涨薪。層序softmax將跳字模型中的條件概率近似表示為

P(w|w_i) = \prod_{j=1}^{L(w)-1} \sigma \left( \left[ n(w,j+1)=ch(n(w,j)) \right] \cdot \boldsymbol v_{n(w,j)}^{\top} \boldsymbol v_{w_i} \right)

其中

[x]=\begin{cases} 1 \quad &{\rm if} \: x \: {\rm is} \: {\rm true} \\ -1 &{\rm otherwise} \end{cases}

首先骑素,我們將根據(jù)從根節(jié)點n(w,1)到葉結點(w)的路徑的形狀來計算相乘的項。如果我們假設ch(n)一直都是n的左節(jié)點刚夺,然后當路徑往左時[n(w,j+1)=ch(n(w,j))]的值返回 1献丑,往右則返回 -1。

此外侠姑,[n(w,j+1)=ch(n(w,j))]提供了歸一化的作用创橄。在節(jié)點n處,如果我們將去往左和右節(jié)點的概率相加莽红,對于\boldsymbol v_n^{\top} \boldsymbol v_{w_i}的任何值則可以檢查妥畏,

\sigma (\boldsymbol v_n^{\top} \boldsymbol v_{w_i}) + \sigma (- \boldsymbol v_n^{\top} \boldsymbol v_{w_i}) = 1

歸一化也保證了\scriptstyle{\sum_{w=1}^{\mathcal V} P(w|w_i) =1},和在普通的 softmax 是一樣的。

最后我們計算點積來比較輸入向量\boldsymbol v_{w_i}對每個內部節(jié)點向量\boldsymbol v_{n(w,j)}^{\top}的相似度咖熟。下面我們給出一個例子圃酵。以上圖中的w_2為例,從根節(jié)點要經(jīng)過兩次左邊的邊和一次右邊的邊才到達w_2馍管,因此

\begin{align} P(w_2|w_i) &= P(n(w_2,1),{\rm left}) \cdot P(n(w_2,2),{\rm left}) \cdot P(n(w_2,3),{\rm right}) \\ &= \sigma \left( {\boldsymbol v}_{n(w_2,1)}^{\top} \boldsymbol v_{w_i} \right) \cdot \sigma \left( {\boldsymbol v}_{n(w_2,2)}^{\top} \boldsymbol v_{w_i} \right) \cdot \sigma \left( {- \boldsymbol v}_{n(w_2,3)}^{\top} \boldsymbol v_{w_i} \right) \end{align}

我們訓練模型的目標是最小化負的對數(shù)似然-{\rm log} P(w|w_i)郭赐,不是更新每個詞的輸出向量,而是更新二叉樹中從根結點到葉結點的路徑上的節(jié)點的向量确沸。

此外捌锭,由于L(w_o)?1的數(shù)量級為O(log_2|\mathcal V|),當詞典\mathcal V很大時罗捎,層序softmax在訓練中每一步的梯度計算開銷相較未使用近似訓練時大幅降低观谦。

該方法的速度由構建二叉樹的方式確定,并將詞分配給葉節(jié)點桨菜。Mikolov 在論文《Distributed Representations of Words and Phrases and their Compositionality》中使用的是哈夫曼樹豁状,在樹中分配高頻詞到較短的路徑。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末倒得,一起剝皮案震驚了整個濱河市泻红,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霞掺,老刑警劉巖谊路,帶你破解...
    沈念sama閱讀 211,496評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異菩彬,居然都是意外死亡缠劝,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,187評論 3 385
  • 文/潘曉璐 我一進店門骗灶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惨恭,“玉大人,你說我怎么就攤上這事矿卑『砹担” “怎么了?”我有些...
    開封第一講書人閱讀 157,091評論 0 348
  • 文/不壞的土叔 我叫張陵母廷,是天一觀的道長。 經(jīng)常有香客問我糊肤,道長琴昆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,458評論 1 283
  • 正文 為了忘掉前任馆揉,我火速辦了婚禮业舍,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己舷暮,他們只是感情好态罪,可當我...
    茶點故事閱讀 65,542評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著下面,像睡著了一般复颈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沥割,一...
    開封第一講書人閱讀 49,802評論 1 290
  • 那天耗啦,我揣著相機與錄音,去河邊找鬼机杜。 笑死帜讲,一個胖子當著我的面吹牛,可吹牛的內容都是我干的椒拗。 我是一名探鬼主播似将,決...
    沈念sama閱讀 38,945評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚀苛!你這毒婦竟也來了在验?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,709評論 0 266
  • 序言:老撾萬榮一對情侶失蹤枉阵,失蹤者是張志新(化名)和其女友劉穎译红,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兴溜,經(jīng)...
    沈念sama閱讀 44,158評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡侦厚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,502評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拙徽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刨沦。...
    茶點故事閱讀 38,637評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖膘怕,靈堂內的尸體忽然破棺而出想诅,到底是詐尸還是另有隱情,我是刑警寧澤岛心,帶...
    沈念sama閱讀 34,300評論 4 329
  • 正文 年R本政府宣布来破,位于F島的核電站,受9級特大地震影響忘古,放射性物質發(fā)生泄漏徘禁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,911評論 3 313
  • 文/蒙蒙 一髓堪、第九天 我趴在偏房一處隱蔽的房頂上張望送朱。 院中可真熱鬧娘荡,春花似錦、人聲如沸驶沼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,744評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽回怜。三九已至大年,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹉戚,已是汗流浹背鲜戒。 一陣腳步聲響...
    開封第一講書人閱讀 31,982評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抹凳,地道東北人遏餐。 一個月前我還...
    沈念sama閱讀 46,344評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赢底,于是被迫代替她去往敵國和親失都。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,500評論 2 348