神經網路語言模型是經典的三層前饋神經網路結構,其中包括三層:輸入層、隱藏層和輸出層。
為解決詞袋模型資料稀疏問題,輸入層的輸入為低維度的、緊密的詞向量,輸入層的操作就是將詞序列中
的每個詞向量按順序拼接,
在輸入層得到式( 7.2 )的x 後,將x 輸入隱藏層得到h , 再將h 接人輸出層得到最後的輸出變數y , 隱藏層變數h 和輸出變數y 的計算如下二式所示:
上式中h 為輸入層到隱藏層的權重矩陣,其維度為
;u 為隱藏層到輸出層的權重矩陣,其維度為
,|v|問表示詞表的大小,其他絕對值符號類似;
b 為模型中的偏置項。
nnlm 模型中計算量最大的操作就是從隱藏層到輸出層的矩陣運算uh 。
輸出變數y 是乙個|v|維的向量,該向量的每乙個分量依次對應下乙個詞為詞表中某個詞的可能性。
用y(ω) 表示由nnlm 模型計算得到的目標詞ω 的輸出量,為保證輸出y(ω)
的表示概率值,需要對輸出層進行歸一化操作。
一般會在輸出層之後加入softmax 函式,將y 轉成對應的概率值,具體如式所示:
由於nnlm 模型使用低維緊湊的詞向量對上文進行表示,這解決了詞袋模型帶來的資料稀疏飛語義鴻溝等問題,顯然nnlm 模型是一種更好的n 元語言模型;
另一方面,在相似的上下文語境中, nnlm 模型可以**出相似的目標詞,而傳統模型無法做到這一點。
例如,在某語料中a = "乙隻小狗躺在地毯上"出現了2000 次,而b="乙隻貓躺在地毯上"出現了1 次。根據頻率來計算概率, p(a) 要遠遠大於p(b) ,而語料a 和b唯一的區別在於貓和狗,這兩個詞無論在詞義和語法上都相似,而p(a) 遠大於p(b) 顯然是不合理的。
如果採用nnlm 計算則得到的p(a) 和p(b) 是相似的,這因為nnlm模型採用低維的向量表示詞語,假定相似的詞其詞向量也應該相似;
如前所述,輸出的y(ωi) 代表上文出現詞序列
的情況下,下乙個詞為ωi 的概率,因此在語料庫d中最大化y(ωi) 便是nnlm 模型的目標函式,如式所示:
一般使用隨機梯度下降演算法對nnlm 模型進行訓練。在訓練每個batch 時,隨機從語料庫d 中抽取若干樣本進行訓練,梯度迭代公式如式所示:
其中, α 是學習率; e 是模型中涉及的所有引數,包括nnlm 模型中的權重、偏置以及輸入的詞向量。
文字向量化
table of contents概述 word2vec nnlm c wcbow and skip gram doc2vec str2vec 文字表示是自然語言處理中的基礎工作,文字表示的好壞直接影響到整個自然語言處理系統的效能。文字向量化就是將文字表示成一系列能夠表達文字語義的向量,是文字表示的...
文字向量化
文字向量化,就是把文字轉化為向量形式。這裡用兩種方式實現本文向量,一種是tf方式,一種是tf idf方式,且這裡向量的長度就是字典的長度。計算兩個向量余弦相似度import math defcount cos similarity vec 1,vec 2 if len vec 1 len vec 2...
文字資訊向量化
from sklearn.feature extraction.text import countvectorizer countvec countvectorizer min df 2 兩個以上文件出現的才保留 文件的詞與詞之間用空格分隔 x countvec.fit transform 我們 都...