神经网络入门——11梯度下降算法

梯度下降算法

我们已经了解到,类似图中的简单神经网络输出数据的具体过程,我们构建神经网络是为了输出预测结果。但提前不知道权重,就没法正确预测结果。

我们可以先输入正确的参数,然后根据结果调整权重。首先我们要选取衡量预测误差的标准。最容易想到的是用实际目标值y减去网络预测值 ^y   。

用两者的差值来衡量误差。但是当预测值高于目标值时,误差为负。预测值低于目标值时,误差为正。我们希望误差能保持符号一致。让误差值为正,可以采用误差的平方。这里为什么不用绝对值?因为使用平方值时,异常数值会赋予更高的惩罚值,而较小的误差惩罚值低。而且使用平方值還能简化后面的计算。但目前我们仅仅得到单次输入预测的误差,我们希望求出全体数据的所有误差,那么可以对每一项误差进行求和。

u表示所有数据的个数。这样就得到了所有数据的整体误差。

在式子前面加上1/2,以便简化后面的计算。

上图这个公式称为 ”误差平方和“  简称SSE,就是对差值取平方再求和。

预测值^y 为权重值和输入值的线性组合。

再传入激活函数

可以看到所有数据的误差平方和与权重和输入有关,可以将这些数据看作矩阵,便于理解,一组包含输入,一组包含目标值y.

可以逐行计算误差平方和,然后对所有结果求和。误差平方和可以用来评估神经网络的预测效果,误差平方和越大说明效果越差,越小说明预测效果好。

因而希望降低误差平方和。

以一行数据为输入举例:

可以看出权重是误差函数的参数,因此权重可以被当作控制按钮来调整预测值,从而影响整体误差我们的目标是找到整体误差最小的权重值。

下面是单一权重误差函数的简化图形,

我们的目标是求取图形碗底对应的权值,从某一个随即权值出发,逐步向误差最小值的方向前进,这个方向与梯度相反,只要沿着梯度方向,反复下降,

最终能求得误差平方和最小的最终的权值

这个过程是梯度下降的过程。

下面我们来更新权值,新的权值wi为旧的权值加上更新步长。

更新步长与梯度成正比

而”梯度等于误差关于每个权重wi的偏导数“,公式中还需添加一个缩放系数变量,用来控制梯度下降过程中下降的步长

该系数称为学习率,下面我们展开计算梯度

 

相当于对误差平方和求权重的偏导数。鉴于输出值^y是权重的函数,这里相当于计算复合函数的偏导数。

其参数仍是权重wi,这种情况需要使用链式求导。

链式求导如上所示。

具体到问题中,可以将q设为预测差值。

p设为误差的平方

然后逐项求关于wi的偏导,首先p关于q的偏导等于预测值本身。因为指数2提下来与1/2抵消,然后在求预测差值关于wi的偏导。

y是常数,^y是wi的函数,应用链式法则求导过程如下:

下面在对^y求偏导

在求和的式子中,每个权重仅是单个子项的参数。

可以看出w1仅是x1的自变量,所以总和关于wi的偏导就是x1

因此,总和关于wi的偏导就是xi.

综合看来,误差平方关于wi的偏导数等于负的预测差值-(y-^y)乘以h激活函数的导数,在乘以输入值xi

更新步长等于学习率乘以预测差值,再乘以激活函数的导数,乘以输入值xi.

为了方便后续应用,我们将预测差值乘以激活函数的导数命名为误差项,用符号表示。

那么权值公式可以写为

你的神经网络可能有多个输出单元,可以将其视为多个单独网络的对叠。但需要将输入单元链接到输出单元。

这时整体误差等于每个输出单元的误差之和。

梯度下降法可以扩展适用于这种情况,只需分别计算每一个输出单元的误差项,

 

转载于:https://www.cnblogs.com/fuhang/p/8930743.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值