其他机器学习系列文章见于专题:机器学习进阶之路——学习笔记整理,欢迎大家关注。
在约束最优化问题中,常利用拉格朗日乘子法将原始问题转换为对偶问题求解。即通过引入拉格朗日乘子,将有 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——李航