非线性优化:最速下降法、牛顿法、GN法、LM法

非线性优化

对于一个最小非线性二乘问题:
min ⁡ x F ( x ) = 1 2 ∥ f ( x ) ∥ 2 2 \min_xF(x)=\frac{1}{2}\begin{Vmatrix}f(x)\end{Vmatrix}^2_2 xminF(x)=21f(x)22
式中求取函数 f ( x ) f(x) f(x)的L2范数的平方和的一半的最小值,L2范数指对各项取平方和后开方运算。

求解目标函数最小,转化为使其导数为零时的自变量 x x x取值:
d F d x = 0 \frac{dF}{dx}=0 dxdF=0
一般采用迭代法求解,从一个初始值开始,不断迭代更新变量,使得目标函数取值下降:
1. 给 定 初 始 值 x 0 2. 对 于 第 k 次 迭 代 , 寻 找 增 量 Δ x k 使 得 ∥ f ( x k + Δ x k ) ∥ 2 2 达 到 极 小 值 3. 若 Δ x k 足 够 小 , 则 满 足 条 件 停 止 4. 反 之 , x k + 1 = x k + Δ x k , 继 续 迭 代 下 一 轮 \begin{aligned} 1.&给定初始值x_0\\ 2.&对于第k次迭代,寻找增量\Delta x_k使得\begin{Vmatrix}f(x_k+\Delta x_k)\end{Vmatrix}^2_2达到极小值\\ 3.&若\Delta x_k足够小,则满足条件停止\\ 4.&反之,x_{k+1}=x_k+\Delta x_k,继续迭代下一轮\\ \end{aligned} 1.2.3.4.x0kΔxk使f(xk+Δxk)22Δxkxk+1=xk+Δxk
求解增量 Δ x k \Delta x_k Δxk的方式,通常有如下几种:最速下降法、牛顿法、高斯-牛顿法及列文伯格-马夸尔特法等。

最速下降法

考虑第 k k k次迭代,将目标函数进行一阶泰勒展开
F ( x k + Δ x k ) ≈ F ( x k ) + J ( x k ) T Δ x k F(x_k+\Delta x_k)\approx F(x_k)+J(x_k)^T\Delta x_k F(xk+Δxk)F(xk)+J(xk)TΔxk
矩阵 J ( x k ) J(x_k) J(xk)为函数 F ( x ) F(x) F(x)关于 x x x的一阶导数,称为雅可比矩阵(Jacobian Matrix)。

此时可以选取增量如下:
Δ x ∗ = a r g min ⁡ ( F ( x k ) + J ( x k ) T Δ x k ) \Delta x^*=arg\min\Bigl(F(x_k)+J(x_k)^T\Delta x_k\Bigr) Δx=argmin(F(xk)+J(xk)TΔxk)
右侧对$\Delta x_k $求导取零:
Δ x ∗ = − J ( x k ) \Delta x^*=-J(x_k) Δx=J(xk)
通常,还需要进一步定义一个步长 λ \lambda λ,从而沿着方向梯度方向前进,使得目标函数在一阶线性近似下得到下降。最速下降法过于贪心,导致其下降路线容易形成锯齿路线(走格子边缘),从而增加迭代次数。

牛顿法

考虑第 k k k次迭代,将目标函数进行二阶泰勒展开
F ( x k + Δ x k ) ≈ F ( x k ) + J ( x k ) T Δ x k + 1 2 Δ x k T H ( x k ) Δ x k F(x_k+\Delta x_k)\approx F(x_k)+J(x_k)^T\Delta x_k+\frac{1}{2}\Delta x_k^TH(x_k)\Delta x_k F(xk+Δxk)F(xk)+J(xk)TΔxk+21ΔxkTH(xk)Δxk
矩阵 H ( x k ) H(x_k) H(xk)为函数 F ( x ) F(x) F(x)关于 x x x的二阶导数,称为海森矩阵(Hessian Matrix),此时取增量如下:
Δ x ∗ = a r g min ⁡ ( F ( x k ) + J ( x k ) T Δ x k + 1 2 Δ x k T H ( x k ) Δ x k ) \Delta x^*=arg\min\Bigl( F(x_k)+J(x_k)^T\Delta x_k+\frac{1}{2}\Delta x_k^TH(x_k)\Delta x_k\Bigr) Δx=argmin(F(xk)+J(xk)TΔxk+21ΔxkTH(xk)Δxk)
同样,右侧求导取零:
H ( x k ) Δ x k = − J ( x k ) H(x_k)\Delta x_k=-J(x_k) H(xk)Δxk=J(xk)
求解上述线性方程,即可得到增量表达。牛顿法需要耗费大量算力求解 H H H,应避免此问题发生。

通常采用拟牛顿法进行求解最小二乘问题。

高斯-牛顿法(GN)

对于一个目标函数 F ( x ) F(x) F(x)
min ⁡ x F ( x ) = 1 2 ∥ f ( x ) ∥ 2 2 \min_xF(x)=\frac{1}{2}\begin{Vmatrix}f(x)\end{Vmatrix}^2_2 xminF(x)=21f(x)22
GN法通过将 f ( x ) f(x) f(x)进行泰勒展开,代替对 F ( x ) F(x) F(x)目标展开,从而提高效率。
f ( x k + Δ x k ) ≈ f ( x k ) + J ( x k ) T Δ x k f(x_k+\Delta x_k)\approx f(x_k)+J(x_k)^T\Delta x_k f(xk+Δxk)f(xk)+J(xk)TΔxk
此时,求解增量使得 ∥ f ( x + Δ x k ) ∥ 2 \begin{Vmatrix}f(x+\Delta x_k)\end{Vmatrix}^2 f(x+Δxk)2最小:
Δ x ∗ = a r g min ⁡ x 1 2 ∥ f ( x k ) + J ( x k ) T Δ x k ∥ 2 \Delta x^* = arg\min_{x}\frac{1}{2}\begin{Vmatrix}f(x_k)+J(x_k)^T\Delta x_k\end{Vmatrix}^2 Δx=argxmin21f(xk)+J(xk)TΔxk2
对表达式进行化简:
1 2 ∥ f ( x k ) + J ( x k ) T Δ x k ∥ 2 = 1 2 ( f ( x k ) + J ( x k ) T Δ x k ) T ( f ( x k ) + J ( x k ) T Δ x k ) = 1 2 ( ∥ f ( x k ) ∥ 2 2 + 2 f ( x k ) J ( x ) T Δ x k + Δ x k T J ( x k ) J ( x k ) T Δ x k ) \begin{aligned} \frac{1}{2}\begin{Vmatrix}f(x_k)+J(x_k)^T\Delta x_k\end{Vmatrix}^2&=\frac{1}{2}\Bigl(f(x_k)+J(x_k)^T\Delta x_k\Bigr)^T\Bigl(f(x_k)+J(x_k)^T\Delta x_k\Bigr)\\ &=\frac{1}{2}\Bigl(\begin{Vmatrix}f(x_k)\end{Vmatrix}^2_2+2f(x_k)J(x)^T\Delta x_k+\Delta x_k^TJ(x_k)J(x_k)^T\Delta x_k\Bigr) \end{aligned} 21f(xk)+J(xk)TΔxk2=21(f(xk)+J(xk)TΔxk)T(f(xk)+J(xk)TΔxk)=21(f(xk)22+2f(xk)J(x)TΔxk+ΔxkTJ(xk)J(xk)TΔxk)
求解使其最小的 x x x即为对 Δ x \Delta x Δx求导为零:
J ( x k ) f ( x k ) + J ( x k ) J T ( x k ) Δ x k = 0 J ( x k ) J T ( x k ) Δ x k = − J ( x k ) f ( x k ) \begin{aligned} J(x_k)f(x_k)+J(x_k)J^T(x_k)\Delta x_k =0\\ J(x_k)J^T(x_k)\Delta x_k=-J(x_k)f(x_k) \end{aligned} J(xk)f(xk)+J(xk)JT(xk)Δxk=0J(xk)JT(xk)Δxk=J(xk)f(xk)
H ( x k ) = J ( x k ) J T ( x k ) H(x_k)=J(x_k)J^T(x_k) H(xk)=J(xk)JT(xk) g ( x k ) = − J ( x k ) f ( x k ) g(x_k)=-J(x_k)f(x_k) g(xk)=J(xk)f(xk),从而得到关于 Δ x k \Delta x_k Δxk的线性方程组:
H ( x k ) Δ x k = g ( x k ) H(x_k)\Delta x_k=g(x_k) H(xk)Δxk=g(xk)
称其为增量方程,或高斯牛顿方程(Gauss-Newton Equation),正规方程(Normal Equation)。GN法采用 J J T JJ^T JJT近似牛顿法中二阶海森矩阵 H H H,从而避免大量的计算,该算法流程如下:
1. 给 定 初 始 值 x 0 2. 对 第 k 次 迭 代 , 求 雅 可 比 矩 阵 J ( x k ) 和 误 差 f ( x k ) 3. 求 解 增 量 方 程 : H Δ x k = g 4. 若 Δ x k 足 够 小 , 则 满 足 条 件 停 止 5. 反 之 , x k + 1 = x k + Δ x k , 继 续 迭 代 下 一 轮 \begin{aligned} 1.&给定初始值x_0\\ 2.&对第k次迭代,求雅可比矩阵J(x_k)和误差f(x_k)\\ 3.&求解增量方程:H\Delta x_k=g\\ 4.&若\Delta x_k足够小,则满足条件停止\\ 5.&反之,x_{k+1}=x_k+\Delta x_k,继续迭代下一轮\\ \end{aligned} 1.2.3.4.5.x0kJ(xk)f(xk)HΔxk=gΔxkxk+1=xk+Δxk

对于增量方程的求解,应满足矩阵 H H H可逆,但 J J T JJ^T JJT为半正定矩阵,可能出现奇异矩阵或病态情况,导致算法不收敛。

列文伯格-马夸尔特法在一定程度上修正了上述问题。

列文伯格-马夸尔特法(LM)

LM法的收敛速度慢于GN法,但其健壮性更强,又被称为阻尼牛顿法(Damped Newton Method)

GN法二阶泰勒展开以近似线性化,其效果仅在展开点附近存在较好近似效果。因此应对 Δ x k \Delta x_k Δxk添加一个区间范围,称为信赖区间(Trust Region)。认为在信赖区间内近似有效而近似区间外无效。

采用近似模型同实际函数间的差异确定信赖区间范围:
ρ = f ( x k + Δ x k ) − f ( x k ) J ( x k ) T Δ x \rho=\frac{f(x_k+\Delta x_k)-f(x_k)}{J(x_k)^T\Delta x} ρ=J(xk)TΔxf(xk+Δxk)f(xk)
指标 ρ \rho ρ用于刻画近似的好坏程度,其中,分母为近似模型下降的值,分子为实际函数下降的值。

ρ \rho ρ接近1,则近似效果好,应扩大近似范围; ρ \rho ρ较小,则近似效果差,应缩小近似范围。由此,构建LM算法模型:
1. 给 定 初 始 值 x 0 以 及 初 始 优 化 半 径 μ 2. 对 第 k 次 迭 代 , 在 G N 法 的 基 础 上 增 加 信 赖 区 域 : min ⁡ Δ x k 1 2 ∥ f ( x k ) + J ( x k ) T Δ x k ∥ 2 , s . t . ∥ D Δ x k ∥ 2 ≤ μ , 其 中 , μ 为 信 赖 区 间 半 径 , D 为 系 数 矩 阵 3. 计 算 指 标 : ρ = f ( x k + Δ x k ) − f ( x k ) J ( x k ) T Δ x 4. 若 ρ > 0.75 , 则 设 置 μ = 2 μ 5. 若 ρ < 0.25 , 则 设 置 μ = 0.5 μ 6. 若 ρ 处 于 某 阈 值 区 间 , 则 认 为 近 似 可 行 , x k + 1 = x k + Δ x k 7. 判 断 是 否 收 敛 , 若 收 敛 则 结 束 , 反 之 返 回 第 二 步 迭 代 \begin{aligned} 1.&给定初始值x_0以及初始优化半径\mu\\ 2.&对第k次迭代,在GN法的基础上增加信赖区域:\\ &\qquad\qquad\min_{\Delta x_k}\frac{1}{2}\begin{Vmatrix}f(x_k)+J(x_k)^T\Delta x_k\end{Vmatrix}^2,\quad s.t.\quad \begin{Vmatrix}D\Delta x_k\end{Vmatrix}^2\leq\mu, \\ &\qquad\qquad 其中,\mu为信赖区间半径,D为系数矩阵\\ 3.&计算指标:\rho=\frac{f(x_k+\Delta x_k)-f(x_k)}{J(x_k)^T\Delta x}\\ 4.& 若\rho>0.75,则设置\mu=2\mu\\ 5.& 若\rho<0.25,则设置\mu=0.5\mu\\ 6.& 若\rho处于某阈值区间,则认为近似可行,x_{k+1}=x_k+\Delta x_k\\ 7.&判断是否收敛,若收敛则结束,反之返回第二步迭代\\ \end{aligned} 1.2.3.4.5.6.7.x0μkGNΔxkmin21f(xk)+J(xk)TΔxk2,s.t.DΔxk2μ,μDρ=J(xk)TΔxf(xk+Δxk)f(xk)ρ>0.75μ=2μρ<0.25μ=0.5μρxk+1=xk+Δxk
此处,将增量取值限定在半径为 μ \mu μ的球中( ∥ Δ x k ∥ 2 ≤ μ \begin{Vmatrix}\Delta x_k\end{Vmatrix}^2\leq\mu Δxk2μ),增加系数矩阵后,可视其为一个椭球( ∥ D Δ x k ∥ 2 ≤ μ \begin{Vmatrix}D\Delta x_k\end{Vmatrix}^2\leq\mu DΔxk2μ)。

列文伯格取 D = I D=I D=I,也即将增量约束在球中。而马夸尔特则将 D D D取为非负数对角阵(实际中通常取 J T J J^TJ JTJ对角元素平方根),从而使得梯度小的维度上约束范围更大。

构建拉格朗日方程,将约束项放入目标函数:
L ( Δ x k , λ ) = 1 2 ∥ f ( x k ) + J ( x k ) T Δ x k ∥ 2 + λ 2 ( ∥ D Δ x k ∥ 2 − μ ) L(\Delta x_k, \lambda)=\frac{1}{2}\begin{Vmatrix}f(x_k)+J(x_k)^T\Delta x_k\end{Vmatrix}^2+\frac{\lambda}{2}\Bigl(\begin{Vmatrix}D\Delta x_k\end{Vmatrix}^2-\mu\Bigr) L(Δxk,λ)=21f(xk)+J(xk)TΔxk2+2λ(DΔxk2μ)
λ \lambda λ为拉格朗日乘子,求其关于 Δ x k \Delta x_k Δxk的导数为零:
( H + λ D T D ) Δ x k = g (H+\lambda D^TD)\Delta x_k =g (H+λDTD)Δxk=g
当参数 λ \lambda λ较小时, H H H占据主要地位,二次近似模型在范围内较好,LM法接近于GN法;当参数 λ \lambda λ较大时, λ D T D \lambda D^TD λDTD占据主要地位,二次近似模型在范围内较差,LM法接近于最速下降法。

LM法在一定程度上,可避免线性方程组的系数矩阵非奇异、病态问题,提供更稳定、更准确的增量 Δ x k \Delta x_k Δxk

常见的非线性求解方法还包含狗腿法DogLeg等。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值