梯度法

转载至:http://blog.sina.com.cn/s/blog_531bb76301017ply.html

梯度下降法

  

梯度下降法是一个一阶最优化算法,通常也称为最速下降法

描述

有关梯度下降法的描述

梯度下降法,基于这样的观察:如果实值函数 F(mathbf{x}) 在点 mathbf{a} 处可微且有定义,那么函数 F(mathbf{x})在 mathbf{a} 点沿着梯度相反的方向 -nabla F(mathbf{a}) 下降最快。

因而,如果

mathbf{b}=mathbf{a}-gammanabla F(mathbf{a})

对于 gamma>0 为一个够小数值时成立,那么 F(mathbf{a})geq F(mathbf{b}) 。

考虑到这一点,我们可以从函数 F 的局部极小值的初始估计 mathbf{x}_0 出发,并考虑如下序列 mathbf{x}_0, mathbf{x}_1, mathbf{x}_2, dots 使得

mathbf{x}_{n+1}=mathbf{x}_n-gamma_n nabla F(mathbf{x}_n), n ge 0.

因此可得到

F(mathbf{x}_0)ge F(mathbf{x}_1)ge F(mathbf{x}_2)ge cdots,

如果顺利的话序列 (mathbf{x}_n) 收敛到期望的极值。注意每次迭代步长 gamma 可以改变。

右侧的图片示例了这一过程,这里假设 F 定义在平面上,并且函数图像是一个形。蓝色的曲线是等高线(水平集),即函数 F 为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数 F 值最小的点。

例子

梯度下降法处理一些复杂的非线性函数会出现问题,例如Rosenbrock函数

f(x, y) = (1-x)^2 + 100(y-x^2)^2 .quad

其最小值在 (x, y)=(1, 1) 处,数值为f(x, y)=0。但是此函数具有狭窄弯曲的山谷,最小值(x, y)=(1, 1) 就在这些山谷之中,并且谷底很平。优化过程是之字形的向极小值点靠近,速度非常缓慢。

Banana-SteepDesc.gif

下面这个例子也鲜明的示例了"之字"的下降,这个例子用梯度下降法求 F(x,y)=sinleft(frac{1}{2} x^2 - frac{1}{4} y^2 + 3 right) cos(2 x+1-e^y) 的极小值。

The gradient descent algorithm in action. (1: contour)The gradient descent algorithm in action. (2: surface)

 

缺点

由上面的两个例子,梯度下降法的缺点是 [1]:

  • 靠近极小值时速度减慢。
  • 直线搜索可能会产生一些问题。
  • 可能会'之字型'地下降。

共轭梯度法的推导

 
boldsymbol{Ax}=boldsymbol{b}

迭代方法。共轭梯度法可以从不同的角度推导而得,包括作为求解最优化问题的共轭方向法的特例,以及作为求解特征值问题的 Arnoldi/Lanczos 迭代的变种。

本条目记述这些推导方法中的重要步骤。

从共轭方向法推导

从 Arnoldi/Lanczos 迭代推导

共轭梯度法可以看作 Arnoldi/Lanczos 迭代应用于求解线性方程组时的一个变种。

一般 Arnoldi 方法

Arnoldi 迭代从一个向量 boldsymbol{r}_0 开始,通过定义 boldsymbol{v}_i=boldsymbol{w}_i/lVertboldsymbol{w}_irVert_2 ,其中

boldsymbol{w}_i=begin{cases} boldsymbol{r}_0 & text{if }i=1text{,} boldsymbol{Av}_{i-1}-sum_{j=1}^{i-1}(boldsymbol{v}_j^mathrm{T}boldsymbol{Av}_{i-1})boldsymbol{v}_j & text{if }i>1text{,} end{cases}

逐步建立 Krylov 子空间

mathcal{K}(boldsymbol{A},boldsymbol{r}_0)={boldsymbol{r}_0,boldsymbol{Ar}_0,boldsymbol{A}^2boldsymbol{r}_0,ldots}

的一组标准正交基 {boldsymbol{v}_1,boldsymbol{v}_2,boldsymbol{v}_3,ldots} 。

换言之,对于 i>1 ,boldsymbol{v}_i 由将 boldsymbol{Av}_{i-1} 相对于 {boldsymbol{v}_1,boldsymbol{v}_2,ldots,boldsymbol{v}_{i-1}} 进行 Gram-Schmidt 正交化然后归一化得到。

写成矩阵形式,迭代过程可以表示为

boldsymbol{AV}_i=boldsymbol{V}_{i+1}boldsymbol{tilde{H}}_itext{,}

其中

begin{align} boldsymbol{V}_i&=begin{bmatrix} boldsymbol{v}_1 & boldsymbol{v}_2 & cdots & boldsymbol{v}_i end{bmatrix}text{,} boldsymbol{tilde{H}}_i&=begin{bmatrix} h_{11} & h_{12} & h_{13} & cdots & h_{1,i} h_{21} & h_{22} & h_{23} & cdots & h_{2,i} & h_{32} & h_{33} & cdots & h_{3,i} & & ddots & ddots & vdots & & & h_{i,i-1} & h_{i,i} & & & & h_{i+1,i} end{bmatrix}=begin{bmatrix} boldsymbol{H}_i h_{i+1,i}boldsymbol{e}_i^mathrm{T} end{bmatrix}text{,} h_{ji}&=begin{cases} boldsymbol{v}_j^mathrm{T}boldsymbol{Av}_i & text{if }jleq itext{,} lVertboldsymbol{w}_{i+1}rVert_2 & text{if }j=i+1text{,} 0 & text{if }j>i+1text{.} end{cases} end{align}

当应用于求解线性方程组时,Arnoldi 迭代对应于初始解 boldsymbol{x}_0 的残量 boldsymbol{r}_0=boldsymbol{b}-boldsymbol{Ax}_0 开始迭代,在每一步迭代之后计算 boldsymbol{y}_i=boldsymbol{H}_i^{-1}(lVertboldsymbol{r}_0rVert_2boldsymbol{e}_1) 和新的近似解 boldsymbol{x}_i=boldsymbol{x}_0+boldsymbol{V}_iboldsymbol{y}_i .

直接 Lanzcos 方法

在余下的讨论中,我们假定 boldsymbol{A} 是对称正定矩阵。由于 boldsymbol{A} 的对称性, 上 Hessenberg 矩阵 boldsymbol{H}_i=boldsymbol{V}_i^mathrm{T}boldsymbol{AV}_i 变成对阵三对角矩阵。于是它可以被更明确地表示为

boldsymbol{H}_i=begin{bmatrix} a_1 & b_2 b_2 & a_2 & b_3 & ddots & ddots & ddots & & b_{i-1} & a_{i-1} & b_i & & & b_i & a_i end{bmatrix}text{.}

这使得迭代中的 boldsymbol{v}_i 有一个简短的三项递推式。Arnoldi 迭代从而简化为 Lanczos 迭代。

由于 boldsymbol{A} 对称正定,boldsymbol{H}_i 同样也对称正定。因此,boldsymbol{H}_i 可以通过不选主元 LU 分解分解为

boldsymbol{H}_i=boldsymbol{L}_iboldsymbol{U}_i=begin{bmatrix} 1 c_2 & 1 & ddots & ddots & & c_{i-1} & 1 & & & c_i & 1 end{bmatrix}begin{bmatrix} d_1 & b_2 & d_2 & b_3 & & ddots & ddots & & & d_{i-1} & b_i & & & & d_i end{bmatrix}text{,}

其中 c_i 和 d_i 有简单的递推式:

begin{align} c_i&=b_i/d_{i-1}text{,} d_i&=begin{cases} a_1 & text{if }i=1text{,} a_i-c_ib_i & text{if }i>1text{.} end{cases} end{align}

改写 boldsymbol{x}_i=boldsymbol{x}_0+boldsymbol{V}_iboldsymbol{y}_i 为

begin{align} boldsymbol{x}_i&=boldsymbol{x}_0+boldsymbol{V}_iboldsymbol{H}_i^{-1}(lVertboldsymbol{r}_0rVert_2boldsymbol{e}_1) &=boldsymbol{x}_0+boldsymbol{V}_iboldsymbol{U}_i^{-1}boldsymbol{L}_i^{-1}(lVertboldsymbol{r}_0rVert_2boldsymbol{e}_1) &=boldsymbol{x}_0+boldsymbol{P}_iboldsymbol{z}_itext{,} end{align}

其中

begin{align} boldsymbol{P}_i&=boldsymbol{V}_{i}boldsymbol{U}_i^{-1}text{,} boldsymbol{z}_i&=boldsymbol{L}_i^{-1}(lVertboldsymbol{r}_0rVert_2boldsymbol{e}_1)text{.} end{align}

此时需要观察到

begin{align} boldsymbol{P}_i&=begin{bmatrix} boldsymbol{P}_{i-1} & boldsymbol{p}_i end{bmatrix}text{,} boldsymbol{z}_i&=begin{bmatrix} boldsymbol{z}_{i-1} zeta_i end{bmatrix}text{.} end{align}

实际上,boldsymbol{p}_i 和 zeta_i 同样有简短的递推式:

begin{align} boldsymbol{p}_i&=frac{1}{d_i}(boldsymbol{v}_i-b_iboldsymbol{p}_{i-1})text{,} alpha_i&=-c_izeta_{i-1}text{.} end{align}

通过这个形式,我们得到 boldsymbol{x}_i 的一个简单的递推式:

begin{align} boldsymbol{x}_i&=boldsymbol{x}_0+boldsymbol{P}_iboldsymbol{z}_i &=boldsymbol{x}_0+boldsymbol{P}_{i-1}boldsymbol{z}_{i-1}+zeta_iboldsymbol{p}_i &=boldsymbol{x}_{i-1}+zeta_iboldsymbol{p}_itext{.} end{align}

以上的递推关系立即导出比共轭梯度法稍微更复杂的直接 Lanczos 方法。

从正交性和共轭性导出共轭梯度法

如果我们允许缩放 boldsymbol{p}_i 并通过常数因子补偿缩放的系数,我们可能可以的到以下形式的更简单的递推式:

begin{align} boldsymbol{x}_i&=boldsymbol{x}_{i-1}+alpha_{i-1}boldsymbol{p}_{i-1}text{,} boldsymbol{r}_i&=boldsymbol{r}_{i-1}-alpha_{i-1}boldsymbol{Ap}_{i-1}text{,} boldsymbol{p}_i&=boldsymbol{r}_i+beta_{i-1}boldsymbol{p}_{i-1}text{.} end{align}

作为简化的前提,我们现在推导 boldsymbol{r}_i 的正交性和 boldsymbol{p}_i 的共轭性,即对于 ineq j ,

begin{align} boldsymbol{r}_i^mathrm{T}boldsymbol{r}_j&=0text{,} boldsymbol{p}_i^mathrm{T}boldsymbol{Ap}_j&=0text{.} end{align}

各个残量之间满足正交性的原因是 boldsymbol{r}_i 实际上可由 boldsymbol{v}_{i+1} 乘上一个系数而得。这是因为对于 i=0 ,boldsymbol{r}_0=lVertboldsymbol{r}_0rVert_2boldsymbol{v}_1,对于 i>0 ,

begin{align} boldsymbol{r}_i&=boldsymbol{b}-boldsymbol{Ax}_i &=boldsymbol{b}-boldsymbol{A}(boldsymbol{x}_0+boldsymbol{V}_iboldsymbol{y}_i) &=boldsymbol{r}_0-boldsymbol{AV}_iboldsymbol{y}_i &=boldsymbol{r}_0-boldsymbol{V}_{i+1}boldsymbol{tilde{H}}_iboldsymbol{y}_i &=boldsymbol{r}_0-boldsymbol{V}_iboldsymbol{H}_iboldsymbol{y}_i-h_{i+1,i}(boldsymbol{e}_i^mathrm{T}boldsymbol{y}_i)boldsymbol{v}_{i+1} &=lVertboldsymbol{r}_0rVert_2boldsymbol{v}_1-boldsymbol{V}_i(lVertboldsymbol{r}_0rVert_2boldsymbol{e}_1)-h_{i+1,i}(boldsymbol{e}_i^mathrm{T}boldsymbol{y}_i)boldsymbol{v}_{i+1} &=-h_{i+1,i}(boldsymbol{e}_i^mathrm{T}boldsymbol{y}_i)boldsymbol{v}_{i+1}text{.}end{align}

要得到 boldsymbol{p}_i 的共轭性,只需证明 boldsymbol{P}_i^mathrm{T}boldsymbol{AP}_i 是对角矩阵:

begin{align} boldsymbol{P}_i^mathrm{T}boldsymbol{AP}_i&=boldsymbol{U}_i^{-mathrm{T}}boldsymbol{V}_i^mathrm{T}boldsymbol{AV}_iboldsymbol{U}_i^{-1} &=boldsymbol{U}_i^{-mathrm{T}}boldsymbol{H}_iboldsymbol{U}_i^{-1} &=boldsymbol{U}_i^{-mathrm{T}}boldsymbol{L}_iboldsymbol{U}_iboldsymbol{U}_i^{-1} &=boldsymbol{U}_i^{-mathrm{T}}boldsymbol{L}_i end{align}

是对称的下三角矩阵,因而必然是对角矩阵。

现在我们可以单纯由boldsymbol{r}_i 的正交性和 boldsymbol{p}_i 的共轭性推导相对于缩放后的 boldsymbol{p}_i 的常数因子 alpha_i 和 beta_i

由于 boldsymbol{r}_i 的正交性,必然有 boldsymbol{r}_{i+1}^mathrm{T}boldsymbol{r}_i=(boldsymbol{r}_i-alpha_iboldsymbol{Ap}_i)^mathrm{T}boldsymbol{r}_i=0 。于是

begin{align} alpha_i&=frac{boldsymbol{r}_i^mathrm{T}boldsymbol{r}_i}{boldsymbol{r}_i^mathrm{T}boldsymbol{Ap}_i} &=frac{boldsymbol{r}_i^mathrm{T}boldsymbol{r}_i}{(boldsymbol{p}_i-beta_{i-1}boldsymbol{p}_{i-1})^mathrm{T}boldsymbol{Ap}_i} &=frac{boldsymbol{r}_i^mathrm{T}boldsymbol{r}_i}{boldsymbol{p}_i^mathrm{T}boldsymbol{Ap}_i}text{.} end{align}

类似地,由于 boldsymbol{p}_i 的共轭性,必然有 boldsymbol{p}_{i+1}^mathrm{T}boldsymbol{Ap}_i=(boldsymbol{r}_{i+1}+beta_iboldsymbol{p}_i)^mathrm{T}boldsymbol{Ap}_i=0 。于是

begin{align} beta_i&=-frac{boldsymbol{r}_{i+1}^mathrm{T}boldsymbol{Ap}_i}{boldsymbol{p}_i^mathrm{T}boldsymbol{Ap}_i} &=-frac{boldsymbol{r}_{i+1}^mathrm{T}(boldsymbol{r}_i-boldsymbol{r}_{i+1})}{alpha_iboldsymbol{p}_i^mathrm{T}boldsymbol{Ap}_i} &=frac{boldsymbol{r}_{i+1}^mathrm{T}boldsymbol{r}_{i+1}}{boldsymbol{r}_i^mathrm{T}boldsymbol{r}_i}text{.} end{align}

推导至此完成。

参考文献

  1. Hestenes, M. R.; Stiefel, E.. Methods of conjugate gradients for solving linear systems (PDF). Journal of Research of the National Bureau of Standards. 12 1952,49 (6).
  2. Saad, Y.. Chapter 6: Krylov Subspace Methods, Part I. Iterative methods for sparse linear systems. 2nd. SIAM. 2003. ISBN 978-0898715347.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值