购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3.3 通过特征缩放改进梯度下降

在本书中遇到的许多机器学习算法都需要某种特征缩放方法才能获得最佳性能,第3章和第4章将对此进行更加详细的讨论。

梯度下降算法是众多受益于特征缩放的算法之一。本小节将使用一个被称为标准化的特征缩放方法。该标准化方法帮助梯度下降算法收敛更快,但不会使原数据集变为正态分布。数据标准化后,每个特征的均值为0、标准差为1(单位方差)。例如,如果对第 j 个特征进行标准化,那么可以将第 j 个特征减去样本均值 μ j ,再除以第 j 个特征的标准差 σ j

这里 x j 是一个向量,由所有 n 个训练样本的第 j 个特征值组成。该标准化方法应用于数据集中的每个特征。

标准化有助于梯度下降学习的原因之一是更容易找到适用于所有权重(以及偏置项)的学习率。如果所有特征在数值上差别很大,那么一个学习率可以很好地更新一个权重,但可能无法同样好地更新另一个权重。使用这个学习率更新其他权重,这个学习率可能太大或者太小。总的来说,使用标准化的特征可以使模型训练过程更加稳定,从而可以通过更少的epoch次数找到好的解或最优解(损失函数全局最小值对应的参数)。图2.13展示了使用非标准化(左)和标准化(右)在训练数据上参数的梯度更新,其中同心圆表示二维损失函数的等高线。

图2.13 使用非标准化数据和标准化处理后的数据进行梯度更新的比较

用NumPy内置方法mean和std可以很轻松地实现数据标准化:

在标准化之后,再次训练Adaline,使用学习率 η =0.5,可以看到Adaline经过几次迭代后收敛:

运行完上述代码后,图2.14展示了决策区域和损失函数。

从图2.14可以看到,训练数据经过标准化处理后,Adaline算法收敛。然而请注意,即使所有训练样本都正确分类,均方误差(MSE)值仍然非零。

图2.14 Adaline的决策区域(左)和MSE随着epoch次数变化图(右) h66gQaStCtQHIXmQlkOpktbzPi7rZDp7UM9UM+97c44GibcDqoJ7FgY3gbL6EwKP

点击中间区域
呼出菜单
上一章
目录
下一章
×