深度学习入门与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 梯度下降法

在测试集上,通过最小化代价函数(成本函数)J(w,b)来训练参数wb

梯度下降如下:

逻辑回归:

代价函数

如图2-5所示,在第二行给出和之前一样的逻辑回归算法的代价函数(成本函数)梯度下降法的形象化说明。

在这个图中,横轴表示空间参数wb,在实践中,w可以是更高的维度,但是为了更好地绘图,定义wb,都是单一实数,代价函数(成本函数)J(w,b)是在水平轴wb上的曲面,因此曲面的高度就是J(w,b)在某一点的函数值。所做的就是找到使得代价函数(成本函数)J(w,b)函数值为最小值时对应的参数wb

图2-5 代价函数梯度下降法

如图2-6所示,代价函数(成本函数)J(w,b)是一个凸函数,像一个大碗一样。

如图2-7所示,与图2-6有些相反,因为它是非凸的并且有很多不同的局部最小值。由于逻辑回归的代价函数(成本函数)J(w,b)的特性,故必须定义代价函数(成本函数)J(w,b)为凸函数。

图2-6 代价函数的凸函数形式

图2-7 代价函数的非凸形式(局部最小值)

1.初始化wb

可以用如图2-8所示的点来初始化参数wb,也可以采用随机初始化的方法。对于逻辑回归几乎所有的初始化方法都有效,因为函数是凸函数,所无论在哪里初始化,应该达到同一点或大致相同的点。

以如图2-9所示的点的坐标来初始化参数wb

图2-8 代价函数初始化参数(初始化点在最小值位置)

图2-9 代价函数初始化参数(初始化点在随机位置)

2.朝最陡的下坡方向走一步,不断地迭代

朝最陡的下坡方向走一步,如图2-10所示,走到了图中第二个点处。

可能停在这里也有可能继续朝最陡的下坡方向再走一步,如图2-10所示,经过两次迭代走到第三个点处。

3.直到走到全局最优解或者接近全局最优解的地方

图2-10 代价函数梯度下降法的迭代过程

通过以上的三个步骤可以找到全局最优解,也就是代价函数(成本函数)J(w,b)这个凸函数的最小值点。

假定代价函数(成本函数)J(w)只有一个参数w,即用一维曲线代替多维曲线,这样可以更好地画出图像,如图2-11所示。

图2-11 一个参数的代价函数

迭代就是不断重复做上述的公式。

式中,=表示更新参数;α表示学习率,用来控制步长,即向下走一步的长度。就是函数J(w)对w求导。在代码中会使用dw表示这个结果。对于导数更加形象化的理解就是斜率,该点的导数就是这个点相切于J(w)的小三角形的高除以宽。假设以如图2-12中的点为初始化点,该点处的斜率的符号是正的,即,所以接下来会向左走一步。

整个梯度下降法的迭代过程就是不断地向左走,直至逼近最小值点,如图2-13所示。

图2-12 一个参数的代价函数1

图2-13 一个参数的代价函数2

假设以如图2-13中的点为初始化点,该点处的斜率的符号是负的,即,所以接下来会向右走一步。整个梯度下降法的迭代过程就是不断地向右走,即朝着最小值点方向走。

逻辑回归的代价函数(成本函数)含有两个参数。

式中,∂为求偏导符号;就是函数J(w,b)对w求偏导,在代码中会使用dw表示这个结果;就是函数J(w,b)对b求偏导,在代码中会使用db表示这个结果,小写字母d用于表示求导数,即函数只有一个参数,偏导数符号∂用于表示求偏导,即函数含有两个以上的参数。