1.1為什么選擇序列模型
(1)序列模型廣泛應用於語音識別,音樂生成,情感分析,DNA序列分析,機器翻譯,視頻行為識別,命名實體識別等眾多領域。
(2)上面那些問題可以看成使用(x,y)作為訓練集的監督學習,但是輸入與輸出的對應關系有非常多的組合,比如一對一,多對多,一對多,多對一,多對多(個數不同)等情況來針對不同的應用。
1.2數學符號
(1)x(i)<t>前面的i表示第i個訓練樣本,t表示某個序列樣本中索引位置,如下面的一句話是一個樣本,“and”的索引是3,序列的長度用Tx表示,下面句子中Tx=9。
(2)單詞是無法直接輸入到網絡中,所以必須轉成數子,用數字來表示單詞。方法是將數據集中出現次數最多的10000個單詞(這里用10000為例,可以更多),然后用one-hot來表示每一個單詞,如下圖所示:
1.3循環神經網絡模型
(1)使用標准網絡來做上面的命名實體識別,即找出句子中的人名,會存在兩個明顯的問題:第一是不同的訓練樣本的單詞數不一樣,當然可以使用pad來填充,第二是不能狗共享不同位置上學到的特征,用循環神經網絡可以解決這些問題。
(2)循環神經網絡將按照下圖進行計算:
(3)數學式子如下所示:
將Waa和Wax合並在一起:
得到
(4)激活函數常用tanh,另外輸出由於是用0,1表示是否是人名,所以用sotfmax激活函數。
1.4通過時間的反向傳播
(1)一個元素的代價函數(一個0,1二分類問題,注意下面式子中應該是(1-y<t>)):
(2)每一個樣本的代價函數:
(3)RNN反向傳播示意圖:
1.5不同類型的循環神經網絡
(1)如下圖中,第一種是傳統標准的網絡層,第二是一對多(音樂生成),第三是多對一(情感分析),第四是多對多(輸出與輸入個數相等,語音識別),第五是多對多(輸出與輸入個數不一定相等,機器翻譯)。
1.6語言模型和序列生成
(1)語言模型以下面兩個句子為例,語言模型要解決的就是那個句子出現的概率更大,則輸出哪個。
(2)句子的結束句號可以用one-hot表示,關於不在字典中的10000個詞的其他詞,可以統一用UNK表示,UNK是用one-hot表示的額,所以可以看成總共有10002個字典。
(3)語言模型如下圖所示,首先第一個輸出是在無任何提示下輸出各個詞的概率,第二個輸出是在給定第一個輸出標簽時各個詞(10002)輸出的概率,以此類推,每一個輸出都是在給定條件下一個輸出各個單詞的概率。
(4)訓練網絡時,上圖中序號8和9分別代表了一個元素和一個樣本的代價函數,代價函數使用的是交叉熵。
(5)在使用網絡時,現在有一個包含三個詞(y<1>,y<2>,y<3>)的句子,這時網絡沒有任何信息的條件下求是y<1>的概率,然后計算在給定y<1>條件下y<2>的概率,最后在給定y<1>,y<2>條件下y<3>的概率。最后可以確定,輸出是這個句子的概率如下圖所示,回到最初的兩個句子,可以分別求兩個句子的概率,取概率最大的句子即可:
1.7對新序列采樣
(1)在應用上面訓練好的網絡時,只需要用numpy取出來第一個輸出中單詞概率最大的單詞,這樣就實現了對序列的采樣,然后將獲得的詞作為已知條件,取獲取下一個單詞。如下圖所示:
(2)可以用當獲得結束符時結束網絡采樣,也可以當采樣數到達預定的個數(如50個詞)時結束(這時如果碰到結束符,那么重復則在剩下的詞重采樣,意思就是取概率次大的單詞作為輸出)。
(3)可以是如上基於詞匯的語言模型,也可以有基於字符的語言模型,由於后者計算量大,前后關系捕捉范圍有限,所以前者使用更為廣泛。
(4)不同語料生成的語言模型是不一樣的,比如以新聞為語料的語言模型,最終模型采樣出來的可能看上去偏向於新聞的口吻,而比如以莎士比亞的作品為語料的語言模型,最終模型采樣結果看上去更像莎士比亞寫的風格。如下圖所示:
1.8循環神經網絡的梯度消失
(1)訓練很深的神經網絡時,隨着層數的增加,導數有可能指數型的下降或者指數型的增加,我們可能會遇到梯度消失或者梯度爆炸的問題。RNN中如果輸入長度為1000的序列(其實求梯度時就相當於1000層),所以同樣存在梯度消失和梯度爆炸的問題 。
(2)梯度爆炸時,可以通過梯度修剪來解決,即設定閾值,當梯度超過這個閾值時,縮放梯度向量,保證他不會太大。梯度爆炸比較容易解決。
(3)RNN最主要是存在梯度消失問題,這意味着某一個輸出只依賴於很近范圍內的值,很遠的值無法影響到它,所以像下面的句子因為cats,cat離得很遠所以是使用were還是was無法判斷:
1.9GRU單元
(1)GRU即門控循環單元,可以解決循環神經網絡的梯度消失問題,進而可以解決上面的遠距離也能影響后面的輸出。
(2)簡化版的GRU如下圖所示:
下面式子激活函數時tanh
下面式子激活函數時sigmoid
下面的乘法是元素對應相乘
輸出的話也是可以加上一個適當的激活函數來輸出,如softmax。
(3)當門控值為0,是即保持之前的值,當為1時,即完全更新為候選值,當然還可以 是0到1之間。
(4)需要理解的是,c其實是一個多維度的向量,所以可以看成是某個一特征是用來記住主語的單復數的,當沒有被使用時一直保持,被使用之后或者新的主語出現然后被更新。其他特征用來記住其他的信息。
(5)完整的GRU增加了一個相關門,用來告訴你下一個c<t>與候選值和上一個c<t-1>有多大的相關性
1.10長短期記憶
(1)GRU的再次總結:
(2)LSTM包括遺忘門、更新門和輸出門,具體數學公式如下圖所示:
1.11雙向循環神經網絡
(1)命名實體識別案例:判斷下面句子中Teddy是否是人名,如果只從前面兩個詞是無法得知Teddy是否是人名,如果能有后面的信息就很好判斷了,這就需要用的雙向循環神經網絡。至於網絡單元到底是標准的RNN還是GRU或者是LSTM是沒有關系的,都可以使用。
(2)雙向循環神經網絡如下圖所示,每一個輸出都是綜合考慮兩個方向獲得的結果再輸出:
(3)LSTM有一個缺點就是在使用時需要完整的數據序列,你才能預測任意位置。比如用來構建語音識別系統,需要人把話說完,才能進行處理。
1.12深層循環神經網絡
(1)深層循環神經網絡如下圖所示:
(2)表示方法a[2]<3>方括號表示網絡的第幾層,尖括號里面的表示第幾個時間序列。
(3)在構建網絡時,一般循環神經網絡的層比較少,有三層已經算不少了,因為如果一層中有50個序列,其實也就相當於有50層那么深了。
(4)下面是一種比較常見的連接方式,就是講循環層的輸出接上普通的深層網絡: