拉格朗日乘子法的证明
在学习支持向量机的时候,计算对偶问题时用到了拉格朗日乘子法((Lagrange multiplier method)),回想起高中时使用拉格朗日乘子法求不等式约束条件下的最优化问题时的困惑,虽然一直知道用,但是却不知道为什么拉格朗日乘子法能够用。知其然更应知其所以然,本文就来扒一扒“拉格朗日乘子法”的来龙去脉。
等式约束下的最优化问题
给定一个不等式约束条件下的最优化问题,
此处假定 f(x) 为凸函数,需要找到的是在约束条件 g(x)=0 的条件下,使得目标函数 f(x) 最小的 x 值(注:
从几何的角度看,这个问题的目标是在由方程
显然,如果我们找到了一个最高点,必然有最高点所在的等高线 f(x,y)=d1 与约束曲线 g(x)=0 是相切的。否则,我必然还可以沿着红色的约束曲线继续走,找到一个更高的点(例如:图中红色曲线与登高线 f(x,y)=d2 相交)。用数学语言描述相切便意味着,在极值点,有: ∇f(x)=λ∗∇g(x) ,即两个函数在极值点的梯度向量是平行的。
这个时候我们引入拉格朗日函数: L(x,λ)=f(x)+λg(x) , 其中, λ 就是拉格朗日乘子,为一个未知常数。 在求该函数关于 x,λ 极值问题时有:
这意味着: 无约束条件下最小化拉格朗日函数 L(x,λ) 与有约束条件 g(x)=0 下原目标函数 f(x) 最小化的问题是一致的。求出令拉格朗日函数 L(x,λ) 最小的 (x,λ) 的值,便解出了原优化问题 (1) 的解,即我们将原优化问题 (1) 转换成了优化问题 (2) :
只要解除了 (2) 中线性方程组的解,那么便能够得到原目标函数的极值了。
不等式约束条件下的最优化问题
等式约束下的最优化的问题只是热热身,真正麻烦却也重要的,是不等式约束下的最优化问题。考虑将 (1) 中的问题进行推广,对最优化问题加上不等式约束:
仍然考虑向量 x 为二维空间中的点的场景,图中阴影部分为
- “盆地“的中心在阴影部分区域,此时我们可以不用理会约束条件,直接求 f(x) 的极小值就行;
- “盆地”的中心在阴影部分外面,此时在我们所能找到的极值点,必然有 g(x)=0 曲线与极值点的登高线相切,否则必然能够往阴影区域继续找到一个海拔更低的点。并且该极小值点关于约束函数的梯度 ∇g(x) 与关于目标函数的梯度 ∇f(x) 方向必定是相反的(不相反却相切的情况,只能是第一种,但那种情况的切点并不是极小值) 。
总结上面的情况,给出不等式约束条件下的库恩-塔克条件为: