1. 程式人生 > >TensorFlow系列專題(五):BP演算法原理

TensorFlow系列專題(五):BP演算法原理

一.反向傳播演算法簡介

二.前饋計算的過程

  • 第一層隱藏層的計算
  • 第二層隱藏層的計算
  • 輸出層的計算
三.反向傳播的計算
  • 計算偏導數
四.參考文獻

一.反向傳播演算法

反向傳播演算法[1](Backpropagation Algorithm,簡稱BP演算法)是深度學習的重要思想基礎,對於初學者來說也是必須要掌握的基礎知識,在這一小節裡,我們會較為詳細的介紹這一重點知識。

我們使用一個如圖1所示的神經網路,該圖所示是一個三層神經網路,兩層隱藏層和一層輸出層,輸入層有兩個神經元,接收輸入樣本 , 為網路的輸出。

圖1 一個三層神經網路

二.前饋計算的過程

為了理解神經網路的運算過程,我們需要先搞清楚前饋計算,即資料沿著神經網路前向傳播的計算過程,以圖1所示的網路為例:

輸入的樣本為:

第一層網路的引數為:

第二層網路的引數為:

第三層網路的引數為:

  • 第一層隱藏層的計算

圖2 計算第一層隱藏層

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

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

同理有:

假設我們選擇函式 作為該層的啟用函式(圖1中的啟用函式都標了一個下標,一般情況下,同一層的啟用函式都是一樣的,不同層可以選擇不同的啟用函式),那麼該層的輸出為: f1(z1)、f2(z2) 和f3(z3) 。

·第二層隱藏層的計算

圖3 計算第二層隱藏層

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

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

該層的輸出分別為: f4(z4)和f5(z5) 。

  • 輸出層的計算

圖4 計算輸出層

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

即:

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

三.反向傳播的計算

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

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

輸入:訓練集:D={(xi,yi)}, i=1,2,…,N

學習率:γ

訓練回合數(epoch):T

初始化網路各層引數w(t) 和b(t)

for t=1 …T do

打亂訓練集中樣本的順序

for i=1… N do

(1)獲取一個訓練樣本,前饋計算每一層的輸入 和輸出

(2)利用公式*反向傳播計算每一層的誤差項

(3)利用公式和公式*計算每一層引數的導數

(4)更新引數:

以上是BP演算法的介紹,下次文章中有一個BP演算法計算的完整示例,希望加深理解的讀者可以跟著示例計算一遍。

四.參考文獻

[1]. Learing representations by back-propagating erros.David E.Rumelhart,Geoffrey E.Hinton,Ronald J.Williams

本篇文章出自http://www.tensorflownews.com,對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站!