《白話深度學習與Tensorflow》學習筆記(3)HMM RNN LSTM

RNN:循環神經網絡

與CNN最大的不同是記憶暫存功能,可以把過去輸入的內容所產生的遠期影響量化後與當前時間輸入內容一起反應到網絡中參與訓練。尤其是對時間序列、自然語言(上下文關係)的處理,具有優勢。

馬爾科夫鏈:在給定當前的知識或信息下,觀測對象過去的歷史狀態對於將來的預測是無關的,只需要觀測當前狀態即可得出。

HMM:隱馬爾可夫模型,隱馬爾可夫鏈的模型相對簡化,是貝葉斯信念的一個特例。

假如三個骰子,分別是正方體D6、四面體D4和八面體D8。

無序的扔這三個骰子,可能出現了一串序列,2,1,8。這就叫做可見狀態鏈,而其中還存在隱含狀態鏈,如D4,D6,D8。HMM中的馬爾科夫鏈一般是指隱含狀態鏈,實際是隱含狀態之間的轉化概率。隱含狀態和可見狀態直接的概率叫做輸出概率。

HMM隱馬爾可夫模型,即通過統計的方法可以去觀察和認知一個事件序列上鄰近事件發生的概率轉換問題。

如何訓練HMM模型:輸入Xi序列和Oi序列,全部通過統計學模型完成,得到的模型結果就是一個轉移矩陣。一個輸出概率矩陣和一個隱含狀態轉移矩陣。這樣可以對下一個輸出狀態進行基於概率的預測。

RNN爲如下的結構:



RNN單元結構

輸入向量是Xt,得到Wx與Xt的乘積之後會有一個Ht,這個Ht會和下一次進入網絡的Xt一起再次輸入網絡進行計算,調整權值,這樣就可以使得前一次輸入的向量所產生的結果對於本次輸出的結果有一定影響,計算公式:




最終得到WH和Wx的矩陣。

RNN的模型在時間上可以進行展開(僅僅在時間上展開即隨着時間的推移更新網絡權值):



RNN在時間上展開

【圖片來自:http://blog.csdn.net/heyongluoyao8/article/details/48636251】

誤差傳播:

由於誤差的計算其中的



涉及很長的連乘,計算量頗大,所以會造成災難,因此傳統的RNN理論上雖然說得通,但是訓練效果不理想。

改進的RNN:LSTM

LSTM:長短期記憶網絡(long stort-term memory)由LSTM算法對標準RNN進行改進。規避了標準RNN中的梯度爆炸和梯度消失的問題。

忘記門(forget gate)某個X值可能會影響一個在時間上或者空間上比較遠的hj輸出,訓練的過程就是學習到這個影響被量化的過程。LSTM可以是一個很大的方陣,中間部分是一個個LSTM單元,如下圖所示:

http://www.jianshu.com/p/9dc9f41f0b29這篇文章中有詳細的解釋。

首先是從左到右的向量傳輸過去(輸入的C(t-1)先進行乘法運算再疊加一個向量)。乘法器乘的係數可以考到左側的h(t-1)和下面的Xt經過連接操作,再通過Sigmoid函數生成0-1之間的數。

忘記門:忘記就是這個相乘的過程,如果Sigmoid輸出爲1就完全記住,0就完全忘記,中間的值就是記憶的比例。



RNN忘記門

3、Tanh也是神經網絡的一個層,可以把一個值映射到一個-1,1之間的數。




到這裏其實決定本次輸出的Ct究竟有多少採納本次輸入的信息,多少採納上次遺留的信息。在語言模型中,表示前一個主語到當前是否應該被遺忘,而新的主語是否應該代替原先的主語出現。

最後的輸出:2個,一個輸出到同層下一個單元,一個輸出到下一層的單元上。

應用:分類器、翻譯器、有限狀態機、聊天機器人等。

RNN+CNN 實現圖片特徵標註:

CNN用於提取特徵,RNN用這些特徵的Feature向量和描述向量來做訓練。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章