神經網絡語言模型(NNLM)
輸入層(投射層)
一個文本,由N個詞語組成,現在呢:想根據 前N個詞語 來預測 第N個詞語 是啥?
我們採用的語料庫V(也就是我們最大限度能想到的的所有詞語集合)包含10萬個詞語
詞向量W:是一個one-hot向量,大小=[10W,1],W(t)表示第t個詞語的one hot(一個元素爲1,其餘全爲0
投影矩陣C:維度[D*V],V=10W,參數D根據文本大小不同來設定:谷歌測試時選取D=300
- 計算時:投影矩陣C[300 * 10W] X 詞向量W(t)[10W *1] 得到= 矩陣[300 * 1]
- 比如根據前3個詞來預測第4個詞語,那麼上述操作會重複三次,得到3個[300*1]的矩陣
- 將這3個[300*1]的矩陣按行拼接,得到[900x1]的矩陣。
隱藏層
存在一個向量矩陣[Hx1],H根據文本集合情況設定(谷歌測試時選取H=500)
該層完成的功能主要是全連接!
說通俗一些:把輸入層計算得到的矩陣[900x1],轉換爲矩陣[Hx1],完成輸入層到隱藏層的數據傳輸,並且在全連接的過程中存在計算的權重。
最終得到矩陣[500x1]
輸出層
我們的詞語大小爲V=10W,隱藏層計算得到矩陣[500x1],要將這[500x1]的計算結果轉化爲[10Wx1],以此來預測第4個詞語是什麼?
得到矩陣[10Wx1],也就是所謂第4個詞ont-hot,最終經過SoftMax激活函數,選取行向量最大值,就是預測詞語。
計算複雜度
(NxD )+ (NxDxH) + (HxV)
文本詞語集大小N,投影矩陣維度D、隱藏層維度H、詞庫大小V