MENU

Gradient Descent

March 29, 2019 • Read: 83 • 杂谈

梯度下降法可以做什么?

在你测试集上,通过最小化代价函数$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} $$

Archives Tip
QR Code for this page
Tipping QR Code