HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    反向傳播推導(dǎo)(反向傳播推導(dǎo)方法)

    發(fā)布時(shí)間:2023-04-14 07:55:20     稿源: 創(chuàng)意嶺    閱讀: 113        

    大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于反向傳播推導(dǎo)的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。

    開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008

    本文目錄:

    反向傳播推導(dǎo)(反向傳播推導(dǎo)方法)

    一、Layer Normalization反向傳播推導(dǎo)

    Layer Normalization來(lái)源于這篇文章:

    其目的為減少深度神經(jīng)網(wǎng)絡(luò)中層與層之間的Covariate Shift,增加網(wǎng)絡(luò)收斂速度。與Batch Normalization對(duì)比,Layer Normalization可顯著減少參數(shù)量,特別適用于RNN系結(jié)構(gòu)。

    Layer Normalization的公式如下所示:

    其中 和 是可學(xué)習(xí)的參數(shù), 為element-wise乘法。

    Layer Normalization的梯度分三個(gè)部分:輸入的部分和兩個(gè)可學(xué)習(xí)參數(shù)的部分

    可學(xué)習(xí)參數(shù)包括 和 。此處令 :

    原公式可變?yōu)椋?/p>

    則輸入的梯度為:

    下面重點(diǎn)分析最右部分:

    其中 if ,否則為0。易得 。下面將式(1)和式(2)分別代回原式:

    式(1):

    式(2):

    注意式中 。合并兩式:

    二、卷積神經(jīng)網(wǎng)絡(luò)的反向傳播

    首先回顧深度神經(jīng)網(wǎng)絡(luò)(DNN)的反向傳播

    forward:

    Loss Function:

    backward:

    w的梯度:

    b的梯度:

    令:

    已知 ,推導(dǎo)上一層 :

    ( 1) 單通道(極簡(jiǎn)情況)

    為了簡(jiǎn)單起見(jiàn),設(shè)輸入X為3* 3,單通道,卷積核K為2*2,輸出Y為2*2,單通道。 ,即:

    在計(jì)算時(shí)會(huì)轉(zhuǎn)化為:

    所以,卷積運(yùn)算最終轉(zhuǎn)化為矩陣運(yùn)算。即X、K、Y變形在之后對(duì)應(yīng)矩陣變?yōu)閄C、KC、YC,則

    Y和K只要reshape一下就可以了,但X需要特別處理,這個(gè)處理過(guò)程叫im2col(image to column),就是把卷積窗口中的數(shù)拉成一行,每行 列,共(X.w-k+1)(X.h-k+1)行。

    (2)多通道(實(shí)際情況)

    下面是一張被廣泛引用的說(shuō)明圖,圖中顯示的輸入是3通道(3層,比如R、G、B共3個(gè)channel),輸出是2通道(channel),于是總共有3*2=6個(gè)卷積核,每個(gè)核有4個(gè)元素,3*4=12,所以6個(gè)卷積核排成一個(gè)12*2的核矩陣,即為權(quán)重矩陣,把這6個(gè)KC的組合(權(quán)重矩陣)記為WC。

    圖中最底下一行表示兩個(gè)矩陣乘積運(yùn)算,就是卷積層的前向傳播算法。實(shí)際編碼時(shí)還會(huì)加上偏置,而且還要考慮Batchs。

    如圖中所示,如果輸入的維度為 ,那么

    上圖中顯示的乘法維度是:

    最后將 即可

    池化(Pooling):也稱為欠采樣或下采樣。主要用于特征降維,壓縮數(shù)據(jù)和參數(shù)的數(shù)量,減小過(guò)擬合,同時(shí)提高模型的容錯(cuò)性。主要有:

    Max Pooling:最大池化

    Average Pooling:平均池化

    池化層的反向傳播比較容易理解,我們以最大池化舉例,上圖中,池化后的數(shù)字6對(duì)應(yīng)于池化前的紅色區(qū)域,實(shí)際上只有紅色區(qū)域中最大值數(shù)字6對(duì)池化后的結(jié)果有影響,權(quán)重為1,而其它的數(shù)字對(duì)池化后的結(jié)果影響都為0。假設(shè)池化后數(shù)字6的位置誤差為 誤差反向傳播回去時(shí),紅色區(qū)域中最大值對(duì)應(yīng)的位置誤差即等于 ,而其它3個(gè)位置對(duì)應(yīng)的 誤差為0。因此,在卷積神經(jīng)網(wǎng)絡(luò)最大池化前向傳播時(shí),不僅要記錄區(qū)域的最大值,同時(shí)也要記錄下來(lái)區(qū)域最大值的位置,方便誤差的反向傳播。

    而平均池化就更簡(jiǎn)單了,由于平均池化時(shí),區(qū)域中每個(gè)值對(duì)池化后結(jié)果貢獻(xiàn)的權(quán)重都為區(qū)域大小的倒數(shù),所以誤差反向傳播回來(lái)時(shí),在區(qū)域每個(gè)位置的誤差都為池化后誤差 除以區(qū)域的大小。

    由前面的前向傳播可知卷積核的計(jì)算為:

    記:

    在反向傳播中, 是從后面一層(一般是激活函數(shù)層或池化層)傳過(guò)來(lái)的,是一個(gè)已知量,在此基礎(chǔ)上求

    1.求

    只需要reshape一下就可以得到

    2.求

    根據(jù)反向傳播公式,

    但是從 還原到 并非易事,im2col的逆映射計(jì)算復(fù)雜度高得不能接受,要計(jì)算 還得另尋它途。

    下面是新的計(jì)算方式的推導(dǎo):

    根據(jù)前向傳播:

    可以計(jì)算每個(gè) 的導(dǎo)數(shù):

    所以:

    3.求

    我們的 是一個(gè)列向量,它給卷積結(jié)果的每一個(gè)通道都加上同一個(gè)標(biāo)量。因此,在反向傳播時(shí),它的導(dǎo)數(shù)等于卷積結(jié)果的 誤差在每一個(gè)通道上將所有 誤差進(jìn)行求和的結(jié)果,即:

    由于有些公式支持的不好,所以有些地方我用了截圖,如果有讀不懂的,可以在評(píng)論區(qū)回復(fù)郵箱,我把word版發(fā)給你們。另外,如果大家發(fā)現(xiàn)我有地方寫得不對(duì)或者有疑問(wèn)的,麻煩評(píng)論, 我會(huì)回復(fù)并改正

    三、深度學(xué)習(xí)入門課程學(xué)習(xí)筆記06 反向傳播

    深度學(xué)習(xí)入門課程學(xué)習(xí)筆記06 反向傳播

    反向傳播:

    咱們?cè)谥暗恼n程講了一系列的前向傳播的知識(shí)點(diǎn),前向傳播也就是從輸入到最終計(jì)算出LOSS值這一系列過(guò)程,那么這節(jié)課咱們要講一個(gè)更重要的知識(shí)點(diǎn)也就是反向傳播。反向傳播最直觀的意思就是說(shuō)咱們要從LOSS值入手一步步的往回看,看什么呢?就是要看咱們的每一個(gè)權(quán)重參數(shù)對(duì)最終的LOSS值做了多大的貢獻(xiàn)。

    最簡(jiǎn)單的小例子

    首先咱們用一個(gè)最簡(jiǎn)單的小例子來(lái)看一下反向傳播是怎么一回事,如上圖最終的LOSS值等于-12下面咱們就要算對(duì)于X,Y,Z三個(gè)輸入來(lái)說(shuō)分別對(duì)于LOSS值做了多大的貢獻(xiàn),首先咱們用q=x+y,f=qz分別表示中間的計(jì)算過(guò)程。那么咱們要算什么呢?反向傳播最終要算的就是最終的LOSS值對(duì)X,Y,Z三個(gè)輸入的偏導(dǎo)數(shù),這個(gè)偏導(dǎo)數(shù)該怎么算呢?在這里我們遵循一個(gè)鏈?zhǔn)椒▌t也就是對(duì)于輸入來(lái)說(shuō)他對(duì)于最終LOSS的貢獻(xiàn)等于他前面?zhèn)鞑ハ聛?lái)的梯度再乘以自身的梯度。

    鏈?zhǔn)椒▌t

    這里就是梯度傳播的計(jì)算方式,我們要算X和Y對(duì)于最終LOSS的貢獻(xiàn)(換句話說(shuō)就是反向傳播到X和Y的梯度的大?。┮人闱懊嬉粚觽鞑サ絏和Y的梯度再去計(jì)算X和Y自身的梯度。

    稍難的例子

    咱們?cè)賮?lái)看一個(gè)稍微難一些的例子,上圖表示的是咱們之前說(shuō)過(guò)的這個(gè)SIGMOID函數(shù),咱們接下來(lái)要算的就是這個(gè)函數(shù)梯度傳播的過(guò)程,導(dǎo)數(shù)計(jì)算的公式我已經(jīng)寫在圖上了,咱們只需要根據(jù)導(dǎo)數(shù)的計(jì)算方式一步步的從最終的LOSS值往回算就可以了,下面淺紅色的值就是梯度傳播的值。

    這里我們可以看到梯度傳播可以是一步一步的傳播也可以一步傳播一整塊,這一整塊我們把它當(dāng)做是一個(gè)整體,相應(yīng)的就要計(jì)算這一整個(gè)塊的梯度了,也就是直接對(duì)SIGMOID函數(shù)求導(dǎo)。

    梯度傳播的門

    這里咱們所說(shuō)的門就是一個(gè)單位區(qū)域,我們可以從圖中看出來(lái)咱們?cè)谟?jì)算梯度傳播的過(guò)程中無(wú)外乎就是這幾種門的操作,每種門也都有它各自的特性,他們的特性是怎么得出的呢?這里就不帶大家一步步算了,咱們可以動(dòng)動(dòng)筆算一下梯度的傳播然后就知道為什么這些門有不同的特性了。

    反向傳播就先說(shuō)到這里了,這里只是很簡(jiǎn)單的談了一下反向傳播具體的計(jì)算過(guò)程如果同學(xué)們還是不太理解建議看一下原始課程會(huì)有很詳細(xì)的推導(dǎo)。

    四、一文徹底搞懂BP算法:原理推導(dǎo)+數(shù)據(jù)演示+項(xiàng)目實(shí)戰(zhàn)(上篇)

    反向傳播算法(Backpropagation Algorithm,簡(jiǎn)稱BP算法)是深度學(xué)習(xí)的重要思想基礎(chǔ),對(duì)于初學(xué)者來(lái)說(shuō)也是必須要掌握的基礎(chǔ)知識(shí)!本文希望以一個(gè)清晰的脈絡(luò)和詳細(xì)的說(shuō)明,來(lái)讓讀者徹底明白BP算法的原理和計(jì)算過(guò)程。

    全文分為上下兩篇,上篇主要介紹BP算法的原理(即公式的推導(dǎo)),介紹完原理之后,我們會(huì)將一些具體的數(shù)據(jù)帶入一個(gè)簡(jiǎn)單的三層神經(jīng)網(wǎng)絡(luò)中,去完整的體驗(yàn)一遍BP算法的計(jì)算過(guò)程;下篇是一個(gè)項(xiàng)目實(shí)戰(zhàn),我們將帶著讀者一起親手實(shí)現(xiàn)一個(gè)BP神經(jīng)網(wǎng)絡(luò)(不使用任何第三方的深度學(xué)習(xí)框架)來(lái)解決一個(gè)具體的問(wèn)題。

    圖 1 所示是一個(gè)簡(jiǎn)單的三層(兩個(gè)隱藏層,一個(gè)輸出層)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),假設(shè)我們使用這個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)解決二分類問(wèn)題,我們給這個(gè)網(wǎng)絡(luò)一個(gè)輸入樣本 ,通過(guò)前向運(yùn)算得到輸出 。輸出值 的值域?yàn)? ,例如 的值越接近0,代表該樣本是"0"類的可能性越大,反之是"1"類的可能性大。

    為了便于理解后續(xù)的內(nèi)容,我們需要先搞清楚前向傳播的計(jì)算過(guò)程,以圖1所示的內(nèi)容為例:

    輸入的樣本為:

    第一層網(wǎng)絡(luò)的參數(shù)為:

    第二層網(wǎng)絡(luò)的參數(shù)為:

    第三層網(wǎng)絡(luò)的參數(shù)為:

    第一層隱藏層有三個(gè)神經(jīng)元: 、 和 。該層的輸入為:

    以 神經(jīng)元為例,則其輸入為:

    同理有:

    假設(shè)我們選擇函數(shù) 作為該層的激活函數(shù)(圖1中的激活函數(shù)都標(biāo)了一個(gè)下標(biāo),一般情況下,同一層的激活函數(shù)都是一樣的,不同層可以選擇不同的激活函數(shù)),那么該層的輸出為: 、 和 。

    第二層隱藏層有兩個(gè)神經(jīng)元: 和 。該層的輸入為:

    即第二層的輸入是第一層的輸出乘以第二層的權(quán)重,再加上第二層的偏置。因此得到和的輸入分別為:

    該層的輸出分別為: 和 。

    輸出層只有一個(gè)神經(jīng)元 :。該層的輸入為:

    即:

    因?yàn)樵摼W(wǎng)絡(luò)要解決的是一個(gè)二分類問(wèn)題,所以輸出層的激活函數(shù)也可以使用一個(gè)Sigmoid型函數(shù),神經(jīng)網(wǎng)絡(luò)最后的輸出為: 。

    在1.1節(jié)里,我們已經(jīng)了解了數(shù)據(jù)沿著神經(jīng)網(wǎng)絡(luò)前向傳播的過(guò)程,這一節(jié)我們來(lái)介紹更重要的反向傳播的計(jì)算過(guò)程。假設(shè)我們使用隨機(jī)梯度下降的方式來(lái)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的參數(shù),損失函數(shù)定義為 ,其中 是該樣本的真實(shí)類標(biāo)。使用梯度下降進(jìn)行參數(shù)的學(xué)習(xí),我們必須計(jì)算出損失函數(shù)關(guān)于神經(jīng)網(wǎng)絡(luò)中各層參數(shù)(權(quán)重 和偏置 )的偏導(dǎo)數(shù)。

    假設(shè)我們要對(duì)第 層隱藏層的參數(shù) 和 求偏導(dǎo)數(shù),即求 和 。假設(shè) 代表第 層神經(jīng)元的輸入,即 ,其中 為前一層神經(jīng)元的輸出,則根據(jù)鏈?zhǔn)椒▌t有:

    因此,我們只需要計(jì)算偏導(dǎo)數(shù) 、 和 。

    前面說(shuō)過(guò),第k層神經(jīng)元的輸入為: ,因此可以得到:

    上式中, 代表第 層神經(jīng)元的權(quán)重矩陣 的第 行, 代表第 層神經(jīng)元的權(quán)重矩陣 的第 行中的第 列。

    我們以1.1節(jié)中的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)為例,假設(shè)我們要計(jì)算第一層隱藏層的神經(jīng)元關(guān)于權(quán)重矩陣的導(dǎo)數(shù),則有:

    因?yàn)槠胋是一個(gè)常數(shù)項(xiàng),因此偏導(dǎo)數(shù)的計(jì)算也很簡(jiǎn)單:

    依然以第一層隱藏層的神經(jīng)元為例,則有:

    偏導(dǎo)數(shù) 又稱為 誤差項(xiàng)(error term,也稱為“靈敏度”) ,一般用 表示,例如 是第一層神經(jīng)元的誤差項(xiàng),其值的大小代表了第一層神經(jīng)元對(duì)于最終總誤差的影響大小。

    根據(jù)第一節(jié)的前向計(jì)算,我們知道第 層的輸入與第 層的輸出之間的關(guān)系為:

    又因?yàn)? ,根據(jù)鏈?zhǔn)椒▌t,我們可以得到 為:

    由上式我們可以看到,第 層神經(jīng)元的誤差項(xiàng) 是由第 層的誤差項(xiàng)乘以第 層的權(quán)重,再乘以第 層激活函數(shù)的導(dǎo)數(shù)(梯度)得到的。這就是誤差的反向傳播。

    現(xiàn)在我們已經(jīng)計(jì)算出了偏導(dǎo)數(shù) 、 和 ,則 和 可分別表示為:

    下面是基于隨機(jī)梯度下降更新參數(shù)的反向傳播算法:

    單純的公式推導(dǎo)看起來(lái)有些枯燥,下面我們將實(shí)際的數(shù)據(jù)帶入圖1所示的神經(jīng)網(wǎng)絡(luò)中,完整的計(jì)算一遍。

    我們依然使用如圖5所示的簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),其中所有參數(shù)的初始值如下:

    輸入的樣本為(假設(shè)其真實(shí)類標(biāo)為"1"):

    第一層網(wǎng)絡(luò)的參數(shù)為:

    第二層網(wǎng)絡(luò)的參數(shù)為:

    第三層網(wǎng)絡(luò)的參數(shù)為:

    假設(shè)所有的激活函數(shù)均為L(zhǎng)ogistic函數(shù): 。使用均方誤差函數(shù)作為損失函數(shù):

    為了方便求導(dǎo),我們將損失函數(shù)簡(jiǎn)化為:

    我們首先初始化神經(jīng)網(wǎng)絡(luò)的參數(shù),計(jì)算第一層神經(jīng)元:

    上圖中我們計(jì)算出了第一層隱藏層的第一個(gè)神經(jīng)元的輸入 和輸出 ,同理可以計(jì)算第二個(gè)和第三個(gè)神經(jīng)元的輸入和輸出:

    接下來(lái)是第二層隱藏層的計(jì)算,首先我們計(jì)算第二層的第一個(gè)神經(jīng)元的輸入z₄和輸出f₄(z₄):

    同樣方法可以計(jì)算該層的第二個(gè)神經(jīng)元的輸入 和輸出 :

    最后計(jì)算輸出層的輸入 和輸出 :

    首先計(jì)算輸出層的誤差項(xiàng) ,我們的誤差函數(shù)為 ,由于該樣本的類標(biāo)為“1”,而預(yù)測(cè)值為 ,因此誤差為 ,輸出層的誤差項(xiàng)為:

    接著計(jì)算第二層隱藏層的誤差項(xiàng),根據(jù)誤差項(xiàng)的計(jì)算公式有:

    最后是計(jì)算第一層隱藏層的誤差項(xiàng):

    以上就是關(guān)于反向傳播推導(dǎo)相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    神經(jīng)網(wǎng)絡(luò)反向傳播公式的推導(dǎo)(神經(jīng)網(wǎng)絡(luò)反向傳播公式的推導(dǎo)方法)

    nginx反向代理內(nèi)網(wǎng)訪問(wèn)(nginx反向代理內(nèi)網(wǎng)訪問(wèn)是什么)

    反向傳播神經(jīng)網(wǎng)絡(luò)模型(反向傳播神經(jīng)網(wǎng)絡(luò)模型有哪些)

    中國(guó)銀聯(lián)在線支付開(kāi)通官網(wǎng)(中國(guó)銀聯(lián)官網(wǎng)登錄)

    加油站景觀設(shè)計(jì)品種有哪些(加油站景觀設(shè)計(jì)品種有哪些圖片)