约束优化问题
带约束的优化问题可以描述为以下形式
min
x
f
(
x
)
s
.
t
.
∀
i
,
g
i
(
x
)
≤
0
,
∀
j
,
h
j
(
x
)
=
0
(1.1)
\tag{1.1} \begin{aligned} \min_x\ &f(x)\\ s.t.\ &\forall i, g_i(x)\leq 0, \\ &\forall j, h_j(x)=0& \end{aligned}
xmin s.t. f(x)∀i,gi(x)≤0,∀j,hj(x)=0(1.1)
称 f ( x ) f(x) f(x) 为目标函数, g i ( x ) g_i(x) gi(x) 为不等式约束, h j ( x ) h_j(x) hj(x) 为等式约束。
若目标函数为二次函数,约束全为线性函数,称为二次规划。
若 f ( x ) f(x) f(x) 为凸函数, g i ( x ) g_i(x) gi(x) 为凸函数, h j ( x ) h_j(x) hj(x) 为仿射函数,则该问题称为凸优化。注意这里不等式约束 g i ( x ) ≤ 0 g_i(x)\leq0 gi(x)≤0 则要求 g i ( x ) g_i(x) gi(x) 为凸函数,若 g i ( x ) ≥ 0 g_i(x)\geq0 gi(x)≥0 则要求为凹函数。对于凸优化问题,全局有唯一的极小值点。
构造拉格朗日函数:
L
(
x
,
λ
,
μ
)
=
f
(
x
)
+
∑
i
λ
i
g
i
(
x
)
+
∑
j
μ
j
h
j
(
x
)
(1.2)
\tag{1.2} L(x, \lambda, \mu)=f(x)+\sum_i\lambda_ig_i(x) + \sum_j \mu_jh_j(x)
L(x,λ,μ)=f(x)+i∑λigi(x)+j∑μjhj(x)(1.2)
原问题等价于:
min
x
max
λ
,
μ
L
(
x
,
λ
,
μ
)
s
.
t
.
λ
i
≥
0
(1.3)
\tag{1.3} \begin{aligned} \min_x\ &\max_{\lambda, \mu}L(x, \lambda, \mu)\\ s.t.\ &\lambda_i\geq 0 \end{aligned}
xmin s.t. λ,μmaxL(x,λ,μ)λi≥0(1.3)
简单理解:如果某个条件不满足,一定可以调整相应的
λ
/
μ
\lambda/\mu
λ/μ 使得函数值任意大,从而不可能成为最优解;如果所有条件都满足,那么后面两个求和号里的东西都为 0,拉格朗日函数就等于原函数。
这样,我们就把关于 x x x 的限制给去除掉了。
对于约束优化问题,最优解
x
∗
x^*
x∗ 需要满足 KKT 条件:
{
∇
x
L
(
x
∗
,
λ
∗
,
μ
∗
)
=
0
λ
i
∗
≥
0
λ
i
g
i
(
x
∗
)
=
0
g
i
(
x
∗
)
≤
0
h
j
=
0
(1.4)
\tag{1.4} \left\{ \begin{matrix} \nabla_x L(x^*, \lambda^*,\mu^*)=0\\ \lambda_i^*\geq 0\\ \lambda_ig_i(x^*)=0\\ g_i(x^*)\leq 0 \\h_j=0 \end{matrix} \right.
⎩
⎨
⎧∇xL(x∗,λ∗,μ∗)=0λi∗≥0λigi(x∗)=0gi(x∗)≤0hj=0(1.4)
对于凸优化问题,这个条件是充要的。
直观解释是:对于某条不等式约束 i i i,要么 λ i = 0 \lambda_i=0 λi=0 ,表示该限制无用;要么 λ i > 0 \lambda_i> 0 λi>0,此时有 g i ( x ∗ ) = 0 g_i(x^*)=0 gi(x∗)=0,即最优解在边界上,同时 f ( x ) f(x) f(x) 负梯度方向一定与 g ( x ) g(x) g(x) 梯度方向相同,即 ∇ x L ( x ∗ , λ ∗ , μ ∗ ) = 0 \nabla_x L(x^*, \lambda^*,\mu^*)=0 ∇xL(x∗,λ∗,μ∗)=0 (否则可以沿着 g i ( x ) = 0 g_i(x)=0 gi(x)=0 上的某个方向移动使得函数值减小)。梯度为零也意味着最优解处 f ( x ) f(x) f(x) 的梯度方向一定与 h j ( x ) = 0 h_j(x)=0 hj(x)=0 的法线方向共线。
几何理解见 拉格朗日乘子法和KKT条件 - PilgrimHui - 博客园 (cnblogs.com)
对偶问题
以式
(
1.3
)
(1.3)
(1.3) 为例,它的对偶问题为
max
λ
,
μ
min
x
L
(
x
,
λ
,
μ
)
s
.
t
.
λ
i
≥
0
(2.1)
\tag{2.1} \begin{aligned} \max_{\lambda, \mu}\ &\min_xL(x, \lambda, \mu)\\ s.t.\ &\lambda_i\geq 0 \end{aligned}
λ,μmax s.t. xminL(x,λ,μ)λi≥0(2.1)
可以发现,原问题是关于 x x x 的函数,对偶问题是关于 λ , μ \lambda, \mu λ,μ 的函数。
对偶问题和原问题有什么关系?首先有弱对偶性,简单来说就是 max min ≤ min max \max \min \leq \min \max maxmin≤minmax。
证明:任给 x ∗ , λ ∗ , μ ∗ x^*, \lambda^*, \mu^* x∗,λ∗,μ∗,显然有 min x L ( x , λ ∗ , μ ∗ ) ≤ L ( x ∗ , λ ∗ , μ ∗ ) ≤ max λ , μ L ( x ∗ , λ , μ ) \min_x L(x,\lambda^*,\mu^*)\leq L(x^*,\lambda^*,\mu^*)\leq \max_{\lambda,\mu}L(x^*,\lambda,\mu) minxL(x,λ∗,μ∗)≤L(x∗,λ∗,μ∗)≤maxλ,μL(x∗,λ,μ),故第一项的最大值也小于等于第三项的最小值,得证。容易发现,弱对偶性总是成立的。
但我们想要的是强对偶性,即 max min = min max \max \min=\min \max maxmin=minmax,这样就可以把原问题转化为对偶问题进行求解。
给出 Slater 条件
∃
x
∈
relint
D
s
.
t
.
∀
i
,
g
i
(
x
)
<
0
(2.2)
\tag{2.2} \exist x\in \text {relint} D\\ s.t.\ \forall i,g_i(x)<0
∃x∈relintDs.t. ∀i,gi(x)<0(2.2)
其中 relint 表示内点。凸优化 + Slater 条件是对偶关系的充分不必要条件。还有放松的 Slater 条件:只需要校验限制中的非仿射函数。
强对偶关系也可以推导出 KKT 条件,前提是原问题、对偶问题最优解都能取到(一个不能取到的例子是 min 1 / x , s . t . x ≥ 1 \min 1/x,\ s.t.\ x\geq1 min1/x, s.t. x≥1),下面给出证明:
记原问题最优值为
p
∗
p^*
p∗,对偶问题最优值为
d
∗
d^*
d∗,有
d
∗
=
max
λ
,
μ
min
x
L
(
x
,
λ
,
μ
)
=
min
x
L
(
x
,
λ
∗
,
μ
∗
)
≤
L
(
x
∗
,
λ
∗
,
μ
∗
)
=
f
(
x
∗
)
+
∑
i
λ
i
g
i
(
x
∗
)
+
∑
j
μ
j
h
j
(
x
∗
)
=
f
(
x
∗
)
+
∑
i
λ
i
g
i
(
x
∗
)
≤
f
(
x
∗
)
=
p
∗
(2.3)
\tag{2.3} \begin{aligned} d^*&=\max_{\lambda, \mu}\min_xL(x, \lambda, \mu)\\ &=\min_xL(x,\lambda^*,\mu^*)\\ &\leq L(x^*,\lambda^*,\mu^*)\\ &=f(x^*)+\sum_i\lambda_ig_i(x^*) + \sum_j \mu_jh_j(x^*)\\ &=f(x^*)+\sum_i\lambda_ig_i(x^*)\\ &\leq f(x^*)\\ &=p^* \end{aligned}
d∗=λ,μmaxxminL(x,λ,μ)=xminL(x,λ∗,μ∗)≤L(x∗,λ∗,μ∗)=f(x∗)+i∑λigi(x∗)+j∑μjhj(x∗)=f(x∗)+i∑λigi(x∗)≤f(x∗)=p∗(2.3)
要满足强对偶关系,当且仅当两个不等号同时取等。第一个不等号取等推出偏导为零
∇
x
L
(
x
∗
,
λ
∗
,
μ
∗
)
=
0
\nabla_x L(x^*, \lambda^*,\mu^*)=0
∇xL(x∗,λ∗,μ∗)=0,第二个不等号取等推出松弛互补条件
λ
i
g
i
=
0
\lambda_ig_i=0
λigi=0。KKT 条件的其他三条就是原本或我们引入的限制。
对于强对偶性和 KKT 条件的要求和关系,详见 KKT条件在使用的时候有什么要求吗?是否要求强对偶 - 知乎
对偶关系集合解释详见 机器学习-支持向量机6-约束优化问题-对偶关系的几何解释_哔哩哔哩_bilibili
硬间隔SVM
对于线性可分的 n 个样本点 ( x i , y i ) (x_i, y_i) (xi,yi), x i x_i xi 为坐标, y i y_i yi 为标签(1 或 -1)。要找到一个超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0 区分两类数据,并且使该超平面到数据点集的最小距离最大,即要求:
max
w
,
b
min
i
∣
w
T
x
i
+
b
∣
∥
w
∥
s
.
t
.
y
i
(
w
T
x
i
+
b
)
>
0
(3.1)
\tag{3.1} \begin{aligned} \max_{w,b}\ &\min_i \frac{{|w^Tx_i+b|}}{\|w\|}\\ s.t.\ &y_i(w^Tx_i+b)>0 \end{aligned}
w,bmax s.t. imin∥w∥∣wTxi+b∣yi(wTxi+b)>0(3.1)
如果
w
,
b
w,b
w,b 对应的超平面能够正确分类,那么同时将他们缩放一定倍数一定能够使得
min
y
i
(
w
T
x
i
+
b
)
=
1
\min y_i(w^Tx_i+b)= 1
minyi(wTxi+b)=1 成立。因此原问题也等价于
max
w
,
b
min
i
∣
w
T
x
i
+
b
∣
∥
w
∥
s
.
t
.
min
y
i
(
w
T
x
i
+
b
)
=
1
(3.2)
\tag{3.2} \begin{aligned} \max_{w,b}\ &\min_i \frac{{|w^Tx_i+b|}}{\|w\|}\\ s.t.\ &\min y_i(w^Tx_i+b)=1 \end{aligned}
w,bmax s.t. imin∥w∥∣wTxi+b∣minyi(wTxi+b)=1(3.2)
化简一下目标
max
w
,
b
min
i
∣
w
T
x
i
+
b
∣
∥
w
∥
⟺
max
w
,
b
1
∥
w
∥
min
i
y
i
(
w
T
x
i
+
b
)
⟺
max
w
,
b
1
∥
w
∥
⟺
min
w
,
b
1
2
w
T
w
(3.3)
\tag{3.3} \max_{w,b} \min_i \frac{{|w^Tx_i+b|}}{\|w\|} \iff \max_{w,b} \frac{1}{\|w\|}\min_i y_i(w^Tx_i+b) \iff \max_{w,b} \frac{1}{\|w\|} \iff \min_{w,b} \frac12 w^Tw
w,bmaximin∥w∥∣wTxi+b∣⟺w,bmax∥w∥1iminyi(wTxi+b)⟺w,bmax∥w∥1⟺w,bmin21wTw(3.3)
因此原问题化为
min
w
,
b
1
2
w
T
w
s
.
t
.
min
y
i
(
w
T
x
i
+
b
)
=
1
(3.4)
\tag{3.4} \begin{aligned} \min_{w,b}\ &\frac12 w^Tw\\ s.t.\ &\min y_i(w^Tx_i+b)=1 \end{aligned}
w,bmin s.t. 21wTwminyi(wTxi+b)=1(3.4)
其实可以再进一步
min
w
,
b
1
2
w
T
w
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
(3.5)
\tag{3.5} \begin{aligned} \min_{w,b}\ &\frac12 w^Tw\\ s.t.\ &y_i(w^Tx_i+b)\geq 1 \end{aligned}
w,bmin s.t. 21wTwyi(wTxi+b)≥1(3.5)
解释一下这一步等价的原因。如果求得解
min
y
i
(
w
T
x
i
+
b
)
=
k
>
1
\min y_i(w^Tx_i+b)=k>1
minyi(wTxi+b)=k>1,那么有
min
y
i
(
(
w
k
)
T
x
i
+
b
k
)
=
1
\min y_i((\frac{w}{k})^Tx_i+\frac{b}{k})=1
minyi((kw)Txi+kb)=1,且
(
w
k
)
T
(
w
k
)
<
w
T
w
(\frac w k)^T(\frac w k) < w^Tw
(kw)T(kw)<wTw。因此
w
,
b
w, b
w,b 肯定不是最优解。故这一步是在我们最优化目标下才成立的。
得到 SVM 的基本型:
min
w
,
b
1
2
w
T
w
s
.
t
.
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
(3.6)
\tag{3.6} \begin{aligned} \min_{w,b}\ &\frac12 w^Tw\\ s.t.\ &1- y_i(w^Tx_i+b)\leq 0 \end{aligned}
w,bmin s.t. 21wTw1−yi(wTxi+b)≤0(3.6)
模型求解
式 ( 3.6 ) (3.6) (3.6) 是一个凸优化问题,其实可以直接求解。但我们有更高效的方法。
既然这是带约束的问题,首先写出拉格朗日函数
L
(
w
,
b
,
λ
)
=
1
2
w
T
w
+
∑
i
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
(4.1)
\tag{4.1} L(w,b,\lambda)=\frac 1 2 w^Tw + \sum_i \lambda_i(1-y_i(w^Tx_i+b))\\
L(w,b,λ)=21wTw+i∑λi(1−yi(wTxi+b))(4.1)
将其转化为对
w
,
b
w,b
w,b 无约束的问题
min
w
,
b
max
λ
L
(
w
,
b
,
λ
)
s
.
t
.
λ
i
≥
0
(4.2)
\tag{4.2} \begin{aligned} \min_{w,b}\ &\max_\lambda L(w, b, \lambda)\\ s.t.\ &\lambda_i \geq 0 \end{aligned}
w,bmin s.t. λmaxL(w,b,λ)λi≥0(4.2)
对偶问题为
max
λ
min
w
,
b
L
(
w
,
b
,
λ
)
s
.
t
.
λ
i
≥
0
(4.3)
\tag{4.3} \begin{aligned} \max_\lambda\ &\min_{w,b}L(w, b, \lambda)\\ s.t.\ &\lambda_i \geq 0 \end{aligned}
λmax s.t. w,bminL(w,b,λ)λi≥0(4.3)
我们要优化的目标是个凸函数,约束是线性的(满足放松的 Slater 条件),满足强对偶。
转化为对偶问题的好处是,内层对
w
,
b
w,b
w,b 是无限制的,可以求偏导来找到最优解。
∂
L
∂
b
≜
0
⇒
∑
i
λ
i
y
i
=
0
(4.4)
\tag{4.4} \frac{\partial L}{\partial b}\triangleq0\Rightarrow \sum_i \lambda_iy_i = 0
∂b∂L≜0⇒i∑λiyi=0(4.4)
代入
(
4.1
)
(4.1)
(4.1)
L
(
w
,
b
∗
,
λ
)
=
1
2
w
T
w
+
∑
i
λ
i
−
∑
i
λ
i
y
i
w
T
x
i
(4.5)
\tag{4.5} L(w,b^*,\lambda)=\frac 1 2 w^Tw+\sum_i \lambda_i - \sum_i\lambda_iy_iw^Tx_i
L(w,b∗,λ)=21wTw+i∑λi−i∑λiyiwTxi(4.5)
对
w
w
w 求偏导
∂
L
∂
w
=
w
−
∑
i
λ
i
y
i
x
i
≜
0
⇒
w
∗
=
∑
i
λ
i
y
i
x
i
(4.6)
\tag{4.6} \frac{\partial L}{\partial w}= w - \sum_i\lambda_i y_ix_i\triangleq0\Rightarrow w^*=\sum_i\lambda_i y_ix_i
∂w∂L=w−i∑λiyixi≜0⇒w∗=i∑λiyixi(4.6)
再代入
(
4.5
)
(4.5)
(4.5)
L
(
w
∗
,
b
∗
,
λ
)
=
1
2
(
∑
i
λ
i
y
i
x
i
)
T
(
∑
i
λ
i
y
i
x
i
)
+
∑
i
λ
i
−
∑
i
λ
i
y
i
(
∑
j
λ
j
y
j
x
j
)
T
x
i
=
−
1
2
∑
i
∑
j
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
λ
i
(4.7)
\tag{4.7} \begin{aligned} L(w^*,b^*,\lambda)&=\frac 1 2 \bigg( \sum_i\lambda_iy_ix_i \bigg)^T\bigg( \sum_i\lambda_iy_ix_i \bigg)+\sum_i\lambda_i-\sum_i\lambda_iy_i\bigg( \sum_j\lambda_jy_jx_j \bigg)^Tx_i\\ &=-\frac 1 2 \sum_i\sum_j\lambda_i\lambda_jy_iy_jx_i^Tx_j+\sum_i\lambda_i \end{aligned}
L(w∗,b∗,λ)=21(i∑λiyixi)T(i∑λiyixi)+i∑λi−i∑λiyi(j∑λjyjxj)Txi=−21i∑j∑λiλjyiyjxiTxj+i∑λi(4.7)
最终可以化为
min
λ
1
2
∑
i
∑
j
λ
i
λ
j
y
i
y
j
x
i
T
x
j
−
∑
i
λ
i
s
.
t
.
∑
i
λ
i
y
i
=
0
,
λ
i
≥
0
(4.8)
\tag{4.8} \begin{aligned} \min_\lambda\ &\frac 1 2 \sum_i\sum_j\lambda_i \lambda_jy_iy_jx_i^Tx_j-\sum_i\lambda_i\\ s.t.\ &\sum_i \lambda_iy_i = 0,\\ &\lambda_i \geq 0\\ \end{aligned}
λmin s.t. 21i∑j∑λiλjyiyjxiTxj−i∑λii∑λiyi=0,λi≥0(4.8)
求解这个问题得到 λ \lambda λ,就可以带入式 ( 4.6 ) (4.6) (4.6) 得到 w ∗ w^* w∗。
上面提到的,满足强对偶性的问题最优解满足 KKT 条件,即
λ
i
∗
(
1
−
y
i
(
(
w
∗
)
T
x
i
+
b
∗
)
)
=
0
(4.9)
\tag{4.9} \lambda_i^*(1-y_i((w^*)^Tx_i+b^*))=0
λi∗(1−yi((w∗)Txi+b∗))=0(4.9)
若
λ
i
∗
=
0
\lambda_i^*=0
λi∗=0,该样本无关紧要;若
λ
i
∗
>
0
\lambda_i^*>0
λi∗>0,有
y
i
(
(
w
∗
)
T
x
i
+
b
∗
)
=
1
y_i((w^*)^Tx_i+b^*)=1
yi((w∗)Txi+b∗)=1,即该样本点在最大间隔边界上,称其为支持向量。这就是支持向量机名字的由来。一般情况下,我们得到的模型和大部分不在边界的点是没有关系的,因此鲁棒性较强。
设有支持向量
(
x
k
,
y
k
)
(x_k,y_k)
(xk,yk) 满足
y
k
(
(
w
∗
)
T
x
k
+
b
∗
)
=
1
y_k((w^*)^Tx_k+b^*)=1
yk((w∗)Txk+b∗)=1,即
b
∗
=
y
k
−
(
w
∗
)
T
x
k
(4.10)
\tag{4.10} b^*=y_k-(w^*)^Tx_k
b∗=yk−(w∗)Txk(4.10)
这样也能求出
b
∗
b^*
b∗,也就找到了最优超平面。
最后一个问题就是怎么求解 λ \lambda λ?通常使用序列最小优化算法(Sequential Minimal Optimization, SMO)。该算法不断执行如下两个步骤直至收敛:
- 选取一对需要更新的 λ i , λ j \lambda_i, \lambda_j λi,λj
- 固定其余参数,优化目标函数
发现这个过程很类似于坐标上升算法,即每次通过更新多元函数中的一维,经过多次迭代直到收敛。由于目标函数是凸的,SMO 得到的的一定是全局最优解。