背景
2003年,Bengio首次提出Neural Network Language Model(NNLM), 開創了神經網絡運用在語言模型的先河,論文 《A Neural Probabilistic Language Model》
上一章提到傳統的統計語言模型的缺點,在高維的情況下,由於N元組的稀疏問題,傳統的語言模型需要花大量時間解決平滑,插值等問題;N受限於算力,不大的時候文本的長距離依賴關係無法進行建模;同時N元組共現未必相似等問題。
模型介紹
針對這些傳統語言模型的問題,NNLM嘗試用三層神經網絡進行建模
如圖所示,整個模型有三層
第一層是輸入層:模型的輸入wt−n+1⋯wt−2,wt−1表示n-1個詞,目標是預測當前t時刻的wt,模型引入詞向量(Word Vector)的概念,將輸入的詞通過look-up table映射成爲一個n-1個向量,這裏我們假設詞典大小∣V∣, 向量的維度爲d, look-up table C的爲V⋅d的矩陣,將N-1個向量concat起來,輸入層維度爲(n−1)⋅d的向量,這裏記爲x
第二層是隱藏層,通過一個fully connect layer傳遞,神經元的激活函數是tanh,參數Wh爲(n−1)⋅d∗h的矩陣,輸出爲tanh(Wh⋅x+bh),維度大小爲h
第三層是輸出層,依賴隱藏層的輸出和輸入層的輸出之和U⋅tanh(Wh⋅x+bh)+Wo⋅x+bo, 其中Wo爲V∗d⋅(n−1)的矩陣, U爲V∗h的矩陣,這裏輸出的向量維度爲V,再通過softmax函數,每個神經元的節點即爲t時刻出現第i個詞的概率P(wti∣wt−n+1⋯wt−2,wt−1)
模型的參數 θ=(U,Wh,bh,W0,bo), 參數總數爲∣V∣(1+nd+h)+h(1+(n−1)d), 其中d爲look-up表C的維度, h爲隱藏層維度, V爲詞表大小,n-1爲輸入層的輸入的詞的個數
模型的損失函數loss function爲
L=T1t∑logf(wt,wt−1,⋯,wt−n+1;θ)+R(θ)(1)
其中f(wt,wt−1,⋯,wt−n+1;θ)爲概率P(wt∣wt−n+1⋯wt−2,wt−1), R(θ)爲正則項,其中P(wt∣wt−n+1⋯wt−2,wt−1)=∑iVeyieywt, 即softmax後的概率,通過反向傳播公式優化算法即可得到模型參數θ
優點
- 相比傳統的統計語言模型,Ngram的N增加只帶來線性提升,而非指數複雜的提升
- 通過高維空間連續稠密的詞向量解決統計語言模型中解決稀疏(sparse)的問題,不用進行平滑等操作
- 另外詞向量的引入解決統計語言模型部分相似性的問題,爲後續NLP詞向量時代的發展做鋪墊
- 相比傳統的統計語言模型,神經網絡的非線性能力獲得更好的泛化能力,perplexity(困惑度提升)
困惑度
困惑度(perplexity)的基本思想是:給測試集的句子賦予較高概率值的語言模型較好,當語言模型訓練完之後,測試集中的句子都是正常的句子,那麼訓練好的模型就是在測試集上的概率越高越好,公式如下:
PP(W)=P(w1w2⋯wN)−N1=NP(w1w2⋯wN)1(2)
由公式可知,句子概率越大,語言模型越好,迷惑度越小。
缺點
參數較多,部分計算複雜,在word2vec等後續模型中陸續優化