数值优化(Numerical Optimization)学习系列-非线性方程(Nonlinear Equation)

概述

实际中很多应用不是寻找最优解,而是寻找一个根满足给定的约束条件,如果有n个非线性等式约束,就是本节介绍的非线性方程问题,本节主要介绍
1. 非线性方程的问题形式
2. 非线性方程的求解算法
3. 总结

非线性方程的问题形式

问题形式,寻找满足n个非线性等式的根,即

r(x)=0

其中 r(x)=[r1(x),...rn(x)]T
该问题可以转换为求解 mini=1...nr2i(x) ,根据最优化条件可知,最优解应该满足: f(x)=0=>J(x)r(x)=0

1.该最小化问题等价于最小二乘问题,可以采用非线性最小二乘的求解算法,不同点在于有n个非线性等式。
2. 根据最优性条件,如果雅克比矩阵J(x)是非奇异的,则最优解就是该非线性方程的根;否则最优解可能不会满足r(x)=0
3. 如果对于病态的J(x),即如果秩为n-1或者n-2则最优化算法得到的解会比较差。
4. 最优化问题往往最优解只能得到一个,对于非线性方程可能存在唯一解、有限解、无穷解或者无解。

非线性方程的求解算法

该问题求解算法,主要思路是转换为最优化问题,利用类牛顿方法进行求解。

牛顿方法

类似于最优化问题的牛顿方法,寻找牛顿方向,然后不断迭代。算法如下:
数值优化(Numerical Optimization)学习系列-非线性方程(Nonlinear Equation)_第1张图片

算法流程
1. 每次寻找满足牛顿方程的方向进行迭代。
2. 牛顿方程来源,对r(x)进行泰勒展开,有

r(x+p)=r(x)+J(x)p
相当于定义一个线性模型近似该目标,即
M(p)=r(x)+J(x)p

3. 牛顿方程来源二,看做是最优问题
minf(x)=12||r(x)||2
对应的牛顿方程为
2f(x)p=f(x)
,对应于该问题为
(J(x)TJ(x)p+m(x)p+J(x)Tr(x))=0
,其中r(x)的二阶梯度一般可以省略(参加最小二乘问题),即
J(x)T(J(x)p+r(x))=0
,如果J(x)非奇异有
J(x)p+r(x)=0

4. 对比牛顿方程和线性最小二乘问题,可以看出该方程时如下最小二乘问题的优化目标,即 minf(x)=12||rk+Jkp||2 ,因此可以利用最小二乘相关算法进行求解该等式
5. 该算法的收敛速度为超线性收敛。

该算法的局限性

  1. 当初始点选取不当,离根较远时,算法表现不好。当J奇异时,不一定能找到解。
  2. 雅克比矩阵不一定容易求解
  3. 当n比较大时,牛顿方程不好求解。
  4. 当J是奇异矩阵是,结果不可预知。

改进算法

非精确牛顿方法

不同于牛顿方法,之间寻找满足Jp=-r的牛顿方向,该方法寻找满足如下条件的方向

||rk+JkPk||η||rk||
其中 η 是force sequence,即非递增序列。
算法如下
数值优化(Numerical Optimization)学习系列-非线性方程(Nonlinear Equation)_第2张图片
  1. 算法的收敛速度依赖与参数η的选取
  2. 如果η充分小则为线性收敛;如果η0则为超线性收敛;如果ηk=o(||rk||)二次收敛。

Broyden方法

这是一类拟牛顿方法,思路如下
1. 迭代过程中,近似模型为M(p)=r(x)+Bkp,其中B为雅克比矩阵的近似
2. 根据拟牛顿方程,定义如下

sk=xk+1xk,yk=r(xk+1)r(xk),yk=Bk+1sk
其中该方程也成为割线方程(secant equation)
3. Broyden方法提供了一种比较实用的更新方法,即
Bk+1=Bk+(ykBksk)sTksTksk

4. 该方法收敛速度为超线性收敛
算法步骤为
数值优化(Numerical Optimization)学习系列-非线性方程(Nonlinear Equation)_第3张图片

Tensor方法

张量方法,相当于在线性近似模型的基础上,添加了表示非线性参数。即M(p)=r(x)+Jp+Tpp其中T是一个三维数据相当于r(x)的二阶梯度。

实际算法

在实际应用中,在牛顿算法的基础上,使用线搜索和信赖域进行算法优化。

1.目标函数(Merit Func)不仅仅可以选取平方形式,也可以选取L1正则,即minf(x)=|r(x)|
2. 线搜索,更新步骤为xk+1=xk+αpk
3. 信赖域,优化目标为 minf(x)=12||rk+Jkp||2pΔk
4. 在实际中为解决雅克比矩阵奇异或者病态的问题,搜索方向选取为pk=(JTkJ+λkI)1JTkrk,相当于目标函数添加了L2正则项

连续方法(Continuation Methods)

该方法的思路,如果原始问题求解比较复杂,将其转换为一系列简单的问题,其中一类简单的转换思路为,Homotopy Map:

H(x,λ)=λr(x)+(1λ)(xa)

λ=0x=1λ=1H=0r(x)=0
01λH(x,λ)=0r(x)=0

总结

通过该节的学习,可以了解到
1. 非线性方程如何转换为最优化问题
2. 牛顿方法以及变种求解非线性方程

你可能感兴趣的:(数值优化)