日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BP算法和RNN_模型CNN-RNN-LSTM和GRU简介

發(fā)布時間:2025/3/12 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BP算法和RNN_模型CNN-RNN-LSTM和GRU简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

深度學(xué)習自從2006年以后已經(jīng)“火”了十多年了,目前大家看到的,最普遍的應(yīng)用成果是在計算機視覺、語音識別和自然語言處理(NLP)。最近工業(yè)界也在努力地擴展它的應(yīng)用場景,比如游戲、內(nèi)容推薦和廣告匹配等等。

深度模型架構(gòu)分三種:

  • 前向反饋網(wǎng)絡(luò):MLP,CNN;
  • 后向反饋網(wǎng)絡(luò):stacked sparse coding, deconvolutional nets;
  • 雙向反饋網(wǎng)絡(luò):deep Boltzmann machines, stacked auto-encoders。
  • 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN) 應(yīng)該是最流行的深度學(xué)習模型,在計算機視覺也是影響力最大的。下面介紹一下深度學(xué)習中最常用的CNN模型,以及相關(guān)的RNN模型,其中也涉及到著名的LSTM和GRU。


    基本概念

    計算神經(jīng)生物學(xué)對構(gòu)建人工神經(jīng)元的計算模型進行了重要的研究。試圖模仿人類大腦行為的人工神經(jīng)元是構(gòu)建人工神經(jīng)網(wǎng)絡(luò)的基本組成部分。基本計算元素(神經(jīng)元)被稱為節(jié)點(或單元),其接收來自外部源的輸入,具有產(chǎn)生輸出的一些內(nèi)部參數(shù)(包括在訓(xùn)練期間學(xué)習的權(quán)重和偏差)。 這個單位被稱為感知器。感知器的基本框圖如下圖所示。

    圖顯示神經(jīng)元的基本非線性模型,其中 1, 2, 3,... 是輸入信號; 1, 2, 3,? 是突觸權(quán)重; 是輸入信號的線性組合; φ(?)是激活函數(shù)(例如sigmoid), 是輸出。 偏移 與輸出的線性組合器相加,具有應(yīng)用仿射變換的效果,產(chǎn)生輸出 。 神經(jīng)元功能可以用數(shù)學(xué)表示如下:

    神經(jīng)元的基本模型

    人工神經(jīng)網(wǎng)絡(luò)或一般神經(jīng)網(wǎng)絡(luò)由多層感知器(MLP)組成,其中包含一個或多個隱藏層,每層包含多個隱藏單元(神經(jīng)元)。 具有MLP的NN模型如圖所示。

    帶有MLP的NN模型

    多層感知器輸出

    學(xué)習率(learning rate)是訓(xùn)練DNN的重要組成部分。它是訓(xùn)練期間考慮的步長,使訓(xùn)練過程更快。但是,選擇學(xué)習率是敏感的。如果為η較大,網(wǎng)絡(luò)可能會開始發(fā)散而不是收斂;另一方面,如果η選擇較小,則網(wǎng)絡(luò)需要更多時間收斂。此外它可能很容易陷入局部最小值。

    有三種常用方法可用于降低訓(xùn)練期間的學(xué)習率:常數(shù)、因子和指數(shù)衰減。首先,可以定義一個常數(shù)ζ,基于定義的步長函數(shù)手動地降低學(xué)習率。 其次,可以在訓(xùn)練期間根據(jù)以下等式調(diào)整學(xué)習率:

    指數(shù)衰減的步進函數(shù)格式為:

    梯度下降法是一階優(yōu)化算法,用于尋找目標函數(shù)的局部最小值。算法1解釋了梯度下降的概念:

    算法1 梯度下降

    輸入:損失函數(shù)ε,學(xué)習率η,數(shù)據(jù)集 , 和模型F(θ, )

    輸出:最小化ε的最優(yōu)θ

    重復(fù)直到收斂:

    結(jié)束

    由于訓(xùn)練時間長是傳統(tǒng)梯度下降法的主要缺點,因此隨機梯度下降(Stochastic Gradient Descent ,SGD)方法用于訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)(DNN)。 算法2詳細解釋了SGD。

    算法2 隨機梯度下降

    輸入:損失函數(shù)ε,學(xué)習率η,數(shù)據(jù)集 , 和模型F(θ, )

    輸出:最小化ε的最優(yōu)θ

    重復(fù)直到收斂:

    隨機( , );

    對于( , )的每批( i, i)做

    結(jié)束

    深度NN使用流行的反向傳播(BP)算法和SGD 進行訓(xùn)練。 算法3給出了基本BP的偽代碼。 在MLP的情況下,可以容易地用有向非循環(huán)圖(directive acyclic graphs)這樣的計算圖來表示NN模型。DL的表示,如算法3所示,讓一個單路徑網(wǎng)絡(luò)使用鏈規(guī)則有效地計算從頂層到底層的梯度。

    算法3 BP算法

    輸入:具有 層的網(wǎng)絡(luò),激活函數(shù)σ ,

    隱藏層的輸出

    和網(wǎng)絡(luò)輸出

    計算梯度:

    從 ← 到0做

    計算當前層的梯度:

    應(yīng)用梯度下降(GD)

    反向傳播(BP)梯度到下一層

    結(jié)束

    動量(Momentum)是一種有助于SGD加速訓(xùn)練的方法。它背后的主要思想是使用梯度的移動平均值,而不是僅使用梯度的當前實際值。其數(shù)學(xué)表達如以下等式:

    這里γ是動量,η是第t輪訓(xùn)練的學(xué)習率。在訓(xùn)練期間使用動量的主要優(yōu)點是防止網(wǎng)絡(luò)卡在局部最小值。動量值為γ∈(0,1)。較高的動量值超過其最小值,可能使網(wǎng)絡(luò)不穩(wěn)定。通常γ設(shè)置為0.5,直到初始學(xué)習穩(wěn)定,然后增加到0.9 或更高。

    權(quán)重衰減(Weight decay)用于訓(xùn)練深度學(xué)習模型作為L2正則化方法,這有助于防止過度擬合網(wǎng)絡(luò)和模型泛化。 F(θ, )的L2正則化可以定義為:

    權(quán)重 的梯度是

    其中 = 0.0004。

    批處理歸一化(BN)通過輸入樣本移位來減少內(nèi)部協(xié)方差,從而加速DL過程。這意味著輸入被線性轉(zhuǎn)換為零均值和單位方差。對于白化的輸入,網(wǎng)絡(luò)收斂速度更快,并且在訓(xùn)練期間表現(xiàn)出更好的正則化,這對整體精度有影響。由于數(shù)據(jù)白化是在網(wǎng)絡(luò)外執(zhí)行的,在模型訓(xùn)練期間不會產(chǎn)生白化的影響。在深度遞歸神經(jīng)網(wǎng)絡(luò)(RNN),第n層的輸入是第n-1層的組合,不是原始特征輸入。隨著訓(xùn)練的進行,歸一化或白化的效果分別降低,這導(dǎo)致梯度消失(vanishing gradient)問題。這可能會減慢整個訓(xùn)練過程并導(dǎo)致飽和(saturation)。為了更好地訓(xùn)練,BN應(yīng)用于深度神經(jīng)網(wǎng)絡(luò)的內(nèi)部層。這種方法確保了理論上和基準測試(benchmarks)實驗中更快的收斂。在BN中,一層的特征獨立地歸一化為均值零和方差1。BN的算法在算法4中給出。

    算法4 BN

    輸入:小批量(mini-batch)x值: = { 1,2,3......, }

    輸出:{yi = BNγ,β(xi)}

    激活函數(shù)如下:如圖所示

    (a)sigmoid (b)雙曲正切

    (c)ReLU

    (d)Leaky ReLU (e)Exponential Linear Unit (ELU)
  • Sigmoid
  • TanH
  • Rectified Linear Unit (ReLU): y = max(x,0)
  • Leaky ReLU: y = max(x,ax)
  • Exponential Linear Unit (ELU):

  • 卷積神經(jīng)網(wǎng)絡(luò)(CNN)

    如圖顯示了一個CNN的整體架構(gòu),包括兩個主要部分:特征提取和分類器。在特征提取層,網(wǎng)絡(luò)的每一層都接收來自其前一層的輸出作為其輸入,并將其輸出作為輸入傳遞給下一層。 這個CNN架構(gòu)由三種類型層組合而成:卷積(convolution),最大池化(max-pooling)和分類(classification)。在網(wǎng)絡(luò)的低層和中層有兩種類型的層:卷積層和最大池化層。偶數(shù)層用于卷積,奇數(shù)層用于最大池化操作。卷積和最大池化層的輸出節(jié)點組合成為一個2D平面,叫特征圖(feature map)。一個層的每個平面通常由前層一個或多個平面的組合導(dǎo)出。平面的節(jié)點連接到前一層每個連接平面的小區(qū)域。卷積層的每個節(jié)點通過卷積運算從輸入圖像中提取特征。CNN的整體架構(gòu)包括輸入層、多個交替的卷積層和最大池化層、一個全連接層和一個分類層。

    CNN

    更高級的特征來自從較低層傳播的特征。隨著特征傳播到最高層或級別,特征的維度減小分別取決于卷積和最大池化操作的內(nèi)核大小。然而,為了確保分類準確性,通常增加特征圖的數(shù)量代表更好的輸入圖像特征。CNN的最后一層輸出作為全連接網(wǎng)絡(luò)的輸入,該網(wǎng)絡(luò)稱為分類層。前饋神經(jīng)網(wǎng)絡(luò)已被用作分類層。

    相對于最終神經(jīng)網(wǎng)絡(luò)權(quán)重矩陣的維度,期望數(shù)量的特征選擇在分類層中作為輸入。然而,就網(wǎng)絡(luò)或?qū)W習參數(shù)而言,全連接層是昂貴的。有幾種技術(shù),包括平均池化和全局平均池化,作全連接網(wǎng)絡(luò)的替代方案。在頂部分類層中softmax層計算相關(guān)類別的得分。分類器選最高分輸出相關(guān)類別。

    • 卷積層

    在此層,先前層的特征圖與可學(xué)習的內(nèi)核進行卷積。內(nèi)核的輸出經(jīng)過線性或非線性激活函數(shù),例如sigmoid、雙曲正切(hyperbolic tangent)、softmax,整流線性(rectified linear)和標識(identity)函數(shù),生成輸出特征圖。 每個輸出特征圖可以與多個輸入特征圖組合。 總的來說,有

    其中 是當前層輸出, -1是前一層輸出, 是當前層內(nèi)核, 是當前層的偏差。 代表選擇的輸入地圖。對于每個輸出圖,給出了附加偏差 。 但是,輸入圖將與不同的內(nèi)核進行卷積生成相應(yīng)的輸出圖。

    • 池化層

    亞采樣層對輸入圖執(zhí)行下采樣操作,這通常稱為池化層。在此層中,輸入和輸出特征圖的數(shù)量不會更改。例如,如果有 輸入映射,那么將會有完全 輸出映射。 由于下采樣操作,輸出圖每個維度大小都減小,這取決于下采樣掩碼大小。例如:如果使用2×2下采樣內(nèi)核,則所有圖像輸出維度將是相應(yīng)輸入圖像維度的一半。該操作可以表述為

    在該層中主要執(zhí)行兩種類型的操作:平均池化或最大池化。 在平均池化方法,函數(shù)通常總結(jié)來自前一層的特征圖的N×N個補丁并選擇平均值。在最大池化,從特征圖的N×N個補丁中選擇最高值。因此,輸出地圖尺寸減少n次。特殊情況下,輸出圖乘以一個標量。已經(jīng)有一些替代的亞采樣層,例如分數(shù)最大池化(fractional max pooling)層和帶卷積的亞采樣。

    • 分類層

    這是全連接層,根據(jù)前面卷積層提取的特征計算每個類的得分。最終的層特征圖表示為一組標量數(shù)值的矢量,這些標量值傳遞到全連接層。全連接前饋神經(jīng)層作為softmax分類層。

    在CNN的反向傳播(BP)中,全連接層按照全連接神經(jīng)網(wǎng)絡(luò)(FCNN)的方法更新。在卷積層和其前一層之間對特征圖執(zhí)行全卷積運算來更新卷積層的濾波器。如圖顯示了輸入圖像的卷積和亞采樣等基本操作。

    卷積和池化
    • 網(wǎng)絡(luò)參數(shù)和內(nèi)參需求

    計算參數(shù)的數(shù)量是衡量深度學(xué)習模型復(fù)雜性的重要指標。輸出特征圖的大小

    =( - )/ +1

    其中 是指輸入特征圖的尺寸, 是指濾波器或感受野(receptive field)的尺寸, 是指輸出特征圖的尺寸, 代表步幅(stride)。填充(padding)通常在卷積應(yīng)用,以確保輸入和輸出特征圖具有相同的尺寸。填充尺寸取決于內(nèi)核的大小。填充的行數(shù)和列數(shù)如下:

    =( - 1)/ 2

    這里 是填充尺寸, 是內(nèi)核維度。有幾個標準考慮來比較模型。但是,大多數(shù)情況下會考慮網(wǎng)絡(luò)參數(shù)的數(shù)量和內(nèi)存需求。 第 層的參數(shù)( )量計算按以下等式:

    =( × × -1)×

    如果偏移與權(quán)重參數(shù)相加,則上述等式可重寫:

    =( ×( +1)× -1)×

    這里第 層的參數(shù)總數(shù)記為 , 是輸出特征圖的總數(shù), -1是輸入特征圖或通道的總數(shù)。 例如,假設(shè)第 層具有 -1 = 32個輸入特征圖, = 64個輸出特征圖,并且濾波器大小為 = 5,在這種情況下,該層的偏移參數(shù)總數(shù)為

    =(5×5×33)× 64 = 528,000

    因此,第 層操作所需的內(nèi)存大小( )可以表示為

    =( × × )


    遞歸神經(jīng)網(wǎng)絡(luò)(RNN)

    RNN是唯一的,它允許隨時間推移在一系列向量上進行操作。如圖示意所示。

    RNN基本架構(gòu)

    在Elman架構(gòu)中,使用隱層的輸出和隱層的正常輸入一起作為輸入。 另一方面,Jordan網(wǎng)絡(luò)中輸出單元的輸出作為隱藏層的輸入。相反地Jordan使用輸出單元的輸出同時作為自身和隱藏層的輸入。 在數(shù)學(xué)上,可以表達為:

    Elman網(wǎng)絡(luò)

    h = h( h + hh ?1 + h)

    = ( h + )

    Jordan網(wǎng)絡(luò)

    h = h( h + h ?1 + h)

    = ( h + )

    其中 是輸入向量, h 是隱層向量, 是輸出向量, w和u是權(quán)重矩陣,b是偏移向量。

    循環(huán)允許信息從網(wǎng)絡(luò)的一個步驟傳遞到下一個步驟。 可以將遞歸神經(jīng)網(wǎng)絡(luò)視為同一網(wǎng)絡(luò)的多個副本,每個網(wǎng)絡(luò)將消息傳遞給后繼者。下圖顯示了如果循環(huán)展開(unroll the loop)會發(fā)生什么。

    展開的RNN

    RNN方法的主要問題是梯度消失。


    LSTM(Long Short Term Memory)

    長短時記憶(LSTM,Long Short Term Memory)的關(guān)鍵思想是單元(cell)狀態(tài),如圖水平線貫穿的頂部。LSTM將信息移除或添加到單元狀態(tài)(cell state),稱為門(gates):輸入門( ),忘記門( )和輸出門( )可以定義為如下公式:

    LSTM

    LSTM模型在時間信息處理中很受歡迎。 大多數(shù)包含LSTM模型的論文都有一些微小的差異。


    Gated Recurrent Unit (GRU)

    門控遞歸單元(Gated Recurrent Unit,GRU) 也來自LSTMs。GRU受歡迎的主要原因是計算成本和模型的簡單性,如圖所示。在拓撲、計算成本和復(fù)雜性方面,GRU是比標準LSTM更輕的RNN版。 該技術(shù)將遺忘門(forget gates)和輸入門(input gates)組合成單個“更新門(update gate)”,并將單元狀態(tài)、隱藏狀態(tài)以及一些其他變化合并。更簡單的GRU模型越來越受歡迎。數(shù)學(xué)上GRU可以用表示如下公式:

    GRU

    GRU需要較少的網(wǎng)絡(luò)參數(shù),這使模型更快。 另一方面,如果有足夠的數(shù)據(jù)和計算能力,LSTM可以提供更好的性能。


    參考文獻

  • https://skymind.ai/wiki/lstm
  • http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  • http://karpathy.github.io/2015/05/21/rnn-effectiveness/
  • M Z Alom et al,“The History Began from AlexNet: A Comprehensive Survey on Deep Learning Approaches”,arXiv 1803.01164,2018
  • 總結(jié)

    以上是生活随笔為你收集整理的BP算法和RNN_模型CNN-RNN-LSTM和GRU简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。