梯度下降法

自娱自乐。

基础

多元函数定义为:

$$f(x) = f(x_1,…,x_n)$$

对应的梯度可以定义为:

$$\nabla f(x) = (\frac{\partial f(x)}{\partial x_1}, … ,\frac{\partial f(x)}{\partial x_n})$$

想计算目标函数的最小值,可以构建初始点:

$$x^{(0)}=(x_1^{0},…,x_n^{(n)})$$

基于学习率

$$\eta > 0$$

构建迭代过程,当

$$i \ge 0$$

时:

$$x_1^{(i+1)}=x_1^{(i)}-\eta \frac{\partial f(x^{(i)})}{\partial x_1}$$
$$x_1^{(i+1)}=x_n^{(i)}-\eta \frac{\partial f(x^{(i)})}{\partial x_n}$$

其中

$$x^{(i)}=(x_1^{(i)},…,x_n^{(i)})$$

达到收敛时,迭代结束。

同理,得梯度下降或梯度上升的公式:

$$ g(x)=\begin{equation} \left\{ \begin{aligned} x-\eta \nabla f(x) \\ x+\eta \nabla f(x) \\ \end{aligned} \right. \end{equation}$$

回顾一下代价函数:

$$\begin{align} J(w,b) &=\frac{1}{m} \sum_{i=1}^m L(\hat y^{(i)},y^{(i)}) \\ &= -\frac{1}{m} \sum_{i=1}^m [y^{(i)}log \hat y^{(i)}+(1-y^{(i)})log(1- \hat y^{(i)})] \end{align}$$

由代价函数,获得一个凸图形,因而可以进行梯度下降求最优。

J(w) 是平面上横坐标为 w,纵坐标为 J(w) 的一条曲线,则迭代以下:

$$w := w – \alpha \frac{dJ(w)}{dw}$$

可以帮助 w 下降到(局部)最优位置。

α 是 Learning rate,学习率,也可以视为下降的步长。

同理,对于上面的的代价函数,需要同时迭代 w 和 b(偏导数):

$$w := w – \alpha \frac{\partial J(w,b)}{\partial w} \\ b := b – \alpha \frac{\partial J(w,b)}{\partial b}$$

对于学习率(步长)的控制非常关键:步长过小,下降的效率则很低,如果步长较大,则可能会在接近(局部)最优解的位置震荡。