理解梯度下降法(Gradient Descent)

最近看了CMU的凸优化,里面对梯度下降的原理讲的比较清楚,这里将自己对梯度下降的理解做一个总结,如果有不对的地方希望大家指正。

1.梯度下降法

考虑无约束的最小化问题:

minxf(x)(1)

优化目标f(x)是可微的凸函数。

使用梯度下降法求解上述问题的最优解x,迭代过程为:

xk=xk1αf(xk1)(2)

为什么使用上述迭代可以从下面的角度考虑。

2.解释1

f(x)xk1处进行一阶泰勒展开(第二步实际应该为)

f(x)=f(xk1+Δx)=f(xk1)+f(xk1)TΔx(3)

  (3)式约等于号中的第二项是关于两个向量的内积,为了使f(xk)<f(xk1),显然Δx应该取为负梯度方向αf(xk1),此时两个向量夹角为180度,目标函数下降最快,其中α用来控制目标函数下降的步长,此时(3)式变为
f(x)=f(xk1)αf(xk1)Tf(xk1)(4)

  可以发现,减号右侧是大于0的,f(x)较上一次更新有所下降,所以沿用负梯度方向不断更新变量,也就是公式(2)可以不断使f(x)减小,因为f(x)是凸函数,因此变量会更新到f(x)全局最优的位置。

3.解释2

考虑f(x)的二阶泰勒展开

f(x)f(xk1)+f(xk1)T(xxk1)+12(xxk1)T2f(xk1)(xxk1)(5)

不过不同的是我们使用1tI替换Hessian矩阵2f(x)
f(x)f(xk1)+f(xk1)T(xxk1)+12t||xxk1||22(6)

我们使用(6)式最小化f(x),令(6)式梯度等于0得
xk=xk1tf(xk1)(7)

对比下(7)式和(2)式,变量更新公式是一样的。

  在我们的印象里梯度下降是一阶优化方法,为什么(6)式看起来像使用了二阶信息?实际上这里还是使用的是一阶信息,我们将包含二阶信息的Hessian矩阵替换为了1tI。可以这样理解,(6)式包含了两部分,第一部分是原目标函数的一阶近似,如果我们直接优化一阶近似的目标函数(实际是个线性函数,一维情况下就是用曲线的切线近似),那么变量将更新到无穷远。第二部分可以看做是一个约束项,表示我们希望优化后变量的位置与变量之前的位置尽可能接近,t的大小决定了变量更新前后的接近程度,也就是我们上面提到的梯度下降的步长。

用下面的图直观地感受一下。
理解梯度下降法(Gradient Descent)

参考文献

  1. 《统计学习方法》
  2. http://www.stat.cmu.edu/~ryantibs/convexopt/lectures/grad-descent.pdf