梯度下降法可以做什么?
在你测试集上,通过最小化代价函数 $J (\omega,b)$ 来训练参数 $\omega$ 和 $b$
梯度下降法的形象化说明
在这个图中,横轴和纵轴表示你的空间参数 $\omega$ 和 $b$,在实践中,$\omega$ 可以实更高的维度,但是为了更好地绘图,我们定义 $\omega$ 和 $b$,都是单变量实数,曲面的高度就是 $J (\omega,b)$ 在某一点的函数值,我们所做的就是找到使得代价函数 $J (\omega,b)$ 取最小值时的 $\omega$ 和 $b$
上图是一个凸函数($convex\ function$),像一个大碗一样
上面这张图就与就与刚才的图有些相反,因为它是非凸的并且有很多不同的局部最小值。由于逻辑回归的代价函数 $J (\omega,b)$ 的特性,我们必须定义代价函数 $J (\omega,b)$ 为凸函数
我们以上图的小红点的坐标来初始化参数 $\omega$ 和 $b$
朝最陡的下坡方向走一步,不断地迭代
如上图,走到了第二个小红点处
我们可能停在这里也有可能继续朝最陡的下坡方向再走一步,如上图,经过两次迭代走到第三个小红点处
通过以上的三个步骤我们可以找到全局最优解,也就是代价函数 $J (\omega,b)$ 这个凸函数的最小值点
梯度下降法的细节化说明(假设仅有一个参数)
假定代价函数 $J (\omega,b)$ 只有一个参数 $\omega$,即用一维曲线代替多维曲线
迭代就是不断重复做上图所示的公式,$:=$ 表示更新参数,$\alpha$ 表示学习率($learning\ rate$),用来控制步长($step$),即向下走一步的长度,也就是 $J (\omega)$ 对 $\omega$ 的导数 $\frac {dJ (\omega)}{d\omega}$,在代码中我们会使用 $d\omega$ 表示这个结果
对于导数更加形象化的理解就是斜率($slope$),如上图,该点的导数就是这个点相切于 $J (\omega)$ 的小三角形的高除宽。假设我们以上图的点为初始化点,该点处的斜率的符号是正的,即 $\frac {dJ (\omega)}{d\omega} > 0$,所以接下来会向左走一步
整个梯度下降法的迭代过程就是不断地向左走,直至逼近最小值点
假设我们以上图的点为初始化点,该点处的斜率的符号是负的,即 $\frac {dJ (\omega)}{d\omega} < 0$,所以接下来会向右走一步
梯度下降法的细节化说明(两个参数)
逻辑回归的代价函数 $J (\omega,b)$ 是含有两个参数的
$$ \omega := \omega - \alpha \frac{\partial J(\omega,b)}{\partial \omega}\\ b := b - \alpha \frac{\partial J(\omega,b)}{\partial b} $$