導航:首頁 > 源碼編譯 > 明白演算法機制

明白演算法機制

發布時間:2025-08-13 17:19:07

⑴ 一文徹底搞懂BP演算法:原理推導+數據演示+項目實戰(上篇)

反向傳播演算法(Backpropagation Algorithm,簡稱BP演算法)是深度學習的重要思想基礎,對於初學者來說也是必須要掌握的基礎知識!本文希望以一個清晰的脈絡和詳細的說明,來讓讀者徹底明白BP演算法的原理和計算過程。

全文分為上下兩篇,上篇主要介紹BP演算法的原理(即公式的推導),介紹完原理之後,我們會將一些具體的數據帶入一個簡單的三層神經網路中,去完整的體驗一遍BP演算法的計算過程;下篇是一個項目實戰,我們將帶著讀者一起親手實現一個BP神經網路(不使用任何第三方的深度學習框架)來解決一個具體的問題。

圖 1 所示是一個簡單的三層(兩個隱藏層,一個輸出層)神經網路結構,假設我們使用這個神經網路來解決二分類問題,我們給這個網路一個輸入樣本 ,通過前向運算得到輸出 。輸出值 的值域為 ,例如 的值越接近0,代表該樣本是"0"類的可能性越大,反之是"1"類的可能性大。

為了便於理解後續的內容,我們需要先搞清楚前向傳播的計算過程,以圖1所示的內容為例:

輸入的樣本為:

第一層網路的參數為:

第二層網路的參數為:

第三層網路的參數為:

第一層隱藏層有三個神經元: 、 和 。該層的輸入為:

以 神經元為例,則旁敏其輸入為:

同理有:

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

第二層隱藏層有兩個神經元: 和 。該層的輸入為:

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

該層的輸出分別為: 和 。

輸出層只有一個神經元 :。該層的輸入為:

即:

因為該網路要解決的是一個二分類問題,所以輸出層的激活函數也可以使用一個Sigmoid型函數,神經網路最後的輸出為: 。

在1.1節里,我們已經了解了數據沿著神經網路前向傳播的過程,這一節我們來介紹更重要的反向傳播的計算過程。假設我們使用隨機梯度下降的方式來學習神經網路的參數,損失函數定義為 ,其中 是該樣本的真實類標。使用梯度下降進行參數的學習,我們必須計算出損失函數關於神經網路中各層參數(權重 和偏置 )的偏導數。

假設我們要對第 層隱藏層的參數 和 求偏導數,即求 和 。假設 代表第 層神經元的運鍵枝輸入,即 ,其中 為前一層神經元的輸出,則根據鏈式法則有:

因此,我們只需要計算偏導數 、 和 。

前面說過,第k層神經元的輸入為: ,因此可以得到:

上式中, 代表第 層神經元的權重矩陣 的第 行, 代表第 層神經元的權重矩陣 的第 行中的第 列。

我們以1.1節中的簡單神經網路為例,假設我們要計算第一層隱藏層的神經元關於權重矩陣的導數,則有:

因為偏置b是一個常數項,因此偏導數的計算也很簡單:

依然以第一層隱藏層的神經元為例,則有:

偏導數 又稱為 誤差項(error term,也稱為「靈敏度」) ,一般用 表示,例如 是第一層神經元的誤差項,其值的大小代表了第一層神經元對於最終總誤差的影響大小。

根據第一節的前向計算,我們知道第 層的輸入與第 層的輸出之間的關系為:

又因為 ,根據鏈式法則,我們可以得到 為:

由上式我們可以看到,第 層神經元的誤差項 是由第 層的誤差項乘以第 層的權重,再乘以第 層激活函數的導數(梯度)得到的。這就是誤差的反向傳播。
現在我們已經計算出了偏導數 、 和 ,則 和 可分別表示為:

下面是基於隨機梯度下降更新參數的反向傳播演算法:

單純的公式推導看起來有些枯燥,下面我們將實際的數據帶入圖1所示的神經網路中,完整的計算一遍。

我們依然使用如圖5所示的簡單的神經網路,其中所有參數的初始值如下:

輸入的樣本為(假設其真實類標為"1"):

第一層網路的參數為:

第二層網路的參數為:

第三層網路的參數為:

假設所有的激活函數均為Logistic函數: 。使用均方誤差函數作為損失函數:

為了方便求導,我們將損失函數簡化為:

我們首先初始化神經網路的參數,計算第一層神經元:

上圖中我們計算出了第一層隱藏層的第一個神經元的輸入 和輸出 ,同理可以計算第二個和第三個神經元的輸入和輸出:

接下來是第二層隱藏層的計算,首先我們計算第二層的第一個神經元的輸入z₄和輸出f₄(z₄):

同樣方法可以計算該層的第二個神經元的輸入 和輸出 :

最後計算輸出層的輸入 和輸出 :

首先計算輸出層的誤差項 ,我們的誤差函數為 ,由於該樣本的類標為「1」,而預測值為 ,因此誤差為 ,輸出層的誤差項為:

接著計算第二層隱藏層的誤差項,根據誤差項的計算公式有:

最後是計算第一層隱藏層的誤差項:

閱讀全文

與明白演算法機制相關的資料

熱點內容
php實現級聯菜單 瀏覽:268
javaclasspath獲取 瀏覽:738
明白演算法機制 瀏覽:241
雲伺服器8核32g 瀏覽:44
linuxcp命令覆蓋 瀏覽:256
ping命令的使用技巧 瀏覽:744
李炎恢php視頻教程第三季 瀏覽:677
南瑞的伺服器什麼牌子 瀏覽:969
java8defaultthis 瀏覽:839
android底部菜單凸起 瀏覽:433
麥克米倫pdf 瀏覽:491
移動雲伺服器自動續費 瀏覽:186
南京電子文檔加密軟體公司 瀏覽:53
貪心演算法能解決最優化問題 瀏覽:261
用微信掃哪個app收款 瀏覽:419
三元函數的遺傳演算法 瀏覽:450
查看命令區域網 瀏覽:393
怪獸聽從命令 瀏覽:771
伺服器如何看硬碟佔用 瀏覽:922
t3工況壓縮機 瀏覽:281