凸函数及凸优化
今天开坑凸优化了,冲鸭🦆!
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 f1,f2,...,fk是定义在 S S S上的凸函数, λ 1 , λ 2 , . . . , λ k ≥ 0 \lambda _1,\lambda _2,..., \lambda k \geq0 λ1,λ2,...,λk≥0, ∑ 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α={x∣x∈S,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}
X∈S处的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
X∗∈S为最优解⇔∇f(X∗)T(X−X∗)≥0
即
X
∗
∈
S
为
最
优
解
⇔
−
∇
f
(
X
∗
)
T
X
∗
≥
−
∇
f
(
X
∗
)
T
X
X^*\in S为最优解 \Leftrightarrow-\nabla f(X^*)^TX^*\geq-\nabla f(X^*)^TX
X∗∈S为最优解⇔−∇f(X∗)TX∗≥−∇f(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(X−X∗)≤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 step0:给定初始点X0, 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 step2:寻找Xk处的下降方向 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 step4:令Xk+1=Xk+αkdk, k = k + 1 k=k+1 k=k+1,转 s t e p 1 step 1 step1
其中有四个关键指标:
- 终止条件
{ ∣ ∣ ∇ 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≤ϵ,用得多∣∣Xk−Xk+N∣∣2≤ϵf(Xk)−f(Xk+N)≤ϵ
- 下降方向
- 负梯度方向(最速下降法)
- 牛顿方向
…
- 步长问题
φ = 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)
-
基于搜索区间的直接搜索法
搜索区间:包含 α ∗ \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] -
均匀搜索法
令 δ = ( 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 δ=(b0−a0)/N,αi=a0+iδ,i=1,...,N−1(1) 比较相邻三个点对应的函数值,若对于某个 i i i有 φ ( α i − 1 ) > φ ( α i ) < φ ( α i + 1 ) \varphi(\alpha_{i-1})>\varphi(\alpha_{i})<\varphi(\alpha_{i+1}) φ(αi−1)>φ(αi)<φ(αi+1),则 α ∗ ∈ [ α i − 1 , α i + 1 ] \alpha^*\in[\alpha_{i-1},\alpha_{i+1}] α∗∈[αi−1,αi+1]
(2)得到新的搜索区间 [ a 1 , b 1 ] = [ α i − 1 , α i + 1 ] [a_1,b_1]=[\alpha_{i-1},\alpha_{i+1}] [a1,b1]=[αi−1,αi+1]
-
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−τ)(b0−a0),μ=a0+τ(b0−a0))
(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],产生新的搜索区间 -
基于导数信息的二分法(要求: φ ( α ) \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,λ] (函数值上升) -
非精确性搜索
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
- 支撑超平面的图来源自:https://blog.csdn.net/wangchy29/article/details/86497876.
- 文章主要知识点均来自于b站崔老师的最优化课程,强烈安利:https://www.bilibili.com/video/BV1pk4y1R7WS?share_source=copy_web.