-
當前位置:首頁 > 創(chuàng)意學院 > 技術(shù) > 專題列表 > 正文
bp神經(jīng)網(wǎng)絡(luò)反向傳播算法(bp神經(jīng)網(wǎng)絡(luò)反向傳播算法是什么)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于bp神經(jīng)網(wǎng)絡(luò)反向傳播算法的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、什么是BP算法
bp算法,即反向傳播方法,是用來訓練前向網(wǎng)絡(luò)的一種普遍算法
二、一文搞懂DNN反向傳播!
本文主要整理自下面的幾篇博客:
1、深度神經(jīng)網(wǎng)絡(luò)(DNN)反向傳播算法(BP): https://www.cnblogs.com/pinard/p/6422831.html
2、機器學習中的矩陣、向量求導。 https://download.csdn.net/download/weixin_42074867/10405246
1、推導BPNN前需要了解的矩陣求導知識
1.1 矩陣/向量值函數(shù)對實數(shù)的導數(shù)
1.2 實值函數(shù)對矩陣/向量的導數(shù)
1.3 向量值函數(shù)對向量的求導(雅可比矩陣)
1.4 變量多次出現(xiàn)的求導法則
規(guī)則:若在函數(shù)表達式中,某個變量出現(xiàn)了多次,可以單獨計算函數(shù)對自變量的每一次出現(xiàn)的導數(shù),再把結(jié)果加起來。
1.5 向量求導的鏈式法則
1.6 一一對應(yīng)關(guān)系下的矩陣求導
1.7 幾個重要的結(jié)論
掌握了上面的一些基本知識之后,我們就可以順利推導出神經(jīng)網(wǎng)絡(luò)的反向傳播算法。
2、反向傳播的推導
具體的推導過程可以參考文章開頭給出的博客,下圖是我手動推導的過程:
贊賞支持
鏈接:https://www.jianshu.com/p/ee08ed75844b
來源:
三、bp算法是什么?
誤差反向傳播算法:
BP算法的基本思想是,學習過程包括兩個過程:信號前向傳播和誤差后向傳播。
(1)前向傳播:輸入樣本->輸入層->各隱層(處理)->輸出層。
(2)錯誤反向傳播:輸出錯誤(某種形式)->隱藏層(逐層)->輸入層。
BP算法基本介紹:
多層隱含層前饋網(wǎng)絡(luò)可以極大地提高神經(jīng)網(wǎng)絡(luò)的分類能力,但長期以來一直沒有提出解決權(quán)值調(diào)整問題的博弈算法。
1986年,Rumelhart和McCelland領(lǐng)導的科學家團隊出版了《并行分布式處理》一書,詳細分析了具有非線性連續(xù)傳遞函數(shù)的多層前饋網(wǎng)絡(luò)的誤差反向比例(BP)算法,實現(xiàn)了Minsky關(guān)于多層網(wǎng)絡(luò)的思想。由于誤差的反向傳播算法常用于多層前饋網(wǎng)絡(luò)的訓練,人們常直接稱多層前饋網(wǎng)絡(luò)為BP網(wǎng)絡(luò)。
四、一文徹底搞懂BP算法:原理推導+數(shù)據(jù)演示+項目實戰(zhàn)(上篇)
反向傳播算法(Backpropagation Algorithm,簡稱BP算法)是深度學習的重要思想基礎(chǔ),對于初學者來說也是必須要掌握的基礎(chǔ)知識!本文希望以一個清晰的脈絡(luò)和詳細的說明,來讓讀者徹底明白BP算法的原理和計算過程。
全文分為上下兩篇,上篇主要介紹BP算法的原理(即公式的推導),介紹完原理之后,我們會將一些具體的數(shù)據(jù)帶入一個簡單的三層神經(jīng)網(wǎng)絡(luò)中,去完整的體驗一遍BP算法的計算過程;下篇是一個項目實戰(zhàn),我們將帶著讀者一起親手實現(xiàn)一個BP神經(jīng)網(wǎng)絡(luò)(不使用任何第三方的深度學習框架)來解決一個具體的問題。
圖 1 所示是一個簡單的三層(兩個隱藏層,一個輸出層)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),假設(shè)我們使用這個神經(jīng)網(wǎng)絡(luò)來解決二分類問題,我們給這個網(wǎng)絡(luò)一個輸入樣本 ,通過前向運算得到輸出 。輸出值 的值域為 ,例如 的值越接近0,代表該樣本是"0"類的可能性越大,反之是"1"類的可能性大。
為了便于理解后續(xù)的內(nèi)容,我們需要先搞清楚前向傳播的計算過程,以圖1所示的內(nèi)容為例:
輸入的樣本為:
第一層網(wǎng)絡(luò)的參數(shù)為:
第二層網(wǎng)絡(luò)的參數(shù)為:
第三層網(wǎng)絡(luò)的參數(shù)為:
第一層隱藏層有三個神經(jīng)元: 、 和 。該層的輸入為:
以 神經(jīng)元為例,則其輸入為:
同理有:
假設(shè)我們選擇函數(shù) 作為該層的激活函數(shù)(圖1中的激活函數(shù)都標了一個下標,一般情況下,同一層的激活函數(shù)都是一樣的,不同層可以選擇不同的激活函數(shù)),那么該層的輸出為: 、 和 。
第二層隱藏層有兩個神經(jīng)元: 和 。該層的輸入為:
即第二層的輸入是第一層的輸出乘以第二層的權(quán)重,再加上第二層的偏置。因此得到和的輸入分別為:
該層的輸出分別為: 和 。
輸出層只有一個神經(jīng)元 :。該層的輸入為:
即:
因為該網(wǎng)絡(luò)要解決的是一個二分類問題,所以輸出層的激活函數(shù)也可以使用一個Sigmoid型函數(shù),神經(jīng)網(wǎng)絡(luò)最后的輸出為: 。
在1.1節(jié)里,我們已經(jīng)了解了數(shù)據(jù)沿著神經(jīng)網(wǎng)絡(luò)前向傳播的過程,這一節(jié)我們來介紹更重要的反向傳播的計算過程。假設(shè)我們使用隨機梯度下降的方式來學習神經(jīng)網(wǎng)絡(luò)的參數(shù),損失函數(shù)定義為 ,其中 是該樣本的真實類標。使用梯度下降進行參數(shù)的學習,我們必須計算出損失函數(shù)關(guān)于神經(jīng)網(wǎng)絡(luò)中各層參數(shù)(權(quán)重 和偏置 )的偏導數(shù)。
假設(shè)我們要對第 層隱藏層的參數(shù) 和 求偏導數(shù),即求 和 。假設(shè) 代表第 層神經(jīng)元的輸入,即 ,其中 為前一層神經(jīng)元的輸出,則根據(jù)鏈式法則有:
因此,我們只需要計算偏導數(shù) 、 和 。
前面說過,第k層神經(jīng)元的輸入為: ,因此可以得到:
上式中, 代表第 層神經(jīng)元的權(quán)重矩陣 的第 行, 代表第 層神經(jīng)元的權(quán)重矩陣 的第 行中的第 列。
我們以1.1節(jié)中的簡單神經(jīng)網(wǎng)絡(luò)為例,假設(shè)我們要計算第一層隱藏層的神經(jīng)元關(guān)于權(quán)重矩陣的導數(shù),則有:
因為偏置b是一個常數(shù)項,因此偏導數(shù)的計算也很簡單:
依然以第一層隱藏層的神經(jīng)元為例,則有:
偏導數(shù) 又稱為 誤差項(error term,也稱為“靈敏度”) ,一般用 表示,例如 是第一層神經(jīng)元的誤差項,其值的大小代表了第一層神經(jīng)元對于最終總誤差的影響大小。
根據(jù)第一節(jié)的前向計算,我們知道第 層的輸入與第 層的輸出之間的關(guān)系為:
又因為 ,根據(jù)鏈式法則,我們可以得到 為:
由上式我們可以看到,第 層神經(jīng)元的誤差項 是由第 層的誤差項乘以第 層的權(quán)重,再乘以第 層激活函數(shù)的導數(shù)(梯度)得到的。這就是誤差的反向傳播。
現(xiàn)在我們已經(jīng)計算出了偏導數(shù) 、 和 ,則 和 可分別表示為:
下面是基于隨機梯度下降更新參數(shù)的反向傳播算法:
單純的公式推導看起來有些枯燥,下面我們將實際的數(shù)據(jù)帶入圖1所示的神經(jīng)網(wǎng)絡(luò)中,完整的計算一遍。
我們依然使用如圖5所示的簡單的神經(jīng)網(wǎng)絡(luò),其中所有參數(shù)的初始值如下:
輸入的樣本為(假設(shè)其真實類標為"1"):
第一層網(wǎng)絡(luò)的參數(shù)為:
第二層網(wǎng)絡(luò)的參數(shù)為:
第三層網(wǎng)絡(luò)的參數(shù)為:
假設(shè)所有的激活函數(shù)均為Logistic函數(shù): 。使用均方誤差函數(shù)作為損失函數(shù):
為了方便求導,我們將損失函數(shù)簡化為:
我們首先初始化神經(jīng)網(wǎng)絡(luò)的參數(shù),計算第一層神經(jīng)元:
上圖中我們計算出了第一層隱藏層的第一個神經(jīng)元的輸入 和輸出 ,同理可以計算第二個和第三個神經(jīng)元的輸入和輸出:
接下來是第二層隱藏層的計算,首先我們計算第二層的第一個神經(jīng)元的輸入z₄和輸出f₄(z₄):
同樣方法可以計算該層的第二個神經(jīng)元的輸入 和輸出 :
最后計算輸出層的輸入 和輸出 :
首先計算輸出層的誤差項 ,我們的誤差函數(shù)為 ,由于該樣本的類標為“1”,而預測值為 ,因此誤差為 ,輸出層的誤差項為:
接著計算第二層隱藏層的誤差項,根據(jù)誤差項的計算公式有:
最后是計算第一層隱藏層的誤差項:
以上就是關(guān)于bp神經(jīng)網(wǎng)絡(luò)反向傳播算法相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
手機webp轉(zhuǎn)換gif工具(webp轉(zhuǎn)gif手機軟件)
非著名景觀設(shè)計師是誰(著名的景觀設(shè)計師)