0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺析深度神經(jīng)網(wǎng)絡(luò)(DNN)反向傳播算法(BP)

電子工程師 ? 來(lái)源:博客園 ? 作者:劉建平Pinard ? 2021-03-22 16:28 ? 次閱讀

在深度神經(jīng)網(wǎng)絡(luò)(DNN)模型與前向傳播算法中,我們對(duì)DNN的模型和前向傳播算法做了總結(jié),這里我們更進(jìn)一步,對(duì)DNN的反向傳播算法(Back Propagation,BP)做一個(gè)總結(jié)。

1. DNN反向傳播算法要解決的問(wèn)題

在了解DNN的反向傳播算法前,我們先要知道DNN反向傳播算法要解決的問(wèn)題,也就是說(shuō),什么時(shí)候我們需要這個(gè)反向傳播算法?

回到我們監(jiān)督學(xué)習(xí)的一般問(wèn)題,假設(shè)我們有m個(gè)訓(xùn)練樣本:{ ( x1 , y1 ) , ( x2 , y2 ) , ... , ( xm , ym ) },其中 x 為輸入向量,特征維度為 n_in ,而 y 為輸出向量,特征維度為 n_out 。我們需要利用這 m 個(gè)樣本訓(xùn)練出一個(gè)模型,當(dāng)有一個(gè)新的測(cè)試樣本 ( xtest , ? ) 來(lái)到時(shí), 我們可以預(yù)測(cè) ytest 向量的輸出。

如果我們采用DNN的模型,即我們使輸入層有 n_in 個(gè)神經(jīng)元,而輸出層有 n_out 個(gè)神經(jīng)元。再加上一些含有若干神經(jīng)元的隱藏層。此時(shí)我們需要找到合適的所有隱藏層和輸出層對(duì)應(yīng)的線性系數(shù)矩陣 W ,偏倚向量 b ,讓所有的訓(xùn)練樣本輸入計(jì)算出的輸出盡可能的等于或很接近樣本輸出。怎么找到合適的參數(shù)呢?

如果大家對(duì)傳統(tǒng)的機(jī)器學(xué)習(xí)的算法優(yōu)化過(guò)程熟悉的話,這里就很容易聯(lián)想到我們可以用一個(gè)合適的損失函數(shù)來(lái)度量訓(xùn)練樣本的輸出損失,接著對(duì)這個(gè)損失函數(shù)進(jìn)行優(yōu)化求最小化的極值,對(duì)應(yīng)的一系列線性系數(shù)矩陣W,偏倚向量b即為我們的最終結(jié)果。在DNN中,損失函數(shù)優(yōu)化極值求解的過(guò)程最常見(jiàn)的一般是通過(guò)梯度下降法來(lái)一步步迭代完成的,當(dāng)然也可以是其他的迭代方法比如牛頓法與擬牛頓法。如果大家對(duì)梯度下降法不熟悉,建議先閱讀我之前寫(xiě)的梯度下降(Gradient Descent)小結(jié)。

對(duì)DNN的損失函數(shù)用梯度下降法進(jìn)行迭代優(yōu)化求極小值的過(guò)程即為我們的反向傳播算法。

2. DNN反向傳播算法的基本思路

在進(jìn)行DNN反向傳播算法前,我們需要選擇一個(gè)損失函數(shù),來(lái)度量訓(xùn)練樣本計(jì)算出的輸出和真實(shí)的訓(xùn)練樣本輸出之間的損失。你也許會(huì)問(wèn):訓(xùn)練樣本計(jì)算出的輸出是怎么得來(lái)的?這 個(gè)輸出是隨機(jī)選擇一系列 W ,b,用我們上一節(jié)的前向傳播算法計(jì)算出來(lái)的。即通過(guò)一系列的計(jì)算:

100042150-65815-2.jpg

計(jì)算到輸出層第L層對(duì)應(yīng)的 aL 即為前向傳播算法計(jì)算出來(lái)的輸出。

回到損失函數(shù),DNN可選擇的損失函數(shù)有不少,為了專注算法,這里我們使用最常見(jiàn)的均方差來(lái)度量損失。即對(duì)于每個(gè)樣本,我們期望最小化下式:

100042150-65814-1.jpg

其中,aL 和 y 為特征維度為 n_out 的向量,而 ||S||2 為 S 的L2范數(shù)。

損失函數(shù)有了,現(xiàn)在我們開(kāi)始用梯度下降法迭代求解每一層的 W,b。

首先是輸出層第L層。注意到輸出層的 W,b 滿足下式:

100042150-65815-2.jpg

這樣對(duì)于輸出層的參數(shù),我們的損失函數(shù)變?yōu)椋?/p>

100042150-65816-3.jpg

這樣求解 W,b 的梯度就簡(jiǎn)單了:

100042150-65817-4.jpg

注意上式中有一個(gè)符號(hào) ⊙,它代表Hadamard積,對(duì)于兩個(gè)維度相同的向量 A ( a1 , a2 , ... an ) T 和 B ( b1 , b2 , ... bn ) T,則 A⊙B = ( a1b1,a2b2,... anbn ) T。

我們注意到在求解輸出層的 W,b 的時(shí)候,有公共的部分

100042150-65818-5.jpg

因此我們可以把公共的部分即對(duì) zL 先算出來(lái),記為:

100042150-65819-6.jpg

現(xiàn)在我們終于把輸出層的梯度算出來(lái)了,那么如何計(jì)算上一層 L ? 1 層的梯度,上上層 L ? 2 層的梯度呢?這里我們需要一步步的遞推,注意到對(duì)于第l層的未激活輸出 zL ,它的梯度可以表示為:

100042150-65820-7.jpg

如果我們可以依次計(jì)算出第 l 層的 δl ,則該層的 Wl,bl 很容易計(jì)算?為什么呢?注意到根據(jù)前向傳播算法,我們有:

100042150-65821-8.jpg

所以根據(jù)上式我們可以很方便的計(jì)算出第 l 層的 Wl,bl 的梯度如下:

100042150-65822-9.jpg

那么現(xiàn)在問(wèn)題的關(guān)鍵就是要求出 δl 了。這里我們用數(shù)學(xué)歸納法,第 L 層的 δL上面我們已經(jīng)求出, 假設(shè)第 l + 1 層的 δl+1 已經(jīng)求出來(lái)了,那么我們?nèi)绾吻蟪龅?l 層的 δl 呢?我們注意到:

100042150-65823-10.jpg

可見(jiàn),用歸納法遞推 δl+1 和 δl 的關(guān)鍵在于求解

而 zl+1 和 zl 的關(guān)系其實(shí)很容易找出:

100042150-65824-11.jpg

這樣很容易求出:

將上式帶入上面 δl+1 和 δl 關(guān)系式我們得到:

現(xiàn)在我們得到了δl的遞推關(guān)系式,只要求出了某一層的 δl ,求解 Wl,bl 的對(duì)應(yīng)梯度就很簡(jiǎn)單的。

(注意,上面的矩陣求導(dǎo)推導(dǎo)部分不太嚴(yán)謹(jǐn),定性理解即可。)

3. DNN反向傳播算法過(guò)程

現(xiàn)在我們總結(jié)下DNN反向傳播算法的過(guò)程。由于梯度下降法有批量(Batch),小批量(mini-Batch),隨機(jī)三個(gè)變種,為了簡(jiǎn)化描述,這里我們以最基本的批量梯度下降法為例來(lái)描述反向傳播算法。實(shí)際上在業(yè)界使用最多的是mini-Batch的梯度下降法。不過(guò)區(qū)別僅僅在于迭代時(shí)訓(xùn)練樣本的選擇而已。

輸入: 總層數(shù) L ,以及各隱藏層與輸出層的神經(jīng)元個(gè)數(shù),激活函數(shù),損失函數(shù),迭代步長(zhǎng) α,最大迭代次數(shù)MAX與停止迭代閾值 ?,輸入的 m 個(gè)訓(xùn)練樣本{ ( x1 , y1 ) , ( x2 , y2 ) , ... , ( xm , ym ) }

輸出:各隱藏層與輸出層的線性關(guān)系系數(shù)矩陣 W 和偏倚向量 b

1) 初始化各隱藏層與輸出層的線性關(guān)系系數(shù)矩陣 W 和偏倚向量 b 的值為一個(gè)隨機(jī)值。

2)for iter to 1 to MAX:

2-1) for i = 1 to m:

a) 將DNN輸入 a1 設(shè)置為 xi
b) for l = 2 to L,進(jìn)行前向傳播算法計(jì)算

c) 通過(guò)損失函數(shù)計(jì)算輸出層的 δi,L
d) for l= L-1 to 2, 進(jìn)行反向傳播算法計(jì)算

2-2) for l = 2 to L,更新第 l 層的 Wl,Wl,bl:

2-3) 如果所有 W,b 的變化值都小于停止迭代閾值 ?,則跳出迭代循環(huán)到步驟3。

3) 輸出各隱藏層與輸出層的線性關(guān)系系數(shù)矩陣 W 和偏倚向量 b 。

4. DNN反向傳播算法小結(jié)

有了DNN反向傳播算法,我們就可以很方便的用DNN的模型去解決第一節(jié)里面提到了各種監(jiān)督學(xué)習(xí)的分類回歸問(wèn)題。當(dāng)然DNN的參數(shù)眾多,矩陣運(yùn)算量也很大,直接使用會(huì)有各種各樣的問(wèn)題。有哪些問(wèn)題以及如何嘗試解決這些問(wèn)題并優(yōu)化DNN模型與算法,我們?cè)谙乱黄v。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • BP
    BP
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    15202
  • dnn
    dnn
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    9033
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何編寫(xiě)一個(gè)BP神經(jīng)網(wǎng)絡(luò)

    BP反向傳播神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),它通過(guò)反向
    的頭像 發(fā)表于 07-11 16:44 ?387次閱讀

    BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)機(jī)制

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network),即反向傳播神經(jīng)網(wǎng)絡(luò),是一種基于梯度下降
    的頭像 發(fā)表于 07-10 15:49 ?380次閱讀

    bp神經(jīng)網(wǎng)絡(luò)反向傳播神經(jīng)網(wǎng)絡(luò)區(qū)別在哪

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))是一種多層前饋
    的頭像 發(fā)表于 07-04 09:51 ?361次閱讀

    bp神經(jīng)網(wǎng)絡(luò)算法的基本流程包括哪些

    BP神經(jīng)網(wǎng)絡(luò)算法,即反向傳播神經(jīng)網(wǎng)絡(luò)算法,是一種常用
    的頭像 發(fā)表于 07-04 09:47 ?440次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的優(yōu)缺點(diǎn)有哪些

    神經(jīng)網(wǎng)絡(luò)反向傳播算法(Backpropagation Algorithm)是一種廣泛應(yīng)用于深度學(xué)習(xí)和機(jī)器學(xué)習(xí)領(lǐng)域的優(yōu)化
    的頭像 發(fā)表于 07-03 11:24 ?604次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法的原理、數(shù)學(xué)推導(dǎo)及實(shí)現(xiàn)步驟

    神經(jīng)網(wǎng)絡(luò)反向傳播算法(Backpropagation Algorithm)是一種用于訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-03 11:16 ?632次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)建模基本原理

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))是一種多層前饋
    的頭像 發(fā)表于 07-03 11:08 ?388次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)概念是什么

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))是一種多層前饋
    的頭像 發(fā)表于 07-03 11:06 ?477次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)優(yōu)點(diǎn)和缺點(diǎn)有哪些

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))是一種多層前饋
    的頭像 發(fā)表于 07-03 11:05 ?621次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))是一種多層前饋
    的頭像 發(fā)表于 07-03 11:00 ?603次閱讀

    BP神經(jīng)網(wǎng)絡(luò)屬于DNN

    屬于。BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)是一種基于誤差反向傳播算法的多層前饋
    的頭像 發(fā)表于 07-03 10:18 ?615次閱讀

    BP神經(jīng)網(wǎng)絡(luò)算法的基本流程包括

    BP神經(jīng)網(wǎng)絡(luò)算法,即反向傳播(Backpropagation)神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-03 09:52 ?379次閱讀

    神經(jīng)網(wǎng)絡(luò)反向傳播算法原理是什么

    神經(jīng)網(wǎng)絡(luò)反向傳播算法(Backpropagation Algorithm)是一種用于訓(xùn)練多層前饋神經(jīng)網(wǎng)絡(luò)的監(jiān)督學(xué)習(xí)
    的頭像 發(fā)表于 07-02 14:16 ?423次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)模型的特點(diǎn)

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))是一種多層前饋
    的頭像 發(fā)表于 07-02 14:14 ?327次閱讀

    反向傳播神經(jīng)網(wǎng)絡(luò)建模的基本原理

    反向傳播神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network,簡(jiǎn)稱BP神經(jīng)網(wǎng)絡(luò))是一種多層前饋
    的頭像 發(fā)表于 07-02 14:05 ?244次閱讀