机器学习基础:拉格朗日乘子法
在凸优化问题中,拉格朗日乘子法是最常用的方法之一。
在凸优化问题中,拉格朗日乘子法是最常用的方法之一。
先看个例题:求目标函数 f(x,y)=x2+y2\mathrm{f}(\mathrm{x}, \mathrm{y})=\mathrm{x}^{2}+\mathrm{y}^{2}f(x,y)=x2+y2,在约束条件xy=3\mathrm{xy}=3xy=3下的最小值。
这是一个典型的约束优化问题,根据我们中学知识,首先想到的是一个变量用另外一个变量进行替换,再带入目标函数就可以求出极值。
将y=3xy=\frac{3}{x}y=x3带入f(x,y)=x2+y2\mathrm{f}(\mathrm{x}, \mathrm{y})=\mathrm{x}^{2}+\mathrm{y}^{2}f(x,y)=x2+y2 ,可得 f(x)=x2+9x2,然后求f(x)\mathrm{f}(\mathrm{x})=\mathrm{x}^{2}+\frac{9}{\mathrm{x}^{2}} ,然后求 \mathrm{f}(\mathrm{x})f(x)=x2+x29,然后求f(x)的最小值。
这就变成了求一元函数的无约束极值。求导,f′(x)=0\mathrm{f}^{\prime}(\mathrm{x})=0f′(x)=0的点即为极值点。推导可得,在点(3,3)(\sqrt{3}, \sqrt{3})(3,3)和点(−3,−3)(-\sqrt{3},-\sqrt{3})(−3,−3)处,f(x,y)\mathrm{f}(\mathrm{x}, \mathrm{y})f(x,y)的最小值为6 。
更直观一些,将 x2+y2=c\mathrm{x}^{2}+\mathrm{y}^{2}=\mathrm{c}x2+y2=c的曲线族画出来,如图所示,当曲线族中的圆与xy=3xy=3xy=3 曲线相切时,切点到原点的距离最短。也就是说,f(x,y)=cf(x, y)=cf(x,y)=c的等高线和双曲线g(x,y)g(x, y)g(x,y)相切时,可以得到上述优化问题的一个极值。那么,当f(x,y)\mathrm{f}(\mathrm{x}, \mathrm{y})f(x,y)和g(x,y)\mathrm{g}(\mathrm{x}, \mathrm{y})g(x,y) 相切时,x,yx,yx,y的值是多少呢? 该如何求解呢?

在讨论梯度概念时,梯度与等高线的关系描述如下:函数z=f(x,y)z = f ( x , y )z=f(x,y) 在点(x0,y0)(x_0,y_0)(x0,y0)梯度方向与过点(x0,y0)(x_0,y_0)(x0,y0)的等高线f(x,y)=cf(x,y)=cf(x,y)=c在这点的法线方向相同,且从数值较低的等高线指向数值较高等高线,而梯度的模等于函数在这个法线方向的方向导数。这个法线方向就是方向导数取得最大值的方向。
根据梯度与等高线的关系描述,上面问题中f(x,y)f(x,y)f(x,y)和g(x,y)g(x,y)g(x,y)相切时,它们的切线相同,即法向量是相互平行的,因此,可以得到▽f(x,y)=−λ⋅▽g(x,y)\triangledown f(x,y)=-\lambda \cdot \triangledown g(x,y)▽f(x,y)=−λ⋅▽g(x,y) 。分别求偏导,并且加上约束条件 xy=3xy=3xy=3,可以得到方程组:
{∂f∂x=−λ∂g∂x∂f∂y=−λ∂g∂yxy=3 \left\{\begin{array}{l} \frac{\partial f}{\partial x}=-\lambda \frac{\partial g}{\partial x} \\ \frac{\partial f}{\partial y}=-\lambda \frac{\partial g}{\partial y} \\ x y=3 \end{array}\right. ⎩
⎨
⎧∂x∂f=−λ∂x∂g∂y∂f=−λ∂y∂gxy=3
即:
{2x=−λy2y=−λxxy=3 \left\{\begin{array}{l} 2 x=-\lambda y \\ 2 y=-\lambda x \\ x y=3 \end{array}\right. ⎩
⎨
⎧2x=−λy2y=−λxxy=3
求解结果:x=3,y=3,λ=−2\mathrm{x}=\sqrt{3}, \mathrm{y}=\sqrt{3}, \lambda=-2x=3,y=3,λ=−2 或者 x=−3,y=−3,λ=−2\mathrm{x}=-\sqrt{3}, \mathrm{y}=-\sqrt{3}, \lambda=-2x=−3,y=−3,λ=−2 通过上述例子引入拉格朗日乘子法的基本原理,即通过引入拉格朗日乘子λ\lambdaλ 将原来的约束优化问题转化为无约束的方程组问题。
一般步骤
- 求解函数u=f(x,y,z,t)\mathrm{u}=\mathrm{f}(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})u=f(x,y,z,t) 在条件φ(x,y,z,t)=0,ψ(x,y,z,t)=0\varphi(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})=0, \psi(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})=0φ(x,y,z,t)=0,ψ(x,y,z,t)=0下极值。
- 构造函数:F(x,y,z,t,λ1,λ2)=f(x,y,z,t)+λ1⋅φ(x,y,z,t)+λ2⋅ψ(x,y,z,t)\mathrm{F}\left(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t}, \lambda_{1}, \lambda_{2}\right)=\mathrm{f}(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})+\lambda_{1} \cdot \varphi(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})+\lambda_{2} \cdot \psi(\mathrm{x}, \mathrm{y}, \mathrm{z}, \mathrm{t})F(x,y,z,t,λ1,λ2)=f(x,y,z,t)+λ1⋅φ(x,y,z,t)+λ2⋅ψ(x,y,z,t) ,其中,λ1\lambda_{1}λ1、λ2\lambda_{2}λ2 为拉格朗日乘子
- 通过对构造函数求偏导为 0 列出方程组。
- 求出方程组的解,带入即可得目标函数的极值。
【例】已知目标函数为V(x,y,z)=xyz\mathrm{V}(\mathrm{x}, \mathrm{y}, \mathrm{z})=\mathrm{xyz}V(x,y,z)=xyz,在约束条件2xy+2xz+2yz=122 \mathrm{xy}+2 \mathrm{xz}+2 \mathrm{yz}=122xy+2xz+2yz=12下,求体积V\mathrm{V}V的最大值。
解: F(x,y,z,λ)=x3y2z+λ⋅(x+y+z−12)F(x, y, z, \lambda)=x^{3} y^{2} z+\lambda \cdot(x+y+z-12)F(x,y,z,λ)=x3y2z+λ⋅(x+y+z−12)
求偏导可得方程组
{3x2y2z+λ=02x3yz+λ=0x3y2+λ=0x+y+z−12=0 \left\{\begin{array}{l}3 x^{2} y^{2} z+\lambda=0 \\ 2 x^{3} y z+\lambda=0 \\ x^{3} y^{2}+\lambda=0 \\ x+y+z-12=0\end{array}\right. ⎩
⎨
⎧3x2y2z+λ=02x3yz+λ=0x3y2+λ=0x+y+z−12=0
解得唯一驻点 (6,4,2), umux=6912u_{\operatorname{mux}}=6912umux=6912 。
由凸优化问题我们知道:
例如要求解minxf(x)\min_{x}{f(x)}minxf(x),那么就是解方程 ∇f(x)=0\nabla f(x) =0∇f(x)=0,最终的 x∗x^{\ast}x∗ 为最优解。
那么当有约束条件怎么呢?
拉格朗日法就是把一个有约束问题转换成一个无约束问题
优化问题一般有以下几种形式
minxf0(x)minxf0(x)maxxf0(x) s.t. fi(x)≤0,i=1,…,m s.t. fi(x)≥0,i=1,…,m s.t. fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,phi(x)=0,i=1,…,phi(x)=0,i=1,…,p \begin{array}{cllllll} \min _{x} & f_{0}(x) & \min _{x} & f_{0}(x) & \max _{x} & f_{0}(x) & \\ \text { s.t. } & f_{i}(x) \leq 0, \quad i=1, \ldots, m & \text { s.t. } & f_{i}(x) \geq 0, \quad i=1, \ldots, m & \text { s.t. } & f_{i}(x) \leq 0, \quad i=1, \ldots, m \\ & h_{i}(x)=0, \quad i=1, \ldots, p & & h_{i}(x)=0, \quad i=1, \ldots, p & & h_{i}(x)=0, \quad i=1, \ldots, p \end{array} minx s.t. f0(x)fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,pminx s.t. f0(x)fi(x)≥0,i=1,…,mhi(x)=0,i=1,…,pmaxx s.t. f0(x)fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p
最常用的是第一种,求最小值,约束为小于等于。
对于仅含等式约束的优化问题:
minf(x) s.t. hi(x)=0i=1,2,…,n \begin{array}{cl} \min & f(\boldsymbol{x}) \\ \text { s.t. } & h_{i}(\boldsymbol{x})=0 \quad i=1,2, \ldots, n \end{array} min s.t. f(x)hi(x)=0i=1,2,…,n
其中自变量 x∈Rn,f(x)\boldsymbol{x} \in \mathbb{R}^{n}, f(\boldsymbol{x})x∈Rn,f(x) 和 hi(x)h_{i}(\boldsymbol{x})hi(x) 均有连续的一阶偏导数。首先列出其拉格朗日函数:
L(x,λ)=f(x)+∑i=1nλihi(x) L(\boldsymbol{x}, \boldsymbol{\lambda})=f(\boldsymbol{x})+\sum_{i=1}^{n} \lambda_{i} h_{i}(\boldsymbol{x}) L(x,λ)=f(x)+i=1∑nλihi(x)
其中λ=(λ1,λ2,…,λn)T\boldsymbol{\lambda}=\left(\lambda_{1}, \lambda_{2}, \ldots, \lambda_{n}\right)^{\mathrm{T}}λ=(λ1,λ2,…,λn)T 为拉格朗日乘子。然后对拉格朗日函数关于 x\boldsymbol{x}x 求偏导,并令导数等于0再搭配约束条件 hi(x)=0h_{i}(\boldsymbol{x})=0hi(x)=0 解出 x\boldsymbol{x}x, 求解出的所有x\boldsymbol{x}x 即为上述优化问题的所有可能极值点。
拉格朗日函数与原始问题的关系
minxf0(x) s.t. fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p \begin{array}{cl} \min _{x} & f_{0}(x) \\ \text { s.t. } & f_{i}(x) \leq 0, \quad i=1, \ldots, m \\ & h_{i}(x)=0, \quad i=1, \ldots, p \end{array} minx s.t. f0(x)fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p
对应上面优化问题可以写为如下形式:
L(x,λ,ν)=f0(x)+∑i=1mλifi(x)+∑i=1pνihi(x) s.t. λi≥0,i=1,…,m \begin{aligned} \mathcal{L}(x, \lambda, \nu) &=f_{0}(x)+\sum_{i=1}^{m} \lambda_{i} f_{i}(x)+\sum_{i=1}^{p} \nu_{i} h_{i}(x) \\ \text { s.t. } \quad & \lambda_{i} \geq 0, \quad i=1, \ldots, m \end{aligned} L(x,λ,ν) s.t. =f0(x)+i=1∑mλifi(x)+i=1∑pνihi(x)λi≥0,i=1,…,m
λi\lambda_iλi和viv_ivi是两个拉格朗日乘子,由于fi(x)f_i(x)fi(x)是不等式约束,所以λi\lambda_iλi有约束条件必须大于0;hi(x)h_i(x)hi(x)是等式约束,viv_ivi没有约束。
上面式子等价于这个式子:
minxmaxλ,vL(x,λ,ν) s.t. λi≥0,i=1,…,m \begin{array}{rl} \min _{x} \max _{\lambda, v} & \mathcal{L}(x, \lambda, \nu) \\ \text { s.t. } & \lambda_{i} \geq 0, \quad i=1, \ldots, m \end{array} minxmaxλ,v s.t. L(x,λ,ν)λi≥0,i=1,…,m
【证明两式等价:】
记
θp(x)=maxλ,vL(x,λ,ν)s.t.λi≥0,i=1,…,m \theta_{p}(x)=\max _{\lambda, v} \mathcal{L}(x, \lambda, \nu) \\ s.t. \quad \lambda_{i} \geq 0, \quad i=1, \ldots, m θp(x)=λ,vmaxL(x,λ,ν)s.t.λi≥0,i=1,…,m
则θP(x)\theta_{P}(x)θP(x)y有以下性质:
θP(x)={f0(x) for x that satisfied the origin constraint +∞ otherwise \theta_{P}(x)=\left\{\begin{array}{ll}f_{0}(x) & \text { for } x \text { that satisfied the origin constraint } \\ +\infty & \text { otherwise }\end{array}\right. θP(x)={f0(x)+∞ for x that satisfied the origin constraint otherwise
验证上述性质:
- 若存在 x 使得某个 fi(x)>0f_{i}(x)>0fi(x)>0 则我们可令 0≤λi0 \leq \lambda_{i}0≤λi →+∞\rightarrow+\infty→+∞ , 进而有 θp(x)=+∞\theta_{p}(x)=+\inftyθp(x)=+∞
- 若存在 x 使得某个 hi(x)≠0h_{i}(x) \neq 0hi(x)=0 则我们可令 vihi(x)→+∞v_{i} h_{i}(x) \rightarrow+\inftyvihi(x)→+∞ , 进而有 θp(x)=+∞\theta_{p}(x)=+\inftyθp(x)=+∞
- 若 x∈{x∣∀i,vi,λi≥0,λifi(x)≤0,vihi(x)=0}x \in\left\{x \mid \forall i, v_{i}, \lambda_{i} \geq 0, \lambda_{i} f_{i}(x) \leq 0, v_{i} h_{i}(x)=0\right\}x∈{x∣∀i,vi,λi≥0,λifi(x)≤0,vihi(x)=0} 则有 maxλ,vL(x,λ,ν)=f0(x)\max _{\lambda, v} \mathcal{L}(x, \lambda, \nu)=f_{0}(x)maxλ,vL(x,λ,ν)=f0(x)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)