深度学习小白专场之循环神经网络和递归神经网络
深度學習小白專場之循環神經網絡和遞歸神經網絡
全連接神經網絡和卷積神經?網絡,都只能單獨的去處理單個的輸入,且前后的輸入之間毫無關系。但是在一些任務中,我們需要更好的去處理序列的信息,即前后的輸?之間存在關系。比如,在理解一整句話的過程中,孤立理解組成這句話的詞是不夠的,我們需要整體的處理由這些詞連接起來的整個序列;當我們處理視頻時,我們也不能單獨地僅僅分析每一幀,?要分析這些幀連接起來的整個序列。這就引出了了深度學習領域中另?類非常重要的神經網絡:循環神經?網絡(Recurrent Neural Network)。
1.循環神經網絡
我們首先來看一下一個簡單的循環神經?絡圖,它由輸?層、一個隱藏層和?個輸出層組成。我們可以看到,循環神經網絡的隱藏層的值s不僅僅取決于當前這次的輸入x,還取決于上一次隱藏層的值s,權重矩陣W就是隱藏層上一次的值作為這一次的輸入的權重。
從上?可以看出,循環神經?網絡的輸出值ot,是受前?歷次輸?入值xt、xt?1、xt?2. . . 的影響的, 這就是為什么循環神經網絡可以往前看任意多個輸入值的原因。
對比與卷積神經網絡CNN一般用于處理網格化數據如一個圖像的神經網絡,循環神經網絡RNN是一類用于處理序列數據的神經網絡。
- 循環神經網絡的訓練:
循環神經網絡訓練的算法和卷積神經網絡,前饋神經網絡的訓練算法-BP算法的原理是一樣的,也包括3個步驟:
(1)前向計算每一個神經元的輸出值
(2)反向計算每一個神經元的誤差項,即誤差對加權輸入(加法器)的偏導數。這里的加法器就是wx+b
(3)計算每一個權重的梯度
注: 應用于展開圖且代價為O(tao)的反向傳播算法稱為通過時間反向傳播(BPTT)。 - CNN和RNN參數共享的區別:卷積的輸出是一個序列,其中輸出的每一項是相鄰幾項輸入的函數,共享的概念體現在每個時間步中使用的相同的卷積核;而RNN是輸出的每一項是前一項的函數。輸出的每一項是對先前輸出應用相同的更新規則而產生。
- RNN的幾種設計模式:
(1)每個時間步都有輸出,并且隱藏單元和隱藏單元之間有循環連接的循環網絡
(2)每個時間步都有輸出,只有當前時刻的輸出到下一時刻的隱藏單元之間有循環連接的網絡
(3)隱藏單元之間存在循環連接,但是讀取整個序列后產生單個輸出的循環網絡
隱藏單元之間存在循環的網絡非常強大但是訓練代價也非常大。
- 由輸出反饋到模型而后產生循環連接的模型可使用導師驅動過程進行訓練。訓練模型時,導師驅動過程不再使用最大似然準則。 導師驅動過程是一種訓練技術,適用于輸出與下一時間步的隱藏狀態存在連接的RNN。
我們通常希望將RNN的輸出解釋為一個概率分布,并且通常使用與分布相關聯的交叉熵來定義損失。例如均方誤差是與單位高斯分布的輸出相關聯的交叉熵損失,例如前饋網絡中所使用的。
- 循環網絡為減少的參數數目付出的代價是優化參數可能變得困難。
- 我們可以將t=1,2,3···的向量x^(t)序列作為輸入的RNN。另一種選擇我們可以使用單個向量x作為輸入。當x是一個固定大小的向量時,我們可以簡單的將其看做產生y序列RNN的額外輸入。
將額外的輸入提供到RNN的一些常見方法是:
(1)在每個時刻作為一個額外輸入
(2)作為初始狀態h^(0)
(3)結合兩種方式
將固定長度的向量x映射到Y序列上分布的RNN。這類RNN適應于很多任務,如圖注,可以將單個對象作為模型的輸入,然后產生描述圖像的詞序列。
2.雙向RNN
對于語?模型來說,很多時候光看前面的詞是不夠的,我們需要看到一個詞前后的詞,這時候就要用到雙向RNN了。下圖為雙向RNN示例:
我們可以看出一般的規律:正向計算時,隱藏層的值st與st?1有關;反向計算時,隱藏層的值s ′t與s ′ t+1有關;最終的輸出取決于正向和反向計算的加和。
- 雙向RNN允許輸出單元同時依賴過去和未來且對時刻t的輸入值最敏感的表示,而不必指定t周圍固定大小的窗口。這是前饋網絡、卷積網絡或具有固定帶下的線性緩存器的常規RNN所必須要做的。
- 在雙向RNN中,循環h在時間上向前(向右)傳播信息,循環g在時間上向后(向左)傳播信息。
但是實踐中,上面介紹的這兩種RNN并不能處理較長的序列,主要是由于梯度消失和梯度爆炸的問題。使用其他結構的RNNs可以避免梯度消失問題,?如長短時記憶網絡(LTSM)和Gated Recurrenr Unit(GRU),這是最流行的做法。同時避免使用飽和性激活函數比如sigmoid和tanh函數而采用ReLu函數也可以避免梯度消失問題。對于梯度爆炸問題我們可以通過設置梯度閾值來避免。
3.基于編碼-解碼的序列到序列架構
- 我們還可以訓練RNN使得輸入序列可以變為不一定等長的輸出序列。在這很多場景中都有應用,如語音識別、機器識別、或者問答,其中訓練集的輸入和輸出序列的長度通常不相同。我們通常稱為將這樣的輸入稱為“上下文”。
4.遞歸神經網絡
- 遞歸神經網絡代表循環網絡的另一個擴展,它被構造為深的樹狀結構而不是RNN的鏈狀結構。因此是不同的計算圖。
- 遞歸神經網絡的一個明顯優勢是,對于具有相同長度tao的序列,深度可以急劇地從tao減小到log(tao),這可能有助于解決長期依賴。
總結
以上是生活随笔為你收集整理的深度学习小白专场之循环神经网络和递归神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Qt Designer和Qss设计Q
- 下一篇: 干货 |VALSE 2019总结 --P