• 人工智能数学课高等数学线性微积分数学教程笔记(7. 最优化)


    前言

    人工智能数学课高等数学线性微积分数学教程的学习笔记。主要用于快速回忆已学的数学知识点,不适合基础学习。博客园中同步更新。



    7. 最优化

    - 基本概念

    • f ( x ) f(x) f(x) 的极大值或极小值, x x x 是优化变量,就是自变量, f ( x ) f(x) f(x) 是目标函数,可能带有约束条件,满足约束并在定义域内的集合叫可行域;
      max ⁡ f ( x ) ⇔ min ⁡ f ( x ) g i ( x ) = 0 , i = 1 , ⋯   , m h j ( x ) ≤ 0 j = 1 , ⋯   , n \max f(x) \Leftrightarrow\min f(x)\\ g_i(x)=0,\quad i=1,\cdots,m\\ h_j(x)\le 0\quad j=1,\cdots,n maxf(x)minf(x)gi(x)=0,i=1,,mhj(x)0j=1,,n

    • 局部极小值:任意在 x 0 x_0 x0 的领域存在, f ( x ) ≥ f ( x 0 ) , ∀ x ∈ δ ( x 0 ) f(x)\ge f(x_0), \forall x\in \delta (x_0) f(x)f(x0),xδ(x0)

    • 通过大量实践发现在高维度的优化问题中,局部极小值 (local minimum)和全局极小值没有太大的区别,甚至有时候有更好的泛化能力。

    • 为什么要迭代求解?(求导困难,求根困难),(初始值,逼近)

    - 梯度下降法

    x k + 1 = x k − γ ∇ f ( x k ) \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\gamma \nabla f(\boldsymbol{x}_k) xk+1=xkγf(xk)

    推导:

    1. 利用多元函数的泰勒展开公式: f ( x ) − f ( x 0 ) ≈ [ ∇ f ( x 0 ) ] T ( x − x 0 ) f(\boldsymbol{x})-f(\boldsymbol{x}_0)\approx[\nabla f(\boldsymbol{x}_0)]^T(\boldsymbol{x}-\boldsymbol{x}_0) f(x)f(x0)[f(x0)]T(xx0)
    2. X T Y = ∣ X ∣ ⋅ ∣ Y ∣ ⋅ cos ⁡ θ X^TY=|X|\cdot|Y|\cdot\cos\theta XTY=XYcosθ cos ⁡ θ = − 1 \cos\theta=-1 cosθ=1 下降幅度最大
    3. 为了使得下降幅度最大,向量 x − x 0 \boldsymbol{x}-\boldsymbol{x}_0 xx0 (不一定是单位向量) 的方向和梯度方向相反: v = − ∇ f ( x 0 ) ∥ ∇ f ( x 0 ) ∥ \boldsymbol{v}=-\frac{\nabla f(\boldsymbol{x}_0)}{\left \| \nabla f(\boldsymbol{x}_0) \right \|} v=f(x0)f(x0)
    4. x = x 0 − η ∇ f ( x 0 ) ∥ ∇ f ( x 0 ) ∥ \boldsymbol{x}=\boldsymbol{x}_0-\eta\frac{\nabla f(\boldsymbol{x}_0)}{\left \| \nabla f(\boldsymbol{x}_0) \right \|} x=x0ηf(x0)f(x0),分母是标量可并入 η \eta η,即 x = x 0 − η ∇ f ( x 0 ) \boldsymbol{x}=\boldsymbol{x}_0-\eta\nabla f(\boldsymbol{x}_0) x=x0ηf(x0)

    η \eta η 是步长,不能太大,否则不满足约等于条件。

    - 牛顿法

    x k + 1 = x − H k − 1 g k \boldsymbol{x}_{k+1}=\boldsymbol{x}-\boldsymbol{H}_k^{-1}\boldsymbol{g}_k xk+1=xHk1gk

    思想:找梯度为0的点。

    推导:

    1. 多元函数的泰勒展开公式展开二次以上的项
      f ( x ) = f ( x 0 ) + [ ∇ f ( x 0 ) ] T ( x − x 0 ) + 1 2 ( x − x 0 ) T H ( x 0 ) ( x − x 0 ) + o ( x − x 0 ) f(\boldsymbol{x})=f(\boldsymbol{x}_0)+[\nabla f(\boldsymbol{x}_0)]^T(\boldsymbol{x}-\boldsymbol{x}_0)+\frac {1}{2}(\boldsymbol{x}-\boldsymbol{x}_0)^TH(\boldsymbol{x}_0)(\boldsymbol{x}-\boldsymbol{x}_0)+\boldsymbol{o}(\boldsymbol{x}-\boldsymbol{x}_0) f(x)=f(x0)+[f(x0)]T(xx0)+21(xx0)TH(x0)(xx0)+o(xx0)
      取近似
      f ( x ) ≈ f ( x 0 ) + [ ∇ f ( x 0 ) ] T ( x − x 0 ) + 1 2 ( x − x 0 ) T H ( x 0 ) ( x − x 0 ) f(\boldsymbol{x})\approx f(\boldsymbol{x}_0)+[\nabla f(\boldsymbol{x}_0)]^T(\boldsymbol{x}-\boldsymbol{x}_0)+\frac {1}{2}(\boldsymbol{x}-\boldsymbol{x}_0)^TH(\boldsymbol{x}_0)(\boldsymbol{x}-\boldsymbol{x}_0) f(x)f(x0)+[f(x0)]T(xx0)+21(xx0)TH(x0)(xx0)

    2. 由于 ( w T x ) ′ = w (\boldsymbol{w}^T\boldsymbol{x})'=\boldsymbol{w} (wTx)=w ( x T A x ) ′ = ( A + A T ) x (\boldsymbol{x}^T\boldsymbol{A}\boldsymbol{x})'= (\boldsymbol{A}+\boldsymbol{A}^T)\boldsymbol{x} (xTAx)=(A+AT)x,故有:
      ∇ f ( x ) ≈ ∇ f ( x 0 ) + H ( x 0 ) ( x − x 0 ) = g + H ( x − x 0 ) \nabla f(\boldsymbol{x})\approx \nabla f(\boldsymbol{x}_0)+H(\boldsymbol{x}_0)(\boldsymbol{x}-\boldsymbol{x}_0)=\boldsymbol{g}+\boldsymbol{H}(\boldsymbol{x}-\boldsymbol{x}_0) f(x)f(x0)+H(x0)(xx0)=g+H(xx0)

    3. ∇ f ( x ) = 0 \nabla f(\boldsymbol{x})=0 f(x)=0,如果 Hessian 矩阵可逆,则有
      g + H ( x − x 0 ) = 0 ⇒ x − x 0 = − H − 1 g \boldsymbol{g}+\boldsymbol{H}(\boldsymbol{x}-\boldsymbol{x}_0)=0\\ \Rightarrow \boldsymbol{x}-\boldsymbol{x}_0=-\boldsymbol{H}^{-1}\boldsymbol{g} g+H(xx0)=0xx0=H1g

    对比:
    x k + 1 = x k − η ⋅ g k x k + 1 = x k − η ⋅ H k − 1 ⋅ g k \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\eta\cdot\boldsymbol{g}_k\\ \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\eta\cdot\boldsymbol{H}^{-1}_k\cdot\boldsymbol{g}_k xk+1=xkηgkxk+1=xkηHk1gk

    • 牛顿法步长设定不好就有可能不收敛,不是迭代就一定使得函数值下降,一般用 line search 的技术,选择一些值如 1 0 − 4 , 1 0 − 6 10^{-4},10^{-6} 104,106,看哪个步长使得 f ( x k + 1 ) f(\boldsymbol{x}_{k+1}) f(xk+1) 更小。

    • 牛顿法收敛更快。

    - 坐标下降法

    • 分治 (分而治之) 法的思想:保持其他不动,只优化其中一个,优化完了之后再回来重新优化。
    • 计算量小

    - 数值优化算法面临的问题

    • 驻点不一定是极值点
    • 局部极值问题;
    • 鞍点问题,如 x 3 x^3 x3,在这一点 Hessian 矩阵不定,

    - 凸优化问题

    前面数值优化面临两个问题,对这类问题进行限定:

    1. 优化变量的可行域必须是凸集;
    2. 优化函数必须是个凸函数。

    同时满足这两个条件的叫凸优化问题,才能说局部极小值就是全局极小值。

    - 凸集

    • 定义:对于一个点的集合 C C C,有属于它的两个点 x , y x,y x,y,它们两点连线中任意一点也属于该集合: θ x + ( 1 − θ ) y ∈ C , 0 ≤ θ ≤ 1 \theta x+(1-\theta)y\in C,0\le\theta\le1 θx+(1θ)yC,0θ1
    • 典型的凸集:
      • 欧式空间 R n \mathbb{R}^n Rn x , y ∈ R n ⇒ θ x + ( 1 − θ ) y ∈ R n \boldsymbol{x},\boldsymbol{y} \in \mathbb{R}^n\Rightarrow \theta \boldsymbol{x} +(1-\theta)\boldsymbol{y}\in \mathbb{R}^n x,yRnθx+(1θ)yRn;很多可行域就是欧式空间,即凸集;
      • 仿射子空间: { x ∈ R n : A x = b } \left \{ \boldsymbol{x}\in\mathbb{R}^n:\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b} \right \} {xRn:Ax=b} x \boldsymbol{x} x n n n 维欧式空间的向量,满足线性方程的解;所有等式约束构成的集合是凸集,不会构建非线性等式约束;
      • 多面体: { x ∈ R n : A x ≤ b } \left \{ \boldsymbol{x}\in\mathbb{R}^n:\boldsymbol{A}\boldsymbol{x}\le\boldsymbol{b} \right \} {xRn:Axb},线性不等式的解;一组线性不等式约束,也是凸集。
    • 凸集的交集也是凸集 ⋂ i = 1 k C i \bigcap\limits_{i=1}^{k}C_i i=1kCi,并集不一定是凸集。

    - 凸函数

    • 定义:函数上任意两点它们的连线 (即割线) 上的值比对应的函数上的值要大, f ( θ x + ( 1 − θ ) y ) < θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta x+(1-\theta )y)<\theta f(x)+(1-\theta )f(y) f(θx+(1θ)y)<θf(x)+(1θ)f(y)
    • 凸函数的证明:
      1. 利用定义
      2. 利用一阶导数:
        • 一元函数: f ( y ) ≥ f ( x ) + f ′ ( x ) ( y − x ) f(y)\ge f(x)+f'(x)(y-x) f(y)f(x)+f(x)(yx)
        • 多元函数: f ( y ) ≥ f ( x ) + ∇ f ( x ) T ( y − x ) f(\boldsymbol{y})\ge f(\boldsymbol{x})+\nabla f(\boldsymbol{x})^T(\boldsymbol{y}-\boldsymbol{x}) f(y)f(x)+f(x)T(yx)
      3. 二阶判别法:
        • 一元函数: f ′ ′ ( x ) ≥ 0 f''(x)\ge 0 f′′(x)0
        • 多元函数:Hessian 矩阵半正定, > 0 >0 >0 是严格凸函数
    • 如果每个函数 f i ( x ) f_i(x) fi(x) 都是凸函数,那么它们的非负线性组合 f ( x ) = ∑ i = 1 k w i f i ( x ) , w i ≥ 0 f(x)=\sum\limits_{i=1}^{k}w_if_i(x),w_i\ge 0 f(x)=i=1kwifi(x),wi0 也是凸函数。

    - 凸优化的性质

    目标函数是凸函数,可行域是凸集,则局部最优解一定是全局最优解。

    证明:(反证法)

    假设有一点 x x x 是局部最小值,但不是全局最小值,则存在另一个点 y y y 是全局最小值,这时 f ( y ) < f ( x ) f(y)f(y)<f(x)

    证明 x x x 的领域有一个点 z z z x x x 小即可,取 z = θ y + ( 1 − θ ) x , θ = δ 2 ∥ x − y ∥ 2 z=\theta y+(1-\theta)x,\theta=\frac{\delta}{2\|x-y\|_2} z=θy+(1θ)x,θ=2∥xy2δ 即可。

    - 凸优化一般的表述形式

    min ⁡ f ( x ) , x ∈ C \min f(x),x\in C minf(x),xC

    或者
    min ⁡ f ( x ) c i ( x ) ≤ 0 , i = 1 , ⋯   , m h j ( x ) = 0 , j = 1 , ⋯   , k \min f(x)\\ c_i(x)\le0,i=1,\cdots,m\\ h_j(x)=0,j=1,\cdots,k minf(x)ci(x)0,i=1,,mhj(x)=0,j=1,,k

    - 拉格朗日乘数法

    将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束;

    (1) 等式约束条件
    min ⁡ f ( x ) s . t . h k ( x ) = 0 k = 1 , 2 , ⋯   , l \min f(\boldsymbol{x})\\ s.t.\quad h_k(\boldsymbol{x})=0 \quad k=1,2,\cdots,l minf(x)s.t.hk(x)=0k=1,2,,l
    求解步骤:

    1. 定义拉格朗日函数:
      F ( x , λ ) = f ( x ) + ∑ k = 1 l λ k h k ( x ) F(\boldsymbol{x},\boldsymbol{\lambda})=f(\boldsymbol{x})+\sum\limits_{k=1}^l\lambda_kh_k(\boldsymbol{x}) F(x,λ)=f(x)+k=1lλkhk(x)

    2. 解变量的偏导方程:
      ∂ F ∂ x i = 0 , ⋯   , ∂ F ∂ λ k = 0 , ⋯ \frac{\partial F}{\partial x_i}=0,\cdots,\frac{\partial F}{\partial \lambda _k}=0,\cdots xiF=0,,λkF=0,

    3. 或者说是分别对 x \boldsymbol{x} x λ \boldsymbol{\lambda} λ 求梯度,然后解方程组
      ∇ x f + ∑ k = 1 l λ k ∇ x h k = 0 h k ( x ) = 0 \nabla_xf+\sum\limits_{k=1}^l\lambda_k\nabla_xh_k=0\\ h_k(\boldsymbol{x})=0 xf+k=1lλkxhk=0hk(x)=0

    (2) 带不等式约束条件

    可参考KKT条件。

    - 拉格朗日对偶

    min ⁡ f ( x ) g i ( x ) ≤ 0 , i = 1 , ⋯   , m h j ( x ) = 0 , j = 1 , ⋯   , k \min f(x)\\ g_i(x)\le0,i=1,\cdots,m\\ h_j(x)=0,j=1,\cdots,k minf(x)gi(x)0,i=1,,mhj(x)=0,j=1,,k

    构建一个广义 (包括不等式约束) 的拉格朗日函数:
    L ( x , α , β ) = f ( x ) + ∑ i = 1 m α i g i ( x ) + ∑ j = 1 k β i h j ( x ) , α i ≥ 0 L(x,\alpha,\beta)=f(x)+\sum\limits_{i=1}^m\alpha_ig_i(x)+\sum\limits_{j=1}^k\beta_ih_j(x),\alpha_i\ge 0 L(x,α,β)=f(x)+i=1mαigi(x)+j=1kβihj(x),αi0
    问题转化为:
    p ∗ = min ⁡ x max ⁡ α , β , α i ≥ 0 L ( x , α , β ) = min ⁡ x θ p ( x ) p^*=\min_x \max_{\alpha,\beta,\alpha_i\ge 0}L(x,\alpha,\beta)=\min_x\theta_p(x) p=xminα,β,αi0maxL(x,α,β)=xminθp(x)
    理解可参考:【数学】拉格朗日对偶,从0到完全理解

    无论如何, p ∗ p^* p 都不会小于 max ⁡ α , β , α i ≥ 0 L ( x , α , β ) \max\limits_{\alpha,\beta,\alpha_i\ge 0}L(x,\alpha,\beta) α,β,αi0maxL(x,α,β)

    - KKT 条件

    min ⁡ f ( x ) g i ( x ) ≤ 0 , i = 1 , ⋯   , q h j ( x ) = 0 , j = 1 , ⋯   , p \min f(x)\\ g_i(x)\le0,i=1,\cdots,q\\ h_j(x)=0,j=1,\cdots,p minf(x)gi(x)0,i=1,,qhj(x)=0,j=1,,p

    L ( x , λ , μ ) = f ( x ) + ∑ j = 1 p λ j h j ( x ) + ∑ i = 1 q μ i g i ( x ) L(x,\lambda,\mu)=f(x)+\sum\limits_{j=1}^p\lambda_jh_j(x)+\sum\limits_{i=1}^q\mu_ig_i(x) L(x,λ,μ)=f(x)+j=1pλjhj(x)+i=1qμigi(x)

    KKT 条件:
    ∇ x L ( x ∗ ) = ∇ f ( x ∗ ) + ∑ j = 1 p λ i ∗ ∇ h j ( x ∗ ) + ∑ i = 1 q μ i ∗ ∇ g i ( x ∗ ) = 0 μ i ∗ ≥ 0 μ i ∗ g i ( x ∗ ) = 0 h j ( x ∗ ) = 0 g i ( x ∗ ) ≤ 0 \nabla_x L(x^*)=\nabla f(x^*) +\sum\limits_{j=1}^p\lambda_i^*\nabla h_j(x^*)+\sum\limits_{i=1}^q\mu_i^*\nabla g_i(x^*)=0\\ \mu_i^*\ge0\\ \mu_i^*g_i(x^*)=0\\ h_j(x^*)=0\\ g_i(x^*)\le0 xL(x)=f(x)+j=1pλihj(x)+i=1qμigi(x)=0μi0μigi(x)=0hj(x)=0gi(x)0

  • 相关阅读:
    PerfView专题 (第十二篇):对 C# 下的 SDK 类库进行监控(大结局)
    如何用matlab搭建激光器
    CMake Cookbook
    第三天:java基础复习(3)
    MySQL 事件调度
    在SQL中,可以使用不同的函数来转换字符串日期格式。以下是一些常用的函数:
    空中计算(Over-the-Air Computation)学习笔记
    京东腰带怎么设置,分享详细教程
    mysql select语句中from 之后跟查询语句
    python基础语法(3)
  • 原文地址:https://blog.csdn.net/yyywxk/article/details/127673941