梯度下降

权重学习

你了解了如何使用感知器来构建 AND 和 XOR 的操作,但它们的权重都是人为设定的。但如果有一个操作,例如预测大学录取结果,你不知道正确的权重是什么怎么办?你要从样本中学习权重,然后用这些权重来做预测。

要了解我们如何找到这些权重,可以从我们的目标开始考虑。我们想让网络做出的预测与真实值尽可能接近。为了能够衡量,我们需要有一个指标来了解预测有多差,也就是误差。一个普遍的指标是误差平方和 sum of the squared errors (SSE):

E=21μj[yjμy^jμ]2

这里 y^ 是预测值 y 是真实值。一个和是所有输出的和 j,另一个是所有数据点的和 μ。这里看上去很复杂,但你一旦理解了这些符号之后,你就能明白这是怎么回事了。

首先是里面 j 部分的和。变量 j 代表网络输出。所以这里面的和是指每一个输出  y^,与真实值  y 之间的差的平方,再加总。

另一个和 μ 指所有的数据点。也就是说,对每一个数据点,你计算它输出的方差,然后把这些方差和在一起。这就是你整个输出的总误差。

SSE 是一个很好的选择有几个原因:误差的平方总是正的,对大误差的惩罚大与小的误差。同时,它对数学运算也更友好。

记住神经网络的输出,也就是预测,取决于权重

y^jμ=f(iwijxiμ)

相应的,误差也取决于权重

E=21μj[yjμf(iwijxiμ)]2

我们想让网络预测的误差尽可能小,权重是让我们能够实现这个目的调节旋钮。我们的目的是寻找权重  wij 使得误差平方 E 最小。通常来说神经网络通过梯度下降来实现这一点。

梯度下降

如 Luis 所说,用梯度下降,我们通过很多小步骤来实现目标。在这里,我们希望一步一步改变权重来减小误差。借用前面的比喻,误差就像是山,我们希望走到山下。下山最快的路应该是最陡峭的那个方向,因此我们也应该寻找使得错误能够最小化的方向。我们能够通过计算误差平方的梯度来找到这个方向。

梯度是改变率或者斜度的另一个称呼。如果你需要回顾这个概念,可以看下可汗学院对这个问题的讲解

要计算变化率,我们要转向微积分,具体来说是导数。一个函数 ( 的导函数 ( 给到你的是 ( 在 x 这一点的斜率。例如 x2 ,x2 的导数是 (。所以,在 x=2 这个点斜率 (。画出图来就是:

Example of a gradient

Example of a gradient

梯度就是对多变量函数导数的泛化。我们可以用微积分来寻找误差函数中任意一点的梯度,它与输入权重有关,下一节你可以看到如何推导梯度下降的步骤。

下面我画了一个神经网络误差示例,它有两个输入,相应的有两个权重。你可以像读地形图那样读它,每条线代表相同的误差,深色的线对应大的误差。

在每一步,你计算误差和梯度,然后用它们来决定如何改变权重。重复这个步骤直到你最终找到接近误差函数最小值的权重,也就是中间这个黑色的点。

Gradient descent steps to the lowest error

Gradient descent steps to the lowest error

注意

因为权重会走向梯度带它去的位置,他们有可能停留在误差小,但不是最小的地方。这个点被称作局部最低点。如果权重初始值有错,梯度下降可能会使得权重陷入局部最优,例如下图所示。

梯度下降引向局部最低点

梯度下降引向局部最低点

有方法可以避免这一点,被称作 momentum.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ncst

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值