非线性优化

最速下降法(梯度下降)

  • 定义问题
    对于一个非线性函数 f ( x ) f(\textbf{x}) f(x),目标求: min ⁡ f ( x ) ,    x ∈ R n \min f(\boldsymbol{x}) , \; \mathbf{x}\in\mathbb{R}^n minf(x)xRn

  • 数学理论

  1. 我们需要找到一个下降的方向,使得 f ( x ) f(\mathbf{x}) f(x)随着x的迭代而逐渐减小,直到 x \mathbf{x} x收敛于 x ∗ \mathbf{x^*} x
    f ( x k + 1 ) &lt; f ( ( x k ) f(\mathbf{x_{k+1}})&lt;f((\mathbf{x_k}) f(xk+1)<f((xk)
    我们需要选择适当的方向 d \mathbf{d} d和 步长 α \alpha α f ( x k + α d ) &lt; f ( ( x k ) f(\mathbf{x_{k}+\alpha\mathbf{d}})&lt;f((\mathbf{x_k}) f(xk+αd)<f((xk)

  2. f ( x ) f(x) f(x)在进行一阶泰勒展开: f ( x + α d ) = f ( x ) + α ▽ f ( x ) T d , ▽ f ( x ) f(\boldsymbol{x}+\alpha\mathbf{d}) = f(\mathbf{x})+\alpha\triangledown f(\mathbf{x})^T\mathbf{d},\triangledown f(\mathbf{x}) f(x+αd)=f(x)+αf(x)Tdf(x) f ( x ) f(x) f(x)的梯度, ▽ f ( x ) T \triangledown f(\mathbf{x})^T f(x)T可以用 J J J雅克比代替:
    f ( x + α d ) = f ( x ) + α J d f(\boldsymbol{x}+\alpha\mathbf{d}) = f(\mathbf{x})+\alpha \mathbf{J} \mathbf{d} f(x+αd)=f(x)+αJd

  3. 因为 α &gt; 0 \alpha&gt;0 α>0,所以 J d &lt; 0 \mathbf{J} \mathbf{d}&lt;0 Jd<0,有: J d = ∥ J ∥ ∥ d ∥ cos ⁡ θ \mathbf{J} \mathbf{d}= \parallel \mathbf{J}\parallel \parallel \mathbf{d}\parallel \cos\theta Jd=Jdcosθ
    θ \theta θ − π -\pi π也就是d取负梯度的方向: − J T -\mathbf{J}^T JT,到达最小值。

  4. 对于 α \alpha α,我们在最速下降的方向进行-维的搜索,即 α \alpha α满足 f ( x k + α k d k ) = arg ⁡ min ⁡ α ⩾ 0 f ( x k + α d k ) f(\boldsymbol{x_k}+\alpha_k\mathbf{d_k}) = \arg \min_{\alpha\geqslant 0}f(\boldsymbol{x_k}+\alpha\mathbf{d_k}) f(xk+αkdk)=argα0minf(xk+αdk)

  • 算法:
  1. 给定初始点 x 0 \mathbf{x_0} x0,和允许的误差 ε &gt; 0 \varepsilon&gt;0 ε>0,置 k = 0 k=0 k=0
  2. 计算搜索方向 d k = − ▽ f ( x k ) \mathbf{d_k}=- \triangledown f(\mathbf{x_k}) dk=f(xk)
  3. ∥ d k ∥ ⩽ ε \parallel\mathbf{d_k}\parallel\leqslant\varepsilon dkε,则停止;否则从 x k \boldsymbol{x_k} xk出发,沿着 d k \mathbf{d_k} dk进行一维的搜索,求出 α k \alpha_k αk使得: f ( x k + α k d k ) = arg ⁡ min ⁡ α ⩾ 0 f ( x k + α d k ) f(\boldsymbol{x_k}+\alpha_k\mathbf{d_k}) = \arg \min_{\alpha\geqslant 0}f(\boldsymbol{x_k}+\alpha\mathbf{d_k}) f(xk+αkdk)=argα0minf(xk+αdk)
  4. x k + 1 = x k + α k d k \mathbf{x_{k+1}}=\mathbf{x_k}+\alpha_k\mathbf{d_k} xk+1=xk+αkdk,置 k = k + 1 k=k+1 k=k+1,转步骤2;

  • 算法评价:

缺点:

  1. 因为每次迭代的梯度方向和下一次的梯度方向是正交的,当到了最优值的附近,震动收敛慢。
  2. 另外,如果 f ( x ) f(x) f(x)的海森矩阵正定,最大和最小特征值的比 r = A a r=\frac{A}{a} r=aA称为条件数,条件数越小,收敛越快,相反则慢。

Trick:

  1. 一般最大特征值和最小特征值和数据维度里面的数据Scale有关,也就是说可能是因为数据的量级差的比较多,这时候可以通过Scale进行数据的缩放,来达到收敛更快的效果。

例题:参考最优化理论和算法p283,例10.1.1

牛顿法->阻尼牛顿->修正阻尼牛顿

  • 定义问题
    对于一个非线性函数 f ( x ) f(\textbf{x}) f(x),目标求: min ⁡ f ( x ) , &ThickSpace; x ∈ R n \min f(\boldsymbol{x}) , \; \mathbf{x}\in\mathbb{R}^n minf(x)xRn

  • 数学理论

  1. f ( x ) f(\textbf{x}) f(x)进行二阶泰勒展开:
    (1) f ( x + Δ x ) = f ( x ) + J Δ x + 1 2 Δ x T H Δ x f(\boldsymbol{x}+\Delta \mathbf{x}) = f(\mathbf{x})+J\Delta\mathbf{x}+\frac{1}{2}\Delta \mathbf{x}^TH\Delta \mathbf{x}\tag{1} f(x+Δx)=f(x)+JΔx+21ΔxTHΔx(1)
    x k \mathbf{x_k} xk处,求 Δ x k = arg ⁡ min ⁡ Δ x f ( x k + Δ x ) \Delta\mathbf{x_k}=\arg \min_{\Delta\mathbf{x}} f(\mathbf{x_k}+\Delta\mathbf{x}) ΔxkargΔxminf(xk+Δx)

  2. 让二次的1式对 Δ x \Delta\mathbf{x} Δx求导,并令其为0,得到稳定点:
    (2) J T + H Δ x = 0 J^T+H\Delta \mathbf{x}=0\tag{2} JT+HΔx=0(2)
    得到 Δ x k = − H − 1 J T \Delta\mathbf{x_k}=-H^{-1}J^T Δxk=H1JT

注意,在局部最优解的附近, x + Δ x \boldsymbol{x}+\Delta \mathbf{x} x+Δx是最优解,但是当初始点远离极小点的时候,牛顿法可能不收敛,原因之一牛顿方向: Δ x k = − H − 1 J T \Delta\mathbf{x_k}=-H^{-1}J^T Δxk=H1JT不一定是下降的方向,目标值有可能上升。因此对牛顿法提出了修正,提出阻尼牛顿法

  1. 阻尼牛顿法在原始的牛顿法的基础上添加:沿着牛顿方向进行一维的搜索
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值