【机器学习】拉格朗日乘子法

其他机器学习系列文章见于专题:机器学习进阶之路——学习笔记整理,欢迎大家关注。

  在约束最优化问题中,常利用拉格朗日乘子法将原始问题转换为对偶问题求解。即通过引入拉格朗日乘子,将有 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 } DRd非空的优化问题(原始问题):
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=1mλihi(x)+j=1nμ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)=ax+b a ∈ R n a \in \mathbf { R } ^ { n } aRn b ∈ R b \in \mathbf { R } bR x ∈ R n x \in \mathbf { R } ^ { n } xRn,则称 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μj0μjgj(x)=0hj(x)=0

参考文献:

  1. 《机器学习》附录B.1——周志华
  2. 《统计学习方法》附录C——李航

你可能感兴趣的:(机器学习)