凸优化学习
所有的算法实质上都是在解KKT条件,这部分内容是学习算法之前需要掌握的一些东西。
学习笔记
一、引
所有的算法都是迭代算法,形如:
x
k
+
1
=
x
k
+
α
k
d
k
α
k
=
arg
min
α
≥
0
f
0
(
x
k
+
α
d
k
)
\begin{aligned} x^{k+1}&=x^k+\alpha^kd^k\\ \alpha^k&=\arg\min_{\alpha\ge0}f_0(x^k+\alpha d^k) \end{aligned}
xk+1αk=xk+αkdk=argα≥0minf0(xk+αdk)
其中,
x
k
x^k
xk为我们当前得到的可行解,
α
k
\alpha^k
αk为我们为了得到下一步可行解所需要的步长(deep learning里面的learning rate),
d
k
d^k
dk为方向。
方向的求解之后会有许多方法来讨论,我们先看一下步长的求解,之后所有方法中步长的求解都是依据于此的。
二、解步长的方法
1.黄金分割法(优选法)(精确步长)
做法是,在选定
α
m
a
x
\alpha_{max}
αmax的情况下,比较
0.382
α
m
a
x
0.382\alpha_{max}
0.382αmax和
0.618
α
m
a
x
0.618\alpha_{max}
0.618αmax对应的
f
0
(
x
k
)
f_0(x^k)
f0(xk)的值的大小,如果前者大,就丢掉左边一块在右边迭代寻找;反之亦然,直到寻找到下降最快的(最小的)
f
0
(
x
k
)
f_0(x^k)
f0(xk)。
2.Amijo Rule(不精确步长)
找一个较小的步长,使得函数值有所下降就可以了。
过程:
若
f
0
(
x
k
+
α
d
k
)
>
f
0
(
x
k
)
+
γ
α
∇
f
0
T
(
x
k
)
d
k
若f_0(x^k+\alpha d^k)>f_0(x^k)+\gamma\alpha\nabla f_0^T(x^k)d^k
若f0(xk+αdk)>f0(xk)+γα∇f0T(xk)dk
则
α
←
α
β
则\alpha \leftarrow\alpha\beta
则α←αβ
否
则
停
止
否则停止
否则停止
其中
β
∈
(
0
,
1
)
,
γ
∈
(
0
,
0.5
)
,
γ
\beta\in(0,1),\gamma\in(0,0.5),\gamma
β∈(0,1),γ∈(0,0.5),γ用于刻画下降显著程度(一般取0.5)。
意思是若满足这个不等式,则以
β
\beta
β的速率下降
α
\alpha
α。
大体意思是在
f
0
(
x
k
)
f_0(x^k)
f0(xk)这一点做直线
f
0
(
x
k
)
+
α
∇
f
0
(
x
k
)
d
k
f_0(x^k)+\alpha\nabla f_0(x^k)d^k
f0(xk)+α∇f0(xk)dk,使用
γ
\gamma
γ调整斜率。然后从
α
m
a
x
\alpha_{max}
αmax开始下降,下降到符合条件的区域就停止,所得
α
\alpha
α即为步长。
可以看到,这个步长并不是精确的使函数在当前方向下降最多的步长,而仅仅是使其能够下降。
三、最优性条件分析
1、刻画函数凸性的两个矩阵
在凸函数的二阶条件中:
∇
2
f
(
x
)
≥
0
\nabla^2 f(x)\ge0
∇2f(x)≥0
为了刻画它的凸性,我们称具有强凸性的凸函数有如下:
∃
m
∇
2
f
(
x
)
≥
mI
\exist\textbf m\qquad\nabla^2f(x)\ge \textbf {mI}
∃m∇2f(x)≥mI
就是避免出现一些虽然是凸函数,但是最优值非唯一且连续的函数(平底锅)。
相应的,也有:
∃
m
,
∃
M
MI
≥
∇
2
f
(
x
)
≥
mI
\exist\textbf m,\exist\textbf M\qquad\textbf {MI}\ge\nabla^2f(x)\ge \textbf {mI}
∃m,∃MMI≥∇2f(x)≥mI
让它不那么凸。
在一阶条件下,强凸性可以表现为:
f
(
y
)
≥
f
(
x
)
+
∇
f
T
(
x
)
(
y
−
x
)
+
1
2
m
∥
y
−
x
∥
2
2
①
f(y)\ge f(x)+\nabla f^T(x)(y-x)+\frac 1 2 \textbf m\|y-x\|_2^2\qquad ①
f(y)≥f(x)+∇fT(x)(y−x)+21m∥y−x∥22①
2、探究当 ∇ f ( x ) → 0 \nabla f(x)\rightarrow 0 ∇f(x)→0时, f ( x ) f(x) f(x)离 f ( x ∗ ) f(x^*) f(x∗)还有多远
当
x
x
x给定,有:
f
(
x
)
+
∇
f
T
(
x
)
(
y
−
x
)
+
1
2
m
∥
y
−
x
∥
2
2
②
f(x)+\nabla f^T(x)(y-x)+\frac 1 2 \textbf m\|y-x\|_2^2\qquad ②
f(x)+∇fT(x)(y−x)+21m∥y−x∥22②
这是一个关于
y
y
y的凸函数,我们可以通过求一阶偏导的方式求出它的最小值,求出之后,有:
f
(
x
)
+
∇
f
T
(
x
)
(
y
−
x
)
+
1
2
m
∥
y
−
x
∥
2
2
≥
f
(
x
)
−
1
2
m
∥
∇
f
(
x
)
∥
2
2
③
f(x)+\nabla f^T(x)(y-x)+\frac 1 2 \textbf m\|y-x\|_2^2\ge f(x)-\frac 1 {2\textbf m}\|\nabla f(x)\|_2^2\qquad ③
f(x)+∇fT(x)(y−x)+21m∥y−x∥22≥f(x)−2m1∥∇f(x)∥22③
结合①②③式有:
f
(
y
)
≥
f
(
x
)
−
1
2
m
∥
∇
f
(
x
)
∥
2
2
④
f(y)\ge f(x)-\frac 1 {2 \textbf m}\|\nabla f(x)\|_2^2\qquad ④
f(y)≥f(x)−2m1∥∇f(x)∥22④
④式对于任何
y
y
y都满足,令④式中的
y
y
y为
x
∗
x^*
x∗,有:
p
∗
≥
f
(
x
)
−
1
2
m
∥
∇
f
(
x
)
∥
2
2
⇒
f
(
x
)
−
p
∗
≤
1
2
m
∥
∇
f
(
x
)
∥
2
2
⇒
∥
f
(
x
)
−
p
∗
∥
2
≤
1
2
m
∥
∇
f
(
x
)
∥
2
2
\begin{aligned} &&p^*&\ge f(x)-\frac 1 {2\textbf m}\|\nabla f(x)\|_2^2 \\\Rightarrow&&f(x)-p^*&\le \frac 1 {2\textbf m}\|\nabla f(x)\|_2^2 \\\Rightarrow&&\|f(x)-p^*\|_2&\le \frac 1 {2\textbf m}\|\nabla f(x)\|_2^2 \end{aligned}
⇒⇒p∗f(x)−p∗∥f(x)−p∗∥2≥f(x)−2m1∥∇f(x)∥22≤2m1∥∇f(x)∥22≤2m1∥∇f(x)∥22
现在当给出一个梯度值,我们就可以知道
f
(
x
)
f(x)
f(x)离
f
(
x
∗
)
f(x^*)
f(x∗)还有多远。
2、探究当 ∇ f ( x ) → 0 \nabla f(x)\rightarrow 0 ∇f(x)→0时, x x x离 x ∗ x^* x∗还有多远
由①式经柯西施瓦茨不等式得:
f
(
x
)
≥
f
(
x
)
+
∥
∇
f
(
x
)
∥
2
∥
x
−
x
∗
∥
2
+
m
2
∥
x
−
x
∗
∥
2
⇔
∥
x
∗
−
x
∥
2
≤
2
m
∥
∇
f
(
x
)
∥
2
\begin{aligned} &&f(x)&\ge f(x)+\|\nabla f(x)\|_2\|x-x^*\|_2+\frac {\textbf m} 2 \|x-x^*\|_2\\ \Leftrightarrow&&\|x^*-x\|_2&\le \frac 2 {\textbf m} \|\nabla f(x)\|_2 \end{aligned}
⇔f(x)∥x∗−x∥2≥f(x)+∥∇f(x)∥2∥x−x∗∥2+2m∥x−x∗∥2≤m2∥∇f(x)∥2
现在当给出一个梯度值,我们就可以知道
x
x
x离
x
∗
x^*
x∗还有多远。
个人思考
以上两个不等式说明了当我们得到的解不够精确时,我们的损失有多大,在实际问题中经常会出现求不到精确解的情况,这时我们就要掂量一下我们能接受的损失是多少,继续优化的成本和收益是多少,再决定下一步的动作。
纸质笔记