噪聲對比估計的神經語言模型
GAN、skip-gram都提到或用到了NCE(Noise Contrastive Estimation),在NLP領域首次應用NCE就是這篇文章了
A fast and simple algorithm for training neural probabilistic language models
簡介
以極大似然估計爲目標的神經語言模型,往往受到訓練時間長的困擾,Bengio爲了提高速度提出對負樣本進行重要度負採樣又非常不穩定,這篇文章借鑑了首先應用於圖像領域的NCE方法,在不損失效果的同時,極大地節省了訓練時間,且結果相當穩定。
用極大似然估計需要計算目標概率對非目標概率的比值,後者需要遍歷所有數據,不需要反覆迭代的統計模型尚可,而對如神經網絡這樣需要反覆迭代去擬合目標函數的模型,開銷是巨大的,而NCE告訴人們,不需要遍歷,直接從某個分佈生成一些負例就好。
模型
語言模型
語言模型的任務就是給定上文(w1,...,wt-1),預測當前詞(wt)的概率是多少,最原始的模型就是ngram,可以直接統計得到,在神經網絡中,條件概率可以表示爲當前詞的得分,與其他詞得分總和的比值,歸一化的形式如下:
h表示上文,w爲當前詞
極大似然學習過程
直接對語言模型參數求導
右側需要遍歷所有詞,開銷巨大
重要度採樣
修改上式右側,以對某個分佈的採樣的結果爲負例,得到
需要注意的是,v(xj)=exp(s(xj,h))/Q(xj),數據從分佈Q採樣,v相當於一個權重,計爲採樣在上文的得分與分佈概率之比,既然是概率之比,取值區間就是0到無窮,因此這個模型極不穩定,文章的作者基本上沒有取得收斂結果
噪聲對比估計
其實文章提出的模型只在上面的基礎上做了一點小小的改動,把概率的比改成目標概率比上總和,這樣重要度的取值就在0到1之間
或
與極大似然相比,由於參數減少了,訓練速度提升10倍以上
其他細節
負樣本越多,效果越好,下面是困惑度的結果,ML表示極大似然(Maximum Mikelihood)
負採樣的分佈影響效果,下面是unigram採樣和均勻分佈採樣的對比結果
用語言模型來做完形填空效果也不錯,甚至超過了之前的最佳結果
用語言模型得到句子的打分,取打分最高的,這樣可以同時考慮到空白處左右兩側的概率
討論
雖然是對性能的一點小小改進,但影響巨大,改動是簡單的,知道怎麼改是困難的,到底好不好,用了才知道。思想已經很普遍,當只有正樣本時,我們往往隨機抽取樣本作爲負例,但將之總結成模型甚至理論,則是另一重境界。