监督机器学习算法的关键要素之一是在学习过程中优化目标函数,这个目标函数通常是想要最小化的损失函数或代价函数。在Adaline算法中,定义损失函数 L 为计算结果和真实类别标签之间的均方误差(Mean Squared Error,MSE):
这项是为了方便而添加的,这将使我们更容易推导出损失函数关于权重参数的梯度,正如我们将在下面的描述中所看到的那样。与单位阶跃函数相比,线性连续激活函数的优点是损失函数可微。另一个优点为损失函数是一个凸函数,因此,可以使用非常简单但功能强大的梯度下降优化算法寻找使损失函数最小的权重,从而使模型可以正确分类鸢尾花数据集。
如图2.10所示,可以将梯度下降描述为走下坡路,直到走到损失函数局部最小值点或全局最小值点。每次迭代都沿着梯度的反向迈出一步,步长由学习率以及梯度的斜率决定(为了简单起见,图2.10中仅对单个权重 w 进行了可视化)。
图2.10 梯度下降的工作原理
使用梯度下降,沿着损失函数 L ( w , b )梯度∇ L ( w , b )的反向迈出一步来更新模型参数:
w := w +Δ w , b := b +Δ b
Δ w 和Δ b 为参数的变化值,定义为负梯度乘以学习率 η :
Δ w = -η ∇ w L ( w , b ),Δ b = -η ∇ b L ( w , b )
为了计算损失函数的梯度,需要计算损失函数关于每个权重 w j 的偏导数:
同样,需要计算损失函数关于偏置的偏导数:
请注意,分子中的2只是一个常数缩放因子,因此可以省略它而不影响该算法。移除此缩放因子的效果与将学习率乘以2的效果相同。以下信息框中的内容说明了该缩放因子的来源。
因此,可以将权重的更新值和偏置的更新值分别写为
由于所有参数同时更新,Adaline的学习规则变为
w := w +Δ w , b := b +Δ b
均方误差的导数
如果熟悉微积分,则可以按如下步骤计算均方误差关于第 j 个权重的偏导数:
可以用同样的方法求偏导数 ,只是 等于-1,从而最后一步简化为 。
虽然Adaline学习规则看起来与感知机规则相同,但注意 σ ( z ( i ) )是一个连续的实数,而不是一个整数类别标签,这里 z ( i ) = w T x ( i ) + b 。此外,使用训练数据集中的所有样本更新权重(而不是每增加一个样本就更新参数一次),这就是为什么这种方法也被称为批梯度下降(batch gradient descent)。为了在本章和后续章节讨论相关概念时更加明确、避免混淆,称此过程为全批梯度下降(full batch gradient descent)。