一、权重更新问题
在之前的章节,我们使用误差来指导如何调整链接权重,这也是线性分类器所做的事。在计算权重时,有人会建议采用暴力方法,但随着网络层、节点和权重的增加,暴力方法会不切实际,因此提出了梯度下降的方法。
(一)“梯度下降”方法
1.二维空间函数
(1)适用场合:
<1>如果函数非常复杂,不能用代数方法轻松找到结果值,可以采用这个方法。
<2>当函数有很多参数,一些其他方法不切实际,或者会得出错误答案,这种方法依然适用。
(2)思想。
以一简单函数为例。
首先随机选择一个起点,沿着向下,即x轴向右的方向,稍微增加x的值,向实际最小值靠近了一些。多次执行这样操作,直到不能改进为止。
在改进过程中,要注意调整步长,与梯度的大小成比例,那么在接近最小值时,可以采用小步长。避免超调,即避免在最小值的地方来回反弹。
2.三维空间
为了避免终止于错误的山谷或错误的函数最小值,我们从山上的不同点开始,多次训练神经网络,确保并不总是终止于错误的山谷。不同的起始点意味着选择不同的起始参数,在神经网络的情况下,这意味着选择不同的起始链接权重。
梯度下降法非常具有弹性,可以容忍不完善的数据,如果我们不能完美地描述函数,或偶尔意外地走错了一步,也不会错得离谱。
(二)误差函数的选择与计算
1.函数的选择
候选项如下:
第一种方法:误差总和会出现为0的情况,即没有误差。与实际网络输出与目标输出不符合,所以这不是很好的测量方法。
第二种方法:在V型山谷的情况下,无法缩小步长,有超调的风险。也不是好的测量方法。
第三种方法:(1)使用误差的平方,我们可以很容易使用代数计算出梯度下降的斜率。
(2)误差函数平滑连续,这使得梯度下降法很好地发挥作用——没有间断,也没有突然的跳跃。
(3)越接近最小值,梯度越小,这意味着,如果我们使用这个函数调节步长,超调的风险就会变得较小。
2.误差函数的计算过程
现在开始计算误差函数相对于权重的斜率。
目标:最小化神经网络的误差函数,优化网络链接权重的参数。
(1)理论分析
下图为一个权重,但神经网络往往有众多参数。
下图显示了两个链接权重,误差函数是一个三维曲面
当函数具有多个参数时,要画出误差曲面相对较难,但是使用梯度下降寻找最小值的思想是相同的。
(2)数学计算
误差函数的斜率:,也就是我们希望使用梯度下降的方法到达最小值的方向。