首页 » python机器学习 » python机器学习全文在线阅读

《python机器学习》2.3.1 通过梯度下降最小化代价函数

关灯直达底部

机器学习中监督学习算法的一个核心组成在于:在学习阶段定义一个待优化的目标函数。这个目标函数通常是需要我们做最小化处理的代价函数。在Adaline中,我们可以将代价函数J定义为通过模型得到的输出与实际类标之间的误差平方和(Sum of Squared Error,SSE):

在此,系数1/2只是出于方便的考虑,它使我们更容易导出梯度,具体将在下一段落中介绍。与单位阶跃函数相比,这种连续线型激励函数的主要优点在于:其代价函数是可导的。此代价函数的另一个优点在于:它是一个凸函数;这样,我们可以通过简单、高效的梯度下降优化算法来得到权重,且能保证在对鸢尾花数据集中样本进行分类时代价函数最小。

如下图所示,我们将梯度下降的原理形象地描述为下山,直到获得一个局部或者全局最小值。在每次迭代中,根据给定的学习速率和梯度的斜率,能够确定每次移动的步幅,我们按照步幅沿着梯度方向前进一步。

通过梯度下降,我们可以基于代价函数J(w)沿梯度▽J(w)方向做一次权重更新:

在此,权重增量Δw定义为负梯度[1]与学习速率η的乘积:

对于熟悉代数的读者来说,误差平方和代价函数对应于第j个权重的偏导,可通过下列步骤得到:

虽然Adaline学习规则与感知器规则看起来类似,不过φ(z(i))中的z(i)=wTx(i)是实数,而不是整数类标。此外,权重的更新是基于训练集中所有样本完成的(而不是每次一个样本渐进更新权重),这也是此方法被称作“批量”梯度下降的原因。

[1] 梯度相反的方向是学习速率最快的方向。——译者注