1. 程式人生 > >迴圈序列模型——05.序列模型第一週課程筆記

迴圈序列模型——05.序列模型第一週課程筆記

一、為什麼使用序列模型

能處理非固定大小輸入的問題,例如語音識別,DNA序列分析,機器翻譯這種是一串序列的問題。

二、 數學符號表示

以自然語言處理為例:
x: Harry Potter and Hermione Granger invented a new spell.
以這句話為輸入x,希望得到一個相同長度的y,判斷每個單詞是否表示人名。
首先需要構建一個按字母排序的單詞詞典,當然該詞典中包含單詞的個數因網路和計算資源的不同而不同,一般有4000個等,在這裡我們為了表示方便,假設單詞數量為1000。然後將每個單詞對應在字典中的位置,對映成一個長度為1000的一維向量(onehot)。具體表示方法如下所示:

符號 說明
X < 1
> = [ 0 , 0 , 0 , 1
, 0 , 0 , . . . , 0 , 0 ]
X < i > 表示該句話的第 i 個單詞,在此處表示Harry在詞典中序號為4。
Y < i > 表示第 i 個單詞的輸出。
T x = 9 這個序列的長度為9
T y = 9 這個序列的輸出長度為9
X ( i ) < t > 樣本中第 i 個序列的第 t 個單詞
T x ( i ) 樣本中第 i 個輸入序列的長度

注意:如果樣本中出現了詞典中不包含的單詞,需要定義一個Unknown向量,以及每句話的結尾EOS向量。

三、迴圈神經網路模型

1 為什麼不能用標準的神經網路

  • 在序列輸入問題中,大部分的輸入不能輸出都不能統一
  • 在同一個單詞在文字的不同位置不能分享特徵

2 迴圈神經網路

2.1 前向傳播

前向傳播

a < t > = g 1 ( W a a a < t 1 > + W a x x < t > + b a )
y ^ = g 2 ( W y a a < t > + b y )

公式可以簡化為

a < t > = g 1 ( W a [ a < t 1 > , x < t > ] + b a )
y ^ = g 2 ( W y a < t > + b y )

2.2 方向傳播

對於一個判斷是否為人名的二分類問題,可以定義損失函式:
L < t > ( y ^ < t > , y < t > ) = y < t > log y ^ < t > ( 1 y < t > ) log ( 1 y ^ < t > )
通過梯度下降演算法不斷更新引數
時間反向傳播(backpropagation through time)

2.3 不同型別的迴圈神經網路

不同型別的迴圈神經網路

3 語言模型和序列生成

3.1 生成過程

一句話概括就是:單詞出現的概率。
需要訓練集:一個大的語料庫(corpus of English text 數量眾多的句子)
訓練過程

3.2 生成取樣

通過每個單元生成的softmax概率,然後以每個單詞的概率做隨機,到第二個單元時以第一個單元的結果為輸入,然後再生成softmax概率,如此迴圈直到生成EOS標誌或者限定時間數。

3.3 字元模型

相比較詞彙模型