在最优化算法中,都是要求一个函数的极小值,每一步迭代中,都要求目标函数值是下降的,而信赖域法,顾名思义,就是从初始点开始,先假设一个可以信赖的最大位移 s,然后在以当前点为中心,以 s 为半径的区域内,通过寻找目标函数的一个近似函数(二次的)的最优点,来求解得到真正的位移。在得到了位移之后,再计算目标函数值,如果其使目标函数值的下降满足了一定条件,那么就说明这个位移是可靠的,则继续按此规则迭代计算下去;如果其不能使目标函数值的下降满足一定的条件,则应减小信赖域的范围,再重新求解。其数学模型如下所示:
{ m i n m k ( s ) = f k + g k T s + 1 2 s T G k s s . t . ∣ ∣ s ∣ ∣ ≤ h k \left\{\begin{matrix} min &m_k(s)=f_k+{g_k}^Ts +\frac{1}{2}s^TG_ks & \\ s.t. & ||s|| \leq h_k& \end{matrix}\right. {mins.t.mk(s)=fk+gkTs+21sTGks∣∣s∣∣≤hk
其中,第一个式子就是我们用于模拟目标函数的二次模型,其自变量为 s,也就是我们要求的位移。 g k g_k gk 为梯度, G k G_k Gk 为Hesse矩阵,袁亚湘的书上说,如果Hesse矩阵不好计算,可以利用“有限差分”来近似 G k G_k Gk, 或者用拟牛顿方法来构造Hesse矩阵的近似矩阵。
第二个式子中的 h k h_k hk 是第 k 次迭代的信赖域上界(或称为信赖域半径),因此第二个式子表示的就是位移要在信赖域上界范围内。
通过衡量二次模型与目标函数的近似程度,可以作出判定是否需要扩大信了:
定义比值: r k = Δ f k Δ m k r_k=\frac{Δf_k}{Δm_k} rk=ΔmkΔfk
这个比值可以用于衡量二次模型与目标函数的近似程度,显然 r 值越接近1越好。
泰勒公式是一个用函数在某点的信息描述其附近取值的公式。如果函数满足一定的条件,泰勒公式可以用函数在某一点的各阶导数值做系数构建一个多项式来近似表达这个函数。
f ( x ) = ∑ i = 0 n f ( i ) ( x 0 ) i ! ( x − x 0 ) i f(x)=\sum_{i=0}^{n}\frac{f^{(i)}(x_0)}{i!}(x-x_0)^i f(x)=∑i=0ni!f(i)(x0)(x−x0)i
其中, x ∈ ( x 0 − Δ x , x 0 + Δ x ) x∈(x_0-\Delta x,x_0+\Delta x) x∈(x0−Δx,x0+Δx)。
(1)广义定义
设M是n阶方阵,如果对任何非零向量z,都有 z T M z > 0 z^TMz> 0 zTMz>0,其中 z T z^T zT 表示z的转置,就称M为正定矩阵。
例如:B为n阶矩阵,E为单位矩阵,a为正实数。在a充分大时,aE+B为正定矩阵。(B必须为对称阵)。
(2)狭义定义
一个n阶的实对称矩阵M是正定的的条件是当且仅当对于所有的非零实系数向量z,都有 z T M z > 0 z^TMz> 0 zTMz>0。其中zT表示z的转置。
(3)正定矩阵的性质
(4)正定矩阵的特征
在向量分析中,雅可比矩阵是函数的一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。在代数几何中,代数曲线的雅可比行列式表示雅可比簇:伴随该曲线的一个代数群,曲线可以嵌入其中。它们全部都以数学家卡尔·雅可比命名;
假设某函数从 R n R^n Rn 映到 R m R^m Rm, 其雅可比矩阵是从 R n R^n Rn 到 R m R^m Rm的线性映射,其重要意义在于它表现了一个多变数向量函数的最佳线性逼近。因此,雅可比矩阵类似于单变数函数的导数。
假设 R n → R m R^n\rightarrow R^m Rn→Rm 是一个从n维欧氏空间映射到到m维欧氏空间的函数。这个函数由m个实函数组成: y 1 ( x 1 , . . . , x n ) , . . . , y m ( x 1 , . . . , x n ) y_1(x_1,...,x_n),...,y_m(x_1,...,x_n) y1(x1,...,xn),...,ym(x1,...,xn)。这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵,这个矩阵就是所谓的雅可比矩阵:
( ∂ y 1 ∂ x 1 . . . ∂ y 1 ∂ x n . . . ∂ y m ∂ x 1 . . . ∂ y m ∂ x n ) \begin{pmatrix} \frac{\partial y_1}{\partial x_1} & ... & \frac{\partial y_1}{\partial x_n}\\ . & . & .\\ \frac{\partial y_m}{\partial x_1} & ... & \frac{\partial y_m}{\partial x_n}\end{pmatrix} ⎝⎛∂x1∂y1.∂x1∂ym.......∂xn∂y1.∂xn∂ym⎠⎞。
记作, J F ( x 1 , . . . , x n ) J_F(x_1,...,x_n) JF(x1,...,xn) 或 ∂ ( y 1 , . . . , y m ) ∂ ( x 1 , . . . , x n ) \frac{\partial (y_1,...,y_m)}{\partial (x_1,...,x_n)} ∂(x1,...,xn)∂(y1,...,ym)。
如果p是中的一点,F在 p点可微分,根据高等微积分, J F ( p ) J_F(p) JF(p) 是在这点的导数。在此情况下,这个线性映射即F在点p附近的最优线性逼近,也就是说当x足够靠近点p时,我们有
F ( x ) ≈ F ( p ) + J F ( p ) ⋅ ( x − p ) F(x)\approx F(p)+J_F(p)\cdot (x-p) F(x)≈F(p)+JF(p)⋅(x−p)
(1) l p − 范 数 l_p-范数 lp−范数 的定义
(2) l 0 − 范 数 l_0-范数 l0−范数 的定义
(3) l 1 − 范 数 l_1-范数 l1−范数 的定义
(4) l 2 − 范 数 l_2-范数 l2−范数 的定义
设误差函数为 f ( x ) f(x) f(x),则损失函数 F ( x ) F(x) F(x) 为:
F ( x ) = 1 2 ∑ i = 1 m ( f ( x i ) ) 2 = 1 2 ∣ ∣ f ( x ) ∣ ∣ 2 = 1 2 f T ( x ) f ( x ) F(x)=\frac{1}{2}\sum_{i=1}^{m}(f(x_i))^2=\frac{1}{2}||f(x)||^2=\frac{1}{2}f^T(x)f(x) F(x)=21∑i=1m(f(xi))2=21∣∣f(x)∣∣2=21fT(x)f(x)
目标为对于向量函数 f ( x ) : R n − − > R m f(x): R_n --> R_m f(x):Rn−−>Rm 其中 m>=n . 我们希望最小化 ∣ ∣ f ( x ) ∣ ∣ ||f(x)|| ∣∣f(x)∣∣,即
x ∗ = a r g m i n x F ( x ) x^*=argmin_x{F(x)} x∗=argminxF(x)。
首先对于 f ( x ) f(x) f(x) 进行泰勒展开,有
f ( x + h ) = f ( x ) + J ( x ) ∗ h + o ( ∣ ∣ h ∣ ∣ 2 ) f(x+h)=f(x)+J(x)*h+o(||h||^2) f(x+h)=f(x)+J(x)∗h+o(∣∣h∣∣2)
其中, ( J ( x ) ) i j = ∂ f i ∂ x j ( x ) (J(x))_{ij}=\frac{\partial f_i}{\partial x_j}(x) (J(x))ij=∂xj∂fi(x) , J ∈ R m × n J∈R^{m×n} J∈Rm×n 是雅克比矩阵(Jacobian matrix),它包含函数 f ( x ) f(x) f(x) 分量一阶导数的矩阵。
又
∂ F ∂ x j ( x ) = ∑ i = 1 m f i ( x ) ∂ f i ∂ x j ( x ) \frac{\partial F}{\partial x_j}(x)=\sum_{i=1}^{m}f_i(x)\frac{\partial f_i}{\partial x_j}(x) ∂xj∂F(x)=∑i=1mfi(x)∂xj∂fi(x)
故得到 F ( x ) F(x) F(x) 的一阶偏导为
F ′ ( x ) = J ( x ) T f ( x ) {F}'(x)=J(x)^Tf(x) F′(x)=J(x)Tf(x)
同理,由对于 F ( x ) F(x) F(x) 的黑塞矩阵(Hessian matrix) 中第j行k列的元素有,
∂ 2 F ∂ x j ∂ x k ( x ) = ∑ i = 1 m ( ∂ f i ∂ x j ( x ) ∂ f i ∂ x k ( x ) + f i ( x ) ∂ 2 f i ∂ x j ∂ x k ( x ) ) \frac{\partial^2 F}{\partial x_j\partial x_k}(x)=\sum_{i=1}^{m}(\frac{\partial f_i}{\partial x_j}(x)\frac{\partial f_i}{\partial x_k}(x)+f_i(x)\frac{\partial ^2f_i}{\partial x_j\partial x_k}(x)) ∂xj∂xk∂2F(x)=∑i=1m(∂xj∂fi(x)∂xk∂fi(x)+fi(x)∂xj∂xk∂2fi(x))
得到 F ( x ) F(x) F(x) 的二阶偏导为
F ′ ′ ( x ) = J ( x ) T J ( x ) + ∑ i = 1 m f i ( x ) f i ′ ′ ( x ) {F}''(x)=J(x)^TJ(x)+\sum_{i=1}^{m}f_i(x){f}''_i(x) F′′(x)=J(x)TJ(x)+∑i=1mfi(x)fi′′(x)
最快梯度下降法方法忽略了二阶导数项,最终阶段为线性收敛,且速度较慢,因此,更多时候是将其作为优化初始阶段所采用方法。而牛顿法使用了二阶导数,最终阶段收敛速度快,收敛性好,但不适合初始阶段。因此常将其与最快梯度下降法结合使用。由前面的内容,我们已经知道对于 f ( x ) f(x) f(x) 进行泰勒展开有
f ( x + h ) ≃ l ( h ) ≡ f ( x ) + J ( x ) h f(x+h)\simeq l(h)\equiv f(x)+J(x)h f(x+h)≃l(h)≡f(x)+J(x)h
则有
F ( x + h ) ≃ L ( h ) ≡ 1 2 f ( x + h ) T f ( x + h ) = 1 2 l ( h ) T l ( h ) F(x+h)\simeq L(h)\equiv \frac{1}{2}f(x+h)^Tf(x+h)=\frac{1}{2}l(h)^Tl(h) F(x+h)≃L(h)≡21f(x+h)Tf(x+h)=21l(h)Tl(h)
即
F ( x + h ) ≡ 1 2 f ( x ) T f ( x ) + h T J ( x ) T f ( x ) + 1 2 h T J ( x ) T J ( x ) h = F ( x ) + h T J ( x ) T f ( x ) + 1 2 h T J ( x ) T J ( x ) h F(x+h)\equiv \frac{1}{2}f(x)^Tf(x)+h^TJ(x)^Tf(x)+\frac{1}{2}h^TJ(x)^TJ(x)h=F(x)+h^TJ(x)^Tf(x)+\frac{1}{2}h^TJ(x)^TJ(x)h F(x+h)≡21f(x)Tf(x)+hTJ(x)Tf(x)+21hTJ(x)TJ(x)h=F(x)+hTJ(x)Tf(x)+21hTJ(x)TJ(x)h
故有
L ′ ( h ) = J ( x ) T f ( x ) + J ( x ) T J ( x ) h {L}'(h)=J(x)^Tf(x)+J(x)^TJ(x)h L′(h)=J(x)Tf(x)+J(x)TJ(x)h
L ′ ′ ( h ) = J ( x ) T J ( x ) {L}''(h)=J(x)^TJ(x) L′′(h)=J(x)TJ(x)
当 h = 0 h =0 h=0 时有,
L ′ ( 0 ) = J ( x ) T f ( x ) = F ′ ( x ) {L}'(0)=J(x)^Tf(x)={F}'(x) L′(0)=J(x)Tf(x)=F′(x)
当 J ( x ) J(x) J(x)满秩时,有 L ′ ( h g n ) = 0 L'(h_{gn})=0 L′(hgn)=0 时有 J ( x ) T J ( x ) h g n = − J ( x ) T f ( x ) J(x)^TJ(x)h_{gn}=-J(x)^Tf(x) J(x)TJ(x)hgn=−J(x)Tf(x),则对于 F ( x ) F(x) F(x) 有,
h g n T F ′ ( x ) = h g n T ( J T f ( x ) ) = − h g n T ( J ( x ) T J ( x ) h g n ) < 0 h_{gn}^TF'(x) =h_{gn}^T(J^Tf(x))=-h_{gn}^T(J(x)^TJ(x)h_{gn})<0 hgnTF′(x)=hgnT(JTf(x))=−hgnT(J(x)TJ(x)hgn)<0
故,我们可以得到梯度下降方向 h d = h g n h_d=h_{gn} hd=hgn ,迭代 x : = x + α h g n x:=x+\alpha h_{gn} x:=x+αhgn。
其中,步径 α \alpha α 通过直线搜索得到,对于经典的 Gauss-Newton method 采用 α = 1 \alpha=1 α=1 。直线搜索的方法保证收敛性,需满足以下两个条件:
故,当 f ( x ∗ ) = 0 f(x^*)=0 f(x∗)=0 时,对离最优解 x ∗ x^* x∗ 很近的 x 来说 L ′ ′ ( h ) 约 等 于 F ′ ′ ( x ) L''(h) 约等于 F''(x) L′′(h)约等于F′′(x)。但是牛顿法需要时刻计算 H H H 矩阵,即二阶导数信息,是计算量很大的一件事情,而LM算法则提出用雅可比矩阵(易计算)近似代替H矩阵的计算,使得优化效率得到提升。
LM算法关键是用模型函数 fm对待估参数向量 p 在其邻域内做线性近似,忽略掉二阶以上的导数项,从而转化为线性最小二乘问题,它具有收敛速度快等优点。LM算法的通俗描述为,“如果目标函数值增大,则调整某系数再继续求解;如果目标函数值减小,则调整某系数再继续求解”的迭代过程,这种过程与上面所说的信赖域法是非常相似的,所以LM算法属于一种“信赖域法”。但LM算法需要对每一个待估参数求偏导,所以,如果你的目标函数 f 非常复杂,或者待估参数相当地多,那么可能不适合使用LM算法,而可以选择Powell算法——Powell算法不需要求导。LM算法的数学模型为:
{ m i n m k ( s ) = f k + g k T s + 1 2 s T G k s s . t . ∣ ∣ s ∣ ∣ 2 ≤ h k \left\{\begin{matrix} min &m_k(s)=f_k+{g_k}^Ts +\frac{1}{2}s^TG_ks & \\ s.t. & ||s||_2 \leq h_k& \end{matrix}\right. {mins.t.mk(s)=fk+gkTs+21sTGks∣∣s∣∣2≤hk
LM算法是介于牛顿法与梯度下降法之间的一种非线性优化方法,对于过参数化问题不敏感,能有效处理冗余参数问题,使代价函数陷入局部极小值的机会大大减小,这些特性使得LM算法在计算机视觉等领域得到广泛应用。LM算法中用雅可比矩阵近似代替H矩阵的计算来提升效率。其对应的搜索方向为
( J ( x ) T J ( x ) + μ I ) h l m = − g = − J ( x ) T f ( x ) (J(x)^TJ(x)+\mu I)h_{lm}=-g=-J(x)^Tf(x) (J(x)TJ(x)+μI)hlm=−g=−J(x)Tf(x)
其中, μ \mu μ 需大于等于0,对应不同的取值范围下亦有不同的效果:
h l m ≃ − 1 μ g = − 1 μ F ′ ( x ) h_{lm}\simeq -\frac{1}{\mu}g=-\frac{1}{\mu}F'(x) hlm≃−μ1g=−μ1F′(x)
此时,退化为步长较小的梯度下降法。
故引入了一中 μ \mu μ 的评价标准
ρ = F ( x ) − F ( x + h l m ) L ( 0 ) − L ( h l m ) \rho =\frac{F(x)-F(x+h_{lm})}{L(0)-L(h_{lm})} ρ=L(0)−L(hlm)F(x)−F(x+hlm)
当 0.25 < ρ < 0.75 0.25< \rho< 0.75 0.25<ρ<0.75 时, μ \mu μ 趋近于1;
当 0.75 < ρ 0.75< \rho 0.75<ρ 时, μ \mu μ 小于 1;
当 ρ < 0.25 \rho< 0.25 ρ<0.25 时, μ \mu μ 大于1;
参考:
数学知识–Methods for Non-Linear Least Squares Problems(第三章)
信赖域(Trust Region)算法是怎么一回事
选主元的高斯-约当(Gauss-Jordan)消元法解线性方程组/求逆矩阵
LM算法
如何通俗易懂地解释「范数」