背景:
尽管当训练样例线性可分时,感知器法则可以成功地找到一个权向量,但如果样例不是线性可分时它将不能收敛。
因此,人们设计了另一个训练法则来克服这个不足,称为 delta 法则(delta rule)。如果训练样本不是线性可分的,那么 delta 法则会收敛到目标概念的最佳 近似。
delta 法则的关键思想是使用梯度下降(gradient descent)来搜索可能权向量的假设空间, 以找到最佳拟合训练样例的权向量。
最好把 delta 训练法则理解为训练一个无阈值的感知器,也就是一个线性单元(linear unit),它的输出 o 如下:
(1)
先指定一个度量标准来衡量假设(权向量)相对于 训练样例的训练误差(training error):
(2)
其中D是训练样例集合,td是训练样例d的目标输出,od是线性单元对训练样例d的输出。
形象化假设空间:
如果损失函数是凸函数:
这个误差曲面必然是具有单一全局最小值的抛物面。
梯度下降搜索确定一个使 E 最小化的权向量的方法是从一个任意的初始权向量开始, 然后以很小的步伐反复修改这个向量。在每一步,按照沿误差曲面产生最陡峭下降的方向修改权向量。继续这个过程直到到达全局的最小误差。
如果损失函数是非凸函数:
开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。
我们持续这么做直到到到 一个局部最小值,因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值,选择不同的初始参数组合, 可能会找到不同的局部最小值。
梯度下降法则的推导:
我们怎样能计算出沿误差曲面最陡峭下降的方向呢?可以通过计算 E 相对向量 的每个分量的导数来得到这个方向。这个向量导数被称为 E 对于的梯度(gradient),记作∇E()。
当梯度被解释为权空间的一个向量时,它确定了使 E 最陡峭上升的方向。所以这个向量的反方向给出了最陡峭下降的方向。
梯度下降的训练法则是 :
这里η是一个正的常数叫做学习速率,它决定梯度下降搜索中的步长。其中的负号是因为我们想要让权向量向 E 下降的方向移动。这个训练法则也可以写成它的分量形式:
要形成一个根据上式迭代更新权的实用算法,我们需要一个高效的方法在每一 步计算这个梯度:
(3)
其中 xid 表示训练样例 d 的一个输入分量 xi。
概而言之,训练线性单元的梯度下降算法如下:选取一个初始的随机权向量;应用线性单元到所有的训练样例,然后根据公式(3)计算每个权值的∆wi;通过加上∆wi 来更新每个权值,然后重复这个过程。
随机梯度下降:
应用梯度下降的主要实践问题是:
- 有时收敛过程可能非常慢(它可能需要数千步的梯度下降);
- 如果在误差曲面上有 多个局部极小值,那么不能保证这个过程会找到全局最小值。
缓解这些困难的一个常见的梯度下降变体被称为随机梯度下降(stochastic gradient descent) 。
鉴于公式(3)给出的梯度下降训练法则在对 D 中的所有训练样例求和后计算权值更新,随机梯度下降的思想是根据每个单独样例的误差增量地计算权值更新,得到近似的梯度下降搜索。
要修改表 4-1 的梯度下降算法,只要简单地删除(T4.2)式并把式(T4.1)替换为 wi ←wi +η(t-o)xi。
标准的梯度下降和随机的梯度下降之间的关键区别:
- ‘标准’是在权值更新前对所有样例汇总误差;‘随机’则是对单个样例。
- ‘标准’每次更新需要多个样例求和,计算量大;‘标准’每次权值更新步长较大。
- 如果损失函数有多个局部最小值,那么‘随机’有时可能避免陷入局部最优解。
误解:
注意随机梯度下降的增量法则 与 感知器法则 相似。
事实上两个表达式看起来完全一致。然而它们是不同的,因为在增量法则中 o 是指线性单元的输出 ,而对于感知器法则,o 是指阈值输出。
加快收敛速度:
1、特征缩放
在我们面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。
以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0- 2000 平方英尺,而房间数量的值则是 0-5,以两个参数分别为横纵坐标,绘制代价函数的 等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。
解决的方法是尝试将所有特征的尺度都尽量缩放到-1 到 1 之间。
2、学习率
梯度下降算法的每次迭代受到学习率的影响,如果学习率 η 过小,则达到收敛所需的迭代次数会非常高;如果学习率 η 过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
通常可以考虑尝试些学习率: η=0.01,0.03,0.1,0.3,1,3,10
Reference: