「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。
在数学最优问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法。这种方法将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束。本文介绍拉格朗日乘数法(Lagrange multiplier)。
概述
-
我们擅长解决的是无约束极值求解问题,这类问题仅需对所有变量求偏导,使得所有偏导数为0,即可找到所有极值点和鞍点。我们解决带约束条件的问题时便会尝试将其转化为无约束优化问题
-
事实上如果我们可以通过g得到某个变量的表示,例如x1=h(x2,...,xn),将该式带入y即可抓换为无约束优化(初高中就是这么做的,所谓消元法是也),但有的时候我们无法得到这样的表示,便需要借助拉格朗日乘数法来避免消元法的困境。
作为一种优化算法,拉格朗日乘数法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。
思想
- 考虑二元函数f(x,y),在约束g(x,y)=c下的极值
- 首先我们可以绘制出f(x,y)的一层层等高线,当等高线与g(x,y)=c相切时即可能是该问题的极值点

拉格朗日乘数法
单个等式约束
考虑n元函数y=f(x1,x2,...,xn),在等式约束g(x1,x2,...,xn)=0 下的极值点求解问题
- 在极值点,必有y和g法向量平行
- y的法向量为:
{% raw%}
[∂x1∂y,∂x2∂y,...,∂xn∂y]
{% endraw%}
{% raw%}
[∂x1∂g,∂x2∂g,...,∂xn∂g]
{% endraw%}
{% raw%}
[∂x1∂y,∂x2∂y,...,∂xn∂y]+λ[∂x1∂g,∂x2∂g,...,∂xn∂g]=0
{% endraw%}
{% raw%}
∂xi∂y+λ∂xi∂g=0,1≤i≤n
{% endraw%}
- 这样我们就得到了n个等式方程,再加上g(x1,x2,...,xn)=0一起构成n+1个方程的方程组,未知数为[x1,x2,...,xn,λ]共n+1个,方程组的解即为所有极值点和鞍点的集合,每组解中的λ即为两个平行法向量的倍数,该值在等式约束轨迹穿过y的极值点时为0。
多个等式约束
原理与单个等式约束情况类似
考虑n元函数y=f(x1,x2,...,xn),在m个等式约束(gi(x1,x2,...,xn)=0,1≤i≤m) 下的极值点求解问题
- n维空间由m个条件约束,会确定一个n−m维的曲面,我们讨论y在这个曲面上的极值问题
- 这个曲面由m个n−1维曲面交织而成,存在m个法向量,这m个法向量构成了n−m维曲面的法空间
- 在问题的极值点,y的法向量必然落在n−m维曲面的法空间之内,也就是说y的法向量可以由n−m维曲面的m个法向量的线性组合表示:
{% raw%}
[∂x1∂y,∂x2∂y,...,∂xn∂y]+i=1∑mλi[∂x1∂gi,∂x2∂gi,...,∂xn∂gi]=0
{% endraw%}
{% raw%}
∂xj∂y+i=1∑mλi∂xj∂gi=0,1≤j≤n
{% endraw%}
- 此时我们得到了n个等式方程,再加上m个等式约束(gi(x1,x2,...,xn)=0,1≤i≤m) 一起构成n+m个方程的方程组,未知数为[x1,x2,...,xn,λ1,λ2,...,λm]共n+m个,方程组的解即为所有极值点和鞍点的集合,每组解中的λi的值即为y的法向量在n−m维曲面的法空间中的线性组合系数。
单个不等式约束
不等式约束其实是等式约束的扩展,等式约束表示一组确定的等高线(面),不等式约束则表示等高线(面)的某一边区域
考虑n元函数y=f(x1,x2,...,xn),在不等式约束g(x1,x2,...,xn)≤0 下的极值点求解问题
- 解在 g(x1,x2,...,xn)=0 曲面上
- 解在g(x1,x2,...,xn)<0 范围内
- 当解在 g(x1,x2,...,xn)=0 曲面上时,说明该不等式对y取最小值的区域进行了限制,最终解落在了y和约束相切的位置,那么此时二者的法向量方向必然相反(否则y会在g(x1,x2,...,xn)<0 范围内找到更小的值),按照等式情况构建方程:
{% raw%}
∂xi∂y+λ∂xi∂g=0,1≤i≤n
{% endraw%}
-
便有结论:λ≥0
-
当解在g(x1,x2,...,xn)<0 范围内时,事实上这个不等式没有对y的求解起到约束作用,此时相当于λ=0
-
而且两种情况下分别有 g(x1,x2,...,xn)=0和λ=0,也就是二者必有一方为0
-
因此对于单个不等式约束的拉格朗日乘数法,仅需增加限制条件: λ≥0和λg(x1,x2,...,xn)=0
多个不等式约束
考虑n元函数y=f(x1,x2,...,xn),在m个不等式约束(gi(x1,x2,...,xn)≤0,1≤i≤m) 下的极值点求解问题
- 本质上与单个不等式约束相同,只是数量变多了
- 此情况下需要在等式拉格朗日乘数法基础上增加条件:
{% raw%}
λiλigi≥0,1≤i≤m=0,1≤i≤m
{% endraw%}
算法描述
-
考虑n元函数y=f(x1,x2,...,xn),在m1个等式约束(gi(x1,x2,...,xn)=0,1≤i≤m1) 、m2个不等式约束(hj(x1,x2,...,xn)≤0,1≤j≤m2) 下的极值点求解问题
-
加入常数λ,μ构造方程:
{% raw%}
z=f(x1,x2,...,xn)+i=1∑m1λigi(x1,x2,...,xn)+j=1∑m2μjhj(x1,x2,...,xn)
{% endraw%}
- 对所有变量求偏导,并令导数为0:
{% raw%}
∂xi∂z∂xk∂y+i=1∑m1λi∂xk∂g+j=1∑m1μj∂xk∂h=0=0
{% endraw%}
其中:1≤k≤n
- 将上述n个方程与m1个等式约束方程gi(x1,x2,...,xn)=0,1≤i≤m1 联立
- 将上述n+m1个方程与μjhj=0,1≤j≤m2联立,得到n+m1+m2个方程
- 加上限制条件μj≥0,h_j \le 0$$, 1 \le j \le m_2
- 在限制条件下解n+m1+m2元方程即可得到极值点与鞍点集合
- 从所有解中筛选出极值点
KKT条件
- 上述n+m1+m2元方程与限制条件即为
KKT条件
KKT条件是拉格朗日函数取极值时的必要条件
{% raw %}
⎩⎨⎧∇f+∑im1λi∇gi+∑jm2μj∇hj=0gi=0,hj≤0,μj≥0,μjhj=0
{% endraw %}
其中 i∈{1,2,⋯,m1} ,j∈{1,2,⋯,m2}
| 内容 | 含义 |
|---|
| {% raw%}∇f+∑im1λi∇gi+∑jm2μj∇hj=0{% endraw%} | 求解极值需要在各个自变量方向上导数为0 |
| gi=0 | 等式约束 |
| hj≤0 | 不等式约束 |
| μj≥0 | 不等式约束时的两种情况: 1. 不等式约束无效(μj=0) 2. 不等式分界面法向量与原函数法向量方向相反(μj>0) |
| μjhj=0 | 不等式约束时的两种情况: 1. 不等式约束无效,极值点在hj<0范围内 (μj=0) 2. 不等式约束有效,极值点在hj=0曲面上(hj=0) |
参考资料