2.4 梯度下降法
在测试集上,通过最小化代价函数(成本函数)J(w,b)来训练参数w和b,
梯度下降如下:
逻辑回归:,
代价函数
如图2-5所示,在第二行给出和之前一样的逻辑回归算法的代价函数(成本函数)梯度下降法的形象化说明。
在这个图中,横轴表示空间参数w和b,在实践中,w可以是更高的维度,但是为了更好地绘图,定义w和b,都是单一实数,代价函数(成本函数)J(w,b)是在水平轴w和b上的曲面,因此曲面的高度就是J(w,b)在某一点的函数值。所做的就是找到使得代价函数(成本函数)J(w,b)函数值为最小值时对应的参数w和b。
图2-5 代价函数梯度下降法
如图2-6所示,代价函数(成本函数)J(w,b)是一个凸函数,像一个大碗一样。
如图2-7所示,与图2-6有些相反,因为它是非凸的并且有很多不同的局部最小值。由于逻辑回归的代价函数(成本函数)J(w,b)的特性,故必须定义代价函数(成本函数)J(w,b)为凸函数。
图2-6 代价函数的凸函数形式
图2-7 代价函数的非凸形式(局部最小值)
1.初始化w和b
可以用如图2-8所示的点来初始化参数w和b,也可以采用随机初始化的方法。对于逻辑回归几乎所有的初始化方法都有效,因为函数是凸函数,所无论在哪里初始化,应该达到同一点或大致相同的点。
以如图2-9所示的点的坐标来初始化参数w和b。
图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用于表示求导数,即函数只有一个参数,偏导数符号∂用于表示求偏导,即函数含有两个以上的参数。