凸优化——凸函数及凸优化

凸函数及凸优化

今天开坑凸优化了,冲鸭🦆!

1.凸函数定义

S S S R n \R^n Rn的非空集合,f是定义在S上的实函数,如果对任意 X ( 1 ) , X ( 2 ) ∈ S X^{(1)},X^{(2)}\in{S} X(1),X(2)S, λ ∈ ( 0 , 1 ) \lambda\in{(0,1)} λ(0,1),均有 f ( λ X ( 1 ) + ( 1 − λ ) X ( 2 ) ) ≤ λ f ( X ( 1 ) ) + ( 1 − λ ) X ( 2 ) f(\lambda X^{(1)}+(1-\lambda)X^{(2)})\leq\lambda f(X^{(1)})+(1-\lambda)X^{(2)} f(λX(1)+(1λ)X(2))λf(X(1))+(1λ)X(2),则 f f f S S S上的凸函数。

2. 凸函数的一些性质

  • f f f是定义在凸集 S S S上的凸函数,实数 λ ≥ 0 \lambda \geq0 λ0,则 λ f \lambda f λf也是定义在 S S S上的凸函数
  • f 1 f_1 f1, f 2 f_2 f2为定义在凸集 S S S上的凸函数, f 2 + f 1 f_2+f_1 f2+f1也是凸集上的凸函数
  • f 1 , f 2 , . . . , f k f_1,f_2,...,f_k f1f2...,fk是定义在 S S S上的凸函数, λ 1 , λ 2 , . . . , λ k ≥ 0 \lambda _1,\lambda _2,..., \lambda k \geq0 λ1,λ2,...,λk0, ∑ i = 0 n λ i f i \sum_{i=0}^n \lambda _i f_i i=0nλifi也是凸函数
  • S S S R n \R^n Rn中一个非空凸集, f f f是定义在 S S S上的凸函数, α \alpha α为一个实数,水平集 S α = { x ∣ x ∈ S , f ( x ) ≤ α } S_\alpha= \{x|x\in S,f(x)\leq \alpha\} Sα={xxS,f(x)α}是凸集。
    在这里插入图片描述
  • S S S R n \R^n Rn中一个凸集, f f f是定义在 S S S上的凸函数,则 f f f S S S的内部连续。
  • S S S R n \R^n Rn中一个凸集, f f f是定义在 S S S上的凸函数, f f f S S S上的局部极小点是全局极小点,且极小点的集合为凸集合。

3.凸函数的判别

(1) S S S R n \R^n Rn中一个凸集, f f f是定义在 S S S上的可微函数,则 f ( x ) f(x) f(x)为凸函数的充要条件是对任意两点 X ( 1 ) , X ( 2 ) ∈ S X^{(1)},X^{(2)}\in{S} X(1),X(2)S,都有:
f ( x ( 2 ) ) ≥ f ( x ( 1 ) ) + ∇ f ( x ( 1 ) ) T ( x ( 2 ) − x ( 1 ) ) f(x^{(2)}) \geq f(x^{(1)})+\nabla f(x^{(1)})^T(x^{(2)}-x^{(1)}) f(x(2))f(x(1))+f(x(1))T(x(2)x(1)).
即任意 f ( x ( 2 ) ) f(x^{(2)}) f(x(2))在切线上方。
在这里插入图片描述
(2) S S S R n \R^n Rn中一个凸集, f f f是定义在 S S S上的二次可微函数,则 f ( x ) f(x) f(x)为凸函数的充要条件是对任意一点 X ∈ S X\in{S} XS处的Hesse矩阵半正定(即Hesse特征值大于等于0),即: ∇ 2 f ( x ) ≥ 0 \nabla^2f(x)\geq0 2f(x)0

4.凸优化问题定义

( p ) m i n f ( x 1 , x 2 , . . . , x n ) (p) minf(x_1,x_2,...,x_n) (p)minf(x1,x2,...,xn)
s . t { g i ( x 1 , x 2 , . . . , x n ) ≤ 0 , i = 1 , . . . , m h i ( x 1 , x 2 , . . . , x n ) = 0 , i = 1 , . . . , I s.t \left\{ \begin{aligned} g_i(x_1,x_2,...,x_n)\leq0,i=1,...,m \\ h_i(x_1,x_2,...,x_n)=0,i=1,...,I \\ \end{aligned} \right. s.t{gi(x1,x2,...,xn)0,i=1,...,mhi(x1,x2,...,xn)=0,i=1,...,I
g i g_i gi为凸函数, h i h_i hi为线形函数。

对于凸优化问题,局部最优解即为全局最优解
证明:
在这里插入图片描述

X ∗ ∈ S 为 最 优 解 ⇔ ∇ f ( X ∗ ) T ( X − X ∗ ) ≥ 0 X^*\in S为最优解 \Leftrightarrow\nabla f(X^*)^T(X-X^*)\geq0 XSf(X)T(XX)0
X ∗ ∈ S 为 最 优 解 ⇔ − ∇ f ( X ∗ ) T X ∗ ≥ − ∇ f ( X ∗ ) T X X^*\in S为最优解 \Leftrightarrow-\nabla f(X^*)^TX^*\geq-\nabla f(X^*)^TX XSf(X)TXf(X)TX
证明:
在这里插入图片描述在这里插入图片描述

几何解释:

− ∇ f ( X ∗ ) T 为 α T -\nabla f(X^*)^T为\alpha^T f(X)TαT,上式为: α T X ∗ ≥ α T X \alpha^TX^*\geq\alpha^TX αTXαTX,当 α ≠ 0 \alpha\neq0 α=0,负梯度方向可确定支撑超平面。 X ∗ X^* X为最优解,其负梯度与凸集内任一点X的连线所成的角 > 9 0 o >90^o >90o。即 ⇔ − ∇ f ( X ∗ ) T ( X − X ∗ ) ≤ 0 \Leftrightarrow-\nabla f(X^*)^T(X-X^*)\leq0 f(X)T(XX)0
在这里插入图片描述
支撑超平面如下图:
在这里插入图片描述

5.无约束问题的最优性条件

(1)如果 f ( x ) f(x) f(x)为凸函数,则 X ∗ X^* X是最优解 ⇔ ∇ f ( X ∗ ) = 0 \Leftrightarrow\nabla f(X^*)=0 f(X)=0
(2) f ( x ) f(x) f(x)为一般函数:
必要条件:若 X ∗ X^* X最优,则(1) ∇ f ( X ∗ ) = 0 \nabla f(X^*)=0 f(X)=0 (2) ∇ 2 f ( X ∗ ) ≥ 0 \nabla^2 f(X^*)\geq0 2f(X)0
证明:
(1) ∇ f ( X ∗ ) = 0 \nabla f(X^*)=0 f(X)=0
在这里插入图片描述
(2) ∇ 2 f ( X ∗ ) ≥ 0 \nabla^2 f(X^*)\geq0 2f(X)0
利用 X ∗ X^* X点处的泰勒展开
在这里插入图片描述在这里插入图片描述

充分条件:若 ∇ f ( X ∗ ) = 0 \nabla f(X^*)=0 f(X)=0 ∇ 2 f ( X ∗ ) > 0 \nabla^2 f(X^*)>0 2f(X)>0,则 X ∗ X^* X严格最优

6.算法概述

迭代下降算法:给定初始点 X ∗ X^* X,产生点序列 { X k } k = 1 ∞ \{X^k\}^\infin_{k=1} {Xk}k=1,并且 f ( x k + 1 ) < f ( X k ) f(x^{k+1})<f(X^k) f(xk+1)<f(Xk)

  • 判断是否为找的点
  • 找到下一个点

如何从当前点 X k X^k Xk迭代找到下一点 X k + 1 X^{k+1} Xk+1?

  • 线 搜 索 方 法 : X k , 找 到 下 降 方 向 d k , 确 定 步 长 α k ( X k + 1 = X k + α k d ∗ ) 线搜索方法:X^k,找到下降方向d^k,确定步长\alpha_k(X^{k+1}=X^k+\alpha_kd^*) 线Xk,dk,αk(Xk+1=Xk+αkd)
  • 信 赖 域 方 法 : X k , 先 确 定 要 走 的 范 围 , 再 确 定 方 向 信赖域方法:X^k,先确定要走的范围,再确定方向 Xk,

基于线搜索的下降算法基本思路:

  • s t e p 0 : 给 定 初 始 点 X 0 step 0 :给定初始点X^0 step0X0, k = 0 k=0 k=0
  • s t e p 1 : 判 断 X k step 1: 判断X^k step1:Xk是否满足终止条件;是,终止
  • s t e p 2 : 寻 找 X k step 2 :寻找X^k step2Xk处的下降方向 d k d^k dk
  • s t e p 3 : 选 择 合 适 的 步 长 α k > 0 , 使 ( f ( X k + α k d k ) < f ( X k ) ) step 3 : 选择合适的步长\alpha_k>0,使(f(X^k+\alpha_kd^k)<f(X^k)) step3:αk>0使(f(Xk+αkdk)<f(Xk))
  • s t e p 4 : 令 X k + 1 = X k + α k d k step 4 : 令X^{k+1}=X^k+\alpha_kd^k step4Xk+1=Xk+αkdk k = k + 1 k=k+1 k=k+1,转 s t e p 1 step 1 step1

其中有四个关键指标:

  1. 终止条件

{ ∣ ∣ ∇ f ( X k ) ∣ ∣ 2 ≤ ϵ , 用 得 多 ∣ ∣ X k − X k + N ∣ ∣ 2 ≤ ϵ f ( X k ) − f ( X k + N ) ≤ ϵ \left\{\begin{matrix}||\nabla f(X^k)||_2\leq \epsilon,用得多\\|| X^k-X^{k+N}||_2\leq\epsilon \\f(X^k)-f(X^{k+N})\leq\epsilon\end{matrix} \right. f(Xk)2ϵXkXk+N2ϵf(Xk)f(Xk+N)ϵ

  1. 下降方向
  • 负梯度方向(最速下降法)
  • 牛顿方向
  1. 步长问题

φ = f ( X k + α k d k ) \varphi =f(X^k+\alpha_kd^k) φ=f(Xk+αkdk) 关于 α \alpha α的一元函数,通过 m i n φ ( α ) min\varphi(\alpha) minφ(α)确定步长

可通过线搜索方法确定

目标: m i n φ ( α ) ( α > 0 ) min\varphi(\alpha)(\alpha>0) minφ(α)(α>0)

  1. 基于搜索区间的直接搜索法
    搜索区间:包含 α ∗ \alpha^* α;单谷: [ a 0 , b 0 ] [a_0,b_0] [a0,b0]
    确定新的搜索区间:选取 λ , μ ∈ ( a 0 , b 0 ) , 且 λ < μ \lambda,\mu\in(a_0,b_0),且\lambda<\mu λ,μ(a0,b0),λ<μ
    (1) 如果 φ ( λ ) < φ ( μ ) : 新 区 间 为 [ a 1 , b 1 ] = [ a 0 , μ ] \varphi(\lambda)<\varphi(\mu):新区间为[a_1,b_1]=[a_0,\mu] φ(λ)<φ(μ):[a1,b1]=[a0,μ]
    (2) 如果 φ ( λ ) > φ ( μ ) : 新 区 间 为 [ a 1 , b 1 ] = [ λ , b 0 ] \varphi(\lambda)>\varphi(\mu):新区间为[a_1,b_1]=[\lambda,b_0] φ(λ)>φ(μ):[a1,b1]=[λ,b0]

  2. 均匀搜索法
    δ = ( b 0 − a 0 ) / N , α i = a 0 + i δ , i = 1 , . . . , N − 1 \delta=(b_0-a_0)/N,\alpha_i=a_0+i\delta,i=1,...,N-1 δ=(b0a0)/N,αi=a0+iδ,i=1,...,N1

    (1) 比较相邻三个点对应的函数值,若对于某个 i i i φ ( α i − 1 ) > φ ( α i ) < φ ( α i + 1 ) \varphi(\alpha_{i-1})>\varphi(\alpha_{i})<\varphi(\alpha_{i+1}) φ(αi1)>φ(αi)<φ(αi+1),则 α ∗ ∈ [ α i − 1 , α i + 1 ] \alpha^*\in[\alpha_{i-1},\alpha_{i+1}] α[αi1,αi+1]

    (2)得到新的搜索区间 [ a 1 , b 1 ] = [ α i − 1 , α i + 1 ] [a_1,b_1]=[\alpha_{i-1},\alpha_{i+1}] [a1,b1]=[αi1,αi+1]

  3. 0.618法
    τ = ( 5 − 1 ) / 2 ( ≈ 0.618 ) , λ = a 0 + ( 1 − τ ) ( b 0 − a 0 ) , μ = a 0 + τ ( b 0 − a 0 ) ) \tau=(\sqrt5-1)/2(\approx0.618),\lambda=a_0+(1-\tau)(b_0-a_0),\mu=a_0+\tau(b_0-a_0)) τ=(5 1)/2(0.618),λ=a0+(1τ)(b0a0)μ=a0+τ(b0a0))
    (1)若 φ ( λ ) < φ ( μ ) , 则 α ∗ ∈ [ a 0 , μ ] , 产 生 新 的 搜 索 区 间 \varphi(\lambda)<\varphi(\mu),则\alpha^*\in[a_0,\mu],产生新的搜索区间 φ(λ)<φ(μ)α[a0,μ],
    (2)若 φ ( λ ) > φ ( μ ) , 则 α ∗ ∈ [ λ , b 0 ] , 产 生 新 的 搜 索 区 间 \varphi(\lambda)>\varphi(\mu),则\alpha^*\in[\lambda,b_0],产生新的搜索区间 φ(λ)>φ(μ)α[λ,b0],

  4. 基于导数信息的二分法(要求: φ ( α ) \varphi(\alpha) φ(α)能求导才可以)
    记区间中点 λ = ( b 0 + a 0 ) / 2 , 计 算 该 点 导 数 值 φ ′ ( λ ) \lambda=(b_0+a_0)/2,计算该点导数值\varphi'(\lambda) λ=(b0+a0)/2,φ(λ)
    (1) 若 φ ′ ( λ ) = 0 , 则 α ∗ = λ \varphi'(\lambda)=0,则\alpha^*=\lambda φ(λ)=0α=λ
    (2) 若 φ ′ ( λ ) < 0 , 则 α ∗ ∈ [ λ , b 0 ] \varphi'(\lambda)<0,则\alpha^*\in[\lambda,b_0] φ(λ)<0α[λ,b0] (函数值下降)
    (3) 若 φ ′ ( λ ) > 0 , 则 α ∗ ∈ [ a 0 , λ ] \varphi'(\lambda)>0,则\alpha^*\in[a_0,\lambda] φ(λ)>0α[a0,λ] (函数值上升)

  5. 非精确性搜索
    Armijo条件: φ ( α ) ≤ φ ( 0 ) + C 1 α φ ′ ( 0 ) , 0 < C 1 < 1 \varphi(\alpha)\leq\varphi(0)+C_1\alpha\varphi'(0),0<C_1<1 φ(α)φ(0)+C1αφ(0),0<C1<1

reference

  1. 支撑超平面的图来源自:https://blog.csdn.net/wangchy29/article/details/86497876.
  2. 文章主要知识点均来自于b站崔老师的最优化课程,强烈安利:https://www.bilibili.com/video/BV1pk4y1R7WS?share_source=copy_web.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值