天天看点

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

是谁在耳边,说“信号正向传播,误差反向传播” ?

梦回遥远大三的计算智能课,三年前我可想不到居然有朝一日会重新"预习"它......

每一堂课、一本书,当时只道是寻常,如今不经意想起,忽怀念这些瞬间。所谓成长,正是这些乏味却又鲜活的琐碎;所谓时光,正是这些不经意却弥足深刻的只言片语吧。

目录

一. 相关概念

​二. 神经网络通用表示

1. 一个神经元模型

2. 全连接神经网络

三. 前向传播算法

四. 反向传播算法

1. 采用批量梯度下降法获得参数w和b的更新公式

2. 通过链式法则和残差δ的定义求解代价函数的偏导

(1)对于输出层(L层)的权重参数w的偏导

(2)对于隐藏层(l层)的权重参数w的偏导

(3)对输出层和隐藏层的偏置参数b的偏导

(4)公式总结

3.对N个训练样本集用BP算法更新参数的步骤

一. 相关概念

后向传播学习的前馈型神经网络(Back Propagation Feed-forward Neural Network)简称BPNN,不严谨地说BP一般就是BPNN。后向传播是一种学习方法、规则,体现网络的训练过程;前馈型网络是一种结构,体现网络架构。

后向传播

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反馈型网络。常见学习规则除了后向传播还有梯度下降等。

  • 前(正)向传播网络
  • 后(反)向传播网络:反向传播是指通过比较输出层的实际输出和预期的结果,得到误差,然后通过相关的误差方程式调整最后一个隐含层到输出层之间的网络权重,之后从最后一个隐含层向倒数第二隐含层进行误差反馈,调整它们之间的网络权重,以此类推,直到输人层与第一隐含层之间的网络权重调整为止。
  • 前馈型网络:各神经元从输入层开始单向传播,只接收前一级输入,并输出到下一级,直至输出层。整个网络中无反馈,可用一个有向无环图表示。
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
  • ​反馈型网络:输出层中存在着一个反馈回路到输入层作为输入层的一个输入,也可以自己到自己,可以理解为自控系统方框图中的反馈回路,可用有向循环图或者无向图表示。
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

​二. 神经网络通用表示

1. 一个神经元模型

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

上图x1,x2,⋯,xi,⋯,xn​表示神经元的n个输入,w1,w2,⋯,wi,⋯,wn​表示对应输入的权重参数(链接权重),神经元对输入x权重w进行加权求和得到加权输入z,也就是神经元的状态。随后将z传递给激活函数f(⋅),得到激活值,对于单个神经元,也就是其输出值y。其中激活函数f(⋅)可以为多种激活函数,且激活函数均为非线性函数。

2. 全连接神经网络

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

  • 在第
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    层神经元,用
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    表示这层神经元的个数,
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
  • 反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    为输入,即
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    表示第 i 个输入。
  • 反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    为期望输出,即
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    表示第 i 个期望输出。
  • 反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    表示第
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    层的加权输出或神经元状态,
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    表示第 
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    层的第
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    个神经元的加权输出。
  • 反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    表示第
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    层的激活输出(实际输出),
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    表示第 
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    层的第
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    个神经元的激活输出(实际输出)。
  • 反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    是权重矩阵
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    中的元素,表示前一层
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    层第
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    个神经元的第
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    个加权
  • 反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    表示从上一层到当前层
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    层的偏置。
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    表示当前层第
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    层第
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    个神经元的偏置。

三. 前向传播算法

第2层第1个加权输出

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

第2层第1个激活值   

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

⋯⋯

可总结出,第

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

层神经元的状态及激活值为(z,a,b都是向量形式):

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

对于 L 层网络,正向传播的前馈型神经网络传递过程如下:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

前向传播算法用于计算模型最终的输出结果;后向传播算法用于减小模型输出结果与实际结果之前的误差,通过调整参数权重来优化模型。因此,神经网络,就是通过前向传播与后向传播算法的循环迭代来训练模型,进而进行预测或者分类。

四. 反向传播算法

1. 采用批量梯度下降法获得参数
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
的更新公式

训练方式为梯度下降法,目的是求使代价函数最小的参数值。具体方法为,一步步地循环重复将参数值更新为:上一次参数 - 代价函数对上一次参数值的导数。每一步更新都用到所有的训练样本叫做批量梯度下降。

  • 用右上标 (k) 表示第 k 个训练的训练集,不表示网络层数,那么
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    个训练集表示为
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    ,每个
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    都是向量表示。其中
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
  • 对于第 k 个训练样本集的输入,在第 
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    层,用下标 i 表示第 i 个输出
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    或期望输出
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    ,其中
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    维实际输出
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    维期望的输出
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

对于第 k 个训练数据

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,训练的误差定义为,这一次的每个期望输出

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

减去实际输出

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,再将这 

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

个项求平方和。也就是说,单个训练样本的代价函数为:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

N个样本训练完成之后,得到所有训练样本的总体(平均)代价为:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

上标表示又回到第四节之前,

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

右上标

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

表示表示网络层数,

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

仍表示为第 k 个训练集。采用批量梯度下降算法,

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

层的参数

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

的更新公式为如下形式:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

只需通过BP算法求出每个训练集的代价函数

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

的偏导数即可得到

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

的迭代更新公式。

2. 通过链式法则和残差
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
的定义求解代价函数的偏导

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

右上标

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

表示表示网络层数,并且去掉第四-1节第k个训练数据集误差

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

的上标,直接记为

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

是单个训练数据集的误差。

将E展开到 Layer2,有:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

其中

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

(1)对于输出层(L层)的权重参数w的偏导
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

E 对

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

求导,由链式法则形式1

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,有:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

E 对

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

求导,由链式法则形式2

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,又有:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,即

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

其中,定义:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

那么,由

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,得:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

推广到一般情况,设网络层数为 L,有:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

上两式对应矩阵(向量形式)为:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

其中矩阵哈德马乘积

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

是对应位置元素分别相乘。

(2)对于隐藏层(
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
层)的权重参数w的偏导
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

由上一节,得:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

向量形式为:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

而由:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

层的神经元每个

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

都与

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

有联接,

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

出现了

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

次,每一次对应一个

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

故:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

又因为其中

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

从而

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,带入

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,得:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

向量形式:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

即利用

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

层的

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

来计算

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

层的

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,称为误差反向传播。

(3)对输出层和隐藏层的偏置参数b的偏导
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

向量形式:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

(4)公式总结

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

(其中

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

向量形式:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

3.对N个训练样本集用BP算法更新参数的步骤

初始化参数

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

Step1. 根据样本集的某个输入样本

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

,利用前向传播算法算出每个神经元的输出z和a,直到输出层

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

Step2. 由BP算法4个公式求E对参数的偏导数

  1. 计算出输出层的
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    (由[BP-1]),再依次计算隐藏层的
    反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法
    (由[BP-2])
  2. 然后:
反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

Step3. 更新网络权重和偏置

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

Step4. 判断结束

对于一定的判断结束的准则,比如每个样本的最终输出误差小于可接受的范围或迭代次数达到一定阈值。若不满足,迭代执行Step2、Step3继续对当前样本进行训练,直到当前样本满足条件训练结束。否则,当前样本训练完毕,选取下一样本,转到Step1继续进行训练。

如下图所示:

反向传播算法(BP神经网络)一. 相关概念​二. 神经网络通用表示三. 前向传播算法四. 反向传播算法

参考:https://blog.csdn.net/qq_32865355/article/details/80260212

继续阅读