非线性规划——拉格朗日最优化方法(四)

对非线性规划来说,大多数情况下我们是不可能无限制求其理想情况下的最优值的,总是存在一些约束生成了一部分可行解域。从机器学习上来说,我们的可行解域就被限制住了,直接求解起来事实上是有一定困难的,我们更希望求解的是无约束的优化问题,就衍生出拉格朗日乘子法。拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有n+k个变量的无约束优化问题。总的思想是**将等式约束条件代入目标函数,把约束优化问题转化为无约束优化问题。

一、等式约束的最优化模型

等式约束问题

minimizexf(x) subject to gi(x)=0,i=1,2,,m

假设优化变量是x1x2,图中的蓝色虚线是目标函数f(x1,x2)的等高线,其中d1>d2>d3,绿线代表了约束条件 h(x1,x2)= 0。这个优化问题的解x1x2 一定满足h(x1,x2)=0,所以解 x1x2一定在绿线上。我们可以看到,绿线和三条等高线都有交点,而我们要求的是能使目标函数最小的点,那么绿线上的那个点才是优化问题的解呢?
我们来看绿线和蓝色等高线的关系,绿线和某条蓝色等高线可能相交、相切或者没有交点。没有交点当然就代表没有解啦。如果相交的话,说明绿线上存在点在这条等高线的内部和外部,也就说明存在点使得目标函数的值更大或者更小,所以相交的情况也不会是优化问题的可行解。所以就只剩下了相切的情况,可能会是优化问题可行解。如果代表约束条件的绿线和某条蓝色等高线相切,那么它们的切线相同,且法向量是相互平行的,这样就可以得到:

xf(x)+λxh(x)=0

即目标函数和约束条件中的函数关于x的偏导数的方向是平行的,这就是拉格朗日函数L(x,λ) 求解无约束优化问题的数学基础。

二、等式约束求解示例

目标函数f(x)=x1+x2,等式约束h(x)=x12+x222=0,求解极值点。
f(x)在二维平面上的等高线就是一条条斜率相同的直线,h(x)=0在二维平面上的等高线就是一个圆,如图所示:

可以明显的看出,在圆圈h(x)的限制下,直线f(x)的最小值为-2,在左下角直线x1+x2=2x和圆的交点上。
不考虑圆h(x)的限制时,f(x)要得到极小值,需要往f(x)的负梯度(下降最快的方向)方向走,如下左图蓝色箭头。
如果考虑圆h(x)的限制,要得到极小值,需要沿着圆的切线方向走,如下右图红色粗箭头。注意这里的方向不是h(x)的梯度,而是正交于h(x)的梯度,h(x)梯度如下右图的红色细箭头。在极小值点,f(x)h(x)的等高线是相切的。

负梯度 正梯度

三、拉格朗日乘数法

作拉格朗日函数

L(x,λ)=f(x)+i=1mλihi(x)

拉格朗日定理(一阶必要条件):假设 x 是上述等式约束优化问题的局部极小值点,若向量组

gi(x)(i=1,2,...,m)

线性无关,则存在乘子向量 λ,使得 xL(x,λ)=0,即

f(x)+i=1mλigi(x)=0

上式为拉格朗日定理,描述了具有等式约束的优化问题取极小值的一阶必要条件,也就是通常所说的KKT条件。
当目标函数和约束条件的二阶连续可微时,我们还可以使用Lagrange函数的海塞矩阵来判断极值是否为极小值。Lagrange函数的二阶充分条件在实际问题中有着广泛的应用。例如,在机器学习中,我们经常需要求解带有约束条件的优化问题,例如支持向量机和逻辑回归。使用Lagrange函数的二阶充分条件可以帮助我们判断模型的最优解是否为极小值,从而提高模型的准确性和稳定性。

三、实例

例1:给定椭球 x2a2+y2 b2+z2c2=1 ,求这个椭球的内接长方体的最大体积。
这个问题实际上就是条件极值问题,即在条件 x2a2+y2 b2+z2c2=1 下求 f(x,y,z)=8xyz 的最大 值。
当然这个问题实际可以先根据条件消去 z ,然后带入转化为无条件极值问题来处理。但是有时候这样 做很困难,甚至是做不到的,这时候就需要用拉格朗日乘数法了。通过拉格朗日乘数法将问题转化 为:

L(x,y,z,λ)=f(x,y,z)+λg(x,y,z)=8xyz+λ(x2a2+y2 b2+z2c21)

对L (x,y,z,λ) 求偏导:

xL(x,y,z,λ)x=8yz+2λxa2=0xL(x,y,z,λ)y=8xz+2λyb2=0xL(x,y,z,λ)z=8xy+2λzc2=0xL(x,y,z,λ)λ=x2a2+y22 b2+z2c21=0 最终得到 x=33a,y=33 b,z=33c 最大体积为 Vmax=f(33a,33 b,33c)=839abc

例2:求解下面非线性规划。

minf(X)=x12x1x2+x2210x14x2+60s.t.h(X)=x1+x28=0

解:构造拉格朗日函数

L(X,λ)=f(X)+λh(X)=x12x1x2+x2210x14x2+60+λ(x1+x28)

求其一阶偏导数,令其等于零,联立解方程组

Lx1=2x1x2+λ10=0

Lx2=x1+2x2+λ4=0

Lλ=x1+x28=0

X1=5,X2=3,λ=3

由于f(X)的海塞矩阵

H(X)=(2112)

为正定矩阵,所以f(X)为凸函数,因此该问题有唯一全局极小最优解,就是上面求出的解,目标函数值为17。

例3:求解下面非线性规划

max(f(x,y,z)=x+y+zs.t.g(x,y,z)=x2+y2+z21=0

解: 构造拉格朗日函数

L(x,y,z,λ)=f(x,y,z)λg(x,y,z)

其中 λ 是拉格朗日乘数。
求解拉格朗日函数对自变量 (x,y,z) 和拉格朗日乘数 λ 的偏导数,并令它们等于零**,得到下面方程。

Lx=12λx=0 Ly=12λy=0 Lz=12λz=0 Lλ=(x2+y2+z21)=0

解上述方程,得到自变量和拉格朗日乘数的取值。

从上面的偏导数方程中,我们可以得到:

x=12λ,y=12λ,z=12λx,y,z 的表达式代入 λ 的方程中,解得: (12λ)2+(12λ)2+(12λ)2=1

将自变量和拉格朗日乘数的取值代入拉格朗日函数,得到最大值。

x=y=z=123,λ=36

f(123,123,123)=323

参考文献

  1. 简说拉格朗日乘数法
  2. 【最优化导论】仅含等式约束的优化问题
posted @   郝hai  阅读(1461)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示