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

本文深入探讨了拉格朗日乘子法在解决约束最优化问题中的应用,介绍了如何将原始问题转化为对偶问题进行求解,特别是在支持向量机中的运用。同时,讲解了仿射函数、凸函数的概念以及KKT条件的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  在约束最优化问题中,常利用拉格朗日乘子法将原始问题转换为对偶问题求解。即通过引入拉格朗日乘子,将有 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 ) &lt; 0 g _ { j } ( \boldsymbol { x } ) &lt; 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——李航
拉格朗日乘子法是一种用于寻找多元函数在其变量受到一个或多个条件限制时的局部极值的方法。这种方法引入了新的未知数——称为拉格朗日乘子,来构建一个新的无约束的目标函数,即所谓的拉格朗日函数。 对于对偶问题,在数学规划中指的是从原问题出发构造出另一个优化问题的过程。通常情况下,给定一个最小化问题(原问题),其对应的对偶问题是最大化某个下界;反之亦然。这种关系可以通过拉格朗日对偶性建立起来。 ### 拉格朗日乘子法的应用 - **等式约束下的最优化** 当存在等式约束g(x) = c时,为了找到f(x)在这些约束下的极值点,可以构造拉格朗日函数$L(x,\lambda)=f(x)-\sum \lambda_i(g_i(x)-c_i)$,其中$\lambda_i$就是拉格朗日乘子。 - **不等式约束下的最优化** 如果还有不等式约束$h_j(x)\leq b_j$,那么就需要考虑广义形式的拉格朗日函数以及KKT(Karush-Kuhn-Tucker)条件来进行分析。 ### 对偶原理的理解 当处理含有复杂约束的问题时,直接解决可能比较困难。此时通过对原始问题应用拉格朗日乘子法得到拉格朗日对偶函数$d(\lambda, \mu) = inf_x[L(x, \lambda, \mu)]$,进而形成对偶问题$max_{\lambda>=0} d(\lambda, \mu)$。这样做的好处是可以简化计算或者提供更好的数值稳定性。 此外,在某些特定条件下(比如强对偶成立的情况下),原问题和它的对偶问题有着相同的最优解价值,这意味着我们既可以从原问题也可以从更简单的对偶问题入手解决问题。 ### 应用领域 - **经济学**: 分析生产者行为、消费者选择等问题; - **工程设计**: 寻找满足性能指标的设计方案; - **机器学习**: 支持向量机(SVMs),特征选择和其他正则化的模型训练过程都涉及到这类优化技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值