RNN_递归神经网络
遞歸神經網(wǎng)絡
目錄
1 理解遞歸神經網(wǎng)絡
1.1 什么是遞歸神經網(wǎng)絡
1.2 關于前饋神經網(wǎng)絡
1.2.1 結構模型
1.2.2 與RNN區(qū)別
1.3 RNN模型
2 基于時間的反向傳播
2.1 為什么RNN不能直接使用反向傳播
2.2 基于時間的反向傳播:訓練RNN
2.3 梯度消失和梯度爆炸
3 RNN的應用及RNN-CF
3.1 RNN的應用
3.2 RNN-CF
1 理解遞歸神經網(wǎng)絡
1.1 什么是遞歸神經網(wǎng)絡
遞歸神經網(wǎng)絡(RNN)是一個特殊的神經網(wǎng)絡系列,旨在處理序列數(shù)據(jù),例如一系列的文本或者股票市場的波動。現(xiàn)實問題中存在著很多序列型的數(shù)據(jù),例如文本、語音以及視頻等。這些序列型的數(shù)據(jù)往往都是具有時序上的關聯(lián)性的,既某一時刻網(wǎng)絡的輸出除了與當前時刻的輸入相關之外,還與之前某一時刻或某幾個時刻的輸出相關。遞歸神經網(wǎng)絡具有一定的記憶功能,這種網(wǎng)絡與序列和列表密切相關,可以被用來解決很多問題,例如:語音識別、語言模型、機器翻譯等。遞歸神經網(wǎng)絡與前饋神經網(wǎng)絡比較,后者并不能處理好這種關聯(lián)性,因為它沒有記憶能力,所以前面時刻的輸出不能傳遞到后面的時刻。
綜述,遞歸神經網(wǎng)絡的本質是一個用于處理和預測序列數(shù)據(jù)的神經網(wǎng)絡模型,神經元在前面某一時刻的輸出可以作為輸入來幫助獲得當前時刻的輸出,這一點與傳統(tǒng)的前饋神經網(wǎng)絡不同。
1.2 關于前饋神經網(wǎng)絡
1.2.1 結構模型
前饋神經網(wǎng)絡:每層神經元與下層神經元相互連接,神經元之間不存在同層連接,也不存在跨層連接。
?????????????????? 圖1.1 前饋神經網(wǎng)絡結構示意圖
1.2.2 與RNN區(qū)別
前饋神經網(wǎng)絡在時間t上的預測輸出僅取決于當前的輸入。也就是說,當前預測輸出的結果與時間t之前的任何輸入都無關系。可以舉一個例子:
Yang is learning how to ___.
如果使用前饋神經網(wǎng)絡,并且一次處理一個單詞,則只會輸入to,不足以理解這個短句。
此外,RNN在解決時間任務方面更強大。此外,RNN可以表現(xiàn)出許多不同的形式:一對一(文本生成)、多對一(順序圖像分類)、一對多(圖像描述)和多對多(機器翻譯)。
1.3 RNN模型
遞歸神經網(wǎng)絡,帶有一個指向自身的環(huán),用來表示它可以傳遞當前時刻處理的信息給下一時刻使用,如下圖所示,一條鏈狀神經網(wǎng)絡代表了一個遞歸神經網(wǎng)絡,可以認為它是對相同神經網(wǎng)絡的多重復制,每一時刻的神經網(wǎng)絡會傳遞信息給下一時刻。
?????????????????? 圖1.2 RNN結構示意圖
其中Xt為網(wǎng)絡層的輸入,A表示模型處理部分,ht為輸出,A的細節(jié)實現(xiàn)如下圖所示:
?????????????????? 圖1.3 模型處理示意圖
假設輸入和輸出是序列數(shù)據(jù),設計了一個可以表示輸入和輸出序列的計算圖。該計算圖形產生了一系列函數(shù)副本,我們將其應用于序列中的每個個體輸入輸出元組。然后,通過將該模型應用到序列中的任何給定的單個時間步長t,我們能夠得到RNN的基本計算圖。我們討論了計算隱藏狀態(tài)和輸出的準確數(shù)學方程和更新規(guī)則。
2 基于時間的反向傳播
2.1 為什么RNN不能直接使用反向傳播
?????????????????? 圖 2.1 RNN的計算
由圖2.1,我們可以發(fā)現(xiàn)RNN的計算過程中有一個額外的循環(huán)權重w3,當我們應用鏈式法則時:
其中h是遞歸的,最終會得到無窮多的導數(shù)項。若要解決這一問題,可以將輸入序列隨時間展開,為每個輸入Xt創(chuàng)建RNN副本,并分別計算每個副本的導數(shù),并通過計算梯度的總和將他們回滾,以計算需要更新的權重大小。
2.2 基于時間的反向傳播:訓練RNN
根據(jù)損失函數(shù)利用SGD來求解最優(yōu)參數(shù),在CNN中使用反向傳播BP算法來求解最優(yōu)參數(shù),但在RNN就要用到BPTT,它和BP算法的本質區(qū)別,也是CNN和RNN的本質區(qū)別:CNN沒有記憶功能,它的輸出僅依賴與輸入,但RNN有記憶功能,它的輸出不僅依賴與當前輸入,還依賴與當前的記憶。這個記憶是序列到序列的,也就是當前時刻收到上一時刻的影響,例如開頭提到的股市變化。
2.3 梯度消失和梯度爆炸
我們看到,當只有4個時間步時,我們有一項w3。因此,在第n個時間步,它將變w3的n-1次方。如果我們初始化w3為非常小的值(比如0.00001),那么在n=100時間步長,梯度將是無窮小,這被稱為梯度消失。
另一方面,假設我們將w3初始化為非常大的值(比如說1000.00),那么,在n=100時間步長,梯度將是巨大的,這稱為梯度爆炸。
問題的損失面的復雜性也可能導致發(fā)生梯度爆炸。由于輸人的維數(shù)以及模型中存在的大量參數(shù)(權重),復雜的非凸損失面在深度神經網(wǎng)絡中非常常見。圖2.5顯示了RNN的損失面,突出顯示了非常高的曲率形成了墻。如圖中的實線所示,如果優(yōu)化方法碰到這樣的墻,那么梯度將爆炸或過沖。這可能導致?lián)p失最小化很差或數(shù)值不穩(wěn)定性,或兩者兼而有之。在這種情況下,避免梯度爆炸的簡單解決方案是在梯度大于某個閾值時,將梯度剪裁為合理小的值。
?????????????????? 圖2.2 梯度爆炸現(xiàn)象
3 RNN的應用及RNN-CF
3.1 RNN的應用
介紹四種主要類型的RNN:
一對一架構用于諸如文本生成、場景分類和視頻幀標記之類的任務。
多對一體系架構用于情感分析,它可以逐單詞處理句子/短語。
一對多架構在生成圖像標題任務中很常見,其中,我們將單個圖像映射到描述圖像的任意長句子的短句。
利用多對多體系架構可以執(zhí)行機器翻譯任務。
?????????????????? 圖3.1 主要類型描述
?
3.2 RNN-CF
對于梯度爆炸而言,我們可以通過梯度剪裁的技巧來防止梯度爆炸,從而使訓練更穩(wěn)定。但對于解決梯度消失的問題,我們需要改變RNN本身的結構,讓它能幫助遞歸神經網(wǎng)絡更長時間地記憶序列數(shù)據(jù)中的模式。這樣一個能獲取更長期記憶的RNN變體,稱為RNN-CF。
RNN-CF具有兩個不同的層:隱藏層(即簡單RNN中的傳統(tǒng)隱藏層)和上下文層(用于保持長期記憶)。
?????????????????? 圖3.2 比較RNN和RNN-CF
總結
以上是生活随笔為你收集整理的RNN_递归神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CCNA day03 实验:三层交换机实
- 下一篇: php查询MySQL结果转化为数组_PH