【最优化方法】无约束优化问题(最速下降法、牛顿法、最小二乘)

最速下降法

最速下降法(Steepest Descent Method)是一种基于负梯度方向进行迭代的最优化算法,用于寻找一个函数的最小值。该方法也被称为梯度下降法,是一种迭代的一阶优化算法。

算法的基本思想是从当前点出发,沿着当前点的负梯度方向,以一定的步长(学习率)移动到新的点,重复这个过程直至达到停止条件。

下面是最速下降法的基本步骤:

  1. 给出 x 0 ∈ R n , 0 ⩽ ε ≪ 1 , k : = 0 x_0\in\mathbf{R}^n,0\leqslant\varepsilon\ll1,k:=0 x0Rn,0ε1,k:=0
  2. 计算 d k = − g k d^k=-g_k dk=gk;如果 ∥ g k ∥ ⩽ ε \|g_k\|\leqslant\varepsilon gkε,停止
  3. 由线性搜索求步长因子 λ k \lambda_k λk
  4. 计算 x k + 1 = x k + λ k d k x_{k+1}=x_k+\lambda_kd^k xk+1=xk+λkdk
  5. k : = k + 1 k:=k+1 k:=k+1,转步 2

最速下降法的优点是简单易理解,容易实现。然而,它可能在某些情况下收敛速度较慢。

在实践中,有一些改进的方法,如共轭梯度法、牛顿法等,可以在某些情况下加速收敛。最速下降法常被视为这些更高级方法的基础。

对于正定二次函数
f ( x ) = 1 2 x T G x + q T x + r f(x)=\frac{1}{2}x^{T}Gx+q^{T}x+r f(x)=21xTGx+qTx+r

其中 G ∈ R n × n G\in\mathbf{R}^{n\times n} GRn×n 正定矩阵, q ∈ R n q\in\mathbf{R}^n qRn, r ∈ R r\in\mathbf{R} rR

由精确一维线搜索确定的步长
λ k = − ( g k ) T d k ( d k ) T G d k . \lambda_k=-\frac{\left(g_k\right)^Td^k}{\left(d^k\right)^TGd^k}. λk=(dk)TGdk(gk)Tdk.

证明: g ( x ) = G x + q , G ( x ) = G g(x)=Gx+q,G(x)=G g(x)=Gx+q,G(x)=G,其中 G ∈ R n × n G\in\mathbf{R}^{n\times n} GRn×n正定。

由精确一维线搜索确定的步长 λ k = min ⁡ λ > 0 φ ( λ ) = f ( x k + λ d k ) \lambda_k=\min\limits_{\lambda >0}\varphi(\lambda)=f(x^k+\lambda d^k) λk=λ>0minφ(λ)=f(xk+λdk),满足
0 = φ ′ ( λ k ) = ∇ f ( x k + λ k d k ) T d k = ( G ( x k + λ k d k ) + q ) T d k 0=\varphi^{\prime}(\lambda_{k})=\nabla f(x^{k}+\lambda_{k}d^{k})^{\mathrm{T}}d^{k}=\left(G(x^{k}+\lambda_{k}d^{k})+q\right)^{T}d^{k} 0=φ(λk)=f(xk+λkdk)Tdk=(G(xk+λkdk)+q)Tdk = ( G x k + q ) T d k + λ k ( d k ) T G d k = g k T d k + λ k ( d k ) T G d k , =\left(Gx^{k}+q\right)^{T}d^{k}+\lambda_{k}\left(d^{k}\right)^{T}Gd^{k}=g_{k}^{T}d^{k}+\lambda_{k}(d^{k})^{T}Gd^{k}, =(Gxk+q)Tdk+λk(dk)TGdk=gkTdk+λk(dk)TGdk,

所以
λ k = − ( g k ) T d k ( d k ) T G   d k . \lambda_{k}=-\frac{(g_{k})^{T}d^{k}}{(d^{k})^{T}G\:d^{k}}. λk=(dk)TGdk(gk)Tdk.

注意:由于 d k = − g k d^k=-g_k dk=gk,所以
λ k = ( g k ) T g k ( g k ) T G   g k . \lambda_{k}=\frac{\left(g_{k}\right)^{T}g_{k}}{\left(g_{k}\right)^{T}G\:g_{k}}. λk=(gk)TGgk(gk)Tgk.

那么,利用采用精确一维线搜索的最速下降法求解目标函数为正定二次函数的无约束极小化问题,迭代格式为:
x k + 1 = x k − ( g k ) T g k ( g k   ) T G   g k g k . x^{k+1}=x^{k}-\frac{\left(g_{k}\right)^{T}g_{k}}{\left(g_{k}\:\right)^{T}G\:g_{k}}g_{k}. xk+1=xk(gk)TGgk(gk)Tgkgk.

示例

利用采用精确一维线搜索的最速下降法求解,其中初始点 x 0 = ( 2 , 1 ) T x^0=(2,1)^T x0=(2,1)T
min ⁡ f ( x ) = 1 2 x 1 2 + x 2 2 \min f(x)=\frac{1}{2}x_1^2 + x_2^2 minf(x)=21x12+x22

解: 下述为前两步的计算过程,后面通过数学归纳求解
g ( x ) = ( x 1 , 2 x 2 ) T , G ( x ) = [ 1 0 0 2 ] > 0 g 0 = g ( x 0 ) = ( 2 , 2 ) T x 1 = x 0 + λ 0 d 0 = x 0 − ( g 0 ) T g 0 ( g 0 ) T G g 0 g 0 = [ 2 1 ] − 8 12 [ 2 2 ] = 1 3 [ 2 − 1 ] g 1 = g ( x 1 ) = 1 3 ( 2 , − 2 ) T x 2 = x 1 + λ 1 d 1 = x 1 − ( g 1 ) T g 1 ( g 1 ) T G g 1 g 1 = 1 3 [ 2 − 1 ] − 2 9 [ 2 − 2 ] = ( 1 3 ) 2 [ 2 ( − 1 ) 2 ] g 2 = g ( x 2 ) = 1 9 ( 2 , 2 ) T \begin{aligned} & g(x) = (x_1, 2x_2)^T, G(x) = \begin{bmatrix} 1 & 0 \\ 0 & 2 \\ \end{bmatrix} > 0 \\ & g_0 = g(x^0) = (2, 2)^T \\ & x^1 = x^0 + \lambda_0 d^0 = x^0 - \frac{(g_0)^Tg_0}{(g_0)^TGg_0}g_0= \begin{bmatrix} 2 \\ 1 \\ \end{bmatrix} - \frac{8}{12} \begin{bmatrix} 2 \\ 2 \\ \end{bmatrix} = \frac{1}{3} \begin{bmatrix} 2 \\ -1 \\ \end{bmatrix} \\ & g_1 = g(x^1) = \frac{1}{3}(2, -2)^T \\ & x^2 = x^1 + \lambda_1 d^1 = x^1 - \frac{(g_1)^Tg_1}{(g_1)^TGg_1}g_1 = \frac{1}{3} \begin{bmatrix} 2 \\ -1 \\ \end{bmatrix} - \frac{2}{9} \begin{bmatrix} 2 \\ -2 \\ \end{bmatrix} = (\frac{1}{3})^2 \begin{bmatrix} 2 \\ (-1)^2 \\ \end{bmatrix} \\ & g_2 = g(x^2) = \frac{1}{9}(2, 2)^T \end{aligned} g(x)=(x1,2x2)T,G(x)=[1002]>0g0=g(x0)=(2,2)Tx1=x0+λ0d0=x0(g0)TGg0(g0)Tg0g0=[21]128[22]=31[21]g1=g(x1)=31(2,2)Tx2=x1+λ1d1=x1(g1)TGg1(g1)Tg1g1=31[21]92[22]=(31)2[2(1)2]g2=g(x2)=91(2,2)T

类似计算并归纳可得迭代点列为 x k = ( 1 3 ) k [ 2 ( − 1 ) k ] x^k=(\frac{1}{3})^k\begin{bmatrix}2 \\ (-1)^k\end{bmatrix} xk=(31)k[2(1)k]

k → ∞ k\to\infty k 时,有 x k → x ∗ = ( 0 , 0 ) T . x^k\to x^*=(0,0)^T. xkx=(0,0)T.

牛顿法

  1. 选取初始数据。取初始点 x 0 x_0 x0,终止误差 ε > 0 \varepsilon>0 ε>0,令 k : = 0. k:=0. k:=0.
  2. 计算 g k g_k gk,若 ∥ g k ∥ ⩽ ε \|g_k\|\leqslant \varepsilon gkε,算法终止,输出 x k . x_k. xk.
  3. 计算 G k G_k Gk,并由牛顿方程 d k = − G k − 1 g k d_k=-G_k^{-1}g_k dk=Gk1gk 解出 d k . d_k. dk.
  4. x k + 1 : = x k + λ k d k , k : = k + 1 x_{k+1}:=x_k+\lambda_kd_k,k:=k+1 xk+1:=xk+λkdk,k:=k+1,转步 2

迭代公式:
x k + 1 = x k − G k − 1 g k x_{k+1}=x_k-G_k^{-1}g_k xk+1=xkGk1gk

阻尼牛顿法

  1. 选取初始数据。取初始点 x 0 x_0 x0,终止误差 ε > 0 \varepsilon>0 ε>0,令 k : = 0. k:=0. k:=0.

  2. 计算 g k g_k gk,若 ∥ g k ∥ ⩽ ε \|g_k\|\leqslant \varepsilon gkε,算法终止,输出 x k . x_k. xk.

  3. 计算 G k G_k Gk,并由牛顿方程 d k = − G k − 1 g k d_k=-G_k^{-1}g_k dk=Gk1gk 解出 d k . d_k. dk.

  4. 由线搜索计算步长 λ k \lambda_{k} λk 使得
    f ( x k + λ k d k ) = min ⁡ α ⩾ 0 f ( x k + λ k d k ) f(x_{k}+\lambda_{k}d_{k})=\min_{\alpha\geqslant0}f(x_{k}+\lambda_{k}d_{k}) f(xk+λkdk)=α0minf(xk+λkdk)

  5. x k + 1 : = x k + λ k d k , k : = k + 1 x_{k+1}:=x_k+\lambda_kd_k,k:=k+1 xk+1:=xk+λkdk,k:=k+1,转步 2

迭代公式:
x k + 1 = x k − λ k G k − 1 g k x_{k+1}=x_k-\lambda_kG_k^{-1}g_k xk+1=xkλkGk1gk

示例

利用阻尼牛顿法求 f ( x 1 , x 2 ) = x 1 2 + 2 x 2 2 − 4 x 1 − 2 x 1 x 2 f(x_1,x_2) = x_1^2+2x_2^2-4x_1-2x_1x_2 f(x1,x2)=x12+2x224x12x1x2 的极小值,取 x 0 = ( 1 , 1 ) T x_0 = (1,1)^T x0=(1,1)T

解:
g ( x ) = [ 2 x 1 − 4 − 2 x 2 , 4 x 2 − 2 x 1 ] T ,   G ( x ) = [ 2 − 2 − 2 4 ] ,   G − 1 = [ 1 1 2 1 2 1 2 ] x 0 = ( 1 , 1 ) T ,   g 0 = [ − 4 , 2 ] T ,   d 0 = − G − 1 g 0 = [ 3 , 1 ] T φ ( λ 0 ) = f ( x 0 + λ 0 d 0 ) = f ( 1 + 3 λ 0 , 1 + λ 0 ) = 5 λ 0 2 − 10 λ 0 − 3 , φ ′ ( λ 0 ) = 10 λ 0 − 10 = 0 ,   λ 0 = 1 x 1 = x 0 − λ 0 d 0 = ( 1 , 1 ) T + ( 3 , 1 ) T = ( 4 , 2 ) T \begin{aligned} & g(x)=[2x_1-4-2x_2,4x_2-2x_1]^T,~ G(x)=\begin{bmatrix} 2 & -2 \\ -2 & 4 \end{bmatrix},~ G^{-1}=\begin{bmatrix} 1 & \frac{1}{2} \\ \frac{1}{2} & \frac{1}{2} \end{bmatrix} \\ & x_0 = (1,1)^T,~ g_0 = [-4,2]^T,~ d_0 = -G^{-1}g_0 = [3,1]^T \\\\ & \varphi(\lambda_0)=f(x_{0}+\lambda _0d_{0})=f(1+3\lambda_0,1+\lambda_0)=5\lambda_0^{2}-10\lambda_0-3,\\\\ & \varphi^{\prime}(\lambda_0)=10\lambda_0-10=0,~ \lambda_{0}=1 \\\\ & x_1 = x_0 - \lambda_{0}d_0 = (1,1)^T + (3,1)^T = (4,2)^T \\ \end{aligned} g(x)=[2x142x2,4x22x1]T, G(x)=[2224], G1=[1212121]x0=(1,1)T, g0=[4,2]T, d0=G1g0=[3,1]Tφ(λ0)=f(x0+λ0d0)=f(1+3λ0,1+λ0)=5λ0210λ03,φ(λ0)=10λ010=0, λ0=1x1=x0λ0d0=(1,1)T+(3,1)T=(4,2)T

最终得出 x = ( 4 , 2 ) T ,     min ⁡ f ( x ) = − 8 x = (4, 2)^T,~~~ \min f(x) = -8 x=(4,2)T,   minf(x)=8

最小二乘问题

目标函数
min ⁡   q ( x ) = 1 2 ∣ ∣ A x − b ∣ ∣ 2 \min \: q(x) = \frac{1}{2}||Ax-b||^2 minq(x)=21∣∣Axb2

其中 A A A 是一个矩阵, x x x b b b 是向量。这个目标函数是为了找到一个向量 x x x,使得 A x Ax Ax 尽可能接近 b b b。以下是化简过程:

首先,我们知道向量的模长公式为 ∣ ∣ v ∣ ∣ = v T v ||v|| = \sqrt{v^Tv} ∣∣v∣∣=vTv ,所以我们可以将目标函数写为:
q ( x ) = 1 2 ( A x − b ) T ( A x − b ) q(x) = \frac{1}{2}(Ax-b)^T(Ax-b) q(x)=21(Axb)T(Axb)

接下来,我们展开右边的项:
q ( x ) = 1 2 ( x T A T A x − x T A T b − b T A x + b T b ) q(x) = \frac{1}{2}(x^TA^TAx - x^TA^Tb - b^TAx + b^Tb) q(x)=21(xTATAxxTATbbTAx+bTb)

注意到, x T A T b x^TA^Tb xTATb b T A x b^TAx bTAx 是共轭转置的关系,同时等于一个标量,所以相等,因此可以合并成一项。这样就可以得到:
q ( x ) = 1 2 x T A T A x − b T A x + 1 2 b T b q(x) = \frac{1}{2}x^TA^TAx - b^TAx + \frac{1}{2}b^Tb q(x)=21xTATAxbTAx+21bTb

这就是化简后的目标函数。

要最小化这个目标函数,我们需要对它求导并令其等于0。具体步骤如下:
∇ q ( x ) = A T A x − A T b = 0 \nabla q(x) = A^TAx - A^Tb = 0 q(x)=ATAxATb=0

解这个方程,可以得到最优解 x ∗ x^* x
x ∗ = ( A T A ) − 1 A T b x^* = (A^TA)^{-1}A^Tb x=(ATA)1ATb

这就是其化简过程以及如何找到最小值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值