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

磐創AI發表於2018-11-20

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

目錄:

  • 反向傳播演算法簡介

  • 前饋計算的過程

    • 第一層隱藏層的計算

    • 第二層隱藏層的計算

    • 輸出層的計算

  • 反向傳播的計算

    • 計算偏導數

  • 參考文獻

一.反向傳播演算法

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

我們使用一個如圖1所示的神經網路,該圖所示是一個三層神經網路,兩層隱藏層和一層輸出層,輸入層有兩個神經元,接收輸入樣本(x1,x2)TensorFlow系列專題(五):BP演算法原理為網路的輸出。

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

圖1 一個三層神經網路

二.前饋計算的過程

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

輸入的樣本為:

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

公式1

第一層網路的引數為:

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

公式2

第二層網路的引數為:

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

 公式3

第三層網路的引數為:

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

公式4

·第一層隱藏層的計算

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

圖2 計算第一層隱藏層

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

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

公式5

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

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

公式6

同理有:

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

公式7

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

公式8

假設我們選擇函式f(x)作為該層的啟用函式(圖1中的啟用函式都標了一個下標,一般情況下,同一層的啟用函式都是一樣的,不同層可以選擇不同的啟用函式),那麼該層的輸出為:TensorFlow系列專題(五):BP演算法原理

·第二層隱藏層的計算

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

圖3 計算第二層隱藏層

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

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

公式9

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

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

公式10

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

公式11

該層的輸出分別為:TensorFlow系列專題(五):BP演算法原理

·輸出層的計算

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

圖4 計算輸出層

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

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

公式12

即:

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

公式13

因為該網路要解決的是一個二分類問題,所以輸出層的啟用函式也可以使用一個Sigmoid型函式,神經網路最後的輸出為:TensorFlow系列專題(五):BP演算法原理

三.反向傳播的計算

上一小節裡我們已經瞭解了資料沿著神經網路前向傳播的過程,這一節我們來介紹更重要的反向傳播的計算過程。假設我們使用隨機梯度下降的方式來學習神經網路的引數,損失函式定義為TensorFlow系列專題(五):BP演算法原理

其中y是該樣本的真實類標。使用梯度下降進行引數的學習,我們必須計算出損失函式關於神經網路中各層引數(權重w和偏置b)的偏導數。

假設我們要對第k層隱藏層的TensorFlow系列專題(五):BP演算法原理

假設TensorFlow系列專題(五):BP演算法原理代表第k層神經元的輸入,即TensorFlow系列專題(五):BP演算法原理

其中n^(k-1)為前一層神經元的輸出,則根據鏈式法則有:

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

公式14

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

公式15

因此,我們只需要計算偏導數TensorFlow系列專題(五):BP演算法原理

·計算偏導數TensorFlow系列專題(五):BP演算法原理

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

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

公式16

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

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

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

公式17

·計算偏導數TensorFlow系列專題(五):BP演算法原理

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

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

公式18

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

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

公式19

·計算偏導數TensorFlow系列專題(五):BP演算法原理

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

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

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

公式20

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

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

公式21

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

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

公式22

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

公式23

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

輸入:

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

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

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

四.參考文獻

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

原文連結:https://mp.weixin.qq.com/s/fbEM1sk6hTWeGkHI-DNJdg

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555081/viewspace-2220802/,如需轉載,請註明出處,否則將追究法律責任。

相關文章