BP算法简单推导过程

在这里想到你已经了解了神经网络的基本过程,就输入层,隐含层,输出层基本思路,然后按下图最简单的推导过程,以一个输出OP来简单介绍。
BP算法简单推导过程_第1张图片
1.前向传播
w是权重,b是偏置项 输入到隐含
在这里插入图片描述
同理
BP算法简单推导过程_第2张图片
隐含到输出
BP算法简单推导过程_第3张图片
这里采用sigmoid激活函数(非线性)
BP算法简单推导过程_第4张图片
有个特性是他的导数为:
BP算法简单推导过程_第5张图片
输出层
BP算法简单推导过程_第6张图片
计算误差,采取平方差
BP算法简单推导过程_第7张图片
反向传播,利用梯度下降算法最小化损失函数的过程,主要采取链式求导,这里以在这里插入图片描述为举例
BP算法简单推导过程_第8张图片
下次更新Wh1这个参数的时候就可以:
BP算法简单推导过程_第9张图片
同理可以更新其他权重和偏置项。
算法的改进:这里主要考虑会发生局部最优,也就是不是标准的凸函数。
增加冲量项:主要思想在于让第n次迭代时的权值的更新部分依赖于第n-1次的权值。
更新量加冲量有:
BP算法简单推导过程_第10张图片
其中0<= a<1,加入冲量项在一定程度上起到加大搜索步长的效果,从而能更快的进行收敛。另一方面,由于多层网络易导致损失函数收敛到局部极小值,但通过冲量项在某种程度上可以越过某些狭窄的局部极小值,达到更小的地方。
上述介绍只有简单的三层,所以方便理解。
至于加入激活函数,是用来加入非线性因素的,因为线性模型的表达能力不够。
当然经常用的是ReLU激活函数
BP算法简单推导过程_第11张图片
ReLU处理了它的sigmoid、tanh中常见的梯度消失问题,同时也是计算梯度最快的激励函数。
对于反向传播算法主要从以下几个方面进行总结:

1)局部极小值

对于多层网络,误差曲面可能含有多个不同的局部极小值,梯度下降可能导致陷入局部极小值。缓解局部极小值的方法主要有增加冲量项,使用随机梯度下降,多次使用不同的初始权值训练网络等。

2)权值过多

当隐藏节点越多,层数越多时,权值成倍的增长。权值的增长意味着对应的空间的维数越高,过高的维数易导致训练后期的过拟合。
3)过拟合

当网络的训练次数过多时,可能会出现过拟合的情况。解决过拟合主要两种方法:一种是使用权值衰减的方式,即每次迭代过程中以某个较小的因子降低每个权值;另一种方法就是使用验证集的方式来找出使得验证集误差最小的权值,对训练集较小时可以使用交叉验证等。
  手写数学公式真的好累啊,但是很实用,这里给出编写地址:https://github.com/KaTeX/KaTeX
  参考网址:
  https://www.zhihu.com/question/22334626/answer/21036590
  https://www.cnblogs.com/liuwu265/p/4696388.html

你可能感兴趣的:(深度学习笔记)