“噪声对比估计”杂谈:曲径通幽之妙
作者丨蘇劍林
單位丨廣州火焰信息科技有限公司
研究方向丨NLP,神經(jīng)網(wǎng)絡(luò)
個(gè)人主頁丨kexue.fm
說到噪聲對比估計(jì),或者“負(fù)采樣”,大家可能立馬就想到了 Word2Vec。事實(shí)上,它的含義遠(yuǎn)不止于此,噪音對比估計(jì)(NCE, Noise Contrastive Estimation)是一個(gè)迂回但卻異常精美的技巧,它使得我們在沒法直接完成歸一化因子(也叫配分函數(shù))的計(jì)算時(shí),就能夠去估算出概率分布的參數(shù)。本文就讓我們來欣賞一下 NCE 的曲徑通幽般的美妙。?
注:由于出發(fā)點(diǎn)不同,本文所介紹的“噪聲對比估計(jì)”實(shí)際上更偏向于所謂的“負(fù)采樣”技巧,但兩者本質(zhì)上是一樣的,在此不作區(qū)分。
問題起源
問題的根源是難分難舍的指數(shù)概率分布。
指數(shù)族分布
在很多問題中都會(huì)出現(xiàn)指數(shù)族分布,即對于某個(gè)變量 x 的概率 p(x),我們將其寫成:
其中 G(x) 是 x 的某個(gè)“能量”函數(shù),而則是歸一化常數(shù),也叫配分函數(shù)。這種分布也稱為“玻爾茲曼分布”。
在機(jī)器學(xué)習(xí)中,指數(shù)族分布的主要來源有兩個(gè)。第一個(gè)來源是 softmax:我們做分類預(yù)測時(shí),通常最后都會(huì)將全連接層的結(jié)果用 softmax 激活,這就是一個(gè)離散的、有限個(gè)點(diǎn)的玻爾茲曼分布了;第二個(gè)則是來源于最大熵原理:當(dāng)我們引入某個(gè)特征并且已經(jīng)能估算出特征的期望時(shí),最大熵模型告訴我們其分布應(yīng)該是特征的指數(shù)形式。
難算的配分函數(shù)
總的來說,指數(shù)族分布是非常實(shí)用的一類分布,不論是機(jī)器學(xué)習(xí)、數(shù)學(xué)還是物理領(lǐng)域,都能夠碰見它。然而,它卻有一個(gè)比較大的問題:不容易算,準(zhǔn)確來說是配分函數(shù)不容易算。
具體來說,不好算的原因可能有兩個(gè)。一個(gè)是計(jì)算量太大,比如語言模型(包括 Word2Vec)的場景,因?yàn)橐ㄟ^上下文來預(yù)測當(dāng)前詞的分布情況,這就需要對幾十萬甚至幾百萬項(xiàng)(取決于詞表大小)進(jìn)行求和來算歸一化因子,這種情況下不是不能算,而是計(jì)算量大到難以承受了。
另一種情況是根本算不出來,比如假設(shè),那么就有:
這積分根本就沒法簡單地算出來呀,更不用說更加復(fù)雜的函數(shù)了。現(xiàn)在我們也許能從這個(gè)角度感受到為什么高斯分布那么常用了,因?yàn)?#xff0c;因?yàn)?#xff0c;因?yàn)?#xff0c;換個(gè)分布就沒法算下去了……
在機(jī)器學(xué)習(xí)中,如果只是分類、預(yù)測,那么歸一化因子算不算出來都無所謂,因?yàn)槲覀冎灰鄬Ρ容^取出最大的那個(gè)。但是在預(yù)測之前,我們還面臨著訓(xùn)練的問題,也就是參數(shù)估計(jì),具體來說,G(x) 其實(shí)是含有一些位置參數(shù) θ 的,準(zhǔn)確來說要寫成 G(x;θ),那么概率分布就是:
我們要從 x 的樣本中推算出 θ 來,通常我們會(huì)用最大似然,但是不算出 Z(θ) 來我們就沒法算似然函數(shù),也就沒法做下去了。
NCE登場
非常幸運(yùn)的是,NCE 誕生了,它成功地繞開了這個(gè)困難。對于配分函數(shù)算不出來的情形,它提供了一種算下去的可能性;對于配分函數(shù)計(jì)算量太大的情形,它還提供了一種降低計(jì)算量的方案。?
變成二分類問題
NCE 的思想很簡單,它希望我們將真實(shí)的樣本和一批“噪聲樣本”進(jìn)行對比,從中發(fā)現(xiàn)真實(shí)樣本的規(guī)律出來。?
具體來說,能量還是原來的能量 G(x;θ),但這時(shí)候我們不直接算概率 p(x) 了,因?yàn)闅w一化因子很難算。我們?nèi)ニ?#xff1a;
這里的 θ 還是原來的待優(yōu)化參數(shù),而 γ 則是新引入的要優(yōu)化的參數(shù)。
然后,NCE 的損失函數(shù)變?yōu)?#xff1a;
其中 p?(x) 是真實(shí)樣本,U(x) 是某個(gè)“均勻”分布或者其他的、確定的、方便采樣的分布。?
說白了,NCE 的做法就是將它轉(zhuǎn)化為二分類問題,將真實(shí)樣本判為 1,從另一個(gè)分布采樣的樣本判為 0。
等價(jià)于原來分布?
現(xiàn)在的問題是,從 (5) 式估算出來的 θ,跟直接從 (3) 式的最大似然估計(jì)(理論上是可行的)出來的結(jié)果是不是一樣的。?
答案是基本一樣的。我們將 (5) 式中的 loss 改寫為:
因?yàn)?p?(x) 和 U(x) 都跟參數(shù) θ,γ 沒關(guān),因此將 loss 改為下面的形式,不會(huì)影響優(yōu)化結(jié)果:
其中:
(7) 式是 KL 散度的積分,而 KL 散度非負(fù),那么當(dāng)“假設(shè)的分布形式是滿足的、并且充分優(yōu)化”時(shí),(7) 式應(yīng)該為 0,從而我們有 p?(y|x)=p(y|x),也就是:
從中可以解得:
如果 U(x) 取均勻分布,那么 U(x) 就只是一個(gè)常數(shù),所以最終的效果表明 γ?logU(x) 起到了 logZ 的作用,而分布還是原來的分布 (3),θ 還是原來的 θ。
這就表明了 NCE 就是一種間接優(yōu)化 (3) 式的巧妙方案:看似迂回,實(shí)則結(jié)果等價(jià),并且 (5) 式的計(jì)算量也大大減少,因?yàn)橛?jì)算量就只取決于采樣的數(shù)目了。
一些插曲
一些跟 NCE 相關(guān)的話題,就都放在這里了。?
NCE與負(fù)采樣簡述
NCE 的系統(tǒng)提出是在 2010 年的論文 Noise-contrastive estimation: A new estimation principle for unnormalized statistical models 中,后面訓(xùn)練大規(guī)模的神經(jīng)語言模型基本上都采用 NCE 或者類似的 loss 了。
論文的標(biāo)題其實(shí)就表明了 NCE 的要點(diǎn):它是“非歸一化模型”的一個(gè)“參數(shù)估計(jì)原理”,專門應(yīng)對歸一化因子難算的場景。?
但事實(shí)上,“負(fù)采樣”的思想其實(shí)早就被使用了,比如就在 2008 年的 ICML 上,Ronan Collobert 和 Jason Weston 在發(fā)表的 A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning 中已經(jīng)用到了負(fù)采樣的方法來訓(xùn)練詞向量。
要知道,那時(shí)候距離 Word2Vec 發(fā)布還有四五年。關(guān)于詞向量和語言模型的故事,請參考 licstar 的《詞向量和語言模型》[1]。?
基于同樣的為了降低計(jì)算量的需求,后來Google的Word2Vec也用上了負(fù)采樣技巧,在很多任務(wù)下,它還比基于Huffman Softmax的效果要好,尤其是那個(gè)“詞類比(word analogy)”實(shí)驗(yàn)。這里邊的奧妙,我們馬上就來分析。?
Word2Vec
現(xiàn)在我們落實(shí)到 Word2Vec 來分析一些事情。以 Skip Gram 模型為例,Word2Vec 的目標(biāo)是:
其中 ui,vj 都是待優(yōu)化參數(shù),代表著上下文和中心詞的兩套不同的詞向量空間。顯然地,這里的問題就是歸一化因子計(jì)算量大,其中應(yīng)對方案有 Huffman Softmax 和負(fù)采樣。
這里我們不關(guān)心 Huffman Softmax,只需要知道它就是原來標(biāo)準(zhǔn) Softmax 的一種近似就行了。我們來看負(fù)采樣的,Word2Vec 將優(yōu)化目標(biāo)變?yōu)榱?#xff1a;
這個(gè)式子看著有點(diǎn)眼花,總之它就是表達(dá)了“語料出現(xiàn)的 Skip Gram 視為正樣本,隨機(jī)采樣的詞作為負(fù)樣本”的意思。?
首先最明顯的是,(12) 式相比 (4),(5) 式,少引入了 γ 這個(gè)訓(xùn)練參數(shù),或者就是說默認(rèn)了 γ=0,這允許嗎?據(jù)說確實(shí)有人做過對比實(shí)驗(yàn),結(jié)果顯示訓(xùn)練出來的 γ 確實(shí)在 0 上下浮動(dòng),因此這個(gè)默認(rèn)操作基本上是合理的。?
其次,對于負(fù)樣本,Word2Vec 可不是“均勻地采樣每一個(gè)詞”,而是按照每個(gè)詞本身的總詞頻來采樣的。這樣一來,(10) 式就變成了:
也就是說,最終的擬合效果是:
大家可以看到,左邊就是兩個(gè)詞的互信息。本來我們的擬合目標(biāo)是兩個(gè)詞的內(nèi)積等于條件概率 p?(wj|wi)(的對數(shù)),現(xiàn)在經(jīng)過負(fù)采樣的 Word2Vec,兩個(gè)詞的內(nèi)積就是兩個(gè)詞的互信息。?
現(xiàn)在大概就可以解釋為什么 Word2Vec 的負(fù)采樣會(huì)比 Huffman Softmax 效果要好些了。Huffman Softmax 只是對 Softmax 做了近似,它本質(zhì)上還是在擬合 p?(wj|wi),而負(fù)采樣技巧則是在擬合互信息。
我們之后,Word2Vec 是靠詞的共現(xiàn)來反應(yīng)詞義的,互信息比條件概率 p?(wj|wi)更能反映詞與詞之間“真正的”共現(xiàn)關(guān)系。換言之,p?(wj|wi) 反映的可能是“我認(rèn)識(shí)周杰倫,周杰倫卻不認(rèn)識(shí)我”的關(guān)系,而互信息反映的是“你認(rèn)識(shí)我,我也認(rèn)識(shí)你”的關(guān)系,后者更能體現(xiàn)出語義關(guān)系。?
我之前構(gòu)造的另一個(gè)詞向量模型《更別致的詞向量模型(三):描述相關(guān)的模型》[2] 中也表明了,基于互信息出發(fā)構(gòu)造的模型,能理論上解釋“詞類比(word analogy)”等很多實(shí)驗(yàn)結(jié)果,這也間接證實(shí)了,基于互信息的“Skip Gram + 負(fù)采樣”組合,是 Word2Vec 的一個(gè)絕佳組合。
所以,根本原因不是 Huffman Softmax 和負(fù)采樣本身誰更優(yōu)的問題,而是它們的優(yōu)化目標(biāo)就已經(jīng)不同。
列車已到終點(diǎn)站
本文的目的是介紹 NCE 這種精致的參數(shù)估算技巧,指出它可以在難以為完成歸一化時(shí)來估算概率分布中的參數(shù),原則上這是一種通用的方法,而且很可能,在某些場景下它是唯一可能的方案。
最后我們以 Word2Vec 為具體例子進(jìn)行簡單的分析,談及了使用 NCE 時(shí)的一些細(xì)節(jié)問題,并且順帶解釋了負(fù)采樣為什么好的這個(gè)問題。
相關(guān)鏈接
[1]. 詞向量和語言模型
http://licstar.net/archives/328
[2].?更別致的詞向量模型(三):描述相關(guān)的模型
https://kexue.fm/archives/4671
點(diǎn)擊以下標(biāo)題查看作者其他文章:?
從無監(jiān)督構(gòu)建詞庫看「最小熵原理」
基于CNN的閱讀理解式問答模型:DGCNN
再談最小熵原理:飛象過河之句模版和語言結(jié)構(gòu)
再談變分自編碼器VAE:從貝葉斯觀點(diǎn)出發(fā)
變分自編碼器VAE:這樣做為什么能成?
簡明條件隨機(jī)場CRF介紹 | 附帶純Keras實(shí)現(xiàn)
▲?戳我查看招募詳情
#作 者 招 募#
讓你的文字被很多很多人看到,喜歡我們不如加入我們
關(guān)于PaperWeekly
PaperWeekly 是一個(gè)推薦、解讀、討論、報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺(tái)。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號(hào)后臺(tái)點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點(diǎn)擊 |?閱讀原文?| 進(jìn)入作者博客
總結(jié)
以上是生活随笔為你收集整理的“噪声对比估计”杂谈:曲径通幽之妙的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 招聘 | 香侬在召唤:算法工程师,让金融
- 下一篇: PaddleFluid和TensorFl