深度学习基础:反向传播即BP算法的推导过程
2016-08-23 23:04
603 查看
BP算法简单的来说就是根据神经网络实际的输出和目标输出(也就是输入样本对应的标记)之间的误差计算神经网络各个权值的过程。
下面的推导过程参考了《神经网络设计》 Martin T. Hagan等著 戴葵等译。
采用BP算法从输出层、经过隐层再到输入层进行层层计算的原因是如果直接计算误差函数相对于各权值的偏导很难得到显式的表达函数(最小均方算法或Widrow-Hoff学习算法),采用从后向前递推的方式大幅度的利用了前期的计算值,也使得网络具备了更多的灵活性。
使用均方误差作为性能指数,那么优化算法的目标就是调整网络的参数使得均方误差最小化。那么根据最速下降算法的原理,第k次迭代计算得到的权值和偏移如下:
其中,m是层序号,i是神经元在层中序号,j则是一个神经元的输入的序号,
是均方误差。
前面就提到了,求这两个偏导是很困难的事情,因此可以使用链式法则从最后一层向前计算。根据链式法则,可以将偏导分解如下:
其中
,
是m-1层神经元的输出。
乘号后面的偏导数很容易求得,
,也就是上一层神经元的输出,
。因此重要的是求出
很难直接求出,那么也就考虑能不能够用链式法则类似的递推方式解决,但是注意这里面,每一层里面有多个神经元,而每个神经元都与上一层里面的多个神经元相连,因此,像下面的这个表达式是错误的
,因为链式法则要求偏导的拆分,必须保证这个
能够完全用中间变量
表示,而应该是一个向量
。从直观上考虑,m层和m+1层的神经元个数也不一样,所以也不能这样表示。
因此,采用矩阵的表示方法来表示神经元的计算,如下面这个图所示。
经过一系列推导可以得到,敏感性(《神经网络设计》这本书中的例子)
的表达式(注意这是个向量),应该是
,这里面的
是一个对角阵,其对角线的元素对应的是m层上的每个神经元激活函数
对应其输入
的导数。
对于BP算法来说,最后一层的计算(第M层)是所有计算的开始。其矩阵形式的表达式为
。这里面存在一个系数2,是因为使用的是均方误差,平方求导会有系数2.
因此如果用矩阵形式表示,那么权值和偏置值更新的表达式是:
因此,总的说来,反向传播算法需要用到的数据是:
1. 学习率
2. 激活函数相对于其输入的导数,用于计算
3. 上一层神经元的输出
4. 每次迭代的权值和偏移
下面的推导过程参考了《神经网络设计》 Martin T. Hagan等著 戴葵等译。
采用BP算法从输出层、经过隐层再到输入层进行层层计算的原因是如果直接计算误差函数相对于各权值的偏导很难得到显式的表达函数(最小均方算法或Widrow-Hoff学习算法),采用从后向前递推的方式大幅度的利用了前期的计算值,也使得网络具备了更多的灵活性。
使用均方误差作为性能指数,那么优化算法的目标就是调整网络的参数使得均方误差最小化。那么根据最速下降算法的原理,第k次迭代计算得到的权值和偏移如下:
其中,m是层序号,i是神经元在层中序号,j则是一个神经元的输入的序号,
是均方误差。
前面就提到了,求这两个偏导是很困难的事情,因此可以使用链式法则从最后一层向前计算。根据链式法则,可以将偏导分解如下:
其中
,
是m-1层神经元的输出。
乘号后面的偏导数很容易求得,
,也就是上一层神经元的输出,
。因此重要的是求出
很难直接求出,那么也就考虑能不能够用链式法则类似的递推方式解决,但是注意这里面,每一层里面有多个神经元,而每个神经元都与上一层里面的多个神经元相连,因此,像下面的这个表达式是错误的
,因为链式法则要求偏导的拆分,必须保证这个
能够完全用中间变量
表示,而应该是一个向量
。从直观上考虑,m层和m+1层的神经元个数也不一样,所以也不能这样表示。
因此,采用矩阵的表示方法来表示神经元的计算,如下面这个图所示。
经过一系列推导可以得到,敏感性(《神经网络设计》这本书中的例子)
的表达式(注意这是个向量),应该是
,这里面的
是一个对角阵,其对角线的元素对应的是m层上的每个神经元激活函数
对应其输入
的导数。
对于BP算法来说,最后一层的计算(第M层)是所有计算的开始。其矩阵形式的表达式为
。这里面存在一个系数2,是因为使用的是均方误差,平方求导会有系数2.
因此如果用矩阵形式表示,那么权值和偏置值更新的表达式是:
因此,总的说来,反向传播算法需要用到的数据是:
1. 学习率
2. 激活函数相对于其输入的导数,用于计算
3. 上一层神经元的输出
4. 每次迭代的权值和偏移
相关文章推荐
- 反向传播(Backpropagation)算法的数学原理
- 稀疏自动编码器 (Sparse Autoencoder)
- 多层感知器python代码(简单的多层感知器)
- 笔记(2):BP算法
- 从神经网络到BP算法(纯理论推导)
- 一步一步演示神经网络回馈算法过程
- BP算法的回归
- 【Stanford CNN课程笔记】4. 反向传播算法
- Stanford UFLDL教程 反向传播算法(BP算法)
- 反向传播神经网络 BPNN
- 实现一个反向传播人工神经网络
- BP反向传播算法是如何工作的How the backpropagation algorithm works
- BP反向传播算法浅谈(Error Back-propagation)
- 神经网络-文本识别
- 神经网络-并行BP算法
- 卷积神经网络反向BP算法公式推导
- 神经网络的反向传播算法Backpropagation
- 深度学习:神经网络中的前向传播和反向传播算法推导
- 机器学习算法实现03-神经网络
- 机器学习10-神经网络反向传播算法