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

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

  在约束最优化问题中,常利用拉格朗日乘子法将原始问题转换为对偶问题求解。即通过引入拉格朗日乘子,将有dd个变量和kk个约束条件的最优化问题转化为具有d+kd+k个变量的无约束优化问题求解。

  其通常的做法就是将约束函数与原目标函数联立,从而求出使原函数取得极值的各个变量的解,代入新函数,即可得到原目标函数的极值。

  这种方法的最典型应用是在支持向量机当中。

  考虑具有mm个等式约束和nn个不等式约束,且可行域DRd\mathbb { D } \subset \mathbb { R } ^ { d }非空的优化问题(原始问题):
minxf(x) \min _ { \boldsymbol { x } } f ( \boldsymbol { x } )

 s.t. hi(x)=0(i=1,,m)gj(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}

引入拉格朗日乘子λ\lambdaμ\mu,得到相应的拉格朗日函数(对偶问题):
L(x,λ,μ)=f(x)+i=1mλihi(x)+j=1nμjgj(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 } )

  假设原始问题的最优值为pp ^ { * },对偶问题的最优值为dd ^ { * }。在某些条件下,原始问题和对偶问题的最优值相等d=pd ^ { * } = p ^ { * },此时可以用求解对偶问题来代替求解原始问题。

仿射函数的定义:
f(x)f ( x )是一个矢性(值)函数,如果它满足f(x)=ax+bf ( x ) = a \cdot x + baRna \in \mathbf { R } ^ { n }bRb \in \mathbf { R }xRnx \in \mathbf { R } ^ { n },则称f(x)f ( x )是仿射函数。
当仿射函数的常数项为0时,称为线性函数。

  假设f(x)f ( \boldsymbol { x } )gj(x)g _ { j } ( \boldsymbol { x } )均为凸函数,hi(x)h _ { i } ( \boldsymbol { x } )为仿射函数,并且假设不等式约束gj(x)g _ { j } ( \boldsymbol { x } )是严格可行的,即至少存在一点xx,对所有ii都有gj(x)<0g _ { j } ( \boldsymbol { x } ) < 0,那么就会存在xx ^ { * }λ\lambda ^ { * }μ\mu ^ { * },使xx ^ { * }是原始问题的解,λ\lambda ^ { * }μ\mu ^ { * }是对偶问题的解,并且
p=d=L(x,λ,μ) p ^ { * } = d ^ { * } = L \left( x ^ { * } , \lambda ^ { * } , \mu ^ { * } \right)
  也就是说,此时可以用求解对偶问题来代替求解原始问题。

  而xx ^ { * }λ\lambda ^ { * }μ\mu ^ { * }分别是原始问题和对偶问题的解的充分必要条件是xx ^ { * }λ\lambda ^ { * }μ\mu ^ { * }满足Karush-Kuhn-Tucker (KKT)条件(j=1,2,,n)( j = 1,2 , \ldots , n )
{gj(x)0μj0μjgj(x)=0hj(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.

参考文献:

  1. 《机器学习》附录B.1——周志华
  2. 《统计学习方法》附录C——李航
发布了48 篇原创文章 · 获赞 98 · 访问量 9万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览