在机器学习领域使用最广泛的优化算法是“梯度下降”(Gradient Descent)算法,它不仅广泛应用在传统的统计学习中,在神经网络和深度学习中也是一种常见的优化算法。在这一节,我们将以梯度下降算法为例,学习机器学习优化算法的原理和过程。
本节的邮件过滤系统实战是一个分类应用,在 6.6.5 节介绍损失函数时,我们提到了常用的平方损失函数,结合前面所讲的机器学习通式,要求解的目标函数如下所示:
$$
\boldsymbol { w } ^ { * } \quad \underset { w } { \operatorname { a r g m i n } } \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \left( y _ { i } – f ( x _ { i } ) \right) ^ { 2 }
$$
在 6.6.6 节讲解模型选择时,我们又接触到了支持向量机,它要优化的是Hinge 损失函数,这时的目标函数形式如下:
$$
\boldsymbol { w } ^ { * } \ \underset { w } { \operatorname { a r g m i n } } \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \operatorname* { m a x } ( 0 , \ 1 - \boldsymbol { w } ^ { \mathrm { T } } x _ { i } y _ { i } )
$$
其他形式的损失函数还有很多种,无论选择何种损失函数,模型训练最终都要解决如何求损失函数达到最小值时的系数向量这个共同的问题。梯度下降算法是最常用的迭代求解算法。“梯度”一词是微积分中的概念,数学上,对多元函数的参数求偏导数,把求得的各个参数的偏导数以向量的形式写出来就是梯度。这里把微积分中导数、偏导数和梯度的概念简单复习一下:当函数定义域和取值都在实数域时,导数可以表示函数曲线上的切线斜率,这是导数的几何意义,同时也代表了该函数在该点的瞬时变化率,这是导数的物理意义。如图 6-26 所示,对于一元函数,P 点的导数是当 x 变化一段很小的距离 $\Delta x$ 后,y 的变化量 $\Delta y$ 与 $\Delta x$ 的比值。
而对于多元函数,至少涉及两个自变量,也就是从曲线来到了曲面。曲线上的一点,其切线只有一条。但是曲面上的一点,其切线有无数条。偏导数是指多元函数沿坐标轴的变化率,如图 6-27 所示,在点 $( x _ { 0 } , y _ { 0 } )$ 上对x 的偏导数,就是指曲面被平面 $y = y _ { 0 }$ 所截得的曲面 $T _ { x }$ 在点M处的切线对x 轴的斜率。
220
第三部分 第三波高潮