ABOUT KKT, dual and Lagrange multipier
1. 模型概览
1.1 学科分属
对偶问题,拉格朗日乘数法与KKT条件是一种求解凸二次规划的最优化算法,属于最优化问题的重要求解理论和技巧,在机器学习领域的支持向量机(SVM)的理论推导中起着核心作用。
1.2 历史发展
拉格朗日乘数法是数学优化中,一种寻找变量受数个条件限制下多元函数局部极值的策略,以数学家约瑟夫·路易斯·拉格朗日命名。其基本思想是将约束问题转化为一种形式,使得无约束问题的导数检验仍然可以应用。函数梯度和约束梯度之间的关系很自然地导致了原始问题的重新表述,即拉格朗日函数。这种方法引入了一种新的标量未知数,即拉格朗日乘数:约束方程的梯度的线性组合里每个向量的系数。此方法的证明牵涉到偏微分,全微分或链法,从而找到能让设出的隐函数的微分为零的未知数的值。
KKT条件,即卡罗需-库恩-塔克条件是在满足一些有规则的条件下,一个非线性规划问题能有最优化解法的一个必要和充分条件。这是一个广义化拉格朗日乘数的成果。不等式约束问题的必要和充分条件初见于卡罗需(William Karush)的硕士论文,之后在一份由W.库恩(Harold W. Kuhn)及塔克(Albert W. Tucker)撰写的研讨生论文出现后受到重视。
对偶,即对偶规划,指由原线性规划问题按一定对称规律构成的新线性规划问题。对偶规划最初是由冯·诺伊曼(vonNeu-mann,J.)于1947年提出来的,以后库恩(Kuhn,H.W.)和塔克尔(Tucker,A.W.)证明了对偶定理。哥德曼(Goldman,A.J.)和塔克尔于1956年比较系统地叙述了对偶规划的理论。对偶线性规划的经济背景是:若原问题是利用有限资源安排最优生产方案,以获得最大总产值的线性规划问题,则它的对偶问题就是在相同资源的条件下,正确估计资源的使用价值,以达到支付最少费用的线性规划问题。简言之,若原问题为求解资源的最优配置问题,则对偶问题就是求解估价资源的使用价值问题。
2. 模型介绍
2.1 具体模型介绍
2.1.1 拉格朗日乘数法
拉格朗日乘数法的基本原理是依靠引入自由变量——拉格朗日乘子将有约束的优化问题转化为无约束的规划问题,并将原有的约束条件转化为新的目标函数(即拉格朗日函数)取得最优解时满足的条件。
根据约束的性质不同,主要分成两类:针对等式约束的拉格朗日乘数法和针对不等式约束的拉格朗日乘数法。
一般地,对于一个等式约束的优化问题:
等价于\(\min f\left( x\right)+\lambda h\left( x\right)\),其中的\(\lambda\)是引入的一个自由变量,可以取任何值。
此处能将有约束问题转化为无约束问题,理由如下:
我们讨论无约束问题中原约束函数\(h\left( x\right)\)的取值情况:
- 若满足原约束条件\(h\left( x\right)=0\),则自然有\(\min f\left( x\right) = \min f\left( x\right)+\lambda h\left( x\right)\),这与原优化目标是一致的。
- 若不满足原约束条件,即\(h\left( x\right) \neq 0\),那么在求取新的优化目标最小值时,由于\(\lambda\)的任意性,在讨论整体去极值时显然不会成为答案。
综上,转化后的无约束优化问题与原问题是等价的。只不过优化变量从\(x\)推广至\(x\)和\(\lambda\),转化后的可能最值由拉格朗日函数对所有优化变量偏导置零构成的方程组求解。由于偏导置零仅为极值点的条件,有可能会陷入局部最优。
而对于一个不等式约束的优化问题:
我们也可以通过类似的手段进行转化。但不同的是,考虑到\(g\left( x\right) \leq 0\),我们需要对拉格朗日乘子加以范围上的限定以保证转化后的求解结果为稳定最优点(局部极值点)
此处我们规定:对于不等式约束的拉格朗日乘子\(\lambda\),其必须满足\(\lambda \geq 0\)。原因将在证明中体现。
从而可以转化为如下的约束更简单的优化问题:
同样的,我们考虑原约束函数的情况:
- 对于满足约束的情况,\(\lambda g\left( x\right)\)是负数,其最大值显然为0,此时则优化目标与原目标相一致。
- 对于不满足约束的情况,\(\lambda g\left( x\right)\)是正数,类似地,在求取外层最小值时,不可能使\(\lambda\) 取到正无穷,故而这一情况在讨论整体时将被舍去。
对比两者我们发现,其实等式约束就是不等式约束的特殊情况。由于约束函数固定取零的特殊条件,使得拉格朗日乘子可以完全自由取值,进而也使得求取极值的步骤中减少了\(\max \lambda\)的过程。
需要注意的是,以上仅针对了单约束条件和单优化变量进行讨论。更一般地,此结论可以推广至\(X_{1},X_{2},\ldots \ldots X_{m},\lambda _{1},\lambda _{2}\ldots \lambda _{n}\)的情况,步骤和条件均类似。
2.1.2 KKT条件
对于不等式条件约束的优化,我们难以完全消除其约束,但根据以上的求解过程,我们可以推导出最优解满足的性质:
同样以单约束条件和单优化变量的情况为例,最优解首先应满足原有的两基本条件:
同时,根据最优解的求解过程,其还将满足以下两条新条件:
以上统称为KKT条件。当然,由于求解过程中以极值点代替了最值点作为达到最优的标准,故而满足KKT条件的不一定是最优解,但所有不等式约束的最优解都应满足KKT条件。
2.1.3 对偶问题
将原始问题转化为对偶问题是求解带约束优化问题的一种方法,原问题在转化为对偶问题后往往更容易求解,因而被广为应用。在约束最优化问题中,常常利用拉格朗日对偶性将原始问题转化为对偶问题。通过解对偶问题而得到原始问题的解.
2.1.3.1 原始问题
假设\(f(x),c_i(x),h_j(x)\)是定义在\(R^n\)上的连续可微函数。考虑如下最优化问题:
称此约束最优化问题为原始最优化问题或原始问题。引入广义拉格朗日函数
这里,\(\alpha_{i}, \beta_{j}\) 是拉格朗日乘子,\(\alpha_{i} \geq 0\)。考虑\(x\)的函数:
这里下标\(P\)表示原始问题。容易得到:当\(x\)满足原始问题约束时,\(\theta_{P}(x)=f(x)\),则可得到与原始优化问题想等价的极小化问题如下:
此问题称为广义拉格朗日函数的极小极大问题。定义原始问题的最优值\(p^{*}=\min _{x} \theta_{P}(x)\)。
2.1.3.2 对偶问题
定义\(\Theta_D(\alpha,\beta)=\underset{x}{\min}L(x,\alpha,\beta)\)
再考虑极大化上式,即
问题
称为广义拉格朗日函数的极大极小问题。
可将广义拉格朗日函数的极大极小问题表示为约束最优化问题:
称为原始问题的对偶问题。定义对偶问题的最优值\(d_∗=\underset{\alpha, \beta ; \alpha_{i} \geq 0}{\max}\Theta_D(\alpha,\beta)\)称为对偶问题的值。
2.1.3.3 原始问题和对偶问题的关系
定理1 若原始问题和对偶问题都有最大值,则
推论1 设\(x_∗\)和\(\alpha_∗,\beta_∗\)分别是原始问题和对偶问题的可行解,并且\(d_∗=p_∗\),则\(x_∗\)和\(\alpha_∗,\beta_∗\)分别是原始问题和对偶问题的最优解。
定理2 考虑原始问题和对偶问题. 假设函数\(f\left( x\right)\)和\(c_i\left( x\right)\)是凸函数,\(h_j\left( x\right)\)是仿射函数 ; 并且假设不等式约束\(c_i\left( x\right)\)是严格可行的, 即存在\(x\), 对所有\(i\)有\(c_i\left( x\right)<0\), 则存在\(x_∗,\alpha_∗,\beta_∗\),使\(x_∗\)是原始问题的解,\(\alpha_∗,\beta_∗\)是对偶问题的解,并且\(p_∗=d_∗=L(x_∗,\alpha_∗,\beta_∗)\)
定理3 对原始问题和对偶问题, 假设函数\(f\left( x\right)\)和\(c_i\left( x\right)\)是凸函数,\(h_j\left( x\right)\)是仿射函数,并且不等式约束\(c_i\left( x\right)\)是严格可行的, 则\(x_∗\)和\(\alpha_∗,\beta_∗\)分别是原始问题和对偶问题的解的充分必要条件是\(x_∗,\alpha_∗,\beta_∗\)满足KKT条件:
2.2 模型变种
2.2.1 弱对偶性
若原始问题与对偶问题都有最优解,则
这个性质便叫做弱对偶性(weak duality),对于所有优化问题都成立,即使原始问题非凸。对偶间隙
意味着原问题的最优值不小于对偶问题的最优值,这就是弱对偶定理。
2.2.2 强对偶性
强对偶即满足:\(d_*=p_*\)
在强对偶成立的情况下,可以通过求解对偶问题来得到原始问题的解。
强对偶意味着对偶间隙等于0,即\(s^Tz=0\),又因为\(s>0,x>0\),所以\(x_is_i=0,i=1,2,…,n\)
这说明若\(x_i>0\Rightarrow s_i=0\)且\(x_i>0\Rightarrow s_i=0\),因而称之为互补性松弛。
并不是所有的对偶问题都满足强对偶性。只要满足一些条件,强对偶性成立,如Slater条件与KKT条件。
Slater条件:对于原始问题及其对偶问题,假设函数\(f\left( x\right)\)和\(c_i\left( x\right)\)是凸函数,\(h_j\left( x\right)\)是仿射函数,且不等式约束\(c_i\left( x\right)\)是严格可行的,即存在\(x\),对所有\(i\)有\(c_i\left( x\right)<0\),则存在\(x_*,\alpha_*,\beta_*\),使\(x_*\)是原始问题的解,\(\alpha,\beta\)是对偶问题的解,并且\(P_*=d_*=L\left( x_*,\alpha_*,\beta_*\right)\)
也就是说如果原始问题是凸优化问题并且满足 Slater 条件的话,那么强对偶性成立。
需要注意的是,这里只是指出了强对偶成立的一种情况,并不是唯一的情况。
3. 模型应用
3.1 拉格朗日乘数法和KKT条件的应用
拉格朗日乘数法和KKT条件有一重要应用领域:支持向量机(SVM)原理的证明。
通常我们所定义的支持向量机,指的是机器学习领域中一类二元线性分类器,以最大边距超平面为决策边界和优化目标。
类似地,SVM理论也可以应用于通过核函数进行非线性分类,通过改变决策边界进行回归分析等方式应用于对应的问题。
用拉格朗日乘数法证明SVM的原理。
首先我们了解到,在二维空间上,两类点被一条直线完全分开叫做线性可分,这一性质推广至n维欧氏空间也是存在的。
从二维扩展至多维时,将两类点划分开的直线就成了一个超平面。为了模型的鲁棒性,我们希望寻找最佳超平面,即以最大间隔把两类样本分开的超平面,称之为最大间隔超平面。其具有如下特征:
- 两类样本被分别分割在该超平面两侧
- 两侧距离超平面最近的样本点到超平面的距离最大化(这些样本点我们称之为支持向量)
这样我们便构建起了一个最优化问题,此类问题被称为SVM最优化问题。
任意超平面可以用如下方程描述:\(w^{T}x+b=0\)
将二维点到直线距离公式扩展到n维空间:\(d=\dfrac{w^{T}x+b}{\left\| w\right\| }\)
其中\(\left\| w\right\| =\sqrt{w_{1}^{2}+\omega _{2}^{2}+\ldots ..w_{n}^{2}}\)
根据支持向量的定义我们知道,支持向量到超平面的距离为 d,其他点到超平面的距离大于 d。
稍作转化,令正数\(\left\| w\right\| d\)为1(对目标函数优化无影响)
合并简写为:\(y\left( w^{T}x+b\right) \geq 1\)
故点到平面的距离可以写为:\(d=\dfrac{y\left( w^{T}x+b\right) }{\left\| w\right\| }\)
再由支持向量性质\(y\left( w^{T}x+b\right) = 1\),在不改变优化目标的情况下进行代数变形,可以得到如下最优化问题:
构造拉格朗日函数:
利用该问题的强对偶性,可以将\(\max\)和\(\min\)的顺序互换,再对\(\lambda\)和\(b\)求偏导并置零,所得结果代回得到:
再将该结论代回原优化问题,将其转化为二次规划问题,利用序列最小优化算法(SMO)求解,不再赘述。
此处我们以2011年电工杯A题的一篇论文中,使用SVM的部分来体现其应用。
SVM估计回归函数的基本思想就是通过一个非线性映射,将输入空间的数据\(x\)映射到高维特征空间\(G\)中,并在这个空间进行线性回归。
给定的样本数据\({ x_{i},y_{i}} ,i=1,2,3,\ldots ,s\left( x_{i}\in R^{n},y_{i}\in R\right)\),其中\(y_{i}\)为期望值。\(s\)为数据点的总数。
SVM通过引入损失函数来解决回归问题。一般采用下式来估计函数:\(y=f\left( x\right) =\left[ \omega \varphi \left( x\right) \right] +b\)
以下即是解SVM最优化问题。
(以下内容在原论文内错误百出,难以理解,可能存在格式或过程错误)
对优化目标取极值:
式中\(: C\)为惩罚因子,实现经验风险和置信范围的折中;\(\dot{\xi}_{i}, \xi_{i}\)为松弛因子;\(\varepsilon\)为损失函数。损失函数能够用稀疏数据点表示决策函数。引入 具有良好的损失函数,其定义为
引入拉格朗日乘子\(a_{i}\)和\(a_{i}\), 把凸优化问题简化为最大化二次型\(^{[4]}\) :
式中:\(C\)用于控制模型的复杂度和逼近误差的折中,\(C\)越大,则对数据的拟合程度越高;\(\varepsilon\)用于控制回归逼近误差和模型的泛化能力。
3.2 对偶法的SVM应用
SVM 也通常用对偶问题来求解,这样的好处有两个:
1、变量只有 N 个( N 为训练集中的样本个数),原始问题中的变量数量与样本点的特征个数相同,当样本特征非常多时,求解难度较大。
2、可以方便地引入核函数,求解非线性 SVM 。求解对偶问题,常用的算法是 SMO ,下面解释 SMO 算法,给出的例题为:
此问题如果作为单纯的凸二次规划问题来看,很难另出蹊径。但它的特殊之处在于:它是另一个问题的对偶问题,并且还满足 KKT 条件。随机找向量\(\alpha=\left(\begin{array}{cccc}\alpha_1&\alpha_2&…&\alpha_N\end{array}\right)\)。假设其为最优解,则以用KKT条件来计算出原问题的最优解\(\left(\begin{array}{cc}w&b\end{array}\right)\),即为:
进而可以得到分离超平面:
按照SVM的理论,如果此$ g\left( x_i\right)$是最优的分离超平面,就有:
姑且称此叫$ g\left( x\right)\(目标条件。 根据已有的理论,上面的推导过程是可逆的。也就是说,只要我能找到一个\)\alpha$,它除了满足对偶问题的两个初始限制条件
由它求出的分离超平面还能满足\(g\left(x\right)\)目标条件,那么\(\alpha\)就是对偶问题的最优解。
具体优化过程如下:
优化\(\alpha\)必须遵循如下两个基本原则:
- 每次优化时,必须同时优化\(\alpha\)的两个分量,因为只优化一个分量的话,新的\(\alpha\)就不再满足初始限制条件中的等式条件了。
- 每次优化的两个分量应当是违反\(g\left(x\right)\)目标条件比较多的。就是说,本来应当是大于等于1的,越是小于1违反\(g\left(x\right)\)目标条件就越多,这样一来,选择优化的两个分量时,就有了基本的标准。
选择的两个分量除了要满足违反\(g\left(x\right)\)目标条件比较多外,还有一个重要的考量,就是经过一次优化后,两个分量要有尽可能多的改变,这样才能用尽可能少的迭代优化次数让它们达到\(g\left(x\right)\)目标条件,既然\(\alpha_1\)是按照违反\(g\left(x\right)\)目标条件比较多来挑选的,我们希望选择\(\alpha_2\)时,能够按照优化后让\(\alpha_1\)、\(\alpha_2\)有尽可能多的改变来选。
为每一个分量算出一个指标 E :\(E_i=g\left(x_i\right)-y_i\)。我们发现,当\(|E1-E2|\)越大时,优化后的\(\alpha_1\)、\(\alpha_2\)改变越大。所以,如果\(E_1\)是正的,那么\(E_2\)越负越好,如果\(E_1\)是负的,那么\(E_2\)越正越好。
将\(\alpha_1\)、\(\alpha_2\)看做变量,其他分量看做常数,对偶问题就是一个简单的二次函数优化问题:
举例来说明一下,假设\(y_1\)和\(y_2\)都等于1,那么第一个限制条件就变成了\(\alpha_1+\alpha_2=K\)
首先,将\(\alpha_1=K-\alpha_2\)代入目标函数,这时目标函数变成了关于\(\alpha_2\)的一元函数,对\(\alpha_2\)求导并令导数为0可以求出\(\alpha _{2}^{new}\)。
然后,观察限制条件,第一个条件\(\alpha_1=K-\alpha_2\)相当于\(0\leq K-\alpha_2\leq C\),进而求得:\(K-C\leq\alpha_2\leq K\)
再加上原有的限制\(0\leq\alpha_2\leq C\),可得\(\max\left(K-C,0\right)\leq\alpha_2\leq\min\left(K,C\right)\)
如果\(\alpha _{2}^{new}\)就在此限制范围内,求出\(\alpha _{1}^{new}\),完成一轮迭代。如果\(\alpha _{2}^{new}\)不在此限制范围内,进行截断,得到新的\(\alpha _{2}^{new^{new}}\),据此求得\(\alpha _{1}^{new^{new}}\),此轮迭代依然结束。
3.3 对偶法的影子价格应用
问题详述
某工厂在计划期内要安排生产Ⅰ、Ⅱ两种产品,已知生产单位产品所需的设备台数和A、B两种原材料的消耗如下表。每生产一件产品Ⅰ可获利2元,每生产一件Ⅱ产品可获利3元,问应如何安排计划使该工厂获利最多?
| 资源产品 | Ⅰ | Ⅱ | 拥有量 |
|---|---|---|---|
| 设备A | 2 | 2 | 12 |
| 设备B | 1 | 2 | 8 |
| 原材料A | 4 | 0 | 16 |
| 原材料B | 0 | 4 | 12 |
原问题:最大生产利润模型
设企业生产Ⅰ产品为\(x_1\)件,Ⅱ产品为\(x_2\)件,则
对偶问题:资源最低售价模型
设第i种资源价格为\(y_i, (i=1,2,3,4)\),则有:
解得最优情况为Ⅰ生产2件,Ⅱ生产4件。容易发现,对偶问题的求解思路要比原问题更加简单,所列方程更为直观。
对于对偶问题来说,我们求解最小化部分时没有任何限制条件,而没有限制条件的最小化问题的解一定是在求得\(x\)的偏导数为0这处,那我们就能得到一些等式,将这些等式代入拉格朗日函数中就可以简化计算(SVM中可以最终把\(min\)消去,且得到一个只与\(\alpha\)有关的最大化问题)
应用说明
对偶变量的意义代表对企业资源的估价,与该种资源的市场价格不同,因此我们称之为影子价格。
需要注意的是:
- 资源的市场价格是已知数,相对比较稳定,而它的影子价格则有赖于资源的利用情况,是未知数。由于企业生产任务、产品结构等情况发生变化,资源的影子价格也随之改变。
- 影子价格是一种边际价格。通常用微积分描述资源的影子价格,即当资源增加一个数量而得到目标函数新的最大值时,目标函数最大值的增量与资源的增量的比值,就是目标函数对约束条件(即资源)的一阶偏导数。
- 资源的影子价格实际上又是一种机会成本。在纯市场经济条件下,当第二种资源的市场价格低于1/4时,可以买进这种资源;相反当市场价格高于影子价格时,就会卖出这种资源。随着资源的买进卖出,它的影子价格也将随之发生变化,一直到影子价格与市场价格保持同等水平时,才处于平衡状态。
4 程序介绍
4.1 程序介绍
例:\(f(x)=60-10 x_{1}-4 x_{2}+x_{1}^{2}+x_{2}^{2}-x_{1} x_{2}\),等式约束为\(g(x)=x_{1}+x_{2}-8=0\),试用拉格朗日乘子法求极小。
from sympy import *
x1,x2,k = symbols('x1,x2,k')
f = 60-10*x1-4*x2+(x1)**2+(x2)**2-x1*x2
g = x1+x2-8
#构造拉格朗日等式
L=f-k*g
#求导,构造KKT条件
dx1 = diff(L, x1) # 对x1求偏导
print("dx1=",dx1)
dx2 = diff(L,x2) #对x2求偏导
print("dx2=",dx2)
dk = diff(L,k) #对k求偏导
print("dk=",dk)
#dx1= -k + 2*x1 - x2 - 10
#dx2= -k - x1 + 2*x2 - 4
#dk= -x1 - x2 + 8
#求出个变量解
m= solve([dx1,dx2,dk],[x1,x2,k])
print(m)
#{x1: 5, x2: 3, k: -3}
#给变量重新赋值
x1=m[x1]
x2=m[x2]
k=m[k]
#计算方程的值
f = 60-10*x1-4*x2+(x1)**2+(x2)**2-x1*x2
print("方程的极小值为:",f)
5.相关链接
拉格朗日乘数法和KKT条件
- https://zhuanlan.zhihu.com/p/26514613
- https://zhuanlan.zhihu.com/p/46944722
- https://www.zhihu.com/question/38586401
对偶模型
- https://www.cnblogs.com/massquantity/p/10807311.html
- https://blog.csdn.net/asd136912/article/details/79149881
- https://zhuanlan.zhihu.com/p/46944722
强对偶性与弱对偶性
拉格朗日乘数法和KKT条件的应用
- https://blog.csdn.net/lwwangfang/article/details/52351715
- https://zhuanlan.zhihu.com/p/77750026
- http://www.cnki.com.cn/Article/CJFDTotal-NCNY201004012.htm
对偶法的SVM应用
- https://blog.csdn.net/qq_39521554/article/details/80723770
- https://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html
对偶法的影子价格应用

浙公网安备 33010602011771号