其他机器学习系列文章见于专题:机器学习进阶之路——学习笔记整理,欢迎大家关注。
在约束最优化问题中,常利用拉格朗日乘子法将原始问题转换为对偶问题求解。即通过引入拉格朗日乘子,将有 d d d个变量和 k k k个约束条件的最优化问题转化为具有 d + k d+k d+k个变量的无约束优化问题求解。
其通常的做法就是将约束函数与原目标函数联立,从而求出使原函数取得极值的各个变量的解,代入新函数,即可得到原目标函数的极值。
这种方法的最典型应用是在支持向量机当中。
考虑具有
m
m
m个等式约束和
n
n
n个不等式约束,且可行域
D
⊂
R
d
\mathbb { D } \subset \mathbb { R } ^ { d }
D⊂Rd非空的优化问题(原始问题):
min
x
f
(
x
)
\min _ { \boldsymbol { x } } f ( \boldsymbol { x } )
xminf(x)
s.t. h i ( x ) = 0 ( i = 1 , … , m ) g j ( x ) ⩽ 0 ( j = 1 , … , n ) \begin{array} { l l } { \text { s.t. } } & { h _ { i } ( \boldsymbol { x } ) = 0 \quad ( i = 1 , \ldots , m ) } \\ { } & { g _ { j } ( \boldsymbol { x } ) \leqslant 0 \quad ( j = 1 , \ldots , n ) } \end{array} s.t. hi(x)=0(i=1,…,m)gj(x)⩽0(j=1,…,n)
引入拉格朗日乘子
λ
\lambda
λ和
μ
\mu
μ,得到相应的拉格朗日函数(对偶问题):
L
(
x
,
λ
,
μ
)
=
f
(
x
)
+
∑
i
=
1
m
λ
i
h
i
(
x
)
+
∑
j
=
1
n
μ
j
g
j
(
x
)
L ( \boldsymbol { x } , \boldsymbol { \lambda } , \boldsymbol { \mu } ) = f ( \boldsymbol { x } ) + \sum _ { i = 1 } ^ { m } \lambda _ { i } h _ { i } ( \boldsymbol { x } ) + \sum _ { j = 1 } ^ { n } \mu _ { j } g _ { j } ( \boldsymbol { x } )
L(x,λ,μ)=f(x)+i=1∑mλihi(x)+j=1∑nμjgj(x)
假设原始问题的最优值为 p ∗ p ^ { * } p∗,对偶问题的最优值为 d ∗ d ^ { * } d∗。在某些条件下,原始问题和对偶问题的最优值相等 d ∗ = p ∗ d ^ { * } = p ^ { * } d∗=p∗,此时可以用求解对偶问题来代替求解原始问题。
仿射函数的定义:
设 f ( x ) f ( x ) f(x)是一个矢性(值)函数,如果它满足 f ( x ) = a ⋅ x + b f ( x ) = a \cdot x + b f(x)=a⋅x+b, a ∈ R n a \in \mathbf { R } ^ { n } a∈Rn, b ∈ R b \in \mathbf { R } b∈R, x ∈ R n x \in \mathbf { R } ^ { n } x∈Rn,则称 f ( x ) f ( x ) f(x)是仿射函数。
当仿射函数的常数项为0时,称为线性函数。
假设
f
(
x
)
f ( \boldsymbol { x } )
f(x)和
g
j
(
x
)
g _ { j } ( \boldsymbol { x } )
gj(x)均为凸函数,
h
i
(
x
)
h _ { i } ( \boldsymbol { x } )
hi(x)为仿射函数,并且假设不等式约束
g
j
(
x
)
g _ { j } ( \boldsymbol { x } )
gj(x)是严格可行的,即至少存在一点
x
x
x,对所有
i
i
i都有
g
j
(
x
)
<
0
g _ { j } ( \boldsymbol { x } ) < 0
gj(x)<0,那么就会存在
x
∗
x ^ { * }
x∗、
λ
∗
\lambda ^ { * }
λ∗和
μ
∗
\mu ^ { * }
μ∗,使
x
∗
x ^ { * }
x∗是原始问题的解,
λ
∗
\lambda ^ { * }
λ∗和
μ
∗
\mu ^ { * }
μ∗是对偶问题的解,并且
p
∗
=
d
∗
=
L
(
x
∗
,
λ
∗
,
μ
∗
)
p ^ { * } = d ^ { * } = L \left( x ^ { * } , \lambda ^ { * } , \mu ^ { * } \right)
p∗=d∗=L(x∗,λ∗,μ∗)
也就是说,此时可以用求解对偶问题来代替求解原始问题。
而
x
∗
x ^ { * }
x∗、
λ
∗
\lambda ^ { * }
λ∗和
μ
∗
\mu ^ { * }
μ∗分别是原始问题和对偶问题的解的充分必要条件是
x
∗
x ^ { * }
x∗、
λ
∗
\lambda ^ { * }
λ∗、
μ
∗
\mu ^ { * }
μ∗满足Karush-Kuhn-Tucker (KKT)条件
(
j
=
1
,
2
,
…
,
n
)
( j = 1,2 , \ldots , n )
(j=1,2,…,n):
{
g
j
(
x
)
⩽
0
μ
j
⩾
0
μ
j
g
j
(
x
)
=
0
h
j
(
x
∗
)
=
0
\left\{ \begin{array} { l } { g _ { j } ( x ) \leqslant 0 } \\ { \mu _ { j } \geqslant 0 } \\ { \mu _ { j } g _ { j } ( \boldsymbol { x } ) = 0 } \\ h _ { j } \left( x ^ { * } \right) = 0\end{array} \right.
⎩⎪⎪⎨⎪⎪⎧gj(x)⩽0μj⩾0μjgj(x)=0hj(x∗)=0
参考文献:
- 《机器学习》附录B.1——周志华
- 《统计学习方法》附录C——李航