1. 程式人生 > >語言模型與RNN

語言模型與RNN

注:cs224n

語言模型:一個用來預測下一個單詞的系統模型
用公式可以表示為:
P(x(t+1)=wj|x(t),...,x(1))
這裡wj是一個位於詞彙表V={w1,...,w|V|}中的詞。
一、最初用的語言模型被稱為n-gram Langurage Models
這裡寫圖片描述

n-gram model 引入HMM假設:x(t+1)只依賴於前面的n-1個詞
即:

P(x(t+1)=wj|x(t),,x(1))=P(x(t+1)=wj|x(t),,x(tn2))=P(x(t+1),x(t),,x(tn+2))P(x(t),,x(tn+2))

用頻率逼近概率得:
=count(x(t+1),x(t),...,x(tn+2))count(x(t),...,x(tn+2))

例:
這裡寫圖片描述

n-gram langurage model 存在的問題
這裡寫圖片描述
這裡寫圖片描述
二、那麼如何建立一個神經網路語言模型呢?
首先想到的當然是與n-gram langurage model類似的視窗模型。
這裡寫圖片描述

該模型是一個限定視窗長度的語言模型。相比於傳統的n-gram langurage model 他的優勢是:
一、不存在向量稀疏問題
二、模型複雜度為O(n)
而該模型得缺點在於
一、固定視窗往往太小
二、若增加視窗 W得維度將增加(w維度與視窗大小成正比)
這裡寫圖片描述

三、引入迴圈神經網路
這裡寫圖片描述

RNN的優缺點:
這裡寫圖片描述
Training RNN langurage Model
1、將預料庫中的序列輸入RNN-LM計算每一個時刻輸出結果的分佈情況。
2、通常選用交叉熵來計算損失

這裡寫圖片描述

對總的交叉熵去均值作為最終損失函式:
這裡寫圖片描述

其模型表示為:
這裡寫圖片描述

注:在整個corpus上計算交叉熵的複雜度太高,通常採用隨機梯度下降來計算。即在一個batch上計算交叉熵。

Question: J(t)(θ)Wh的導數?

由鏈式法則:
這裡寫圖片描述
因此:
這裡寫圖片描述

這裡原本是對Wh求導,但在求和的時候是對每一個時刻的w求導原因是:

這裡寫圖片描述

六、評價語言模型

用perplexity評價語言模型

這裡寫圖片描述

這裡寫圖片描述