凸优化学习
学习笔记
一、有约束凸问题分析
首先,介绍一下
log barrier
\text{log barrier}
log barrier方法:
min
f
0
(
x
)
s.t.
f
i
(
x
)
≤
0
i
=
1
⋯
m
h
i
(
x
)
=
0
i
=
1
⋯
p
⇔
min
f
0
(
x
)
−
∑
i
=
1
m
u
i
log
(
−
f
i
(
x
)
)
i
=
1
⋯
m
s.t.
h
i
(
x
)
=
0
i
=
1
⋯
p
\begin{aligned} \min&& f_0(x)&\\ \text{s.t.}&&f_i(x)&\le0\qquad i=1\cdots m\\ &&h_i(x)&=0\qquad i=1\cdots p\\ \Leftrightarrow\qquad\min&& f_0(x)-\sum^m_{i=1}u_i\log \big(-f_i(x)\big)&\qquad\quad\ \ \ i=1\cdots m\\ \text{s.t.} &&h_i(x)&=0\qquad i=1\cdots p\\ \end{aligned}\\
mins.t.⇔mins.t.f0(x)fi(x)hi(x)f0(x)−i=1∑muilog(−fi(x))hi(x)≤0i=1⋯m=0i=1⋯p i=1⋯m=0i=1⋯p
这是一个惩罚的思想,见过很多次了。具体来说就是
f
i
(
x
)
→
0
f_i(x)\rightarrow0
fi(x)→0时,
p
∗
→
+
∞
p^*\rightarrow+\infty
p∗→+∞,根本无法得到最优解,就好像有一个“栅栏”一样,阻止
f
i
(
x
)
f_i(x)
fi(x)趋近于
0
0
0,让它只能小于
0
0
0。
基于
log barrier
\text{log barrier}
log barrier方法,我们之后所有的约束都只讨论等式约束,不等式约束用
log barrier
\text{log barrier}
log barrier去掉。
即所有的问题都形如:
min
f
0
(
x
)
s.t.
h
i
(
x
)
=
0
i
=
1
⋯
p
\begin{aligned} \min&& f_0(x)&\\ \text{s.t.} &&h_i(x)&=0\qquad i=1\cdots p\\ \end{aligned}
mins.t.f0(x)hi(x)=0i=1⋯p
其
KKT
\text{KKT}
KKT条件为:
{
h
i
(
x
)
=
0
∇
f
0
(
x
)
+
∑
i
=
1
p
v
i
∇
h
i
(
x
)
=
0
\begin{cases} h_i(x)=0\\ \nabla f_0(x)+\sum\limits_{i=1}^pv_i\nabla h_i(x)=0 \end{cases}
⎩⎨⎧hi(x)=0∇f0(x)+i=1∑pvi∇hi(x)=0
这里要分类讨论,即
KKT
\text{KKT}
KKT条件是线性方程组或者是非线性方程组两种。
当
KKT
\text{KKT}
KKT条件是线性方程组时,按照解线性方程组的方法解就行了,属于比较简单的类别,这里就不赘述了,我们主要研究怎么在
KKT
\text{KKT}
KKT条件非线性方程组时算出最优解。
二、牛顿法( Newton’s Method \text{Newton's Method} Newton’s Method)
在优化过程中的每一步,我们实质上都在优化这么一个问题:
min
d
f
0
(
x
k
+
d
)
s.t.
h
i
(
x
k
+
d
)
=
0
i
=
1
⋯
p
\begin{aligned} \min_d&& f_0(x^k+d)&\\ \text{s.t.} &&h_i(x^k+d)&=0\qquad i=1\cdots p\\ \end{aligned}
dmins.t.f0(xk+d)hi(xk+d)=0i=1⋯p
为了使得到的
KKT
\text{KKT}
KKT条件线性,我们对
f
0
(
x
k
+
d
)
f_0(x^k+d)
f0(xk+d)在
x
k
x^k
xk二阶泰勒展开,上述问题可以约等价于:
min
d
f
0
(
x
k
)
+
∇
f
T
(
x
k
)
d
+
1
2
d
T
∇
2
f
(
x
k
)
d
s.t.
h
i
(
x
k
+
d
)
=
0
i
=
1
⋯
p
\begin{aligned} \min_d&& f_0(x^k)+\nabla f^T(x^k)d+\frac 1 2d^T\nabla^2f(x^k)d&\\ \text{s.t.} &&h_i(x^k+d)&=0\qquad i=1\cdots p\\ \end{aligned}
dmins.t.f0(xk)+∇fT(xk)d+21dT∇2f(xk)dhi(xk+d)=0i=1⋯p
此时每一步的
KKT
\text{KKT}
KKT条件为:
{
h
i
(
x
k
+
d
k
)
=
0
∇
f
0
(
x
k
)
+
∇
2
f
T
(
x
k
)
d
k
+
∑
i
=
1
p
v
i
∗
∇
h
i
(
x
k
)
=
0
\begin{cases} h_i(x^k+d^k)=0\\ \nabla f_0(x^k)+\nabla^2f^T(x^k)d^k+\sum\limits_{i=1}^pv_i^*\nabla h_i(x^k)=0 \end{cases}
⎩⎨⎧hi(xk+dk)=0∇f0(xk)+∇2fT(xk)dk+i=1∑pvi∗∇hi(xk)=0
这就是一个线性方程组了,每一步的
d
d
d都能很好的求出来。事实上,当没有
h
i
(
x
k
+
d
k
)
=
0
h_i(x^k+d^k)=0
hi(xk+dk)=0这一项约束时,很显然就得到
d
k
=
−
∇
f
0
(
x
k
)
(
∇
2
f
T
(
x
k
)
)
d^k=-\nabla f_0(x^k)\big(\nabla^2f^T(x^k)\big)
dk=−∇f0(xk)(∇2fT(xk)),不就是无约束的牛顿法吗?
个人思考
直接解一个非线性方程组往往是比较棘手的问题,牛顿法的思路就是将解一个非线性的 KKT \text{KKT} KKT条件转换为解许多线性的方程组,具体就是将求解分为很多步,每一步都有一个当前的 KKT \text{KKT} KKT条件,用一个泰勒展开去构造一个近似问题,而这个近似问题的 KKT \text{KKT} KKT条件是线性的。这样,通过不断迭代,我们最终能得到最优解。
纸质笔记