"天之道也"
- 0. 引入
- 1. 最速下降法
- 2. 牛顿法
- 3. (实用)G-N法
- 4. (实用)L-M方法
- 5. 总结
 
注意: 上一节得到的最小二乘问题,本节来讨论---- 求解非线性最小二乘问题 \color {red}求解非线性最小二乘问题 求解非线性最小二乘问题
0. 引入
求解这个简单的最小二乘问题:
  
      
       
        
         
          
          
            min 
           
          
             
           
          
         
           x 
          
         
         
         
           1 
          
         
           2 
          
         
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           2 
          
         
         
         
         
         
         
        
          ( 
         
        
          1 
         
        
          ) 
         
        
       
         \min\limits_{x} \frac{1}{2}||f(x)||_2^2\qquad\qquad\qquad\qquad\qquad (1) 
        
       
     xmin21∣∣f(x)∣∣22(1)
- 最优条件法:当函数存在解析形式,能够通过最优性条件求解出显式最优解,类似求导之类的;
- 迭代法:从初始值出发,不断更新当前的优化变量,使目标函数下降。
一个简单的迭代法步骤:
 
 很少有函数能满足存在解析形式,迭代法的研究是首选,后边要做的就是如何确定增量  
      
       
        
        
          Δ 
         
         
         
           x 
          
         
           k 
          
         
        
       
         \Delta x_k 
        
       
     Δxk,也引出了一些方法。
1. 最速下降法
也叫一阶梯度法,首先将目标函数泰勒展开至一阶:
  
      
       
        
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          + 
         
        
          Δ 
         
        
          x 
         
        
          ) 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           2 
          
         
        
          ≈ 
         
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           2 
          
         
        
          + 
         
        
          J 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          Δ 
         
        
          x 
         
           
         
        
          ⇓ 
         
        
          其中 
         
        
          J 
         
        
          是 
         
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           2 
          
         
        
          关于 
         
        
          x 
         
        
          的导数 
         
        
          ( 
         
        
          雅克比矩阵 
         
        
          ) 
         
           
         
         
        
          ⇓ 
         
        
          增量方向为 
         
           
         
         
         
           Δ 
          
          
          
            x 
           
          
            ∗ 
           
          
         
           = 
          
         
           − 
          
          
          
            J 
           
          
            T 
           
          
         
           ( 
          
         
           x 
          
         
           ) 
          
         
        
       
         ||f(x+\Delta x)||_2^2 \approx ||f(x)||_2^2 + J(x)\Delta x\\\; \\ \Downarrow 其中J是||f(x)||_2^2关于x的导数(雅克比矩阵)\\\;\\ \\ \Downarrow增量方向为\\\; \\ \color {red}\Delta x^* = -J^T(x) 
        
       
     ∣∣f(x+Δx)∣∣22≈∣∣f(x)∣∣22+J(x)Δx⇓其中J是∣∣f(x)∣∣22关于x的导数(雅克比矩阵)⇓增量方向为Δx∗=−JT(x)
- 优点:直观,避免了求导的困难。
- 缺点:贪心,下降路线锯齿状,迭代次数多。
2. 牛顿法
也叫二阶梯度法,首先将目标函数泰勒展开至二阶:
  
      
       
        
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          + 
         
        
          Δ 
         
        
          x 
         
        
          ) 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           2 
          
         
        
          ≈ 
         
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           2 
          
         
        
          + 
         
        
          J 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          Δ 
         
        
          x 
         
        
          + 
         
         
         
           1 
          
         
           2 
          
         
        
          Δ 
         
         
         
           x 
          
         
           T 
          
         
        
          H 
         
        
          Δ 
         
        
          x 
         
           
         
        
          ⇓ 
         
        
          其中 
         
        
          H 
         
        
          是 
         
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           2 
          
         
        
          关于 
         
        
          x 
         
        
          的二阶导数 
         
        
          ( 
         
        
          海森矩阵 
         
        
          ) 
         
           
         
         
        
          ⇓ 
         
        
          求右侧关于 
         
        
          Δ 
         
        
          x 
         
        
          的导数令其等于 
         
        
          0 
         
        
          ,则增量的解为 
         
           
         
         
         
           H 
          
         
           Δ 
          
         
           x 
          
         
           = 
          
         
           − 
          
          
          
            J 
           
          
            T 
           
          
         
        
       
         ||f(x+\Delta x)||_2^2 \approx ||f(x)||_2^2 + J(x)\Delta x + \frac{1}{2}\Delta x^TH\Delta x\\\; \\ \Downarrow 其中H是||f(x)||_2^2关于x的二阶导数(海森矩阵)\\\;\\ \\ \Downarrow求右侧关于\Delta x 的导数令其等于0,则增量的解为\\\; \\ \color {red}H\Delta x = -J^T 
        
       
     ∣∣f(x+Δx)∣∣22≈∣∣f(x)∣∣22+J(x)Δx+21ΔxTHΔx⇓其中H是∣∣f(x)∣∣22关于x的二阶导数(海森矩阵)⇓求右侧关于Δx的导数令其等于0,则增量的解为HΔx=−JT
- 优点:直观,避免了求导的困难。
- 缺点:海森矩阵的计算运算量大。
3. (实用)G-N法
Gauss Newton 简单,它是将 
     
      
       
       
         f 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
       
      
        f(x) 
       
      
    f(x) 展开:
  
      
       
        
        
          f 
         
        
          ( 
         
        
          x 
         
        
          + 
         
        
          Δ 
         
        
          x 
         
        
          ) 
         
        
          ≈ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          + 
         
        
          J 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          Δ 
         
        
          x 
         
        
       
         f(x+\Delta x) \approx f(x) + J(x)\Delta x 
        
       
     f(x+Δx)≈f(x)+J(x)Δx
 这里的 
     
      
       
       
         J 
        
       
      
        J 
       
      
    J是 
     
      
       
       
         f 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
       
      
        f(x) 
       
      
    f(x)关于 
     
      
       
       
         x 
        
       
      
        x 
       
      
    x的导数,将上式带入(1)式中,按照平方展开可得:
  
      
       
        
         
         
           1 
          
         
           2 
          
         
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          + 
         
        
          J 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          Δ 
         
        
          x 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
        
          = 
         
         
         
           1 
          
         
           2 
          
         
        
          ( 
         
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           2 
          
         
        
          + 
         
        
          2 
         
        
          f 
         
        
          ( 
         
        
          x 
         
         
         
           ) 
          
         
           T 
          
         
        
          J 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          Δ 
         
        
          x 
         
        
          + 
         
        
          Δ 
         
         
         
           x 
          
         
           T 
          
         
        
          J 
         
        
          ( 
         
        
          x 
         
         
         
           ) 
          
         
           T 
          
         
        
          J 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          Δ 
         
        
          x 
         
        
          ) 
         
           
         
        
          ⇓ 
         
        
          求关于 
         
        
          Δ 
         
        
          x 
         
        
          的导数,并令其 
         
        
          = 
         
        
          0 
         
        
          ,可得增量方程 
         
           
         
         
         
           J 
          
         
           ( 
          
         
           x 
          
          
          
            ) 
           
          
            T 
           
          
         
           J 
          
         
           ( 
          
         
           x 
          
         
           ) 
          
         
           Δ 
          
         
           x 
          
         
           = 
          
         
           − 
          
         
           J 
          
         
           ( 
          
         
           x 
          
          
          
            ) 
           
          
            T 
           
          
         
           f 
          
         
           ( 
          
         
           x 
          
         
           ) 
          
          
             
           
          
            ⇓ 
           
          
            令 
           
          
            H 
           
          
            = 
           
          
            J 
           
           
           
             J 
            
           
             T 
            
           
          
            ,其实就是牛顿法中海森矩阵的近似 
           
           
          
            ⇓ 
           
          
            令 
           
          
            g 
           
          
            = 
           
          
            − 
           
          
            J 
           
          
            ( 
           
          
            x 
           
           
           
             ) 
            
           
             T 
            
           
          
            f 
           
          
            ( 
           
          
            x 
           
          
            ) 
           
             
           
          
            H 
           
          
            Δ 
           
          
            x 
           
          
            = 
           
          
            g 
           
          
         
        
       
         \frac{1}{2}||f(x)+J(x)\Delta x||^2 =\frac{1}{2} (||f(x)||^2_2+2f(x)^TJ(x)\Delta x+\Delta x^TJ(x)^TJ(x)\Delta x) \\\;\\\Downarrow 求关于\Delta x的导数,并令其=0,可得增量方程 \\\; \\ \color {red}J(x)^TJ(x)\Delta x = - J(x)^Tf(x) \color{b} \\\;\\\Downarrow 令H = JJ^T,其实就是牛顿法中海森矩阵的近似 \\\Downarrow 令g=-J(x)^Tf(x) \\\; \\H\Delta x = g 
        
       
     21∣∣f(x)+J(x)Δx∣∣2=21(∣∣f(x)∣∣22+2f(x)TJ(x)Δx+ΔxTJ(x)TJ(x)Δx)⇓求关于Δx的导数,并令其=0,可得增量方程J(x)TJ(x)Δx=−J(x)Tf(x)⇓令H=JJT,其实就是牛顿法中海森矩阵的近似⇓令g=−J(x)Tf(x)HΔx=g
 通过以上推导,我们可以将G-N(Gauss-Newton)迭代法步骤列出:
 
- 缺点: 用 J T J J^TJ JTJ近似 H H H,但是 H H H可逆且正定,而 J T J J^TJ JTJ实际上半正定,还有可能奇异或者病态,稳定性差。
- 优点: 很多算法和一些线搜索算法是它的变种,都借助了G-N的思想。
4. (实用)L-M方法
Levenberg-Marquadt(列文博格-马夸尔特)也叫阻尼牛顿法。是一种信赖域方法(为 
     
      
       
       
         Δ 
        
       
         x 
        
       
      
        \Delta x 
       
      
    Δx添加一个信赖域,不因太大而不准确),在区域内近似是有效的。
 确定信赖域范围:
  
      
       
        
        
          ρ 
         
        
          = 
         
         
          
          
            f 
           
          
            ( 
           
          
            x 
           
          
            + 
           
          
            Δ 
           
          
            x 
           
          
            ) 
           
          
            − 
           
          
            f 
           
          
            ( 
           
          
            x 
           
          
            ) 
           
          
          
          
            J 
           
          
            ( 
           
          
            x 
           
          
            ) 
           
          
            Δ 
           
          
            x 
           
          
         
        
       
         \rho = \frac{f(x+\Delta x) - f(x)}{J(x)\Delta x} 
        
       
     ρ=J(x)Δxf(x+Δx)−f(x)
- 分子是实际函数的下降值
- 是近似模型的下降值
- 两个的比值 ρ \rho ρ接近1,是好的。
由是,我们可以写出L-M的迭代过程:
 
- 在上式中,将 D D D 取 I I I,相当于把 Δ x \Delta x Δx 约束在一个半径为 μ \mu μ球中。也可以自定义为椭球,对梯度小的维度约束更大
上述步骤2中的两个式子,含有不等式,用拉格朗日乘子 λ \lambda λ将其转化为无约束问题:
 
      
       
        
         
          
          
            min 
           
          
             
           
          
          
          
            Δ 
           
           
           
             x 
            
           
             k 
            
           
          
         
         
         
           1 
          
         
           2 
          
         
        
          ∣ 
         
        
          ∣ 
         
        
          f 
         
        
          ( 
         
         
         
           x 
          
         
           k 
          
         
        
          ) 
         
        
          + 
         
        
          J 
         
        
          ( 
         
         
         
           x 
          
         
           k 
          
         
        
          ) 
         
        
          Δ 
         
         
         
           x 
          
         
           k 
          
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
        
          + 
         
         
         
           λ 
          
         
           2 
          
         
        
          ∣ 
         
        
          ∣ 
         
        
          D 
         
        
          Δ 
         
        
          x 
         
        
          ∣ 
         
         
         
           ∣ 
          
         
           2 
          
         
           
         
        
          ⇓ 
         
        
          展开,核心还是计算增量的线性方程,取简化 
         
        
          D 
         
        
          = 
         
        
          I 
         
           
         
        
          ( 
         
        
          H 
         
        
          + 
         
        
          λ 
         
        
          I 
         
        
          ) 
         
        
          Δ 
         
        
          x 
         
        
          = 
         
        
          g 
         
        
       
         \min\limits_{\Delta {x_k}} \frac{1}{2}||f(x_k)+J(x_k)\Delta x_k||^2 + \frac{\lambda}{2}||D \Delta x||^2 \\\;\\\Downarrow 展开,核心还是计算增量的线性方程,取简化D=I \\\; \\ (H + \lambda I)\Delta x = g 
        
       
     Δxkmin21∣∣f(xk)+J(xk)Δxk∣∣2+2λ∣∣DΔx∣∣2⇓展开,核心还是计算增量的线性方程,取简化D=I(H+λI)Δx=g
 不难看出, 
     
      
       
       
         λ 
        
       
      
        \lambda 
       
      
    λ 小的时候H占据主导地位算法接近G-N,较大的时候算法接近最速下降法。
5. 总结
非线性优化的框架:
- 线搜索: 固定搜索方向,然后寻找步长。含G-N, 最速下降法
- 信赖域:固定搜索区域,寻找区域内的最优点,L-M法。










![[AWD靶场搭建]](https://s2.loli.net/2023/07/27/7EYnfT6N5J9rLBk.png)








