1. 程式人生 > >論文閱讀:《神經機器翻譯和序列對序列模型:一個教程》中

論文閱讀:《神經機器翻譯和序列對序列模型:一個教程》中

4 對數線性語言模型

本節討論另一種語言模型:對數線性語言模型。它的計算方法跟上面提到的基於計數的語言模型很不同。

4.1 模型公式化

對數線性語言模型也是計算給定前幾個詞的條件下下一個詞的條件概率,但是方法不一樣,基本分為以下幾步:

  • 計算特徵:對數線性語言模型圍繞特徵這個概念。特徵是“上下文中某個對預測下一個詞有用的東西”。更精確地,我們定義一個特徵函式ϕ(et1tn+1),以上下文為輸入,輸出一個實值特徵向量xN來用N個特徵描述上下文。
  • 計算得分:有了特徵向量之後,我們就要用它預測每個單詞的概率。為此,我們計算一個得分向量s
    |V|
    對應每個詞的似然。我們用模型引數W|V|×N,bN來計算得分向量:
    s=Wx+b
  • 計算概率:把得分向量轉換成概率向量:
    p=softmax(s)

解讀:p表示了在上下文et1tn+1之後,每個詞出現的概率。p本身是長度為|V|的向量,向量裡的值表示相應位置的詞出現的概率。每個詞都有一個index,這個index跟p的index相對應。

4.2 學習模型引數

首先我們要定義損失函式l,一個表達我們在訓練資料上做的有多差的函式。大多數情況下,我們假設這個損失等於負對數似然:

l(εtest;θ)=logP(εtestθ)=
EεtrainlogP(Eθ)

解讀:這裡的引數不再是P(etet1tn+1),而是W,b。不同的引數得到不同的損失,我們要通過訓練找到那個使損失最小的引數。比如,我們要計算一個句子E的損失,就計算引數對於E的負對數似然。通過之前的 計算概率 公式依次計算E的分句的條件概率,再用鏈式法則計算引數對於E的似然P(Eθ),相應也得到了負對數似然。

用隨機梯度下降更新引數。為了要保證訓練過程穩定,還有其他東西要考慮:

  • 調整學習率:一開始學習率比較大,然後逐漸減少。
  • 早停:通常會留出一個開發集(驗證集),在這個集上測量對數似然,然後保留那個最大對似然的模型。這是為了防止過擬合。另一個防止過擬合的辦法是當開發集上的對數似然停止提高的時候減小學習率。
  • 洗牌順序:有的時候順序有所偏向,為了防止最後訓練的模型更貼合結尾部分的資料,我們需要把整個資料訓練的順序洗牌。

4.3 對數線性模型的導數

4.4 語言模型的其他特徵

對數線性模型好的原因是它允許我們靈活地選擇我們認為對預測下一個詞有用的特徵,包括:

  • 上下文特徵:如之前所說。
  • 上下文類:把相似的詞歸為一類。
  • 詞字尾特徵:比如ing。
  • 詞袋特徵: 跟只用句子裡前n個詞相反,我們可以用之前所有的詞,然後不顧順序。這樣我們會損失排列資訊,但是會知道哪些詞會一同出現。

5 神經網路和前饋語言模型

6 迴圈神經網路語言模型

6.1 - 6.4 略

6.5 Online, Batch, and Minibatch Training

對於每一個樣例進行引數更新的學習叫做online學習。與之相反,batch學習將整個訓練集視為單個單元,計算這個單元的梯度,然後在遍歷所有資料之後進行引數更新。

這兩個更新策略各有權衡:

  • online學習更快地找到一個好的答案。
  • 訓練結束後,batch學習更穩定,因為它不受最後看見的資料的影響。
  • batch學習更容易陷入區域性最優解。online學習的隨機性使得模型能夠跳出區域性最優,找到一個全域性最優。

minibatching是以上兩者的折中。minibatching每次計算n個訓練樣例的梯度。