1. 程式人生 > >語言模型和RNN CS244n 大作業 Natural Language Processing

語言模型和RNN CS244n 大作業 Natural Language Processing

語言模型

語言模型能夠計算一段特定的字詞組合出現的頻率,
比如:”the cat is small” 和 “small the is cat”,
前者出現的頻率高

同樣的,根據前面所有的字詞序列資訊,
我們可以確定下一個位置某個特定詞出現的頻率,
這裡寫圖片描述
豎線左邊表示下一個出現詞是v的情況,右邊表示前面所有詞的組合,
P(…)表示出現這種情況的概率

資訊與效能的矛盾

因為一個詞前面的資訊可能是巨大的,
以往的做法根據每個詞前面的n個詞來確定,
比如說:100個詞,
但是如果關鍵資訊在這n個詞的前面,那就會漏掉,

也有人嘗試把當前位置之前的所有詞都拿出來納入考慮,
但是這樣操作所消耗的記憶體在實際生產中是不能承受的

為了解決這個問題,RNN就應運而生,
既能夠把所有的詞納入考慮,
又有實際的可行性

RNN和隱藏層

RNN語言模型是如何表示出龐大的“前文”資訊呢?
RNN創造了一個可以被傳遞的隱藏層來模擬和儲存曾經的“歷史“,

隱藏層是一個向量,
每次輸入一個詞,隱藏層就會把它“吸收”進自己的向量,更新自己,
然後再把這個新的隱藏層傳遞給下次的計算,
這樣就把前文的資訊保留在了隱藏層中

RNN的數學表達

這裡寫圖片描述
這裡的x(t)是one-hot行向量,
L是詞向量矩陣(embedding matrix),
所以它們的乘積e就代表當前詞

這裡寫圖片描述
h是隱藏層(hidden layer)向量。

H是權重矩陣,乘以前一個隱藏層,輸出一個和隱藏層長度一樣的向量,行列都等於隱藏層向量h的長度。

I也是權重矩陣,乘以當前輸入的詞向量,也輸出一個和隱藏層長度一樣的向量,列=詞向量長度,行=隱藏層的長度

然後把這兩結果加起來,再加上一個偏置b,得到新的隱藏層h

這裡寫圖片描述
U,權重矩陣,乘以隱藏層,得到一個長度等於詞庫總數量(V)的向量,
所以U的列數等於隱藏層的長度,行數等於V,

再softmax一下,即得到所有詞的概率分佈y(t),從此可以預測出下一個最可能的詞