【最优化】牛顿法、高斯-牛顿法

一、牛顿法

1、牛顿法在一维搜索中的应用

在这里插入图片描述
在一维搜索中我们所要解决的问题是如何找函数f(x)的最小值。
牛顿法的核心思想是用二次函数拟合函数f(x)的某一邻域区间,用二次函数的极小值点作为下一次的迭代点。通过多次迭代使得二次函数的极小值逼近函数f(x)的极小值
g ( x ) = f ( x ( k ) ) + f ′ ( x ( k ) ) ( x − x ( k ) ) + 1 2 f ′ ′ ( x ( k ) ) ( x − x ( k ) ) 2 g ( x ) ≈ f ( x ) , 求 f ( x ) 最小值 ≈ 求 g ( x ) 最小值 g ′ ( x ) = f ′ ( x ( k ) ) + f ′ ′ ( x ( k ) ) ( x − x ( k ) ) 令 g ′ ( x ) = 0 , x = x ( k ) − f ′ ( x ( k ) ) f ′ ′ ( x ( k ) ) 只有在 f ′ ′ ( x ) > 0 时成立, f ′ ( x ) = 0 只能保证该点为极值点, f ′ ′ ( x ) > 0 保证该点为极小值点 \begin{aligned} &g(x) = f(x^{(k)})+f'(x^{(k)})(x-x^{(k)})+\frac{1}{2}f''(x^{(k)})(x-x^{(k)})^2 \\ &g(x)\approx f(x),求f(x)最小值 \approx 求g(x)最小值 \\ &g'(x)=f'(x^{(k)})+f''(x^{(k)})(x-x^{(k)})\\ &令g'(x)=0,x = x^{(k)}-\frac{f'(x^{(k)})}{f''(x^{(k)})}\\ &只有在f''(x)>0时成立,f'(x)=0只能保证该点为极值点,f''(x)>0保证该点为极小值点 \end{aligned} g(x)=f(x(k))+f(x(k))(xx(k))+21f′′(x(k))(xx(k))2g(x)f(x),f(x)最小值g(x)最小值g(x)=f(x(k))+f′′(x(k))(xx(k))g(x)=0,x=x(k)f′′(x(k))f(x(k))只有在f′′(x)>0时成立,f(x)=0只能保证该点为极值点,f′′(x)>0保证该点为极小值点

2、牛顿法在多维函数中的应用

多维的情况与一维类似,如果是二维函数,拟合的是一个二次曲面,用二次曲面的最低点作为下一次的迭代点。
g ( X ) = f ( X ( k ) ) + ( X − X ( k ) ) ∇ f ′ ( X ( k ) ) + 1 2 ( X − X ( k ) ) T ∇ 2 f ( X ( k ) ) ( X − X ( k ) ) g ( X ) ≈ f ( X ) , 求 f ( X ) 最小值 ≈ 求 g ( X ) 最小值 令 ∇ g ( X ) = ∇ f ( X ( k ) ) + ∇ f ( X ( k ) ) ( X − X ( k ) ) = 0 如果 ∇ 2 f ( X ) > 0 ( 正定矩阵 ) , X = X ( k ) − [ ∇ f ( x ( k ) ) ] − 1 ∇ f ( x ( k ) ) \begin{aligned} &g(X) = f(X^{(k)})+(X-X^{(k)})\nabla f'(X^{(k)})+\frac{1}{2}(X-X^{(k)})^T \nabla ^2f(X^{(k)})(X-X^{(k)}) \\ &g(X)\approx f(X),求f(X)最小值 \approx 求g(X)最小值 \\ &令\nabla g(X)=\nabla f(X^{(k)})+\nabla f(X^{(k)})(X-X^{(k)}) = 0\\ &如果\nabla^2f(X)>0(正定矩阵),X = X^{(k)}-[\nabla f(x^{(k)})]^{-1}\nabla f(x^{(k)})\\ \end{aligned} g(X)=f(X(k))+(XX(k))f(X(k))+21(XX(k))T2f(X(k))(XX(k))g(X)f(X),f(X)最小值g(X)最小值g(X)=f(X(k))+f(X(k))(XX(k))=0如果2f(X)>0(正定矩阵),X=X(k)[f(x(k))]1f(x(k))

3、Levenberg-Marquardt修正

上述方法只有在 H e s s Hess Hess矩阵正定是成立,如果 H e s s Hess Hess矩阵不是正定的要怎么办?
H s e e Hsee Hsee矩阵是实对称矩阵( ∂ f 2 ( X ) ∂ x j ∂ x i = ∂ f 2 ( X ) ∂ x i ∂ x j \frac{\partial f^2(X)}{\partial x_j \partial x_i} = \frac{\partial f^2(X)}{\partial x_i \partial x_j} xjxif2(X)=xixjf2(X)​​),而实对称矩阵一定可以三角化
∇ 2 f ( X ( k ) ) = U T Λ U = [ λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ n ] , U T U = I 如果 ∇ 2 f ( X ( k ) ) 非正定,说明 λ 1 ∼ λ n 中有若干个特征值小于 0 \begin{aligned} \end{aligned}\begin{aligned} &\nabla^2f(X^{(k)})=U^T\Lambda U= \begin{bmatrix} \lambda_1 & 0 & \cdots & 0\\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0&\cdots&\lambda_n \end{bmatrix} ,U^TU=I \\ &如果\nabla^2f(X^{(k)})非正定,说明\lambda_1 \sim \lambda_n中有若干个特征值小于0 \end{aligned} 2f(X(k))=UTΛU= λ1000λ2000λn ,UTU=I如果2f(X(k))非正定,说明λ1λn中有若干个特征值小于0
用最小的特征值 λ m i n ( λ m i n < 0 ) \lambda {min}(\lambda {min}<0) λmin(λmin<0) H e s s Hess Hess​矩阵进行修正
∇ 2 f ( X ( k ) ) = U T Λ U + ( ε − λ m i n ) I = U T [ λ 1 0 ⋯ 0 0 λ 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ n ] U + [ ε − λ m i n 0 ⋯ 0 0 ε − λ m i n ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ ε − λ m i n ] U T U = U T [ λ 1 + ε − λ m i n 0 ⋯ 0 0 λ 2 + ε − λ m i n ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ λ n + ε − λ m i n ] U = U T [ Λ + ( ε − λ m i n ) I ] U \begin{aligned} \end{aligned}\begin{aligned} &\nabla^2f(X^{(k)})=U^T\Lambda U + (\varepsilon - \lambda_{min})I\\ &=U^T \begin{bmatrix} \lambda_1 & 0 & \cdots & 0\\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0&\cdots&\lambda_n \end{bmatrix}U+ \begin{bmatrix} \varepsilon -\lambda_{min} & 0 & \cdots & 0\\ 0 & \varepsilon -\lambda_{min} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0&\cdots& \varepsilon - \lambda_{min} \end{bmatrix} U^TU \\ & = U^T \begin{bmatrix} \lambda_1 + \varepsilon -\lambda_{min}& 0 & \cdots & 0\\ 0 & \lambda_2 + \varepsilon -\lambda_{min} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0&\cdots&\lambda_n+\varepsilon -\lambda_{min} \end{bmatrix}U \\ &=U^T[\Lambda+(\varepsilon-\lambda_{min})I]U \end{aligned} 2f(X(k))=UTΛU+(ελmin)I=UT λ1000λ2000λn U+ ελmin000ελmin000ελmin UTU=UT λ1+ελmin000λ2+ελmin000λn+ελmin U=UT[Λ+(ελmin)I]U
为了不和原始的 H e s s Hess Hess矩阵偏差太大, ε \varepsilon ε越小越好

​ Levenberg-Marquardt修正后,即保证了特征值都是正数,也保留原 H e s s Hess Hess矩阵尽可能多的信息

​ 在工程中,为了减少算法计算的复杂度,不会计算特征值特征向量,而是根据经验值手动设置一个 μ k \mu_k μk,同时还会引入一个步长因子 α \alpha α
X = X ( k ) − α ( k ) [ ∇ 2 f ( X ( k ) ) + μ k I ] − 1 ∇ f ( X ( k ) ) X=X^{(k)}-\alpha^{(k)}[\nabla^2f(X^{(k)})+\mu_kI]^{-1}\nabla f(X^{(k)}) X=X(k)α(k)[2f(X(k))+μkI]1f(X(k))
通过手动调节 μ k \mu_k μk的值,使得 [ ∇ 2 f ( X ( k ) ) + μ k I ] > 0 [\nabla^2f(X^{(k)})+\mu_kI] >0 [2f(X(k))+μkI]>0

​( μ k → 0 \mu_k \rightarrow 0 μk0:趋近原牛顿法; μ k → ∞ \mu_k \rightarrow \infty μk:趋近步长很小的梯度下降法)

二、高斯-牛顿法

1、应用范围

高斯-牛顿法用于解决什么问题?

有一个函数 y = A s i n ( α t + β ) y=\color{red}A\color{black} sin(\color{red}\alpha\color{black} t+\color{red}\beta\color{black}) y=Asin(αt+β) ,其中 A 、 α 、 β \color{red} A、\alpha、\beta Aαβ未知,已知一些输入输出数据 [ t 1 , y 1 ] , [ t 2 , y 2 ] , ⋯   , [ t n , y n ] [t_1,y_1],[t_2,y_2],\cdots,[t_n,y_n] [t1,y1],[t2,y2],,[tn,yn]

高斯-牛顿法想要解决的问题是如何根据已知数据,估计未知参数

这是一个非线性最小二乘问题, min ⁡ A ^ , α ^ , β ^ ∑ i = 1 n ( A ^ s i n ( α ^ t i + β ^ ) − y i ) 2 \min_{\hat{A},\hat{\alpha},\hat{\beta}} \sum_{i=1}^{n}(\hat{A}sin(\hat{\alpha} t_i+\hat {\beta})-y_i)^2 minA^,α^,β^i=1n(A^sin(α^ti+β^)yi)2

2、高斯-牛顿法原理

考虑更加一般的情况:
min ⁡ ∑ i = 1 m ( r i ( X ) ) 2 令 r = [ r 1 , r 2 , ⋯   , r m ] T , 则目标函数为 f ( X ) = r ( X ) T r ( X ) , 为了使用牛顿法求解,需要计算梯度和 H e s s 矩阵 梯度 ∇ f ( X ) 的第 j 个元素为 : ( ∇ f ( X ) ) j = ∂ f ∂ x j ( X ) = 2 ∑ i = 1 m r i ( X ) ∂ r i ∂ x i ( X ) r 的 J a c o b i 矩阵为: J ( X ) = [ ∂ r 1 ∂ x 1 ( X ) ∂ r 1 ∂ x 2 ( X ) ⋯ ∂ r 1 ∂ x n ( X ) ∂ r 2 ∂ x 1 ( X ) ∂ r 2 ∂ x 2 ( X ) ⋯ ∂ r 2 ∂ x n ( X ) ⋮ ⋮ ⋱ ⋮ ∂ r m ∂ x 1 ( X ) ∂ r m ∂ x 2 ( X ) ⋯ ∂ r m ∂ x n ( X ) ] 因此,函数 f 的梯度可表示为: ∇ f ( X ) = 2 J ( X ) T r ( X ) 函数 f 的 H e s s 矩阵的第 ( k , j ) 个元素为: ∂ 2 f ∂ x k ∂ x j ( X ) = ∂ ∂ x k ( ∂ f ∂ x j ( X ) ) = ∂ ∂ x k ( 2 ∑ i = 1 m r i ( X ) ∂ r i ∂ x i ( X ) ) = 2 ∑ i = 1 m ( ∂ r i ∂ x k ( X ) ∂ r i ∂ x j ( X ) + r i ( X ) ∂ 2 r i ∂ x k ∂ x j ( X ) ) 令 S ( X ) 表示一个矩阵其中 ( k , j ) 的元素为 ∑ i = 1 m r i ( X ) ∂ 2 r i ∂ x k ∂ x j ( X ) f ( x ) 的 H e s s 矩阵可以表示为: ∇ 2 f = 2 ( J ( X ) T J ( X ) + S ( X ) ) 迭代公式为: X = X ( k ) − [ ∇ 2 f ] − 1 ∇ f ⟹ X = X ( k ) − ( J ( X ) T J ( X ) + S ( X ) ) − 1 J ( X ) T r ( X ) 由于 S ( X ) 包含函数 r 的二阶导,数值较小可以忽略,所以迭代公式可变为: X = X ( k ) − ( J ( X ) T J ( X ) ) − 1 J ( X ) T r ( X ) \begin{aligned} &\min \sum_{i=1}^{m}(r_i(X))^2 \\ &令r=[r_1,r_2,\cdots,r_m]^T,则目标函数为f(X)=r(X)^Tr(X),为了使用牛顿法求解,需要计算梯度和Hess矩阵\\ &梯度\nabla f(X)的第j个元素为:(\nabla f(X))_j = \frac{\partial f}{\partial x_j}(X) = 2\sum_{i=1}^{m}r_i(X)\frac{\partial r_i}{\partial x_i}(X)\\ &r的Jacobi矩阵为:J(X)= \begin{bmatrix} \frac{\partial r_1}{\partial x_1}(X) & \frac{\partial r_1}{\partial x_2}(X) & \cdots &\frac{\partial r_1}{\partial x_n}(X) \\ \frac{\partial r_2}{\partial x_1}(X) & \frac{\partial r_2}{\partial x_2}(X) & \cdots &\frac{\partial r_2}{\partial x_n}(X) \\ \vdots &\vdots &\ddots &\vdots\\ \frac{\partial r_m}{\partial x_1}(X) & \frac{\partial r_m}{\partial x_2}(X) & \cdots &\frac{\partial r_m}{\partial x_n}(X) \\ \end{bmatrix}\\ &因此,函数f的梯度可表示为:\nabla f(X) = 2J(X)^Tr(X) \\ \\ &函数f的Hess矩阵的第(k,j)个元素为:\\ & \frac{\partial^2f}{\partial x_k \partial x_j}(X) =\frac{\partial}{\partial x_k}\left ( \frac{\partial f}{\partial x_j}(X) \right ) = \frac{\partial}{\partial x_k}\left ( 2\sum_{i=1}^{m}r_i(X)\frac{\partial r_i}{\partial x_i}(X)\right ) = 2\sum_{i=1}^{m}\left( \frac{\partial r_i}{\partial x_k}(X)\frac{\partial r_i}{\partial x_j}(X) +\color{blue} r_i(X)\frac{\partial^2r_i}{\partial x_k \partial x_j}(X) \color{black} \right) \\ &令\color{blue}S(X)\color{black}表示一个矩阵其中(k,j)的元素为\color{blue}\sum_{i=1}^{m} r_i(X)\frac{\partial^2r_i}{\partial x_k \partial x_j}(X) \color{black} \\ &f(x)的Hess矩阵可以表示为:\nabla^2f=2\left(J(X)^TJ(X)+\color{blue} S(X)\color{black} \right)\\ &迭代公式为:X = X^{(k)}-[\nabla^2f]^{-1}\nabla f \Longrightarrow X = X^{(k)}-\left(J(X)^TJ(X)+\color{blue} S(X)\color{black} \right)^{-1}J(X)^Tr(X)\\ &由于S(X)包含函数r的二阶导,数值较小可以忽略,所以迭代公式可变为:\\ &X = X^{(k)}-\left(J(X)^TJ(X)\right)^{-1}J(X)^Tr(X)\\ \end{aligned} mini=1m(ri(X))2r=[r1,r2,,rm]T,则目标函数为f(X)=r(X)Tr(X),为了使用牛顿法求解,需要计算梯度和Hess矩阵梯度f(X)的第j个元素为:(f(X))j=xjf(X)=2i=1mri(X)xiri(X)rJacobi矩阵为:J(X)= x1r1(X)x1r2(X)x1rm(X)x2r1(X)x2r2(X)x2rm(X)xnr1(X)xnr2(X)xnrm(X) 因此,函数f的梯度可表示为:f(X)=2J(X)Tr(X)函数fHess矩阵的第(k,j)个元素为:xkxj2f(X)=xk(xjf(X))=xk(2i=1mri(X)xiri(X))=2i=1m(xkri(X)xjri(X)+ri(X)xkxj2ri(X))S(X)表示一个矩阵其中(k,j)的元素为i=1mri(X)xkxj2ri(X)f(x)Hess矩阵可以表示为:2f=2(J(X)TJ(X)+S(X))迭代公式为:X=X(k)[2f]1fX=X(k)(J(X)TJ(X)+S(X))1J(X)Tr(X)由于S(X)包含函数r的二阶导,数值较小可以忽略,所以迭代公式可变为:X=X(k)(J(X)TJ(X))1J(X)Tr(X)

3、Levenberg-Marquardt修正

高斯-牛顿法在使用的过程中也会出现 J ( X ) T J ( X ) J(X)^TJ(X) J(X)TJ(X)不是正定矩阵的问题,所以也可以使用Levenberg-Marquardt修正就加以解决:
X = X ( k ) − ( J ( X ) T J ( X ) + μ k I ) − 1 J ( X ) T r ( X ) X = X^{(k)}-\left(J(X)^TJ(X) + \mu_k I\right)^{-1}J(X)^Tr(X) X=X(k)(J(X)TJ(X)+μkI)1J(X)Tr(X)

  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值