欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

拉格朗日乘法器、拉格朗日二元问题(示例,简单易懂)

最编程 2024-03-24 20:08:34
...


本文通过一系列的例子来说明拉格朗日乘子的运算以及原理,通俗易懂。

1、拉格朗日乘数(乘子)原理

定义:


In mathematical optimization, the method of Lagrange multipliers is a strategy for finding the local maxima and minima of a function subject to equality constraints. (Wikipedia)


实际上,拉格朗日乘数法(Lagrange Multipliers)是一种求函数极值的方法。

例1:求函数 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程 的极值(极大值和极小值),同时满足约束拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_02

解法一:直接将 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_03 带入函数求得 y 和 x。

解法二:观察两者的图形:

                          拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_04                                   拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_05

                                            左图(最大值)                                                             右图(最小值)

从上图(左)可以看出,当函数拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_06(红色) 与约束拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_07(蓝色)相切时,函数拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_06取得最小值-2,此时拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_09

从右图可以看出,也是当函数约束相切时,函数取得最大值 8.125,此时拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_10

由约束拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_07与函数拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_06相切可知,两者在切点的法向量必须平行即梯度(导数)方向是相同的,但两个梯度的大小可能会有所不同,因此引入未知常数乘数(也叫乘子) λ (​拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_13) 是必要的,因此有:

                                                                拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_14

                                                                   拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_15

                                                                   拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_16

                                            拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_17

                                                                 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_18

                                                                                ↓↓↓↓

                             拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_19    

由上可知,拉格朗日乘子就是引入了乘子lambda(拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_20) ,得到函数的梯度等于约束函数的梯度的一个向量的(代数)方程,并与原始约束方程一起确定解,从而求得函数的极值。

注意:约束拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_07在切点的梯度必须存在且不为零向量。

除了上述中 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_16 的形式,拉格朗日乘子还可以用另一种方式表达。

因为只要求函数与约束的梯度(导数)相同,所以有:

                                                             拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_23

                                                            拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_24 

                                                            拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_25

 将等式用另一符号表示:  

                                                         拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_26     

                                                     拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_27                                

                                                    拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_28

                                                                                ↓↓↓↓

                                                         拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_29

                                                        拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_30

                                                                               拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_31

上述函数L,叫做拉格朗日算符(Lagrangian),上式中的 c 代表常数,代表约束方程等号右边的1。

2、拉格朗日乘数(乘子)的解释

例2:假设你在假设你在经营一家工厂,生产某种需要钢铁作为原材料的小部件。人力成本(human harbor)20块每小时,钢铁(steel)每吨70元。假设你的收入(Revenue,R)是满足一下方程:

                                                                    拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_32,   h表示工时,s表示钢铁吨数                     

如果成本预算是在20000块,则最大可能受益是多少?

根据以上条件可得到约束方程:拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_33,绘制待求函数与约束方程的图,如下图(左)所示。

通过带入朗格朗日算符得:拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_34

对各参数求导,找到L的临界点:拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_35

这个方程可能有好几个解:拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_36,对于每个解带入拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_37看看哪一个符合最大值。

通常把临界点的最大值写成 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_38,使用星号上标来表示这是一个解决方案。拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_39表示根据预算最大化收入时应该分配的劳动小时数和钢材吨数。但如何理解最大化值的拉格朗日乘子拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_40? ​拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_41 ​​表示通过改变预算可以多赚多少钱​。

         拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_42      拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_43         拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_44

                                左                                                                      中                                                        右

假设预算为变量b,则  拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_45,如上图(中)所示,红色直线表示的是 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_46时的状态。若预算 b 可在 15000-25000内取值,则对于每个b值都可以最大化 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_37,所当最大值拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_37变化时,b也在变化,对这种变化进行研究。

用 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_49 表示最大收益,当只改变 b 时,拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_49 的变化如上图(右)所示,所以最大收益 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_49 是关于预算 b 的函数,可以写成 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_52,对 b 求导得:

                                                                              拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_53

因此,拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_54 表示 黑点 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_49 相对于绿点 b 移动时的变化率(上图(右))。理解起来有点困难,对于这个例子的拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_46时的最大收益对应的拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_57,表示预算每增加额外的1元,收益会增加2.59元;预算每下降1元,收益减少2.59美元。

3、拉格朗日对偶(duality)问题

对偶定义:


In mathematical optimization theory, duality means that optimization problems may be viewed from either of two perspectives, the primal problem or the dual problem (the duality principle). The solution to the dual problem provides a lower bound to the solution of the primal (minimization) problem.  (Wikipedia)


对下界的理解(lower bound):假设有一集合 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_58,求其下界。

因为集合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是原始问题的下界。定义拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_59为对偶间隙(duality gap)。该例中拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_60 称为弱对偶性持有(weak duality holds)。

从下图(右)可以看出,拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_61,没有对偶间隙,称为强对偶性持有(strong duality holds)。

                                                    拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_62                        拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_63

带约束的最优化问题:

一个优化问题的典型写法如下:

                                                                   minimize(x)      拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_64

                                                                   subject to         拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_65

                                                                                           拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_66

上式是优化问题的标准形式,还有一些其他形式。

拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_67叫做目标函数 (objective function) 有时也叫损失函数 (cost function)。通过改变 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_68 来找到拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_67的最小值对应的 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_70

函数 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_71 叫做等式约束 (equality constraints),函数 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_72 叫做不等式约束 (inequality constraints)。拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_70 必须满足上述约束。

当存在多个约束时,它们都必须为真。

拉格朗日优化函数为:

                                                            拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_74

如果 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_75,上式中就用减号,始终保持 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_76 是用来求最小值,同时注意等式和不等式约束等号和不等号右边恒为常数0,若是不为0的常数,移到等号和不等号左边再构建拉格朗日函数。

假设函数拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_64 的 x 取值集合为拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_78,则在等式和不等式约束条件下函数 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_64 的可行集(feasible set)为:

                                                                       拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_80

则最优解:

                                       拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_81

基本上,它就是用数学符号表示最优值是拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_64在所有约束条件下的最小值(infimum)。

进一步分析,因为 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_83拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_84拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_84,所以有:

                                                    拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_86

                                                                      拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_87

                                                                      拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_88

对于上式可以这么理解,需要优化的函数 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_64在所有约束下的最小值 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_90 恒大于等于拉格朗日函数 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_76,根据上面下界的理解可知,拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_90 是恒大于拉格朗日函数的最大值 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_93的。

进一步导可以得到(sup表示函数的上界即最大值):

                                                 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_94                             

论可知,原问题的最优目标值大于或等于对偶问题的最优目标值。如果不等式是严格不等式,那么它就存在对偶性缺口(上图左)。

4、应用于支持向量机

拉格朗日乘子有时被称为不确定乘数(undetermined multipliers),是用来找出一个多变量函数在一个或多个约束条件下的固定点(stationary points)。

已知线性支持向量机的线性模型为:拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_95

其拉格朗日方程为(拉格朗日乘子用a表示,同上面的lambda):

                                        拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_96

注意 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_97 都是已知的,此时函数的变量是 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_98 。

Karush-Kuhn-Tucker(KKT)(5个)条件:

                                                                 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_99

                                                                         拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_100

                                                                                 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_101

                                                                                                拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_102

                                                                          拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_约束方程_103

下面通过举例说明拉格朗日乘子在SVMs中的应用。

例3:假设有两点 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_104,找到一个超平面将其分成两类。

从上面支持向量机的拉格朗日函数可知:

                                                          拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_105

                                                       拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_106

因为拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_107,所以 拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_108 可以写成如下形式:

                                                          拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_109

                                                          拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小化_110    拉格朗日乘子、拉格朗日对偶问题 (举例说明,通俗易懂)_最小值_1					</div>
																				<div class=

上一篇: 软件开发的逻辑架构包括 软件设计的逻辑架构

下一篇: 安卓系统中的语境