本次課主要介紹了兩個模型n-gram和RNN
語言模型
語言模型是一個預測一句話中的下一個單詞的任務
也就是說,給定單詞[x1,x2,x3,x4...xt],預測下一個單詞x(t+1)是什麼單詞.x(t+1)是給定詞彙表V={w1,w2,...,Wv}中的單詞。
也可以把語言模型理解爲給一段文本分配概率的模型。
比如說,有一段文本x1,x2,x3,xt,這個文本的概率是:
n-gram語言模型
給定一句話:
the student open their ______
預測空白處可能是什麼單詞。
如何預測?使用n-gram語言模型。
一個n-gram是指一系列單詞,如果說
- unigram(n=1):“the”, “students”, “opened”, ”their”
- bigrams(n=2): “the students”, “students opened”, “opened their”
- trigrams(n=3): “the students opened”, “students opened their”
- 4-grams(n=4): “the students opened their”
使用頻率來計算n-gram的概率。
n-gram模型是假設預測單詞出現的概率與前n-1個單詞有關。
上面的計算用到了貝葉斯公式。
分母是(n-1)-gram,分子是n-gram。
如何計算分子和分母呢?
通過頻率計算。
上式約等於:
比如說有一個4-gram的模型:
students opened their出現了1000次,student opened their books 出現了400次,那麼
P(books | students opened their) = 0.4
如果student opened their exams 出現了100次,
那麼
P(exams | students opened their) = 0.1
但是n-gram模型拋棄了除了n個單詞之外的前文。
存在一個巨大的問題:稀疏性
1、如果student open their w從來沒有出現呢?那麼w的可能性就是0!
解決方案:給分子一個很小的數?,成爲平滑性。
2、如果student open their從來沒有出現呢?那麼不能計算出w的任何概率!
解決方案:n變成n-1,也就是用open their的概率代替。
注意:增加n會讓稀疏性問題更嚴重,一般n不超過5
還有一個問題:存儲問題
需要存儲所有的n-gram的頻率,增加n或者增加語料庫的大小都會增加模型的大小。
如何構建一個神經語言模型呢?
固定窗口的窗口的語言模型:第三課中講到的命名體識別模型
- 把輸入的單詞xi表示爲one-hot向量,
- 把它們轉化爲word embeddings的形式,表示爲e
- 從embeddings層到隱藏層通過權重W計算We+b1
- 在隱層層計算h=f(We+b1)
- 從隱藏層到輸出層計算Uh+b2
- 在輸出層計算y=softmax(Uh+b2)
固定窗口的神經語言模型與n-gram語言模型比較:
- 沒有稀疏問題
- 不需要存儲大量的n-gram
存在問題:
- 固定的窗口太小了。
- 增大窗口會增加W
- 窗口永遠都不會足夠大
- 計算Wx時,x1 和x2 計算時至於W中的某一列相關,比如x1計算時只用到了W的第一列,x2計算時只用到了W的第2列。
我們需要神經結構來處理任意長度的輸入。
RNN:循環神經網絡
以下圖片爲循環神經網絡的公式圖片:
優勢:
- 可以處理任意長度的輸入
- 計算步驟t時使用之前許多步的信息。
- 模型的規模不會隨着輸入的增加而增加
- 每一步都有相同的權重,所以處理輸入時有對稱性。
缺點:
- 計算比較慢
- 實際上,很難處理很多步驟之前的信息
RNN的訓練
給定一個包含很多單詞序列的大的語料庫餵給RNN
每一步都計算出一個y
步驟t上的損失函數是正確值y和預測值y'的交叉熵損失函數。其中正確值y是一個one-hot向量,只有一個是1,其他是0。
最後一步計算把沒有了是因爲它是一個ont-hot向量,只有一個位置是1,其他是0,帶入即可得上式。
均一化訓練過程中的損失:
下圖爲RNN計算損失的過程,每一步都會產生一個交叉熵損失,求出所有步驟的交叉熵損失,並求和。
但是計算整個語料庫中的x1...xt代價太大,因此採用隨機梯度下降的方法,在一個小數據集上求損失。
如何計算梯度呢?
求每一步中所有的梯度的和:
就像n-gram模型,可以使用RNN預測下一個輸出的單詞。
語言模型的評估:使用perplexity。
等價於交叉熵損失:(最下面的兩個是怎麼相等的沒搞懂)
perplexity越小越好。
注意:循環神經網絡RNN!=語言模型
RNN的用途很廣泛:
詞性標註
情感分類
作爲編碼器使用
與其他神經網絡結合使用