1. 程式人生 > >反向傳播過程推導例子

反向傳播過程推導例子

假如我們有個這樣的網路:
在這裡插入圖片描述
第一層是輸入層,包含兩個神經元i1,i2,和截距項b1;第二層是隱含層,包含兩個神經元h1,h2和截距項b2,第三層是輸出o1,o2,每條線上標的wi是層與層之間連線的權重,啟用函式我們預設為sigmoid函式。

其中,
輸入資料 i1=0.05,i2=0.10;
輸出資料 o1=0.01,o2=0.99;
初始權重 w1=0.15,w2=0.20,w3=0.25,w4=0.30,w5=0.40,w6=0.45,w7=0.50,w8=0.88

目標:給出輸入資料i1,i2(0.05和0.10),使輸出儘可能與原始輸出o1,o2(0.01和0.99)接近。

Step 1:前向傳播
1.輸入層——>隱含層
h

1 = w 1 i 1 + w
2
I 2 + b 1 h1=w_1*i_1+w_2*I_2+b_1

h 1 = 0.15 0.05 + 0.2 0.1 + 0.35 h1=0.15*0.05+0.2*0.1+0.35

神經元h1的啟用:(此處用到啟用函式為sigmoid)
a c t i v e h 1 = 1 e h 1 = 1 1 + e 0.3775 = 0.59326992 active_{h1}=\frac{1}{e^{-h1}}=\frac{1}{1+e^{-0.3775}}=0.59326992

同理,可計算出 a c t i v e h 2 = 0.596884378 active_{h2}=0.596884378

2.隱藏層——>輸出層
計算出o1和o2
o 1 = w 5 h 1 + w 6 h 2 + b 2 o_1=w_5*h_1+w_6*h_2+b_2
o 1 = 0.4 0.59326992 + 0.45 0.596884378 + 0.6 = 1.105905967 o_1=0.4*0.59326992+0.45*0.596884378+0.6=1.105905967
啟用後
a c t i v e o 1 = 1 1 + e 1.105905967 = 0.75136507 active_{o1}=\frac{1}{1+e^{-1.105905967}}=0.75136507

同理計算出o2
a c t i v e o 2 = 0.772928465 active_{o2}=0.772928465

這樣前向傳播的過程就結束了,我們得到輸出值為[0.75136079 , 0.772928465],與實際值[0.01 , 0.99]相差還很遠,現在我們對誤差進行反向傳播,更新權值,重新計算輸出。

step 2 反向傳播
1.計算總誤差
E t o t a l = 1 2 ( t a r g e t o u t p u t ) 2 E_{total}=\sum\frac{1}{2}(target-output)^2
但是有兩個輸出,所以分別計算o1和o2的誤差,總誤差為兩者之和:
E a c t i v e o 1 = 1 2 ( 0.01 0.75136507 ) 2 E_{active_{o1}}=\frac{1}{2}(0.01-0.75136507)^2 =0.274811083
KaTeX parse error: Expected '}', got 'EOF' at end of input: …2}}=0.023560026
E t a t o l = E a c t i v e o 1 + E a c t i v e o 2 = 0.298371109 E_{tatol}=E_{active_{o1}}+E_{active_{o2}}=0.298371109

2.反向傳播
我們使用反向傳播的目標是更新網路中的每個權重,使它們使實際輸出更接近目標輸出,從而最大限度地減少每個輸出神經元和整個網路的誤差。

考慮一下, 我們想知道 w 5 w_5 的變化對總誤差的影響有多大,也就是(也就是 w 5 w_5 的偏導數或者說是梯度)

通過鏈式求導:
E t a t a l w 5 = E t o t a l a c t i v e o 1 a c t i v e o 1 o 1 o 1 w 5 \frac{\partial E_{tatal}}{\partial w_5}=\frac{\partial E_{total}}{\partial active_{o1}}*\frac{\partial active_{o1}}{\partial o_1}*\frac{\partial o_1}{\partial w_5}

相關推薦

反向傳播過程推導例子

假如我們有個這樣的網路: 第一層是輸入層,包含兩個神經元i1,i2,和截距項b1;第二層是隱含層,包含兩個神經元h1,h2和截距項b2,第三層是輸出o1,o2,每條線上標的wi是層與層之間連線的權重,啟用函式我們預設為sigmoid函式。 其中, 輸入資料 i1=0.05,i2=0

深層神經網路和卷積神經網路的反向傳播過程推導

反向傳播過程是深度學習的核心所在,雖然現在很多深度學習架構如Tensorflow等,已經自帶反向傳播過程的功能。我們只需要完成網路結構的正向傳播的搭建,反向傳播過程以及引數更新都是由架構本身來完成的。但為了更好的瞭解深度學習的機理,理解反向傳播過程的原理還是很重要的。 在學

LSTM-基本原理-前向傳播反向傳播過程推導

前言 最近在實踐中用到LSTM模型,一直在查詢相關資料,推導其前向傳播、反向傳播過程。 LSTM有很多變體,查到的資料的描述也略有差別,且有一些地方讓我覺得有些困惑。目前查到的資料中我認為這個國外大神的部落格寫的比較清晰: http://arunmally

《神經網路的梯度推導與程式碼驗證》之FNN(DNN)前向和反向傳播過程的程式碼驗證

在《神經網路的梯度推導與程式碼驗證》之FNN(DNN)的前向傳播和反向梯度推導中,我們學習了FNN(DNN)的前向傳播和反向梯度求導,但知識仍停留在紙面。本篇章將基於深度學習框架tensorflow驗證我們所得結論的準確性,以便將抽象的數學符號和實際資料結合起來,將知識固化。更多相關內容請見《神經網路的梯度推

《神經網路的梯度推導與程式碼驗證》之CNN前向和反向傳播過程的程式碼驗證

在《神經網路的梯度推導與程式碼驗證》之CNN的前向傳播和反向梯度推導  中,我們學習了CNN的前向傳播和反向梯度求導,但知識仍停留在紙面。本篇章將基於深度學習框架tensorflow驗證我們所得結論的準確性,以便將抽象的數學符號和實際資料結合起來,將知識固化。更多相關內容請見《神經網路的梯

反向傳播推導

矩陣 差分 part 誤差 img 網絡 line 函數 bubuko 推導過程 如圖中所示我們規定\(W_{ij}^k\)表示第k層與第k+1層之間神經元的權重值,\(z^k\)表示對應輸入第k層的值,\(o^k\)表示對應第k層輸出的值 定義損失函數為: $l = \

機器學習之數學系列(二)邏輯迴歸反向傳播數學推導

一、簡介   在深度學習領域,我們往往採用梯度下降(或上升)法來優化訓練函式模型,梯度下降法尤其是在優化凸函式上表現極佳。模型優化涉及到反向傳播過程,反向傳播過程需要先推匯出梯度計算公式然後利用機器進行代數運算。這篇博文的工作是詳細推導了邏輯迴歸反向傳播梯度計算公式(什麼是梯度?簡單來講

卷積網路反向傳播過程

池化層以後補充。 def conv_backward(dZ, cache): """ Implement the backward propagation for a convolution function Arguments:

使用tensorflow訓練自己的資料集(三)——定義反向傳播過程

使用tensorflow訓練自己的資料集—定義反向傳播 上一篇使用tensorflow訓練自己的資料集(二)中製作已經介紹了定義神經網路、接下來就是定義反向傳播過程進行訓練神經網路了。反向傳播過程中使用了滑動平均類和學習率指數下降來優化神經網路。 ps.沒有GP

反向傳播演算法推導

      BP(backpropgationalgorithm ):後向傳導演算法,顧名思義就是從神經網路的輸出(頂層)到輸入(底層)進行求解。那麼求解什麼呢,求解的就是神經網路中的引數的導數,即引數梯度方向,從而就可以使用梯度下降等求解無約束問題(cost functio

超詳細的長短時記憶LSTM和門控迴圈單元GRU的反向傳播公式推導

門控迴圈單元GRU 長短時記憶LSTM LSTM模型是用來解決simpleRNN對於長時期依賴問題(LongTerm Dependency),即通過之前提到的但是時間上較為久遠的內容進行後續的推理和判斷。LSTM的基本思

caffe loss以及正則項反向傳播過程

概述 以前一直以為反向傳播的過程是這樣的,由Softmax計算得出分類loss,然後在加上L2正則項得出總的total_loss,然後再利用total_loss進行反向梯度的計算,而正則項會在每層的Forward函式中計算並返回,表面上感覺很對,但是實際分析就

神經網路和反向傳播演算法推導

注:由於自己畫圖實在太難畫,本文中基本所有插圖來源於演算法糰子機器學習班,請勿轉載 1.普通的機器學習模型: 其實,基本上所有的基本機器學習模型都可以概括為以下的特徵:根據某個函式,將輸入計算並輸出。圖形化表示為下圖: 當我們的g(h)為sigmoid函式時候,它就是一個

BP(反向傳播)演算法和CNN反向傳播演算法推導(轉載)

轉載來源: http://blog.csdn.net/walegahaha/article/details/51867904 http://blog.csdn.net/walegahaha/article/details/51945421 關於CNN推導可以參考文獻:

100天搞定機器學習|day38 反向傳播演算法推導

往期回顧 100天搞定機器學習|(Day1-36) 100天搞定機器學習|Day37無公式理解反向傳播演算法之精髓 上集我們學習了反向傳播演算法的原理,今天我們深入講解其中的微積分理論,展示在機器學習中,怎麼理解鏈式法則。 我們從一個最簡單的網路講起,每層只有一個神經元,圖上這個網路就是由三個權重

反向傳播算法(過程及公式推導

不能 簡化 會有 geo 之前 代碼 求和 不同 eof 一、反向傳播的由來 在我們開始DL的研究之前,需要把ANN—人工神經元網絡以及bp算法做一個簡單解釋。關於ANN的結構,我不再多說,網上有大量的學習資料,主要就是搞清一些名詞:輸入層/輸入神經元,輸出層/輸出神經元,

反向傳播演算法(過程及公式推導

反向傳播演算法(Backpropagation)是目前用來訓練人工神經網路(Artificial Neural Network,ANN)的最常用且最有效的演算法。其主要思想是: (1)將訓練集資料輸入到ANN的輸入層,經過隱藏層,最後達到輸出層並輸出結果,這是ANN的前向傳

深度學習基礎:反向傳播即BP演算法的推導過程

BP演算法簡單的來說就是根據神經網路實際的輸出和目標輸出(也就是輸入樣本對應的標記)之間的誤差計算神經網路各個權值的過程。 下面的推導過程參考了《神經網路設計》 Martin T. Hagan等著 戴葵等譯。 採用BP演算法從輸出層、經過隱層再到輸入層進行層層計算的原因是如

BP神經網路,BP推導過程反向傳播演算法,誤差反向傳播,梯度下降,權值閾值更新推導,隱含層權重更新公式

%% BP的主函式   % 清空   clear all;   clc;   % 匯入資料   load data;   %從1到2000間隨機排序   k=rand(1,2000);   [m,n]=sort(k);   %輸入輸出資料   input=data(:,2:25);   output1 =d

對深度學習之反向傳播訓練過程的理解

深度學習中的反向傳播訓練過程,是優化權值矩陣的關鍵過程,下面記錄自己學習體會。 卷積神經網路經過前面的運算之後,在訓練的過程中,由於我們知道每一個樣本的正確結果,所以可以得到一個損失函式。這個損失函式很關鍵,反向傳播的訓練過程就是通過他來實現的。 得到損失函式之後,我們就希望損失函式的值