机器学习笔记(8)— 反向传播(BP网络)

本文主要介绍反向传播的代价函数,应用过程,梯度检测、以及前向和反向的区别等内容。

1.反向传播

我们使用反向传播计算导数项(为了求最小代价函数,可以对比梯度下降法导数的作用)。反向传播,就是对每一个节点求误差。根据反向传播的定义:
在这里插入图片描述
其中,δ j^((i))代表第i层,第j个节点的误差,在这里插入图片描述代表第i层,第j个节点的拟合结果,yi代表实际值。
将上式写成向量形式为:
在这里插入图片描述
在这里插入图片描述
我们以上边的4层网络为例:
在这里插入图片描述
表示整个网络的误差,接下来我们要求第三层和第二层网络的误差:
在这里插入图片描述
其中,
在这里插入图片描述
以上就是反向传播。反向传播是指,从输出层开始计算误差,然后一层一层的向前计算直到第二层。

2.反向传播的应用过程

1.对于给定的训练集:
在这里插入图片描述
设每一个节点的误差均为0。使用前向传播计算a((l))(l=2,…,L),使用计算传来的a((l))与给定值做差,计算误差函数:
在这里插入图片描述
2.误差函数累计为:
在这里插入图片描述
3.接写来计算:
在这里插入图片描述
计算出来的D_ij((l))就是∂/(∂θ_ij((l) ) ) J(θ)。之后就可以使用梯度下降法优化。

3.梯度检测

反向传播在和优化算法(梯度下降等)一起运行时,会产生误差(程序BUG的原因,且不易发现)。虽然代价函数也是一直在下降。但是,与没有BUG相比,代价函数会高出一个数量级。因此,使用梯度检测求代价函数的导数,比较两种方法求导的结果,避免这种情况。

在这里插入图片描述
上图中θ点的导数为:
在这里插入图片描述
按照以上规则求取θ的各个导数:
在这里插入图片描述
应用以上公式,可以估算代价函数关于任何参数的偏导数。使用本方法得到的偏导数,与上文中的D_ij^((l))进行比较,就可以确定反向传播中的计算结果是否正确。

4.前向传播和反向传播

神经网络前向传播的计算方式是由输入层向输出层逐层计算,反向传播由输出层向第二层逐层计算。

神经网络中的前向传播就是计算目标函数和代价函数(损失值)的过程,而反向传播是计算偏导数,使用优化算法优化参数的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值