DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释)、案例应用之详细攻略
相关文章:DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类神经网络的工作原理
目录
BP算法原理推导—以三层神经网络为例
1、理论推导
1.1、前向传播计算
数学式子描述该神经网络:
(1)、一般情况下,同一层的激活函数都是一样的,并且此处是进行二分类,所以隐藏层、输出层都可以采用Sigmoid激活函数。
输入数据 | 隐藏层1 | 隐藏层2 | 输出层 |
前向传播计算 |
|
||
经过Sigmoid函数输出 | 、、 | 、 |
1.2、反向传播计算
反向传播的计算过程。假设我们使用随机梯度下降的方式来学习神经网络的参数,损失函数定义为 L(y,y^),其中y是该样本的真实类标。使用梯度下降进行参数的学习,我们必须计算出损失函数关于 神经网络中各层参数(权重w和偏置b)的偏导数。
0、比如要对第k隐藏层参数w、b求偏导数
1、先计算、
因为偏置b是一个常数项,因此偏导数的计算也很简单。
2、再计算
2、BP算法带入实例推导
BP算法思路简介
前馈神经网络(NN),而是和循环神经网络(RNN)的概念是相对的。而反向传播方法可以用在FF网络中,此时,基于反向传播算法的前馈神经网络,被称为BP神经网络。
反向传播(Backpropagation)算法,深度学习模型采用梯度下降和误差反向传播进行模型参数更新。
1、神经网络训练的优化目标
梯度下降(Gradient Descent):
- 求解非线性无约束优化问题的最基本方法;
- 最小化损失函数的一种常用的一阶优化方法。
2、梯度下降
沿负梯度方向,函数值下降最快
3、反向传播(backpropagation)算法
深度学习模型,采用梯度下降和误差反向传播进行模型参数更新。
|
4、前向传播计算
使用损失函数比较实际输出和期望输出
计算图(Computation Graph):计算过程可以表示成有向图的形式。 | |
前向计算过程: 计算各计算结点的导数。 |
5、反向传播误差信号
后向传播误差到前面的层,传播的误差用来计算损失函数的梯度。
计算损失函数?对各参数的梯度(偏导数)
|
反向传播(backpropagation)
|
6、更新参数
得到梯度以后,就可以进行更新参数。
链式法则
链式法则简介
链式法chain rule,属于微积分领域,是微积分中的求导法则,用于求一个复合函数的导数,是在微积分的求导运算中一种常用的方法。复合函数的导数将是构成复合这有限个函数在相应点的 导数的乘积,就像锁链一样一环套一环,故称链式法则。
这个结论可推广到任意有限个函数复合到情形,于是复合函数的导数将是构成复合这有限个函数在相应点的 导数的乘积,就像锁链一样一环套一环,故称链式法则。
1、链式法则与复合函数
链式法则是关于复合函数的导数的性质:如果某个函数由复合函数表示,则该复合函数的导数可以用构成复合函数的各个函数的导数的乘积表示。
数学式表示
2、链式法则和计算图
其中“**2”节点表示平方运算,沿着与正方向相反的方向,乘上局部导数后传递。反向传播的计算顺序是,先将节点的输入信号乘以节点的局部导数(偏导数),然后再传递给下一个节点。
反向传播是基于链式法则的。
(1)、根据计算图的反向传播的结果,dz/dx = 2(x + y)
(2)、乘法的反向传播:左图是正向传播,右图是反向传播。
因为乘法的反向传播会乘以输入信号的翻转值,所以各自可按1.3 × 5 =6.5、1.3 × 10 = 13 计算。另外,加法的反向传播只是将上游的值传给下游,并不需要正向传播的输入信号。但是,乘法的反向传播需要正向传播时的输入信号值。因此,实现乘法节点的反向传播时,要保存正向传播的输入信号。
(3)、购买苹果的反向传播的例子:这个问题相当于求“支付金额关于苹果的价格的导数”“支付金额关于苹果的个数的导数”“支付金额关于消费税的导数”。
链式法则使用
1、求导案例