拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)
拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)
拉格朗日乘子和拉格朗日对偶问题是优化理论中的重要概念,在机器学习、特别是支持向量机(SVM)中有着广泛的应用。本文通过多个实例,从原理到应用,逐步深入地解释了拉格朗日乘子法的数学基础和实际应用场景,帮助读者更好地理解这些概念。
1. 拉格朗日乘数(乘子)原理
定义:
在数学优化中,拉格朗日乘数法是一种寻找函数在等式约束下的局部极值的方法。实际上,拉格朗日乘数法是一种求函数极值的方法。
例1:
求函数的极值(极大值和极小值),同时满足约束。
解法一:直接将带入函数求得 y 和 x。
解法二:观察两者的图形:
左图(最大值) 右图(最小值)
从上图(左)可以看出,当函数(红色) 与约束(蓝色)相切时,函数取得最小值-2,此时;
从右图可以看出,也是当函数约束相切时,函数取得最大值 8.125,此时。
由约束与函数相切可知,两者在切点的法向量必须平行即梯度(导数)方向是相同的,但两个梯度的大小可能会有所不同,因此引入未知常数乘数(也叫乘子) λ () 是必要的,因此有:
由上可知,拉格朗日乘子就是引入了乘子lambda() ,得到函数的梯度等于约束函数的梯度的一个向量的(代数)方程,并与原始约束方程一起确定解,从而求得函数的极值。
注意:约束在切点的梯度必须存在且不为零向量。
除了上述中 的形式,拉格朗日乘子还可以用另一种方式表达。
因为只要求函数与约束的梯度(导数)相同,所以有:
将等式用另一符号表示:
上述函数L,叫做拉格朗日算符(Lagrangian),上式中的 c 代表常数,代表约束方程等号右边的1。
2. 拉格朗日乘数(乘子)的解释
例2:
假设你在经营一家工厂,生产某种需要钢铁作为原材料的小部件。人力成本(human harbor)20块每小时,钢铁(steel)每吨70元。假设你的收入(Revenue,R)是满足一下方程:
, h表示工时,s表示钢铁吨数
如果成本预算是在20000块,则最大可能受益是多少?
根据以上条件可得到约束方程:
,绘制待求函数与约束方程的图,如下图(左)所示。
通过带入朗格朗日算符得:
对各参数求导,找到L的临界点:
这个方程可能有好几个解:
,对于每个解带入看看哪一个符合最大值。
通常把临界点的最大值写成,使用星号上标来表示这是一个解决方案。
表示根据预算最大化收入时应该分配的劳动小时数和钢材吨数。但如何理解最大化值的拉格朗日乘子?
表示通过改变预算可以多赚多少钱。
左 中 右
假设预算为变量b,则,如上图(中)所示,红色直线表示的是时的状态。若预算 b 可在 15000-25000内取值,则对于每个b值都可以最大化,所当最大值变化时,b也在变化,对这种变化进行研究。
用表示最大收益,当只改变 b 时,的变化如上图(右)所示,所以最大收益是关于预算 b 的函数,可以写成,对 b 求导得:
因此,表示 黑点相对于绿点 b 移动时的变化率(上图(右))。理解起来有点困难,对于这个例子的时的最大收益对应的,表示预算每增加额外的1元,收益会增加2.59元;预算每下降1元,收益减少2.59美元。
3. 拉格朗日对偶(duality)问题
对偶定义:
在数学优化理论中,对偶性意味着优化问题可以从原始问题或对偶问题两个角度来考虑。对偶问题的解提供了原始(最小化)问题解的下界。
对下界的理解(lower bound):
假设有一集合,求其下界。因为集合S的最小值为2,所有小于等于2的值均可为集合S的下界 (lower bound),如1,-3等等。但2是集合S的最大下界,因为其比其他任何下界都要大,因此又叫最大下界(infimum or greatest lower bound),最大下界有且仅有一个。
同样的是,延伸到S集合的最大值12,所有大于等于12的值均可为集合S的上界 (upper-bound),其有最小上界12(supremum)。
通过对偶的定义可以知道,如果有一个最小化问题,则可以把它看做一个最大化问题。最大化问题的最大值就是最小化问题的下界,其永远小于等于最小化问题的最小值。
为什么要用对偶性(duality)?因为有时,解对偶问题( dual problem)比解原始问题(primal problem)简单。关于下界,对于某些问题,解对偶问题的结果与解原问题的结果是一样的。
如下图(左)所示,对于原始问题,尝试去最小化方程,得到最小值P。通过对偶方程求解,得到最大值点D。从图中可以看出,点D是原始问题的下界。定义为对偶间隙(duality gap)。该例中称为弱对偶性持有(weak duality holds)。
从下图(右)可以看出,,没有对偶间隙,称为强对偶性持有(strong duality holds)。
带约束的最优化问题:
一个优化问题的典型写法如下:
minimize(x)
subject to
上式是优化问题的标准形式,还有一些其他形式。叫做目标函数 (objective function) 有时也叫损失函数 (cost function)。通过改变来找到的最小值对应的。
函数叫做等式约束 (equality constraints),函数叫做不等式约束 (inequality constraints)。必须满足上述约束。
当存在多个约束时,它们都必须为真。
拉格朗日优化函数为:
如果,上式中就用减号,始终保持是用来求最小值,同时注意等式和不等式约束等号和不等号右边恒为常数0,若是不为0的常数,移到等号和不等号左边再构建拉格朗日函数。
假设函数的 x 取值集合为,则在等式和不等式约束条件下函数的可行集(feasible set)为:
则最优解:
基本上,它就是用数学符号表示最优值是在所有约束条件下的最小值(infimum)。
进一步分析,因为,所以有:
对于上式可以这么理解,需要优化的函数在所有约束下的最小值恒大于等于拉格朗日函数,根据上面下界的理解可知,是恒大于拉格朗日函数的最大值的。
进一步推导可以得到(sup表示函数的上界即最大值):
由推论可知,原问题的最优目标值大于或等于对偶问题的最优目标值。如果不等式是严格不等式,那么它就存在对偶性缺口(上图左)。
4. 应用于支持向量机
拉格朗日乘子有时被称为不确定乘数(undetermined multipliers),是用来找出一个多变量函数在一个或多个约束条件下的固定点(stationary points)。
已知线性支持向量机的线性模型为:
其拉格朗日方程为(拉格朗日乘子用a表示,同上面的lambda):
注意都是已知的,此时函数的变量是。
具体推导见:
Karush-Kuhn-Tucker(KKT)(5个)条件:
下面通过举例说明拉格朗日乘子在SVMs中的应用。
例3:
假设有两点,找到一个超平面将其分成两类。
从上面支持向量机的拉格朗日函数可知:
因为,所以可以写成如下形式:
因此拉格朗日函数可以写成:
求解梯度方程:
解法一:解析解
根据以上方程可得:
由,可得:
结合上面,求得:
,根据得:
注意,上面算得的参数结果必须符合KKT条件,将参数带入那5个式子算一下是否符合条件。
例3只有两个点,可以通过上述解析解的方式求得参数,但过于复杂。通常支持向量机优化只能在训练数据量非常小的情况下解析求解或者在线性可分离得情况下并且已知哪些点是支持向量。大多数情况下,用数值解。
解法二:拉格朗日对偶
已知:
由,可得:
因为KKT里有关于拉格朗日乘子 a 的约束:
所以需要将其考虑进拉格朗日的梯度里,像上面加入约束的方式加入得到拉格朗日的对偶函数:
对参数求导:
不需要求出gamma的具体值,因为求w和b时用不到它,将上面的结果带入下式(KKT)求出w和b,注意都是已知的。