經典詞嵌入與神經網路語言模型的對比研究

2021-08-27 16:08:06 字數 4034 閱讀 4336

摘要:本文將對nnlm,c&m,rnnlm,cbow,skip-gram等經典神經網路語言模型進行介紹,對比分析這些模型的結構和特點,並對神經網路語言模型的構造方法進行討論。

自然語言處理是實現人工智慧的重要途徑,從計算機被創造開始,自然語言處理就是計算機學家們的研究重點。語言模型是為了使計算機理解自然語言所構建的模型,常見的自然語言模型有n-gram等。bengio成功地將神經網路引入到自然語言模型的構造中。bengio在構建神經網路的同時得到了乙個副產物-詞嵌入,一種詞語在向量空間的分布表示。後來,collobert 和 weston 將神經網路語言模型較好的運用到了詞性標註、短語識別、命名實體識別、語義角色識別的任務中,為了減少運算複雜度,他將本來要**的單詞作為輸入的一部分,輸出層縮小到乙個神經元,對輸入的序列是否符合語言規則進行打分。與此同時tomas mikolov把rnn運用到了語言模型中,以代替原本的上下視窗,把歷史上下文資訊直接通過隱藏層傳給下乙個單詞。後來,tomas mikolov提出了cbom和skip-gram模型,直接以訓練詞嵌入為目的,去掉了隱藏層,大大縮短了訓練時間,獲得了不錯的訓練效果,並發現了「king」-「man」+「women」=「queen」的語義規律,而其隨後開源的word2vec包也使詞嵌入這個概念為更多人所熟知。

該模型由bengio在2023年提出,這是最經典的神經網路語言模型,後面的模型都是基於此進行改造的,該模型網路結構如下圖所示:

整個網路分為兩部分,第一部分是利用詞特徵矩陣c獲得詞的分布式表示(即詞嵌入)。第二部分是將表示context的n個詞的詞嵌入拼接起來,通過乙個隱藏層和乙個輸出層,最後通過softmax輸出當前的p(wt|context)(當前上下文語義的概率分布,最大化要**的那個詞的概率,就可以訓練此模型)。 

第一部分詞嵌入的獲取如下圖所示:

其中第i行對應的是one-hot表示中第i項為1的詞向量的詞嵌入。詞向量與矩陣相乘後就可以得到自己的詞嵌入了。由於c是神經網路的引數,所以詞的詞嵌入會隨著模型的訓練不斷得到優化。

在網路的第二部分中,表示context的n個詞嵌入通過隱藏層進行語義組合,最後經過輸出層使用softmax輸出**的詞向量,因為本模型是基於n-gram模型,所以只要最大化正確**當前詞即可。最後不但訓練了乙個用神經網路表示的語言模型,而且還獲得了詞語的詞嵌入(存在矩陣c中)

從第二部分的輸入到輸出層有乙個直連邊,一般情況下該直連邊的權重矩陣可以設為0,在最後的實驗中,bengio 發現直連邊雖然不能提公升模型效果,但是可以少一半的迭代次數。同時他也猜想如果沒有直連邊,可能可以生成更好的詞向量。

該模型最終要最大化如下式子:

其中,視窗大小為n,中心的那個詞為中心詞,上下文各(n-1)/2個詞。作者利用該模型以無監督的方法預訓練詞嵌入來提高在具體工作上的效果,最後的輸出層只有乙個神經元,表示該中心詞與上下文語義關聯程度的得分。得分高則說明該中心詞在當前位置是符合上下文語義的,得分低則說明該中心詞在當前位置不符合上下文語義。

訓練時的正例就是中心詞為原語料的中心詞,負例就是把語料的中心詞以其他詞語代替。作者這麼做的主要原因就是為了減少神經網路語言模型在大規模資料集上的訓練時間。

如果用f(x)表示輸入通過神經網路到輸出的變化,那麼基於打分機制構造的神經網路語言模型的優化目標是最大化下面的函式:

其中fθ(x)是正例的打分,fθ(x(w))fθ(x)是正例的打分,fθ(x(w))是負例的打分,這函式的目的就是增加兩者之間打分的差距,使其至少在1以上。

rnnlm模型將rnn引入到了神經網路語言模型的構造中,其網路結構只是在nnlm的基礎上將上一次的隱藏層與當前單詞的詞嵌入疊加作為輸入。由於使用了rnn,不需要再使用大小為n的上下文視窗。網路結構如下:

神經網路各層計算公式如下:

其中f()為sigmoil函式,g()為softmax函式 

最後訓練目標是最小化softmax函式輸出和**單詞向量的交叉熵。 

在**中作者以下列方式對低頻詞進行處理

這兩個模型是tomas mikolov在**《efficient estimation of word representations in vector space》中一起提出來的,兩個模型的結構如下圖所示 

其中cbow是周圍的詞**中間的詞,最大化對w(t)的**。skip-gram是中間的詞**周圍的詞,最大化對w(t-2),w(t-1),w(t+1),w(t+2)的**之和。由於沒有隱藏層,所以2個網路都是線性模型。正因為如此,模型的訓練時間比較短,只花了一天就訓練了16億單詞的語料。且獲得的詞嵌入質量很好,還具有「king」-「man」+「women」=「queen」的語義規律。

**中使用了兩種訓練方法,一種是哈夫曼樹結構的hierarchical softmax,另一種是negative sampling,它們的使用都是為了縮短訓練時間。由於這兩個技術這是加快訓練的技術,不是網路結構,我們現在主要**網路結構,因此就不詳細展開,不過正是這2個技術的運用縮短了訓練時間(另外乙個縮短時間的原因是刪掉隱藏層),使其更快地生成了***的詞嵌入,值得大家重視。

以skip-gram模型為例,其採用了用哈夫曼樹結構構建的hierarchical softmax,最終要優化的概率密度函式如下:

用negative sampling的方法,它以乙個正樣本和幾個隨機採取的負樣本作為優化目標:

對比上面介紹的模型我們發現,後面的模型都是以nnlm為基礎進行修改的。其中主要修改有3個部分:輸入層,隱藏層,輸出層。其中輸入層是儲存詞嵌入的層,隱藏層是做語義重組的層,輸出層是根據目標構造輸出語義的層。 

以nnlm作為對比物件。後面幾個模型的修改情況如下:

c&w:修改了輸入和輸出層 

rnnml:修改了輸入和隱藏層 

cbow :去除了隱藏層,輸出層優化 

skip-gram:去除了隱藏層,修改了輸入層,輸出層優化

根據上面的對比,有一些東西值得思考:

上面的一些思考有的可能需要進行實驗加以驗證,不過根據對這些模型的思考我們可以做出如下推測:乙個好的神經網路語言模型就是盡可能構造好的上下文,選擇好語義重組方式,並使用可以實現高效訓練的**方法。

我們介紹了幾種神經網路語言模型,所有的網路基本上都是基於nnml改造的,它們思路基本上都是用上下文**下面乙個單詞。不同之處在於對輸入,隱藏層,輸出層中的乙個或多個做了改造,改造的目的是生成更好語言模型、生成更好詞嵌入或縮短訓練時間完成特定任務。而要基於該網路結構進行改進的話,就是要根據自己的目標構造合適的上下文或語義重組方式,並以適當的**方法實現高效的訓練。

讀**《natural language processing (almost) from scratch》

讀**《recurrent neural network based language model 》

讀**《efficient estimation of word representations in vector space》

讀**《distributed representations of words and phrases and their compositionality》

參考文獻: 

《a neural probabilistic language model》 

《natural language processing (almost) from scratch》 

《recurrent neural network based language model 》 

《efficient estimation of word representations in vector space》 

《distributed representations of words and phrases and their compositionality》

神經網路語言模型

基於計數的n gram語言模型 出現的問題 1 資料稀疏,有些資料未出現過 2 忽略語義的相關性,如 無聊 與 枯燥 雖然語義相似,但無法共享資訊。詞語表示為 one hot表示法。基於分布式表示的n gram語言模型 出現的問題 1 詞向量 如何將每個詞對映到實數向量空間中的乙個點 2 f函式的設...

卷積神經網路經典模型要點

六 resnet 2012年imagenet比賽分類任務的冠軍,top 5錯誤率為16.4 讓深度學習受到矚目。該網路輸入為2272273 原始資料為2242243,經過預處理變為227 由5個 卷積 relu pooling 和3個全連線層構成。為什麼將224預處理為227大小的影象 如果為 22...

NNLM 神經網路語言模型

nnlm是從語言模型出發 即計算概率角度 構建神經網路針對目標函式對模型進行最優化,訓練的起點是使用神經網路去搭建語言模型實現詞的 任務,並且在優化過程後模型的副產品就是詞向量。進行神經網路模型的訓練時,目標是進行詞的概率 就是在詞環境下,下乙個該是什麼詞,目標函式如下式,通過對網路訓練一定程度後,...