RNN循环神经网络(吴恩达《序列模型》笔记一)
1、為什么選擇序列模型
2、數學符號
用1來代表人名,0來代表非人名,句子x便可以用y=[1 1 0 1 1 0 0 0 0]來表示
3、循環網絡模型
值得一提的是,共享特征還有助于減少神經網絡中的參數數量,一定程度上減小了模型的計算復雜度。
RNN模型包含三類權重系數,分別是Wax,Waa,Wya。
優點:不同元素之間同一位置共享同一權重系數。
缺點:它只使用了這個序列中之前的信息來做出預測。比如作出預測y<3>的時候沒有用到之后x<4> 、x<5>的信息。
4、正向傳播
簡化RNN標記
5、反向傳播
6、循環神經網絡的其他結構
吳恩達參考的論文《The Unreasonable Effectiveness of Recurrent Neural Networks》
- many-to-many :Name entity recognition、Machine translation
- many-to-one : Sentiment Classification
- one-to-one : 之前學習的網絡
- one-to-many : Music generation
7、構建語言模型
在單詞表中對句子中的每個單詞進行one-hot編碼,句子結尾用< EOS >進行編碼,如果有不在單詞表中的單詞出現,用< UNK >進行編碼。
輸入a<0>和x<1>都是零向量,用softmax輸出預測值y^ <1>代表第一個詞可能是詞匯表中每個詞的概率p(a)、p(an)、p(be)…p(< unk>)、p(< EOS>),接下來x<2>等于真實值y<1>:cats作為輸入,得到預測值y^ <2>代表在第一個詞是cats的情況下第二個詞可能是詞匯表中每個詞的概率p(a|cats)、p(an|cats)、p(be|cats)…p(< unk>|cats)、p(< EOS>|cats)。
最后這句話是“cats average 15 hours of sleep a day.< EOS>”的的概率p(y<1>,y<2>,···y<9>)可以用條件概率公式計算得到。
對語料庫的每條語句進行RNN模型訓練,最終得到的模型可以根據給出語句的前幾個單詞預測其余部分,將語句補充完整。例如給出“Cats average 15”,RNN模型可能預測完整的語句是“Cats average 15 hours of sleep a day.”。
7、對新序列進行采樣
利用訓練好的RNN語言模型,可以進行新的序列采樣,從而隨機產生新的語句。
基于字符的語言模型
優點:不會出現不在詞匯表中的單詞
缺點:會得到太多太長的序列
8、RNN中的梯度消失
RNN缺點:不擅長處理長期依賴
語句中可能存在跨度很大的依賴關系,即某個單詞可能與它距離較遠的某個單詞具有強依賴關系。例如下面這兩條語句:
- The cat, which already ate fish, was full.
- The cats, which already ate fish, were full.
由于跨度很大,普通的RNN網絡容易出現梯度消失,捕捉不到它們之間的依賴,造成語法錯誤。
另一方面,RNN也可能出現梯度爆炸的問題,即gradient過大。常用的解決辦法是設定一個閾值,一旦梯度最大值達到這個閾值,就對整個梯度向量進行尺度縮小。這種做法被稱為梯度修剪(gradient clipping)。
9、門控制循環單元(GRU)
門控制循環單元(Gated Recurrent Unit):有效解決梯度消失問題,使RNN能捕獲更長的依賴。
RNN的隱層單元結構如下:
其中a< t >的表達式為:
為解決上述問題,對上述單元進行修改,增加了記憶單元C:memory cell,提供了記憶功能,GRU單元如下所示:
相關公式如下:
Γu意為update gate,更新門,是一個從0到1的數字。當Γu=1時,代表更新;當Γu=0時,代表記憶,保留之前的模塊輸出。
比如:The cat, which already ate…,was full.
在cat處會產生一個c< t > 將貓是單數的信息傳播到was處的Γu中,根據公式第三行,如果此時計算出來的Γu=0,則c< t >=c< t -1>不進行更新,謂詞為was,如果Γu=1,則c< t >=c~< t >謂詞更新為were。
由于Γu 使用了sigma激活函數,這個激活函數的特點是對于大部分輸入的數來說,其對應的函數值都接近零,這樣就能很大程度的保留之前的信息,這樣就能很好的解決梯度消失的問題。
這一點跟CNN中的ResNets的作用有點類似。因此,Γu能夠保證RNN模型中跨度很大的依賴關系不受影響,消除梯度消失問題。
上面介紹的是簡化的GRU模型,完整的GRU添加了另外一個gate,即Γr,這個 Γr 告訴計算出的下一個c< t >的候選值跟c< t-1 >有多大的相關性。
表達式如下:
GRU特點:模型簡單,計算速度快,易于構建大規模神經網絡,出現在LSTM之后,現在逐漸在被人們采用。
10、長短期記憶(LSTM)
Long Short Term Memory甚至比GRU更加高效,對應的RNN隱層結構如圖所示:
如果考慮c<t?1>對Γu,Γf,Γo的影響,可加入peephole connection,對LSTM的表達式進行修改:
GRU可以看成是簡化的LSTM,兩種方法都具有各自的優勢。
11、雙向循環網絡(BRNN)
Bidirectional RNN:這個模型可以讓你在序列的某點處,不僅可以獲取之前的信息,還可以獲取未來的信息。每個單元可以采用GRU或LSTM結構。BRNN的結構圖如下:
這樣網絡就構成了無環圖Acyclic graph:給定一個輸入序列x^<1> 到 x^<3>, 這個序列首先計算前向的a^<1> 、a^<2>、 a^<3>, 而反向序列由a^<3> 開始計算到a^<1>,把這些所有激活值計算完后就可以計算預測結果了,比如下面的計算公式:
BRNN缺點:需要完整的數據的序列,才能預測任意位置。
比如:語音識別中,需要人完整的說完話,然后獲取整段語音,才能處理這段語音進行識別。
12、深度循環網絡(DRNN)
Deep RNN:當需要解決很復雜的問題時,可以將上面的一些RNN進行整合形成DRNN。
三層深度循環網絡的結構示意圖如下,其中 []:表示層數,<>:表示時間序
某個單元激活值的計算方式如下:
我們知道DNN層數可達100多,而Deep RNNs一般沒有那么多層,3層RNNs已經較復雜了。
另外一種比較常用的Deep RNNs結構是每個輸出層上還有一些垂直單元,如下圖所示:
同樣,每個單元可以是RNN、GRU、LSTM、BRNN。
總結
以上是生活随笔為你收集整理的RNN循环神经网络(吴恩达《序列模型》笔记一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA:将web工程部署到tomcat
- 下一篇: A Comprehensive Surv