1. 程式人生 > >NNLM(神經網路語言模型)

NNLM(神經網路語言模型)

簡介

*NNLM是從語言模型出發(即計算概率角度),構建神經網路針對目標函式對模型進行最優化,訓練的起點是使用神經網路去搭建語言模型實現詞的預測任務,並且在優化過程後模型的副產品就是詞向量。

*進行神經網路模型的訓練時,目標是進行詞的概率預測,就是在詞環境下,預測下一個該是什麼詞,目標函式如下式, 通過對網路訓練一定程度後,最後的模型引數就可當成詞向量使用.

模型

*NNLM的網路結構(四層神經網路)如右圖,主要引數有:            

      [1]詞庫大小(假定有8W個詞)            

      [2]轉化的詞向量大小(假定為300維長度)            

      [3]輸入層神經元數(即詞的滑動視窗容量,假定滑窗大小為4)            

      [4]隱層神經元數量(假定為100個)            

      [5]輸出層神經元數(對應詞容量,有8W個)

      [6]由輸入層到投影層的矩陣C(一個大的矩陣,大小為8W*300,是最後求解的目的,開始時隨機初始化)          

      [7]從投影層到隱層的權值矩陣H和偏置矩陣B          

      [8]從隱層到輸出層的權值矩陣U和偏置矩陣D

*現在咱們針對NNLM模型,由下往上進行分析:

      [1]每次從語料庫中滑動4個數據,將其中前三個詞轉為one-hot編碼形式,將三個one-hot形式作為輸入喂入網路。        

      [2]從輸入到對映層所做的事情是(one-hot向量  *  矩陣C),這裡詞的one-hot編碼會根據為1的位置去對應C矩陣,去抽出對應位置的300維的詞向量,將此向量作為投影層的輸出。

      [3]上一步投射層會將詞的one-hot表示表示成300維的稠密向量,從投影層到隱層是一種全連線的連線方式,線的數量是3*100個,每個隱層神經元有3條線相連線,最後使用tan函式結合H與B獲取啟用輸出。

       [4]從隱層到輸出層也是一直全連線的形式,連線線數量為100*8W,使用softmax函式結合U與D獲取最後的概率輸出。                   [5]計算交叉熵損失函式值,以梯度下降方式進行反向傳播,在反向傳播過程中對引數矩陣C、H、B、U、D進行更新。

*通過不斷的喂入批次資料,對網路進行反向傳播調參,最後訓練出一個進行詞預測任務的模型,並將訓練好模型中的C矩陣裡的每一列都作為,對應於one-hot編碼中位置為1詞的詞向量(大小為1*300),這個詞向量就是我們要轉化的結果。

特點

優點:使用NNLM模型生成的詞向量是可以自定義維度的,維度並不會因為新擴充套件詞而發生改變,而且這裡生成的詞向量能夠很好的根據特徵距離度量詞與詞之間的相似性。

缺點:計算複雜度過大,引數較多(word2vec是一種改進)。