基于导数的优化方法

使用导数的优化方法

下面介绍的优化方法都是针对无约束优化问题的。

考虑无约束问题:
m i n f ( x ) , x ∈ R n min\quad f(\bold{x}),\bold{x}\in \bold{R}^n minf(x),xRn

最速下降法

假设 f ( x ) f(\bold{x}) f(x)具有一阶连续偏导数。

迭代公式:
x ( k + 1 ) = x ( k ) + λ k d ( k ) \bold{x}^{(k+1)}=\bold{x}^{(k)}+\lambda_k\bold{d}^{(k)} x(k+1)=x(k)+λkd(k)

d ( k ) = − ∇ f ( x ( k ) ) \bold{d}^{(k)}=-\nabla f(\bold{x}^{(k)}) d(k)=f(x(k))

d ( k ) \bold{d}^{(k)} d(k)为搜索方向,即 x ( k ) \bold{x}^{(k)} x(k)处的最速下降方向, λ k \lambda_k λk为从 x ( k ) \bold{x}^{(k)} x(k)出发沿方向 d ( k ) \bold{d}^{(k)} d(k)进行一维搜索的步长,即 λ k \lambda_k λk满足:
f ( x ( k ) + λ k d ( k ) ) = min ⁡ λ ≥ 0 f ( x ( k ) + λ d ( k ) ) f(\bold{x}^{(k)}+\lambda_k\bold{d}^{(k)}) = \min_{\lambda\ge0}f(\bold{x}^{(k)}+\lambda \bold{d}^{(k)}) f(x(k)+λkd(k))=λ0minf(x(k)+λd(k))
最速下降法在一定条件下是收敛的。

最速下降法存在锯齿现象。容易证明,最速下降法极小化目标函数时,相邻两个搜索方向是正交的,因此最速下降法迭代产生的序列 { x ( k ) } \{x^{(k)}\} {x(k)}所循路径是“之”字形的,当 x ( k ) \bold{x}^{(k)} x(k)接近极小点 x ˉ \bar{\bold{x}} xˉ时,每次迭代移动的步长很小,这样就呈现出锯齿现象,因此影响了收敛速率。因此,最速下降方向反映了目标函数的一种局部性质。从局部看,最速下降方向的确是函数值下降最快的方向,选择这样的方向进行搜索是有利的。但从全局看,由于锯齿现象的影响,即使向着极小点移近不太大的距离,也要经历不小的弯路,因此使收敛速率大为减慢。最速下降法并不是收敛最快的方法,相反,从全局来看,他的收敛是比较慢的。因此,最速下降法一般适用于计算过程的前期迭代或作为间插步骤。

牛顿法

假设 f ( x ) f(\bold{x}) f(x)是二次可微实函数,设 x ( k ) \bold{x}^{(k)} x(k) f ( x ) f(\bold{x}) f(x)极小点的一个估计,我们把 f ( x ) f(\bold{x}) f(x) x ( k ) \bold{x}^{(k)} x(k)处展成Taylor级数,并取二阶近似:
f ( x ) ≈ ϕ ( x ) = f ( x ( k ) ) + ∇ f ( x ( k ) ) T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) T ∇ 2 f ( x ( k ) ) ( x − x ( k ) ) f(\bold{x})\approx \phi(\bold{x})=f(\bold{x}^{(k)})+\nabla f(\bold{x}^{(k)})^T(\bold{x}-\bold{x}^{(k)})+\frac{1}{2}(\bold{x}-\bold{x}^{(k)})^T\nabla^2f(\bold{x}^{(k)})(\bold{x}-\bold{x}^{(k)}) f(x)ϕ(x)=f(x(k))+f(x(k))T(xx(k))+21(xx(k))T2f(x(k))(xx(k))

∇ ϕ ( x ) = 0 \nabla\phi(\bold{x}) = 0 ϕ(x)=0
有:
∇ f ( x ( k ) ) + ∇ 2 f ( x ( k ) ) ( x − x ( k ) ) = 0 \nabla f(\bold{x}^{(k)}) + \nabla^2f(\bold{x}^{(k)})(\bold{x}-\bold{x}^{(k)})=0 f(x(k))+2f(x(k))(xx(k))=0
得到迭代公式:
x ( k + 1 ) = x ( k ) − ∇ 2 f ( x ( k ) ) − 1 ∇ f ( x ( k ) ) \bold{x}^{(k+1)}=\bold{x}^{(k)}-\nabla^2f(\bold{x}^{(k)})^{-1}\nabla f(\bold{x}^{(k)}) x(k+1)=x(k)2f(x(k))1f(x(k))
其中 ∇ 2 f ( x ( k ) ) − 1 \nabla^2f(\bold{x}^{(k)})^{-1} 2f(x(k))1是Hesse矩阵 ∇ 2 f ( x ( k ) ) \nabla^2f(\bold{x}^{(k)}) 2f(x(k))的逆矩阵(如果存在的话)

值得注意,当初始点远离极小点时,牛顿法可能不收敛,因为牛顿方向
d = − ∇ 2 f ( x ( k ) ) − 1 ∇ f ( x ( k ) ) \bold{d} =-\nabla^2f(\bold{x}^{(k)})^{-1}\nabla f(\bold{x}^{(k)}) d=2f(x(k))1f(x(k))
不一定是下降方向,经迭代,目标函数值可能上升。此外,即使目标函数值下降,得到的点也不一定是沿牛顿方向的最好点或极小点。

阻尼牛顿法

该方法在标准的牛顿法的迭代公式上增加了沿牛顿方向的一维搜索,具体的迭代公式为:
x ( k + 1 ) = x ( k ) + λ k d ( k ) \bold{x}^{(k+1)} = \bold{x}^{(k)}+\lambda_k\bold{d}^{(k)} x(k+1)=x(k)+λkd(k)
其中 d ( k ) \bold{d}^{(k)} d(k)为牛顿方向, λ k \lambda_k λk为一维搜索得到的步长。

拟牛顿法

牛顿法的优点是收敛速度快。但是,运用牛顿法需要计算二阶偏导数以及Hesse矩阵的逆矩阵,而且目标函数的Hesse矩阵可能非正定。因此提出了拟牛顿法。基本思想是用不包含二阶导数的矩阵近似牛顿法中的Hesse矩阵的逆矩阵。具体的推导这里先不记录了,后续在补充。

拟牛顿法主要有两个典型的算法:DFP算法和BFGS公式。

参考

最优化 理论与算法(第2版)

你可能感兴趣的:(学习记录,算法,机器学习)