其实我之前看过这个地方,但是当时感触不深(或者说根本没看懂,也可能是忘了),所以重新推导一下。《西瓜书》 、《统计学习方法》 还有网上讲的其实有点点的不一样,这里以《统计学习方法》为主,《西瓜书》中没有给出例题,所以不好说。
拉格朗日乘法谈起
拉格朗日乘法拉格朗日乘数法是用来求条件极值的,极值问题有两类,其一,求函数在给定区间上的极值,对自变量
没有其它要求,这种极值称为无条件极值。其二,对自变量有一些附加的约束条件限制下的极值,称为
条件极值。
求这个椭球的内接长方体的最大体积。
下,求
最大值。
通过拉格朗日乘数法将问题转化为
然后分别对x,y,z,兰姆达 求导,得到最值,带回原式即可
更多参考
https://zh.wikipedia.org/wiki/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E4%B9%98%E6%95%B0
https://blog.csdn.net/acdreamers/article/details/41413445
拉格朗日对偶法
《统计学习方法》 附录C
原始问题
假设是定义在R^n上的连续可微函数,考虑约束最优化问题
很多时候,现实问题可能跟上述结构不一样,那么把问题转化一下即可,比如 max->min
拉格朗日函数
其中, 是拉格朗日乘子,并且要求。
首先我们把看成是的函数(把x看成常量),然后求该函数的最大值(含x的表达式),接着再把x看成变量,因此可以定义函数如下:
下标代表原始问题
这里或许可以看到一些拉格朗日乘法的影子,最值 求导 然后带回原式。至于为什么是
max
而不用min
,一种说法是c_i(x)<=0
而 没上限,所以式子可以一直小下去的,再所以用的是max
。
可以证明,如果 满足原始问题中约束,那么
为什么 ,这里看一下 里边的参数,小于0,大于0,这两项乘积
<=0
,又都是0,那么L
的最大值 其实 就只有一个f(x)
了,毕竟别的都是负数。
如果 不满足原始问题中的约束,那么,即:
所以如果考虑极小化问题:
称为广义勒格朗日函数的极小极大问题。此时原始最优化问题,转化为广义拉格朗日函数的极大极小问题。这样一来,就把原始最优化问题表示为广义拉格朗日函数的极小极大问题。我们定义原始问题最优解:
- 所以这一部分到底干了什么事?
从原始问题开始,通过拉格朗日函数重新定义一个无约束问题,这个无约束问题等价于原来的约束优化问题,从而将约束问题无约束化。也就是将d个变量和k个约束条件的最优化问题转换为d+k个变量的最优化问题。到此我们还是无法求解,我们需要将原始问题转换成对偶问题来求解。
对偶问题
我们再定义:
并极大化,即:
为广义拉格朗日函数的极大极小问题(上一节的是极小极大问题)。这样可以将广义拉格朗日函数的极大极小问题进一步表示为约束最优化问题:
对比原始问题,对偶问题是先固定,求最优化的解,在确定参数;
原始问题是先固定x,求最优化的解,再确定。
原始问题和对偶问题的关系
这块我就不证明了,书上都有。
总之,当原始问题和对偶问题的最优值相等: 时,可以用求解对偶问题来求解原始问题(当然是对偶问题求解比直接求解原始问题简单的情况下),但是到底满足什么样的条件才能使 呢,这就是下面要阐述的 KKT 条件。
KKT 条件
作为对比,把拉格朗日函数再拿出来对比一下
KKT条件 | 说明 | |
---|---|---|
1 | ||
2 | ||
3 | 极值部分,求导为0 | |
4 | C.2不等式约束 | |
5 | C.3等式约束 | |
6 | 拉格朗日算子 法线方向相反的解释 | |
7 | 1、 时, | |
7 | 2、 时, |
KKT条件
可以分为三部分来考虑:
- 原始拉格朗日函数求导为0
- 原始不等式条件
- 拉格朗日算子条件以及对偶互补条件