利用拉格朗日乘子法从最优化问题中推导出KKT条件
优化问题的一般形式
在优化问题中,我们将其一般形式定义为有约束(不等式约束、等式约束)的最小化优化问题,其具体定义如下:
\[\begin{array}{ll}
\min _{x} & f_{0}(x) \\
\text { s.t. } & f_{i}(x) \leq 0, \quad i=1, \ldots, m \\
& h_{i}(x)=0, \quad i=1, \ldots, p
\end{array}
\]当然,在求解优化问题中,还有其他形式的优化问题,但一般可以通过简单的变形操作,将问题转换为我们所定义的一般形式,下面为其他形式
这里可以将 \(f_i(x)\ge0\) 变形为 \(-f_i(x)\le0\),令 \(f^{\ast}_i(x)=-f_i(x)\),将问题转换。
\[\begin{array}{ll}
\min _{x} & f_{0}(x) \\
\text { s.t. } & f_{i}(x) \geq 0, \quad i=1, \ldots, m \\
& h_{i}(x)=0, \quad i=1, \ldots, p
\end{array}
\]这里可以将 \(\max _{x} f_{0}(x)\) 变形为 \(\min _{x} -f_{0}(x)\),即将最大化原函数改为最小化其函数值的相反数。
\[\begin{array}{ll}
\max _{x} & f_{0}(x) \\
\text { s.t. } & f_{i}(x) \le 0, \quad i=1, \ldots, m \\
& h_{i}(x)=0, \quad i=1, \ldots, p
\end{array}
\]
拉格朗日函数与原始优化问题的联系——如何将利用拉格朗日乘子将有约束原始优化问题转换为等价的无约束优化问题(形式上)
拉格朗日乘子法其思想就是把有约束优化问题转变为等价的无约束优化问题(形式上)。具体怎么操作呢?
其实,用法很简单,针对一般优化的原始问题,定义如下
\[\begin{equation}
\begin{array}{ll}
\min _{x} & f_{0}(x) \\
\text { s.t. } & f_{i}(x) \leq 0, \quad i=1, \ldots, m \\
& h_{i}(x)=0, \quad i=1, \ldots, p
\end{array}
\end{equation}
\]我们可以利用拉格朗日乘子法
\[\begin{array}{c}
\mathcal{L}(\boldsymbol{x}, \lambda, \nu)=f_{0}(x)+\sum_{i=1}^{m} \lambda_{i} f_{i}(x)+\sum_{i=1}^{p} \nu_{i} h_{i}(x) \\
\text { s.t. } \quad \lambda_{i} \geq 0, \quad i=1, \ldots, m
\end{array}
\]我们目标便是转换为最小化上述的公式,但是在上式中我们又引入了额外的参数,因此也需要对该参数做优化,因此我们有
\[\begin{equation}
\min _{x} \max _{\lambda, v} \mathcal{L}(\boldsymbol{x}, \lambda, \nu)\text { s.t. } \quad \lambda_{i} \geq 0, \quad i=1, \ldots, m
\end{equation}
\]这样,我们将问题做了转换。
这里,我们证明一下原始优化问题(即 \((1)\))与我们转换问题(即 \((2)\))是等价的。
我们记
\[\begin{array}{l}
\theta_{p}(x)=\max _{\lambda, v} \mathcal{L}(\boldsymbol{x}, \lambda, \nu) \\
\text { s.t. } \quad \lambda_{i} \geq 0, \quad i=1, \ldots, m
\end{array}
\]则有
\[\theta_{P}(x)=\left\{\begin{array}{ll}
f_{0}(x) & \text { for } x \text { that satisfied the origin constraint } \\
+\infty & \text { otherwise }
\end{array}\right.
\]验证上述性质
- 若存在 \(x\) 使得某个 \(f_{i}(x)>0\) 则我们可令 \(0 \leq \lambda_{i} \rightarrow+\infty\) , 进而有 \(\theta_{p}(x)=+\infty\)
- 若存在 \(x\) 使得某个 \(h_{i}(x) \neq 0\) 则我们可令 \(v_{i} h_{i}(x) \rightarrow+\infty\) , 进而有 \(\theta_{p}(x)=+\infty\)
- 若 \(x \in\left\{x \mid \forall i, v_{i}, \lambda_{i} \geq 0, \lambda_{i} f_{i}(x) \leq 0, v_{i} h_{i}(x)=0\right\}\), 则有 \(\max _{\lambda, v} \mathcal{L}(x, \lambda, \nu)=f_{0}(x)\)
我们得出,当 \(\theta_{P}(x)\) 在条件满足时,其形式就等同于 \(f_0(x)\),即等同于在约束条件下,对 \(f_0(x)\) 求解,同等于原问题。
思考:从这里出发,我觉得 \(\lambda_{i} \geq 0, \quad i=1, \ldots, m\) 这个条件也是为了满足在约束条件 \(f_{i}(x) \leq 0, \quad i=1, \ldots, m\),有 \(\lambda_{i} f_{i}(x) \leq 0\),感觉是一种解决该问题必然需要满足的隐含条件。
拉格朗日函数与拉格朗日对偶函数——从最优解的下界出发,兜底最优解
定义拉格朗日对偶函数(Lagrange dual function)\(g\):\(\mathbf R^m \times \mathbf R^p \rightarrow \mathbf R\) 为 \(\mathcal{L}(\boldsymbol{x}, \lambda, \nu)\) 对 \(\boldsymbol{x}\in \mathcal D\) 取最小值:
\[g\left(\mathbf \lambda, \mathbf \nu \right)=\inf_{\boldsymbol{x}\in \mathcal D}{\mathcal{L}(\boldsymbol{x}, \lambda, \nu)}
\]其中,\(\inf\) 表示下确界(infimum),这里可近似理解为 min,以下用 \(\min\) 表示。对偶函数为凹函数(concave function),不管原问题是否为凸。——这里可以通过添加负号,将问题转换为凸优化问题。
通俗理解就是每确定一组 \((\lambda, \nu)\),就要找到一个 \(\boldsymbol{x}\) 使得 \(\mathcal{L}\) 最小,不同的 \((\lambda, \nu)\) 对应不同的 \(g\) 函数值。
记问题 \(\left( 1 \right)\) 的最优值为 \(p^\star\)。假设 \(\boldsymbol {\tilde{x}}\) 为一可行解,则其满足约束条件: \(f_i\left(\boldsymbol{\tilde{x}} \right)\leq 0, \ h_i\left(\boldsymbol{\tilde{x}} \right)= 0\)。所以对任意 \(\mathbf \lambda \succeq \mathbf 0, \ \mathbf \nu\) ,由 \((1)\) 式有 \(L\left( \boldsymbol {\tilde{x}}, \mathbf \lambda, \mathbf \nu \right)\leq f_0\left( \boldsymbol {\tilde{x}} \right)\),进而
\[g\left(\mathbf \lambda, \mathbf \nu \right)=\min_{\boldsymbol x\in \mathcal D}{\mathcal{L}\left( \boldsymbol x, \mathbf \lambda, \mathbf \nu \right)}\leq \mathcal{L}\left( \boldsymbol {\tilde{x}}, \mathbf \lambda, \mathbf \nu \right)\leq f_0\left( \boldsymbol {\tilde{x}} \right)
\]因为上式,表示原问题的最优值下界,所以该式对任意可行解都成立,则有:
\[g\left(\mathbf \lambda, \mathbf \nu \right)\leq p^\star \\
\]这说明,对偶函数 \(g\left(\mathbf \lambda, \mathbf \nu \right)\) 给出了问题 \(\left( 1 \right)\) 最优值 \(p^\star\) 的下界。那么 \(g\left(\mathbf \lambda, \mathbf \nu \right)\) 能给出的最好的下界是多少呢?(如果等于 \(p^\star\) 就太完美了)这就形成了如下的优化问题,即最大化原问题的最优值的下界,使其尽量等于原问题的最优解:
\[\begin{equation}
\max_{\mathbf \lambda, \ \mathbf \nu}{g\left(\mathbf \lambda, \mathbf \nu \right)}\quad s.t. \ \mathbf \lambda\succeq \mathbf 0\end{equation}
\]问题 \(\left( 3 \right)\) 称为问题 \(\left( 1 \right)\) 的拉格朗日对偶问题(Lagrange dual problem),相应地,问题 \(\left( 1 \right)\) 称为原问题(primal problem)。\(\left( 3 \right)\) 的变量为原问题的拉格朗日乘子,其最优解 \(\left( \lambda^{\ast}, \nu^{\ast} \right)\) 称为(对偶)最优拉格朗日乘子。不管原问题是否是凸优化问题,对偶问题都是凸优化问题(max 一个凹函数)。
理解:所以对偶函数是原问题的最优值下界,虽然不等式成立,但是如果 \(\lambda<0\),并且让 \(\lambda\) 趋近于负无穷,这个时候 \(g\left(\mathbf \lambda, \mathbf \nu \right) \rightarrow-\infty\),虽然也满足不等式,但是此时没有任何意义。所以只有当 \(\lambda\ge0\),这个时候 \(g\left(\mathbf \lambda, \mathbf \nu \right) >-\infty\) 时,对偶函数才能给出原目标函数一个非平凡有意义的下界,称此条件下的 \(\left( \lambda, \nu \right)\) 是对偶可行的。
弱对偶性 weak duality 与强对偶性 strong duality——记对偶问题的最优值为 \(d^\star\) ,原问题的最优值为 \(p^\star\),则 \(d^\star\) 是对偶函数 \(g\left(\mathbf \lambda, \mathbf \nu \right)\) 能给出的 \(p^\star\) 的最好的下界.
- 若有 \(d^\star \leq p^{\star}\) 称为弱对偶性。即使原问题非凸,弱对偶性也成立。
- 如果 \(d^\star = p^\star\) 等式成立,则称强对偶性成立。
问题:为什么对偶函数一定是凹函数呢?
因为 \(g\left(\mathbf \lambda, \mathbf \nu \right)=\inf_{\boldsymbol{x}\in \mathcal D}{\mathcal{L}(\boldsymbol{x}, \lambda, \nu)}\) 而为 \(\mathcal{L}(\boldsymbol{x}, \lambda, \nu)=f_{0}(x)+\sum_{i=1}^{m} \lambda_{i} f_{i}(x)+\sum_{i=1}^{p} \nu_{i} h_{i}(x)\)。在已知一个可行解 \(\boldsymbol{x}\),有 \(f_i(x),h_i(x)\) 为常数,是一个定值,即函数变成为以 \(\lambda,\nu\) 为变量的线性函数,即 \(g(\lambda,\nu)=C+f_c\boldsymbol{\lambda}+h_c\boldsymbol{\nu}\).
KKT 条件与对偶问题——支持向量机:Duality
假设 \(x^{\ast}\) 和 \(\left(\lambda^{\ast}, \nu^{\ast}\right)\) 分别是 primal problem(原问题) 和 dual problem(对偶问题) 的极值点,相对应的极值为 \(p^\star\) 与 \(d^\star\) 。当 strong duality 成立时,我们有 \(d^\star = p^\star\),则
\[\begin{aligned}
f_{0}\left(x^{*}\right) &=g\left(\lambda^{*}, \nu^{*}\right) \\
&=\min _{x}\left(f_{0}(x)+\sum_{i=1}^{m} \lambda_{i}^{*} f_{i}(x)+\sum_{i=1}^{p} \nu_{i}^{*} h_{i}(x)\right) \\
& \leq f_{0}\left(x^{*}\right)+\sum_{i=1}^{m} \lambda_{i}^{*} f_{i}\left(x^{*}\right)+\sum_{i=1}^{p} \nu_{i}^{*} h_{i}\left(x^{*}\right) \\
& \leq f_{0}\left(x^{*}\right)
\end{aligned}
\]- 因为强对偶性成立,对偶间隙为 0;
- 拉格朗日对偶函数在 \(\left(\lambda^{\ast}, \nu^{\ast}\right)\) 处的取值;拉格朗日对偶函数为拉格朗日函数对 \(x\in \mathcal D\) 取最小值(严格来说是下确界 \(\inf\) );
- 因为函数的最小值不会超过其定义域内任意一点的函数值,所以也就不超过 \(x^\star\) 处的函数值;
- 因为在原问题 \((1)\) 中,我们有 \(f_{i}(x) \leq 0, \quad i=1, \ldots, m;\quad h_{i}(x)=0, \quad i=1, \ldots, p\)。所以第三步中,后面两个求和项都不会超过 \(0\)。
由于两头是相等的,所以这一系列的式子里的不等号全部都可以换成等号。根据第一个不等号
\[\min_{\mathbf x}{\left(f_0\left( \mathbf x \right) + \sum_{i=1}^{m}{\lambda_i^\star f_i\left( \mathbf x \right)} + \sum_{i=1}^{p}{\nu_i^\star h_i\left( \mathbf x \right)} \right)} = f_0\left( \mathbf x^\star \right) + \sum_{i=1}^{m}{\lambda_i^\star f_i\left( \mathbf x^\star \right)} + \sum_{i=1}^{p}{\nu_i^\star h_i\left( \mathbf x^\star \right)} \\
\]我们可以得到 \(x^*\) 是 \(L(x,\lambda^*,\nu^*)\) 的一个极值点,由此可以知道 \(L(x,\lambda^*,\nu^*)\) 在 \(x^*\) 处的梯度应该等于 0 ,亦即:
\[\nabla f_0(x^*)+\sum_{i=1}^m\lambda_i^*\nabla f_i(x^*)+\sum_{i=1}^p\nu_i^* \nabla h_i(x^*)=0
\]此外,由第二个不等式,我们可得
\[f_0\left( \mathbf x^\star \right) + \sum_{i=1}^{m}{\lambda_i^\star f_i\left( \mathbf x^\star \right)} + \sum_{i=1}^{p}{\nu_i^\star h_i\left( \mathbf x^\star \right)} = f_0\left( \mathbf x^\star \right)\\
\]因为 \(h_i\left( \mathbf x^\star \right)=0\),所以有
\[\sum_{i=1}^{m}{\lambda_i^\star f_i\left( \mathbf x^\star \right)} = 0
\]又因为 \(\lambda_i^\star \geq 0 , f_i\left( \mathbf x^\star \right)\leq 0\),所以 \(\lambda_i^\star f_i\left( \mathbf x^\star \right) \leq 0\),即(4)中求和的每一项都小于等于 \(0\),所以每一项都应该等于 \(0\),即有
\[\lambda_i^*f_i(x^*)=0,\quad i=1,\ldots,m
\]这个条件叫做 complementary slackness (互补松弛性)。显然,如果 \(\lambda_i^*>0\),那么必定有 \(f_i(x^*)=0\) ;反过来,如果 \(f_i(x^*)<0\) 那么可以得到 \(\lambda_i^*=0\) 。这个条件正是我们在介绍支持向量的文章末尾时用来证明那些非支持向量(对应于 \(f_i(x^*)<0\))所对应的系数 \(\alpha_i\) (在本文里对应 \(\lambda_i\) )是为零的。
再将其他一些显而易见的条件写到一起,就是传说中的 KKT (Karush-Kuhn-Tucker) 条件:
\[\begin{aligned} f_i(x^*)\leq 0,&\quad i=1,\ldots,m\\ h_i(x^*)=0,&\quad i=1,\ldots,p\\ \lambda_i^*\geq 0,&\quad i=1,\ldots,m\\ \lambda_i^*f_i(x^*)=0,&\quad i=1,\ldots,m\\ \textstyle\nabla f_0(x^*)+\sum_{i=1}^m\lambda_i^*\nabla f_i(x^*)+\sum_{i=1}^p\nu_i^* \nabla h_i(x^*)=0& \end{aligned}
\]任何满足 strong duality (不一定要求是通过 Slater 条件得到,也不一定要求是凸优化问题)的问题都满足 KKT 条件,换句话说,这是 strong duality 的一个必要条件。
当原始问题是凸优化问题的时候(当然还要求目标函数和约束函数可微是可微的,否则 KKT 条件的最后一个式子就没有意义了),KKT 就可以升级为充要条件。换句话说,如果 primal problem 是一个凸优化问题,且存在 \(\tilde{x}\) 和 \((\tilde{\lambda},\tilde{\nu})\) 满足 KKT 条件,那么它们分别是 primal problem 和 dual problem 的极值点并且 strong duality 成立。 其证明也比较简单.
- 针对第一和第二个条件是原问题的不等式约束和等式约束,保证解可行;
- 第三个条件为对偶可行条件;因为目标函数和不等式约束为凸函数,而等式约束为仿射函数(既凸又凹),所以拉格朗日函数 \(L\left( \mathbf x, \mathbf {\tilde \lambda}, \mathbf {\tilde \nu} \right)\) 可看作一组凸函数的非负加权和,因此也是凸函数;
- 第四个条件为互补松弛条件;
- 第五个条件为梯度为零:\(L\left( \mathbf x, \mathbf {\tilde \lambda}, \mathbf {\tilde \nu} \right)\) 在 \(\mathbf {x} = \mathbf {\tilde x}\) 处的梯度为 \(\mathbf 0\),因为 \(L\left( \mathbf x, \mathbf {\tilde \lambda}, \mathbf {\tilde \nu} \right)\) 是 可微凸函数 ,所以 \(\mathbf {\tilde x}\) 是其最小值点('Convex Optimization' 4.2.3 节)。
- 接着,primal problem 是凸优化问题的话,\(g(\lambda,\nu)=\min_x L(x,\lambda,\nu)\) 的求解对每一组固定的 \((\lambda,\nu)\) 来说也是一个凸优化问题。所以有(这里是最重要的):
\[\begin{aligned} g(\tilde{\lambda},\tilde{\nu}) &= \min_x L(x,\tilde{\lambda},\tilde{\nu}) \\ &= L(\tilde{x},\tilde{\lambda},\tilde{\nu}) \\ & = f_0(\tilde{x})+\sum_{i=1}^m\tilde{\lambda}_i^*f_i(\tilde{x})+\sum_{i=1}^p\tilde{\nu_i}^*h_i(\tilde{x}) \\ &= f_0(\tilde{x}) \end{aligned}
\]- 最后,最后一步根据 KKT 条件的第二(等式约束)和第四个条件(互补松弛条件)得到。由于 \(g\) 是 \(f_0\) 的下界,这样一来,就证明了 duality gap(对偶间隔) 为零,也就是说,strong duality 成立。
利用拉格朗日乘子法从最优化问题中推导出KKT条件的更多相关文章
- 【整理】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 ...
- 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
[整理] 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有 ...
- 装载:深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...
- Machine Learning系列--深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...
- 【机器学习】深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值:如果含有不等式 ...
- 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
参考文献:https://www.cnblogs.com/sddai/p/5728195.html 在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush ...
- 拉格朗日乘子(Lagrange multify)和KKT条件
拉格朗日乘子(Lagrange multify)和KKT条件 无约束问题 无约束问题定义如下: f(x)称为目标函数, 其中x是一个向量,它的维度是任意的. 通过求导, 令导数等于零即可: 如下图所示 ...
- 机器学习——支持向量机(SVM)之拉格朗日乘子法,KKT条件以及简化版SMO算法分析
SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM ...
- 支持向量机(SVM)必备概念(凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件、KKT条件)
SVM目前被认为是最好的现成的分类器,SVM整个原理的推导过程也很是复杂啊,其中涉及到很多概念,如:凸集和凸函数,凸优化问题,软间隔,核函数,拉格朗日乘子法,对偶问题,slater条件.KKT条件还有 ...
- 拉格朗日乘子法以及KKT条件
拉格朗日乘子法是一种优化算法,主要用来解决约束优化问题.他的主要思想是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有n+k个变量的无约束优化问题. 其中,利用拉格朗日乘子法 ...
随机推荐
- 顶层QWidget弹窗设置背景为透明,透明部分为黑色。
setAttribute(Qt::WA_TranslucentBackground); 设置此属性,解决.
- Java微服务随机掉线排查思路
背景 我们的业务共使用11台(阿里云)服务器,使用SpringcloudAlibaba构建微服务集群,共计60个微服务,全部注册在同一个Nacos集群 流量转发路径: nginx->spring ...
- TIM—高级定时器输出PWM
高级定时器输出PWM 主频144M,生成一个频率为1K,占空比为30%的PWM详细代码参考EVT例程PWM_Output 重要参数说明 TIM_TimeBaseInitStructure.TIM_Pe ...
- .Net6 微服务之Polly入门看这篇就够了
前言 O(∩_∩)O 大家好!书接上文,本文将会继续建立在 .Net6 使用 Ocelot + Consul 看这篇就够了 项目的基础上进行Polly的介绍,然后这篇文章只是个人学习与分享,不喜勿喷, ...
- (一)Abp入门
ABP 是用于创建现代Web应用程序的完整体系结构和强大的基础架构,遵循最佳实践和约定,为 您提供 SOLID 开发经验. 目前 ABP 的版本 ASP.NET Boilerplate ASP.N ...
- 和ChatGPT聊了一会天它的学习反映能力惊呆了我
我:用java写一段玫瑰花 ChatGPT:您可以使用 Java 绘制玫瑰花.以下是一段代码: import java.awt.*; import javax.swing.*; public clas ...
- LeetCode_单周赛_328
6291. 数组元素和与数字和的绝对差 代码 模拟即可 class Solution { public int differenceOfSum(int[] nums) { int ans = 0; i ...
- ACID和CAP的比较
https://www.jdon.com/artichect/acid-cap.html 1 简介 事务机制ACID和CAP理论是数据管理和分布式系统中两个重要的概念,很不巧,这两个概念中都有相同的& ...
- Sentinel熔断与限流
1.简介 在线文档: https://sentinelguard.io/zh-cn/docs/system-adaptive-protection.html 功能: 流量控制 速率控制 熔断和限流 和 ...
- Session和Shiro的Session区别
tomcat中的session常出现为jsessionId,而shiro的session不相同,两者的id不同. 在controller中,通过 request.getSession(_) 获取会话 ...