日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

漫谈词向量之基于Softmax与Sampling的方法

發(fā)布時(shí)間:2025/7/25 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 漫谈词向量之基于Softmax与Sampling的方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

from:http://www.dedns.cn/xueba/2315329.shtml

原文: On word embeddings?

作者: Sebastian Ruder?

譯者: KK4SBB 審校:王藝

目錄:

基于softmax的方法?

Hierarchical Softmax

Differentiated Softmax

CNN softmax

基于sampling的方法?

Importance Sampling

Adaptive Importance Sampling

Target Sampling

Noise Contrastive Estimation

Negative Sampling

Self-Normalisation

Infrequent Normalisation

Other Approaches

各種方法對比

小結(jié)

Bengio等人2003年提出的神經(jīng)語言模型,Collobert和Weston在2008年提出的C&W模型,以及Mikolov等人在2013年提出的word2vec模型。作者認(rèn)為,降低最后的softmax層的計(jì)算復(fù)雜度是設(shè)計(jì)更好詞向量模型所面臨的主要挑戰(zhàn),同時(shí)也是機(jī)器翻譯(Jean等[10])和語言建模(Jozefowicz等[6])的共性挑戰(zhàn)。

本篇文章列舉了近幾年內(nèi)新提出的幾種替代softmax層的方法。其中一些方法目前還只在語言建模和機(jī)器學(xué)習(xí)中嘗試過。關(guān)于超參數(shù)的討論將安排在后續(xù)的系列文章中介紹。

先來說明一下文章里用到的符號:假設(shè)有一份訓(xùn)練文檔集,它包括了T個(gè)訓(xùn)練詞語w1,w2,w3,?,wT,它們構(gòu)成大小為|V|的詞語集合V。語言模型通常只考慮由當(dāng)前詞語wi的左右n個(gè)詞語組成的上下文ci。每個(gè)詞語有一個(gè)d維的輸入詞向量vW(即embedding層的詞向量)和輸出詞向量v’W(即softmax層的權(quán)重矩陣所表示的詞語)。最后,針對模型參數(shù)θ來優(yōu)化目標(biāo)函數(shù)Jθ。

若指定上下文c,用softmax方法計(jì)算詞語w出現(xiàn)的概率可以用公式表示為:

h是網(wǎng)絡(luò)倒數(shù)第二層的輸出向量。為了簡化表示,上式中用c表示上下文內(nèi)容,并且省略了目標(biāo)詞語wt的下標(biāo)t。為了得到上式的分母部分,需要計(jì)算向量h與詞典V中每個(gè)詞語向量之間的內(nèi)積。因此,計(jì)算softmax的代價(jià)非常昂貴。

接下來,我們將討論幾種能夠近似替代softmax的策略。這些方法可以歸納為基于softmax的和基于sampling的兩大類?;趕oftmax的方法仍舊保留了模型的softmax層,但是通過調(diào)整其結(jié)構(gòu)來提高效率?;趕ampling的方法則完全拋棄了softmax層,而是優(yōu)化其它形式的損失函數(shù)來代替softmax。

1 基于softmax的方法

1.1 分層Softmax

Hierarchical softmax (H-Softmax)是由Morin和Bengio[3]受到二叉樹的啟發(fā)而提出。H-Softmax本質(zhì)上是用層級關(guān)系替代了扁平化的softmax層,如圖1所示,每個(gè)葉子節(jié)點(diǎn)表示一個(gè)詞語。于是,計(jì)算單個(gè)詞語概率值的計(jì)算過程被拆解為一系列的概率計(jì)算,這樣可以避免對所有詞語進(jìn)行標(biāo)準(zhǔn)化計(jì)算。用H-Softmax替換softmax層之后,詞語的預(yù)測速度可以提升至少50倍,速度的提升對于低延時(shí)要求的實(shí)時(shí)系統(tǒng)至關(guān)重要,比如谷歌新推出的消息應(yīng)用Allo。

圖1:Hierarchical softmax

我們可以把原來的softmax看做深度為1的樹,詞表V中的每一個(gè)詞語表示一個(gè)葉子節(jié)點(diǎn)。計(jì)算一個(gè)詞語的softmax概率需要對|V|個(gè)節(jié)點(diǎn)的概率值做標(biāo)準(zhǔn)化。如果把softmax改為二叉樹結(jié)構(gòu),每個(gè)word表示葉子節(jié)點(diǎn),那么只需要沿著通向該詞語的葉子節(jié)點(diǎn)的路徑搜索,而不需要考慮其它的節(jié)點(diǎn)。

平衡二叉樹的深度是log2(|V|),因此,最多只需要計(jì)算log2(|V|)個(gè)節(jié)點(diǎn)就能得到目標(biāo)詞語的概率值。注意,得到的概率值已經(jīng)經(jīng)過了標(biāo)準(zhǔn)化,因?yàn)槎鏄渌腥~子節(jié)點(diǎn)組成一個(gè)概率分布,所有葉子節(jié)點(diǎn)的概率值總和等于1。我們可以簡單地驗(yàn)證一下,在圖1的根節(jié)點(diǎn)(Node o)處,兩個(gè)分枝的概率和必須為1。之后的每個(gè)節(jié)點(diǎn),它的兩個(gè)子節(jié)點(diǎn)的概率值之和等于節(jié)點(diǎn)本身的概率值。因?yàn)檎麠l搜索路徑?jīng)]有概率值的損失,所以最底層所有葉子節(jié)點(diǎn)的概率值之和必定等于1,hierarchical softmax定義了詞表V中所有詞語的標(biāo)準(zhǔn)化概率分布。

具體說來,當(dāng)遍歷樹的時(shí)候,我們需要能夠計(jì)算左側(cè)分枝或是右側(cè)分枝的概率值。為此,給每個(gè)節(jié)點(diǎn)分配一個(gè)向量表示。與常規(guī)的softmax做法不同,這里不是給每個(gè)輸出詞語w生成詞向量v’w,而是給每個(gè)節(jié)點(diǎn)n計(jì)算一個(gè)向量v’n??偣灿衸V|-1個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都有自己獨(dú)一無二的向量表示,H-Softmax方法用到的參數(shù)與常規(guī)的softmax幾乎一樣。于是,在給定上下文c時(shí),就能夠計(jì)算節(jié)點(diǎn)n左右兩個(gè)分枝的概率:

上式與常規(guī)的softmax大致相同?,F(xiàn)在需要計(jì)算h與樹的每個(gè)節(jié)點(diǎn)的向量v’n的內(nèi)積,而不是與每個(gè)輸出詞語的向量計(jì)算。而且,現(xiàn)在只需要計(jì)算一個(gè)概率值,這里就是偏向n節(jié)點(diǎn)右枝的概率值。相反的,偏向左枝的概率值是1?p(right|n,c)

圖2:Hierarchical softmax的計(jì)算過程(來自Hugo Lachorelle的YouTube課件)

如圖2所示,假設(shè)已知出現(xiàn)了詞語“the”、“dog”、“and”、“the”,則出現(xiàn)詞語“cat”的概率值就是在節(jié)點(diǎn)1向左偏的概率值、在節(jié)點(diǎn)2向右偏的概率以及在節(jié)點(diǎn)5向右偏的概率值的乘積。Hugo Lachorelle在他的視頻教程中給了更詳細(xì)的解釋。Rong[7]的文章也詳細(xì)地解釋了這些概念,并推導(dǎo)了H-Softmax。

顯然,樹形的結(jié)構(gòu)非常重要。若我們讓模型在各個(gè)節(jié)點(diǎn)的預(yù)測更方便,比如路徑相近的節(jié)點(diǎn)概率值也相近,那么憑直覺系統(tǒng)的性能肯定還會(huì)提升。沿著這個(gè)思路,Morin和Bengio使用WordNet的同義詞集作為樹簇。然而性能依舊不如常規(guī)的softmax方法。Mnih和Hinton[8]將聚類算法融入到樹形結(jié)構(gòu)的學(xué)習(xí)過程,遞歸地將詞集分為兩個(gè)集合,效果終于和softmax方法持平,計(jì)算量有所減小。

值得注意的是,此方法只是加速了訓(xùn)練過程,因?yàn)槲覀兛梢蕴崆爸缹⒁A(yù)測的詞語(以及其搜索路徑)。在測試過程中,被預(yù)測詞語是未知的,仍然無法避免計(jì)算所有詞語的概率值。

在實(shí)踐中,一般不用“左節(jié)點(diǎn)”和“右節(jié)點(diǎn)”,而是給每個(gè)節(jié)點(diǎn)賦一個(gè)索引向量,這個(gè)向量表示該節(jié)點(diǎn)的搜索路徑。如圖2所示,如果約定該位為0表示向左搜索,該位為1表示向右搜索,那詞語“cat”的向量就是011。

上文中提到平衡二叉樹的深度不超過log2(|V|)。若詞表的大小是|V|=10000,那么搜索路徑的平均長度就是13.3。因此,詞表中的每個(gè)詞語都能表示為一個(gè)平均長度為13.3比特的向量,即信息量為13.3比特。

關(guān)于信息量:

在信息論中,人們習(xí)慣于將詞語w概率值的負(fù)對數(shù)定義為信息量I(w):

I(w)=?log2p(w)

而熵H則是詞表中所有詞語的信息量的期望值:

H=∑i∈Vp(wi)I(wi)

熵也代表著根據(jù)信息的概率分布對信息編碼所需要的最短平均編碼長度。 拋硬幣事件需要用1比特來編碼正反兩個(gè)時(shí)間,對于永恒不變的事件則只需0比特。若用平衡二叉樹的節(jié)點(diǎn)來表示詞表中的詞語,還是假設(shè)詞表的大小|V|=10000,詞表中詞語的概率值均相等,那么熵H與平均搜索路徑的長度恰好相等:

之前我們一再強(qiáng)調(diào)了樹結(jié)構(gòu)的重要性,因?yàn)槔煤脴浣Y(jié)構(gòu)不僅能提升系統(tǒng)的性能,還能加快運(yùn)算速度。若我們給樹加入額外的信息,就能縮短某些攜帶信息量少的詞語的搜索路徑。Morin和Bengio就是利用了詞表中各個(gè)詞語出現(xiàn)概率不相等這一信息。他們認(rèn)為詞表中的一些詞語出現(xiàn)的概率總是大于其它詞語,那這些詞語就應(yīng)該用更短的向量編碼。他們所用的文檔集(|V|=10000)的熵大約是9.16。

于是,考慮詞頻之后,文檔集中每個(gè)詞語的平均編碼長度從13.3比特減為9.16比特,運(yùn)算速度也提升了31%。Mikolov等人在他們關(guān)于hierarchical softmax的論文[1]里就用到了霍夫曼樹,即詞頻越高的詞語編碼長度越短。比如,“the”是英語中最常見的詞語,那“the”在霍夫曼樹中的編碼長度最短,詞頻第二高的詞語編碼長度僅次于“the”,以此類推。整篇文檔的平均編碼長度因此降低。

霍夫曼編碼通常也被稱作熵編碼,因?yàn)槊總€(gè)詞語的編碼長度與它的熵幾乎成正比。香農(nóng)通過實(shí)驗(yàn)[5]得出英語字母的信息量通常在0.6~1.3之間。假設(shè)單詞的平均長度是4.5個(gè)字母,那么所攜帶的信息量就是2.7~5.85比特。

再回到語言模型:衡量語言模型好壞的指標(biāo)perplexity是2H,H表示熵。熵為9.16的unigram模型的perplexity達(dá)到29.16=572.0。我們可以直觀的理解為,平均情況下用該unigram模型預(yù)測下一個(gè)詞語時(shí),有572個(gè)詞語是等可能的候選詞語。目前,Jozefowicz在2016年的論文中提到最好的模型perplexity=24.2。因?yàn)?4.6=24.2,所以這個(gè)模型平均只需要4.6比特來表示一個(gè)詞語,已經(jīng)非常接近香農(nóng)記錄的實(shí)驗(yàn)下限值了。這個(gè)模型是否能用于改進(jìn)網(wǎng)絡(luò)的hierarchical softmax層,仍需要人們進(jìn)一步探索。

1.2 分片Softmax

Chen等人在論文中介紹了一種傳統(tǒng)softmax層的變換形式,稱作Differentiated Softmax (D-Softmax)。D-Softmax基于的假設(shè)是并不是所有詞語都需要相同數(shù)量的參數(shù):多次出現(xiàn)的高頻詞語需要更多的參數(shù)去擬合,而較少見的詞語就可以用較少的參數(shù)。

傳統(tǒng)的softmax層用到了dx|V|的稠密矩陣來存放輸出的詞向量表示v′w∈?d,論文中采用了稀疏矩陣。他們將詞向量v′w按照詞頻分塊,每塊區(qū)域的向量維度各不相同。分塊數(shù)量和對應(yīng)的維度是超參數(shù),可以根據(jù)需要調(diào)整。

圖3: Differentiated softmax (Chen et al. (2015))

圖3中,A區(qū)域的詞向量維度是dA(這個(gè)分塊是高頻詞語,向量的維度較高),B和C區(qū)域的詞向量維度分別是dB和dC。其余空白區(qū)域的值為0。

隱藏層h的輸出被視為是各個(gè)分塊的級聯(lián),比如圖3中h層的輸出是由三個(gè)長度分別為dA、dB、dC的向量級聯(lián)而成。D-Softmax只需計(jì)算各個(gè)向量段與h對應(yīng)位置的內(nèi)積,而不需整個(gè)矩陣和向量參與計(jì)算。

由于大多數(shù)的詞語只需要相對較少的參數(shù),計(jì)算softmax的復(fù)雜度得到降低,訓(xùn)練速度因此提升。相對于H-Softmax方法,D-Softmax的優(yōu)化方法在測試階段仍然有效。Chen在2015年的論文中提到D-Softmax是測試階段最快的方法,同時(shí)也是準(zhǔn)確率最高的之一。但是,由于低頻詞語的參數(shù)較少,D-Softmax對這部分?jǐn)?shù)據(jù)的建模能力較弱。

1.3 CNN-Softmax

傳統(tǒng)softmax層的另一種改進(jìn)是受到Kim[3]的論文啟發(fā),Kim對輸入詞向量vw采用了字符級別的CNN模型。相反,Jozefowicz在2016年將同樣的方法用于輸出詞向量v′w,并將這種方法稱為CNN-Softmax。如圖4所示,如果我們在輸入端和輸出端加上CNN模型,輸出端CNN生成的向量v′w與輸入端CNN生成的向量必然不相同,因?yàn)檩斎牒洼敵龅脑~向量矩陣就不一樣。

圖4:CNN-Softmax (Jozefowicz et al. (2016))

盡管這個(gè)方法仍需要計(jì)算常規(guī)softmax的標(biāo)準(zhǔn)化,但模型的參數(shù)卻大大的減少:只需要保留CNN模型的參數(shù),不需要保存整個(gè)詞向量矩陣dx|V|。在測試階段,輸出詞向量v′w可以提前計(jì)算,所以性能損失不大。

但是,由于字符串是在連續(xù)空間內(nèi)表示,而且模型傾向于用平滑函數(shù)將字符串映射到詞向量,因此基于字符的模型往往無法區(qū)分拼寫相似但是含義不同的詞語。為了消除上述影響,論文的作者增加了一個(gè)矯正因數(shù),顯著地縮小了CNN-Softmax與傳統(tǒng)方法的性能差距。通過調(diào)整矯正因數(shù)的維度,作者可以方便地取舍模型的大小與計(jì)算性能。

論文的作者還提到,前一層h的輸出可以傳入字符級別的LSTM模型,這個(gè)模型每次預(yù)測輸出詞語的一個(gè)字母。但是,這個(gè)方法的性能并不令人滿意。Ling等人在2014年的論文中采用類類似的方法來解決機(jī)器翻譯任務(wù),取得了不錯(cuò)的效果。

2 基于采樣的方法

至此,我們所討論的方法仍舊保持了softmax的結(jié)果。然而,基于采樣的方法完全摒棄了softmax層結(jié)構(gòu)。后者采用了更方便計(jì)算的損失值來逼近softmax的分母項(xiàng)。基于采樣的方法也僅在訓(xùn)練階段有效,在預(yù)測階段仍需要按部就班地計(jì)算softmax層,從而得到標(biāo)準(zhǔn)化的概率值。

為了直觀地感受softmax的分母對損失值的影響,我們先來推導(dǎo)損失函數(shù)Jθ對于模型參數(shù)θ的導(dǎo)數(shù)。

在訓(xùn)練階段,我們的目標(biāo)是使得訓(xùn)練集中每個(gè)詞語w的交叉熵最小,也就是使得softmax層輸出值的負(fù)對數(shù)取值最小。如果讀者對softmax輸出值與交叉熵的關(guān)系比較模糊,可以參考Karpathy的解釋。模型的損失函數(shù)可以寫成:

為了便于推導(dǎo),我們將Jθ改寫為:

為了與Bengio和Senecal[4,15]使用的符號一致(注意,第一篇論文計(jì)算的是梯度的對數(shù),沒有負(fù)號),用?(w)代替hTv’w。于是得到等式:

在反向傳播階段,我們可以將損失函數(shù)對于θ的偏導(dǎo)寫為:

因?yàn)閘ogx的導(dǎo)數(shù)是1/x,則上式又可以改寫為:

把偏導(dǎo)符號移到求和項(xiàng)里面,得到:

因?yàn)閑xp(x)的導(dǎo)數(shù)就是exp(x),于是也可以得到如下形式:

經(jīng)過變換,得到:

注意,

就是詞語wi的softmax概率值P(wi)。將其代入上面的等式中得到:

最后,將求和項(xiàng)內(nèi)的負(fù)號移到外面

Bengio和Senécal 2003年的時(shí)候提出梯度值可以分解為兩個(gè)部分:一部分與目標(biāo)詞語w正相關(guān)(等式右邊的第一項(xiàng)),另一部分與其余所有詞語負(fù)相關(guān),按照各個(gè)詞語的出現(xiàn)概率分配權(quán)重(等式右邊的第二項(xiàng))。我們可以發(fā)現(xiàn),等式右邊的第二項(xiàng)其實(shí)就是詞表V中所有詞語wi的的期望值:

現(xiàn)在大多數(shù)基于采樣方法的核心都是用簡單的過程來近似計(jì)算后一項(xiàng)的值。

2.1 重要性采樣

wm采用蒙特卡洛方法來估計(jì)概率分布的期望值E。如果已知網(wǎng)絡(luò)模型的分布P(w),于是我們就可以從中隨機(jī)采樣m個(gè)詞語w1,?,wm,并用下面的公式計(jì)算期望值:

但是,為了實(shí)現(xiàn)從概率值分布P中采樣,我們必須先計(jì)算得到P,而這個(gè)過程正是我們想繞開的。于是,我們用另一種類似于P但是采樣更方便的分布Q來代替。在語言建模的任務(wù)中,直接把訓(xùn)練集的unigram分布作為Q不失為良策。

這就是經(jīng)典的重要性采樣(Importance Sampling)的做法:它使用蒙特卡洛方法得到分布Q來模擬真實(shí)的分布P。可是,被采樣到的詞語w仍然需要計(jì)算其概率值P(w)。Bengio和Senécal借助了Liu論文[16]中的思路。

上文提到把Pwi賦值為

的權(quán)重,這里我們把權(quán)重值改為與Q相關(guān)的一個(gè)因子。這個(gè)因子是

其中

我們用r和R是為了避免與Bengio和Senécal論文中的w和W命名沖突。于是期望的估計(jì)值公式可以寫為:

若是采樣的數(shù)量越少,估計(jì)的分布與真實(shí)分布差別越大。如果樣本數(shù)量非常少,在訓(xùn)練過程中網(wǎng)絡(luò)模型的分布P可能與unigram的分布Q差異很大,會(huì)導(dǎo)致模型發(fā)散,因此我們需要調(diào)整到合適的樣本數(shù)量。Bengio和Senécal的論文中介紹了一種快速選擇樣本數(shù)量的方法。最終的運(yùn)算速度比傳統(tǒng)的softmax提升了19倍。

2.2 自適應(yīng)重要性采樣

Bengio和Senécal 2008年的論文中提到,在重要性采樣的方法中用更復(fù)雜的分布來替代unigram分布Q對改善模型的幫助并不大,他們嘗試了bigram和trigram,但常規(guī)的n-gram分布與訓(xùn)練得到的神經(jīng)語言模型似乎差別挺大。于是,他們提出了自適應(yīng)的n-gram分布來更好地?cái)M合目標(biāo)分布P。他們將bigram和unigram融合,融合的系數(shù)用SGD的方法訓(xùn)練得到,最終使得融合后的分布Q與目標(biāo)分布P的KL距離最小。他們的實(shí)驗(yàn)顯示這種方法能使速度提升100倍。

2.3 目標(biāo)采樣

2015年,Jean在論文里提到將自適應(yīng)重要性采樣用于機(jī)器翻譯任務(wù)。為了使該方法能更好地適應(yīng)GPU內(nèi)存資源有限的情況,他們限制了待采樣詞語的數(shù)量。他們將訓(xùn)練集分區(qū),每個(gè)分區(qū)僅保留放固定數(shù)量的樣本,形成詞表的一個(gè)子集V’。

這就意味著訓(xùn)練集的每個(gè)分區(qū)i可以用獨(dú)立的分布Qi,該分區(qū)內(nèi)所有詞語的概率值均相等,而Qi將分區(qū)i之外其余詞語的概率值設(shè)為零。

2.4 噪聲對比估計(jì)

噪聲對比估計(jì)(Noise Contrastive Estimation)是Mnih和Teh[18]發(fā)明的一種比重要性采樣更穩(wěn)定的采樣方法,因?yàn)槟承┣闆r下重要性采樣存在導(dǎo)致分布Q與P分道揚(yáng)鑣的風(fēng)險(xiǎn)。NCE不是直接估計(jì)某個(gè)詞語的概率值。相反,它借助一個(gè)輔助的損失值,從而實(shí)現(xiàn)了正確詞語概率值最大化這一目標(biāo)。

我們在上一篇文章中提到,Collobert和Weston(2008)采用的pair-wise排序準(zhǔn)則是將正確的樣本排在其它樣本之前。NCE的想法與其類似:訓(xùn)練一個(gè)模型來區(qū)分目標(biāo)詞語與噪聲。于是,待解決的問題就由預(yù)測正確的詞語簡化為一個(gè)二值分類器任務(wù),分類器試圖將正確的詞語與其它噪聲樣本中區(qū)分開來,如圖5所示:

圖5:噪聲對比估計(jì)(Tensorflow)

對于每個(gè)詞語wi,它的前n個(gè)詞語wt-1, ……, wt-n+1表示為wi的語境ci。然后從含有噪聲的分布Q中生成k個(gè)噪聲樣本w?ik。參照重要性采樣的方法,這里也可以從訓(xùn)練數(shù)據(jù)的unigram分布中采樣。由于分類器需要用到標(biāo)簽數(shù)據(jù),我們把語境 ci 對應(yīng)的所有正確的詞語wi標(biāo)記為正樣本(y=1),其余的噪聲詞語w?ik作為負(fù)樣本(y=0)。

接著,用邏輯回歸模型來訓(xùn)練樣本數(shù)據(jù):

由于計(jì)算所有噪聲樣本的期望

時(shí)仍需要對詞表V中的詞語求和,得到標(biāo)準(zhǔn)化的概率值,于是可以采用蒙特卡洛方法來估算:

簡化為:

實(shí)際上,我們是從兩個(gè)不同的分布中采樣數(shù)據(jù):正樣本是根據(jù)語境c從訓(xùn)練數(shù)據(jù)集Ptrain中采樣,而負(fù)樣本從噪聲分布Q中采樣獲得。因此,無論是正樣本還是負(fù)樣本,其概率值都可以表示成上述兩種分布帶權(quán)重的組合,權(quán)重值對應(yīng)于來自該分布的樣本值:

于是,樣本來自于Ptrain的概率值可以表示為條件概率的形式:

這個(gè)式子可以被簡化為:

由于不知道Ptrain(待計(jì)算項(xiàng)),我們就用P來代替:

當(dāng)然,樣本為負(fù)樣本的概率值就是P(y=0|w,c)=1?P(y=1|w,c)。值得注意的是,已知c求詞語w出現(xiàn)的概率值P(w|c)的計(jì)算方法實(shí)際上就是softmax的定義:

因?yàn)榉帜钢慌ch相關(guān),h的值與c相關(guān)(假設(shè)V不變),那么分母可以簡化為Z(c)來表示。softmax就變?yōu)橄旅娴男问?#xff1a;

為了求解Z(c),還是需要對V中所有詞語出現(xiàn)的概率值求和。NCE則用了一個(gè)小技巧巧妙地繞開:即把標(biāo)準(zhǔn)化后的分母項(xiàng)Z(c)當(dāng)作模型的待學(xué)習(xí)參數(shù)。Mnih和Teh(2012)、Vaswani等[20]在論文中都把Z(c)的值固定設(shè)為1,他們認(rèn)為這樣不會(huì)對模型的效果造成影響。Zoph[19]則認(rèn)為,即使訓(xùn)練模型,最終得到Z(c)的值也是趨近于1,并且方差很小。

若是我們把上面softmax等式中的Z(c)項(xiàng)改為常數(shù)1,等式就變?yōu)?#xff1a;

再把上面的式子代入求解P(y=1|w,c)P(y=1|w,c),得到:

繼續(xù)把上式代入到邏輯回歸的目標(biāo)函數(shù)中,得到:

NCE方法有非常完美的理論證明:隨著噪聲樣本k的數(shù)量增加,NCE導(dǎo)數(shù)趨近于softmax函數(shù)的梯度。Mnih 和 Teh (2012) 認(rèn)為抽取25個(gè)噪聲樣本就足以達(dá)到常規(guī)softmax方法的效果,速度能提升大約45倍。Chris Dyer撰寫的筆記[21]對NCE方法進(jìn)行了更詳細(xì)的解釋。

NCE方法也存在一個(gè)弊端,由于每個(gè)正樣本詞語w對應(yīng)的噪聲樣本各不相同,這些負(fù)樣本就無法以稠密矩陣的形式存儲(chǔ),也就無法快速地計(jì)算稠密矩陣的乘法,這就削弱了GPU的優(yōu)勢。Jozefowicz et al. (2016) 和 Zoph et al. (2016) 各自分別提出了在同一個(gè)批數(shù)據(jù)中共享噪聲樣本的想法,于是可以發(fā)揮GPU的稠密矩陣快速運(yùn)算的優(yōu)勢。

NCE與IS的相似性:

jozefowicz認(rèn)為NCE與IS的相似點(diǎn)不僅在于它們都是基于采樣的方法,而且相互之間聯(lián)系非常緊密。NCE等價(jià)于解決二分類任務(wù),他認(rèn)為IS問題也可以用一個(gè)代理損失函數(shù)來描述:IS相當(dāng)于用softmax和交叉熵?fù)p失函數(shù)來優(yōu)化解決多分類問題。他覺得IS是多分類問題,可能更適用于自然語言的建模,因?yàn)樗率艿綌?shù)據(jù)和噪聲樣本的共同作用,而NCE的迭代更新則是分別作用。事實(shí)上,Jozefowicz等人選用IS作為語言模型并且取得了最佳的效果。

2.5 負(fù)采樣

負(fù)采樣(Negative Sampling)可以被認(rèn)為是NCE的一種近似版本。我們之前也提到過,隨著樣本數(shù)量k的增加,NCE近似于softmax的損失。由于NEG的目標(biāo)是學(xué)習(xí)高質(zhì)量的詞向量表示,而不是降低測試集的perplexity指標(biāo),于是NEG對NCE做了簡化。

NEG也采用邏輯回歸模型,使得訓(xùn)練集中詞語的負(fù)對數(shù)似然最小。再回顧一下NCE的計(jì)算公式:

NEG與NCE的關(guān)鍵區(qū)別在于NEG以盡可能簡單的方式來估計(jì)這個(gè)概率值。為此,上式中計(jì)算量最大的kQ(w) 項(xiàng)被置為1,于是得到:

當(dāng)k=|V|并且Q是均勻分布時(shí),kQ(w)=1成立。此時(shí),NEG等價(jià)于NCE。我們將kQ(w)設(shè)置為1,而不是其它常數(shù)值的原因在于,P(y=1|w,c)P(y=1|w,c)可以改寫為sigmoid函數(shù)的形式:

如果我們再把這個(gè)等式代入之前的邏輯回歸損失函數(shù)中,可以得到:

進(jìn)一步簡化后得到:

假設(shè)

最終得到:

為了與Mikolov et al. (2013)論文中的符合保持一致,h要用vwI替換,v’wi要用v’wO替換,vwij?

要用v’wi替換。另外,與Mikolov所使用的目標(biāo)不同,我們在三個(gè)方面做了修改:a)對整個(gè)文檔集做優(yōu)化,b)最小化負(fù)對數(shù)似然,而不是最大化對數(shù)似然,c)用蒙特卡洛方法估計(jì)期望值

若想了解更多NEG的細(xì)節(jié),可以參考Goldberg 和 Levy 的筆記[22]。

我們發(fā)現(xiàn),僅當(dāng)k=|V|并且Q是均勻分布時(shí),NEG才等價(jià)于NCE。在其它情況下,NEG只是近似于NCE,也就是說前者不會(huì)直接優(yōu)化正確詞語的對數(shù)似然,所以不適合用于自然語言建模。NEC更適用于訓(xùn)練詞向量表示。

2.6 自標(biāo)準(zhǔn)化

盡管Devlin[23]提出的自標(biāo)準(zhǔn)化方法不是基于采樣的,但他的想法能給我們帶來不少啟發(fā)。上一節(jié)我們提到,若將NCE損失函數(shù)的Z(c)這一項(xiàng)值設(shè)為1,模型就相當(dāng)于是自標(biāo)準(zhǔn)化。這一特性幫我們節(jié)省了大量計(jì)算Z(c)標(biāo)準(zhǔn)化的資源。

損失函數(shù)Jθ的目標(biāo)是最小化訓(xùn)練數(shù)據(jù)中所有詞語的負(fù)對數(shù)似然:

經(jīng)過變換得到:

如果能限制模型的Z(c)=1或是logZ(c)=0,那么就不必計(jì)算Z(c)項(xiàng)中復(fù)雜的標(biāo)準(zhǔn)化了。于是,Devlin建議給損失函數(shù)加一項(xiàng)平方誤差的懲罰項(xiàng),使得logZ(c)盡可能逼近與0:

等價(jià)于:

其中,系數(shù)α用來平衡模型的準(zhǔn)確率和自標(biāo)準(zhǔn)化計(jì)算。經(jīng)過這樣的改造,Z(c)的值就會(huì)趨近于1。在Devlin2014年那篇有關(guān)機(jī)器翻譯系統(tǒng)的論文中,他們在解碼階段將softmax的分母項(xiàng)置為1,僅計(jì)算分子項(xiàng)和懲罰項(xiàng):

據(jù)他們稱,自標(biāo)準(zhǔn)化方法的速度提升了將近15倍,而BLEU得分相比于常規(guī)的方法只降低了一點(diǎn)點(diǎn)。

2.7 低頻標(biāo)準(zhǔn)化

Andreas 和 Klein[11] 認(rèn)為只需要對一部分訓(xùn)練樣本做標(biāo)準(zhǔn)化,就能取得近似于自標(biāo)準(zhǔn)化的效果。于是他們提出了低頻標(biāo)準(zhǔn)化(Infrequent Normalisation)的方法,對懲罰項(xiàng)降采樣,使之變?yōu)橐环N基于采樣的方法。

先把上文中的損失函數(shù)Jθ分解為兩部分:

然后就可以對第二項(xiàng)進(jìn)行降采樣,得到下面的公式:

其中,γ控制采樣率。Andreas 和 Klein (2015) 認(rèn)為IF不但采納了NCE和自標(biāo)準(zhǔn)化兩者的優(yōu)點(diǎn),即不需要對所有訓(xùn)練樣本進(jìn)行標(biāo)準(zhǔn)化計(jì)算,而且也能很好的取舍模型的準(zhǔn)確率和標(biāo)準(zhǔn)化估計(jì)值的準(zhǔn)確程度。據(jù)他們稱,當(dāng)只對1/10的訓(xùn)練數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化時(shí),速度可以提升將近10倍,且沒有明顯的效果下降。

3 其它的方法

除了上述介紹的幾種方法來近似技術(shù)或者避免計(jì)算softmax的分母項(xiàng)Z(c)之外,另一些方法是針對

項(xiàng)做優(yōu)化。比如,Vijayanarasimhan在論文[12]中提出了快速的局部敏感哈希算法近似計(jì)算

但是,盡管Vijayanarasimhan的方法在測試階段加快了模型的預(yù)測速度,但是在訓(xùn)練階段速度優(yōu)化的效果不明顯。

4 各種方法對比

上文中已經(jīng)總結(jié)了多種基于softmax和基于采樣的方法,這些方法都能極大地提升運(yùn)算效率。這一節(jié)中,我們將多這些方法做個(gè)比較。

表1:自然語言建模的各種softmax近似計(jì)算方法比較

如上表所示,幾乎每種方法在不同的數(shù)據(jù)集或是不同的場景下都有利弊。對于語言建模,常規(guī)的softmax方法在小數(shù)據(jù)集上的效果仍然非常好,比如Penn Treebank,有時(shí)甚至在中等規(guī)模數(shù)據(jù)集上的表現(xiàn)也不錯(cuò),比如Gigaword,但是它在大規(guī)模數(shù)據(jù)集上的效果就很差,例如1B Word Benchmark。目標(biāo)采樣。相反,分層采樣和低頻標(biāo)準(zhǔn)化等方法在大規(guī)模數(shù)據(jù)集上的效果非常好。

分片softmax在小數(shù)據(jù)集和大數(shù)據(jù)集上的效果都不錯(cuò),并且它是唯一做到在測試階段速度提升的方法。分層softmax方法在小數(shù)據(jù)集上的表現(xiàn)較差,但是它的速度最快,單位時(shí)間內(nèi)處理的訓(xùn)練樣本數(shù)量也最多。NCE適用于大數(shù)據(jù)集,但多數(shù)情況下效果不如其它方法。負(fù)采樣方法不擅長語言建模問題,它更適用于學(xué)習(xí)詞向量表示,比如用在經(jīng)典的word2vec中。

最后,如果你想選用上述的方法,TensorFlow已經(jīng)實(shí)現(xiàn)了其中一部分基于采樣的方法,并且比較了部分方法的差異。

5 小結(jié)

總而言之,學(xué)習(xí)詞語的表達(dá)是一個(gè)非常寬泛的領(lǐng)域,很多因素都會(huì)影響最終的表達(dá)效果。在上一篇文章中,我們介紹了常用模型的結(jié)構(gòu)。在這篇文章中,我們從softmax層切入,深入探究和比較了多種方法。下一篇文章我們將會(huì)介紹GloVe方法。

6 參考文獻(xiàn)

【1】Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Distributed Representations of Words and Phrases and their Compositionality. NIPS, 1–9.

【2】Mikolov, T., Corrado, G., Chen, K., & Dean, J. (2013). Efficient Estimation of Word Representations in Vector Space. Proceedings of the International Conference on Learning Representations (ICLR 2013), 1–12.

【3】Morin, F., & Bengio, Y. (2005). Hierarchical Probabilistic Neural Network Language Model. Aistats, 5.

【4】Bengio, Y., & Senécal, J.-S. (2003). Quick Training of Probabilistic Neural Nets by Importance Sampling. AISTATS. http://doi.org/10.1017/CBO9781107415324.004

【5】Shannon, C. E. (1951). Prediction and Entropy of Printed English. Bell System Technical Journal, 30(1), 50–64. http://doi.org/10.1002/j.1538-7305.1951.tb01366.x

【6】Jozefowicz, R., Vinyals, O., Schuster, M., Shazeer, N., & Wu, Y. (2016). Exploring the Limits of Language Modeling. Retrieved from http://arxiv.org/abs/1602.02410

【7】Rong, X. (2014). word2vec Parameter Learning Explained. arXiv:1411.2738, 1–19. Retrieved from http://arxiv.org/abs/1411.2738

【8】Mnih, A., & Hinton, G. E. (2008). A Scalable Hierarchical Distributed Language Model. Advances in Neural Information Processing Systems, 1–8. Retrieved from http://papers.nips.cc/paper/3583-a-scalable-hierarchical-distributed-language-model.pdf

【9】Chen, W., Grangier, D., & Auli, M. (2015). Strategies for Training Large Vocabulary Neural Language Models. Retrieved from http://arxiv.org/abs/1512.04906

【10】Jean, S., Cho, K., Memisevic, R., & Bengio, Y. (2015). On Using Very Large Target Vocabulary for Neural Machine Translation. Proceedings of the 53rd Annual Meeting of the Association for Computational Linguistics and the 7th International Joint Conference on Natural Language Processing (Volume 1: Long Papers), 1–10. Retrieved from http://www.aclweb.org/anthology/P15-1001

【11】Andreas, J., & Klein, D. (2015). When and why are log-linear models self-normalizing? Naacl-2015, 244–249.

【12】Vijayanarasimhan, S., Shlens, J., Monga, R., & Yagnik, J. (2015). Deep Networks With Large Output Spaces. Iclr, 1–9. Retrieved from http://arxiv.org/abs/1412.7479

【13】Kim, Y., Jernite, Y., Sontag, D., & Rush, A. M. (2016). Character-Aware Neural Language Models. AAAI. Retrieved from http://arxiv.org/abs/1508.06615

【14】Ling, W., Trancoso, I., Dyer, C., & Black, A. W. (2016). Character-based Neural Machine Translation. ICLR, 1–11. Retrieved from http://arxiv.org/abs/1511.04586

【15】Bengio, Y., & Senécal, J.-S. (2008). Adaptive importance sampling to accelerate training of a neural probabilistic language model. IEEE Transactions on Neural Networks, 19(4), 713–722. http://doi.org/10.1109/TNN.2007.912312

【16】Liu, J. S. (2001). Monte Carlo Strategies in Scientific Computing. Springer. http://doi.org/10.1017/CBO9781107415324.004

【17】Gutmann, M., & Hyv?rinen, A. (2010). Noise-contrastive estimation: A new estimation principle for unnormalized statistical models. International Conference on Artificial Intelligence and Statistics, 1–8. Retrieved from http://www.cs.helsinki.fi/u/ahyvarin/papers/Gutmann10AISTATS.pdf

【18】Mnih, A., & Teh, Y. W. (2012). A Fast and Simple Algorithm for Training Neural Probabilistic Language Models. Proceedings of the 29th International Conference on Machine Learning (ICML’12), 1751–1758.

【19】Zoph, B., Vaswani, A., May, J., & Knight, K. (2016). Simple, Fast Noise-Contrastive Estimation for Large RNN Vocabularies. NAACL.

【20】Vaswani, A., Zhao, Y., Fossum, V., & Chiang, D. (2013). Decoding with Large-Scale Neural Language Models Improves Translation. Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing (EMNLP 2013), (October), 1387–1392.

【21】Dyer, C. (2014). Notes on Noise Contrastive Estimation and Negative Sampling. Arxiv preprint. Retrieved from http://arxiv.org/abs/1410.8251

【22】Goldberg, Y., & Levy, O. (2014). word2vec Explained: Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method. arXiv Preprint arXiv:1402.3722, (2), 1–5. Retrieved from http://arxiv.org/abs/1402.3722

【23】Devlin, J., Zbib, R., Huang, Z., Lamar, T., Schwartz, R., & Makhoul, J. (2014). Fast and robust neural network joint models for statistical machine translation. Proc. ACL’2014, 1370–1380.


總結(jié)

以上是生活随笔為你收集整理的漫谈词向量之基于Softmax与Sampling的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。