TensorFlow系列專題(五):BP演算法原理
目錄:
反向傳播演算法簡介
前饋計算的過程
第一層隱藏層的計算
第二層隱藏層的計算
輸出層的計算
反向傳播的計算
計算偏導數
參考文獻
一.反向傳播演算法
反向傳播演算法[1](Backpropagation Algorithm,簡稱BP演算法)是深度學習的重要思想基礎,對於初學者來說也是必須要掌握的基礎知識,在這一小節裡,我們會較為詳細的介紹這一重點知識。
我們使用一個如圖1所示的神經網路,該圖所示是一個三層神經網路,兩層隱藏層和一層輸出層,輸入層有兩個神經元,接收輸入樣本(x1,x2),為網路的輸出。
圖1 一個三層神經網路
二.前饋計算的過程
為了理解神經網路的運算過程,我們需要先搞清楚前饋計算,即資料沿著神經網路前向傳播的計算過程,以圖1所示的網路為例:
輸入的樣本為:
公式1
第一層網路的引數為:
公式2
第二層網路的引數為:
公式3
第三層網路的引數為:
公式4
·第一層隱藏層的計算
圖2 計算第一層隱藏層
第一層隱藏層有三個神經元:neu1、neu2和neu3。該層的輸入為:
公式5
以neu1神經元為例,則其輸入為:
公式6
同理有:
公式7
公式8
假設我們選擇函式f(x)作為該層的啟用函式(圖1中的啟用函式都標了一個下標,一般情況下,同一層的啟用函式都是一樣的,不同層可以選擇不同的啟用函式),那麼該層的輸出為:
·第二層隱藏層的計算
圖3 計算第二層隱藏層
第二層隱藏層有兩個神經元:neu4和neu5。該層的輸入為:
公式9
即第二層的輸入是第一層的輸出乘以第二層的權重,再加上第二層的偏置。因此得到neu4和neu5的輸入分別為:
公式10
公式11
該層的輸出分別為:
·輸出層的計算
圖4 計算輸出層
輸出層只有一個神經元:neu6。該層的輸入為:
公式12
即:
公式13
因為該網路要解決的是一個二分類問題,所以輸出層的啟用函式也可以使用一個Sigmoid型函式,神經網路最後的輸出為:
三.反向傳播的計算
上一小節裡我們已經瞭解了資料沿著神經網路前向傳播的過程,這一節我們來介紹更重要的反向傳播的計算過程。假設我們使用隨機梯度下降的方式來學習神經網路的引數,損失函式定義為
其中y是該樣本的真實類標。使用梯度下降進行引數的學習,我們必須計算出損失函式關於神經網路中各層引數(權重w和偏置b)的偏導數。
假設我們要對第k層隱藏層的
假設代表第k層神經元的輸入,即
其中n^(k-1)為前一層神經元的輸出,則根據鏈式法則有:
公式14
公式15
因此,我們只需要計算偏導數
·計算偏導數
前面說過,第k層神經元的輸入為:,因此可以得到:
公式16
我們以1.1節中的簡單神經網路為例,假設我們要計算第一層隱藏層的神經元關於權重矩陣的導數,則有:
公式17
·計算偏導數
因為偏置b是一個常數項,因此偏導數的計算也很簡單:
公式18
依然以第一層隱藏層的神經元為例,則有:
公式19
·計算偏導數
根據第一節的前向計算,我們知道第k+1層的輸入與第k層的輸出之間的關係為:
公式20
公式21
公式22
公式23
下面是基於隨機梯度下降更新引數的反向傳播演算法:
輸入: |
以上是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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TensorFlow系列專題(三):深度學習簡介深度學習
- 《TensorFlow2.0》前饋神經網路和 BP 演算法神經網路演算法
- TensorFlow系列專題(二):機器學習基礎機器學習
- TensorFlow系列專題(一):機器學習基礎機器學習
- 『TensorFlow』專題彙總
- 一文徹底搞懂BP演算法:原理推導+資料演示+專案實戰(上篇)演算法
- TensorFlow系列專題(六):實戰專案Mnist手寫資料集識別
- Dive into TensorFlow系列(1)-靜態圖執行原理
- BP演算法和LMBP演算法演算法
- TensorFlow系列專題(九):常用RNN網路結構及依賴優化問題RNN優化
- ?【Spring專題】「原理系列」SpringMVC的執行工作原理(補充修訂)SpringMVC
- TensorFlow損失函式專題函式
- TensorFlow系列專題(七):一文綜述RNN迴圈神經網路RNN神經網路
- 第五章 字串專題 ---------------- 字串匹配(二)----KMP演算法字串匹配KMP演算法
- JVM系列(五) - JVM垃圾回收演算法JVM演算法
- Tensorflow系列專題(四):神經網路篇之前饋神經網路綜述神經網路
- 演算法題系列3演算法
- 演算法題系列4演算法
- 關於BP演算法的一點理解演算法
- 微核心專題系列
- 【Netty技術專題】「原理分析系列」Netty強大特性之ByteBuf零拷貝技術原理分析Netty
- 第五章 字串專題 ---------------- 字串匹配(三)----字尾陣列演算法字串匹配陣列演算法
- TensorFlow系列專題(八):七步帶你實現RNN迴圈神經網路小示例RNN神經網路
- 專題五 並查集【Kuangbin】並查集
- Spring Cloud專題之五:configSpringCloud
- JS 專題系列-前端路由JS前端路由
- 機器學習Sklearn系列:(五)聚類演算法機器學習聚類演算法
- BP演算法是從天上掉下來的嗎?演算法
- leetcode排序專題演算法刷題LeetCode排序演算法
- Leetcode 演算法題解系列 - 最小棧LeetCode演算法
- 【隱私計算筆談】MPC系列專題(十九):三方複製秘密共享(五)
- Android元件化專題 - 路由框架原理Android元件化路由框架
- 資訊系統專案管理系列之五:專案整體管理專案管理
- 「前端面試題系列4」this的原理以及用法前端面試題
- 【Java技術專題】「原理專題」深入分析Java中finalize方法的作用和底層原理Java
- ACM演算法——數學專題ACM演算法
- [kuangbin帶你飛]專題五 並查集 題解並查集
- ?【Alibaba中介軟體技術系列】「Nacos技術專題」配置中心載入原理和配置實時更新原理分析(上)