BP算法和RNN_模型CNN-RNN-LSTM和GRU简介
深度學習自從2006年以后已經“火”了十多年了,目前大家看到的,最普遍的應用成果是在計算機視覺、語音識別和自然語言處理(NLP)。最近工業界也在努力地擴展它的應用場景,比如游戲、內容推薦和廣告匹配等等。
深度模型架構分三種:
卷積神經網絡(Convolutional Neural Network, CNN) 應該是最流行的深度學習模型,在計算機視覺也是影響力最大的。下面介紹一下深度學習中最常用的CNN模型,以及相關的RNN模型,其中也涉及到著名的LSTM和GRU。
基本概念
計算神經生物學對構建人工神經元的計算模型進行了重要的研究。試圖模仿人類大腦行為的人工神經元是構建人工神經網絡的基本組成部分。基本計算元素(神經元)被稱為節點(或單元),其接收來自外部源的輸入,具有產生輸出的一些內部參數(包括在訓練期間學習的權重和偏差)。 這個單位被稱為感知器。感知器的基本框圖如下圖所示。
圖顯示神經元的基本非線性模型,其中 1, 2, 3,... 是輸入信號; 1, 2, 3,? 是突觸權重; 是輸入信號的線性組合; φ(?)是激活函數(例如sigmoid), 是輸出。 偏移 與輸出的線性組合器相加,具有應用仿射變換的效果,產生輸出 。 神經元功能可以用數學表示如下:
神經元的基本模型人工神經網絡或一般神經網絡由多層感知器(MLP)組成,其中包含一個或多個隱藏層,每層包含多個隱藏單元(神經元)。 具有MLP的NN模型如圖所示。
帶有MLP的NN模型多層感知器輸出
學習率(learning rate)是訓練DNN的重要組成部分。它是訓練期間考慮的步長,使訓練過程更快。但是,選擇學習率是敏感的。如果為η較大,網絡可能會開始發散而不是收斂;另一方面,如果η選擇較小,則網絡需要更多時間收斂。此外它可能很容易陷入局部最小值。
有三種常用方法可用于降低訓練期間的學習率:常數、因子和指數衰減。首先,可以定義一個常數ζ,基于定義的步長函數手動地降低學習率。 其次,可以在訓練期間根據以下等式調整學習率:
指數衰減的步進函數格式為:
梯度下降法是一階優化算法,用于尋找目標函數的局部最小值。算法1解釋了梯度下降的概念:
算法1 梯度下降
輸入:損失函數ε,學習率η,數據集 , 和模型F(θ, )
輸出:最小化ε的最優θ
重復直到收斂:
結束
由于訓練時間長是傳統梯度下降法的主要缺點,因此隨機梯度下降(Stochastic Gradient Descent ,SGD)方法用于訓練深度神經網絡(DNN)。 算法2詳細解釋了SGD。
算法2 隨機梯度下降
輸入:損失函數ε,學習率η,數據集 , 和模型F(θ, )
輸出:最小化ε的最優θ
重復直到收斂:
隨機( , );
對于( , )的每批( i, i)做
結束
深度NN使用流行的反向傳播(BP)算法和SGD 進行訓練。 算法3給出了基本BP的偽代碼。 在MLP的情況下,可以容易地用有向非循環圖(directive acyclic graphs)這樣的計算圖來表示NN模型。DL的表示,如算法3所示,讓一個單路徑網絡使用鏈規則有效地計算從頂層到底層的梯度。
算法3 BP算法
輸入:具有 層的網絡,激活函數σ ,
隱藏層的輸出
和網絡輸出
計算梯度:
從 ← 到0做
計算當前層的梯度:
用
和
應用梯度下降(GD)
反向傳播(BP)梯度到下一層
結束
動量(Momentum)是一種有助于SGD加速訓練的方法。它背后的主要思想是使用梯度的移動平均值,而不是僅使用梯度的當前實際值。其數學表達如以下等式:
這里γ是動量,η是第t輪訓練的學習率。在訓練期間使用動量的主要優點是防止網絡卡在局部最小值。動量值為γ∈(0,1)。較高的動量值超過其最小值,可能使網絡不穩定。通常γ設置為0.5,直到初始學習穩定,然后增加到0.9 或更高。
權重衰減(Weight decay)用于訓練深度學習模型作為L2正則化方法,這有助于防止過度擬合網絡和模型泛化。 F(θ, )的L2正則化可以定義為:
權重 的梯度是
其中 = 0.0004。
批處理歸一化(BN)通過輸入樣本移位來減少內部協方差,從而加速DL過程。這意味著輸入被線性轉換為零均值和單位方差。對于白化的輸入,網絡收斂速度更快,并且在訓練期間表現出更好的正則化,這對整體精度有影響。由于數據白化是在網絡外執行的,在模型訓練期間不會產生白化的影響。在深度遞歸神經網絡(RNN),第n層的輸入是第n-1層的組合,不是原始特征輸入。隨著訓練的進行,歸一化或白化的效果分別降低,這導致梯度消失(vanishing gradient)問題。這可能會減慢整個訓練過程并導致飽和(saturation)。為了更好地訓練,BN應用于深度神經網絡的內部層。這種方法確保了理論上和基準測試(benchmarks)實驗中更快的收斂。在BN中,一層的特征獨立地歸一化為均值零和方差1。BN的算法在算法4中給出。
算法4 BN
輸入:小批量(mini-batch)x值: = { 1,2,3......, }
輸出:{yi = BNγ,β(xi)}
激活函數如下:如圖所示
(a)sigmoid (b)雙曲正切 (c)ReLU(d)Leaky ReLU (e)Exponential Linear Unit (ELU)卷積神經網絡(CNN)
如圖顯示了一個CNN的整體架構,包括兩個主要部分:特征提取和分類器。在特征提取層,網絡的每一層都接收來自其前一層的輸出作為其輸入,并將其輸出作為輸入傳遞給下一層。 這個CNN架構由三種類型層組合而成:卷積(convolution),最大池化(max-pooling)和分類(classification)。在網絡的低層和中層有兩種類型的層:卷積層和最大池化層。偶數層用于卷積,奇數層用于最大池化操作。卷積和最大池化層的輸出節點組合成為一個2D平面,叫特征圖(feature map)。一個層的每個平面通常由前層一個或多個平面的組合導出。平面的節點連接到前一層每個連接平面的小區域。卷積層的每個節點通過卷積運算從輸入圖像中提取特征。CNN的整體架構包括輸入層、多個交替的卷積層和最大池化層、一個全連接層和一個分類層。
CNN更高級的特征來自從較低層傳播的特征。隨著特征傳播到最高層或級別,特征的維度減小分別取決于卷積和最大池化操作的內核大小。然而,為了確保分類準確性,通常增加特征圖的數量代表更好的輸入圖像特征。CNN的最后一層輸出作為全連接網絡的輸入,該網絡稱為分類層。前饋神經網絡已被用作分類層。
相對于最終神經網絡權重矩陣的維度,期望數量的特征選擇在分類層中作為輸入。然而,就網絡或學習參數而言,全連接層是昂貴的。有幾種技術,包括平均池化和全局平均池化,作全連接網絡的替代方案。在頂部分類層中softmax層計算相關類別的得分。分類器選最高分輸出相關類別。
- 卷積層
在此層,先前層的特征圖與可學習的內核進行卷積。內核的輸出經過線性或非線性激活函數,例如sigmoid、雙曲正切(hyperbolic tangent)、softmax,整流線性(rectified linear)和標識(identity)函數,生成輸出特征圖。 每個輸出特征圖可以與多個輸入特征圖組合。 總的來說,有
其中 是當前層輸出, -1是前一層輸出, 是當前層內核, 是當前層的偏差。 代表選擇的輸入地圖。對于每個輸出圖,給出了附加偏差 。 但是,輸入圖將與不同的內核進行卷積生成相應的輸出圖。
- 池化層
亞采樣層對輸入圖執行下采樣操作,這通常稱為池化層。在此層中,輸入和輸出特征圖的數量不會更改。例如,如果有 輸入映射,那么將會有完全 輸出映射。 由于下采樣操作,輸出圖每個維度大小都減小,這取決于下采樣掩碼大小。例如:如果使用2×2下采樣內核,則所有圖像輸出維度將是相應輸入圖像維度的一半。該操作可以表述為
在該層中主要執行兩種類型的操作:平均池化或最大池化。 在平均池化方法,函數通常總結來自前一層的特征圖的N×N個補丁并選擇平均值。在最大池化,從特征圖的N×N個補丁中選擇最高值。因此,輸出地圖尺寸減少n次。特殊情況下,輸出圖乘以一個標量。已經有一些替代的亞采樣層,例如分數最大池化(fractional max pooling)層和帶卷積的亞采樣。
- 分類層
這是全連接層,根據前面卷積層提取的特征計算每個類的得分。最終的層特征圖表示為一組標量數值的矢量,這些標量值傳遞到全連接層。全連接前饋神經層作為softmax分類層。
在CNN的反向傳播(BP)中,全連接層按照全連接神經網絡(FCNN)的方法更新。在卷積層和其前一層之間對特征圖執行全卷積運算來更新卷積層的濾波器。如圖顯示了輸入圖像的卷積和亞采樣等基本操作。
卷積和池化- 網絡參數和內參需求
計算參數的數量是衡量深度學習模型復雜性的重要指標。輸出特征圖的大小
=( - )/ +1
其中 是指輸入特征圖的尺寸, 是指濾波器或感受野(receptive field)的尺寸, 是指輸出特征圖的尺寸, 代表步幅(stride)。填充(padding)通常在卷積應用,以確保輸入和輸出特征圖具有相同的尺寸。填充尺寸取決于內核的大小。填充的行數和列數如下:
=( - 1)/ 2
這里 是填充尺寸, 是內核維度。有幾個標準考慮來比較模型。但是,大多數情況下會考慮網絡參數的數量和內存需求。 第 層的參數( )量計算按以下等式:
=( × × -1)×
如果偏移與權重參數相加,則上述等式可重寫:
=( ×( +1)× -1)×
這里第 層的參數總數記為 , 是輸出特征圖的總數, -1是輸入特征圖或通道的總數。 例如,假設第 層具有 -1 = 32個輸入特征圖, = 64個輸出特征圖,并且濾波器大小為 = 5,在這種情況下,該層的偏移參數總數為
=(5×5×33)× 64 = 528,000
因此,第 層操作所需的內存大小( )可以表示為
=( × × )
遞歸神經網絡(RNN)
RNN是唯一的,它允許隨時間推移在一系列向量上進行操作。如圖示意所示。
RNN基本架構在Elman架構中,使用隱層的輸出和隱層的正常輸入一起作為輸入。 另一方面,Jordan網絡中輸出單元的輸出作為隱藏層的輸入。相反地Jordan使用輸出單元的輸出同時作為自身和隱藏層的輸入。 在數學上,可以表達為:
Elman網絡
h = h( h + hh ?1 + h)
= ( h + )
Jordan網絡
h = h( h + h ?1 + h)
= ( h + )
其中 是輸入向量, h 是隱層向量, 是輸出向量, w和u是權重矩陣,b是偏移向量。
循環允許信息從網絡的一個步驟傳遞到下一個步驟。 可以將遞歸神經網絡視為同一網絡的多個副本,每個網絡將消息傳遞給后繼者。下圖顯示了如果循環展開(unroll the loop)會發生什么。
展開的RNNRNN方法的主要問題是梯度消失。
LSTM(Long Short Term Memory)
長短時記憶(LSTM,Long Short Term Memory)的關鍵思想是單元(cell)狀態,如圖水平線貫穿的頂部。LSTM將信息移除或添加到單元狀態(cell state),稱為門(gates):輸入門( ),忘記門( )和輸出門( )可以定義為如下公式:
LSTMLSTM模型在時間信息處理中很受歡迎。 大多數包含LSTM模型的論文都有一些微小的差異。
Gated Recurrent Unit (GRU)
門控遞歸單元(Gated Recurrent Unit,GRU) 也來自LSTMs。GRU受歡迎的主要原因是計算成本和模型的簡單性,如圖所示。在拓撲、計算成本和復雜性方面,GRU是比標準LSTM更輕的RNN版。 該技術將遺忘門(forget gates)和輸入門(input gates)組合成單個“更新門(update gate)”,并將單元狀態、隱藏狀態以及一些其他變化合并。更簡單的GRU模型越來越受歡迎。數學上GRU可以用表示如下公式:
GRUGRU需要較少的網絡參數,這使模型更快。 另一方面,如果有足夠的數據和計算能力,LSTM可以提供更好的性能。
參考文獻
總結
以上是生活随笔為你收集整理的BP算法和RNN_模型CNN-RNN-LSTM和GRU简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小学生测验
- 下一篇: python登录脚本_selenium+