机器学习基础:拉格朗日乘子法
在凸优化问题中,拉格朗日乘子法是最常用的方法之一。
先看个例题:求目标函数 f ( x , y ) = x 2 + y 2 \mathrm{f}(\mathrm{x}, \mathrm{y})=\mathrm{x}^{2}+\mathrm{y}^{2} f(x,y)=x2+y2,在约束条件 x y = 3 \mathrm{xy}=3 xy=3下的最小值。
这是一个典型的约束优化问题,根据我们中学知识,首先想到的是一个变量用另外一个变量进行替换,再带入目标函数就可以求出极值。
将
y
=
3
x
y=\frac{3}{x}
y=x3带入
f
(
x
,
y
)
=
x
2
+
y
2
\mathrm{f}(\mathrm{x}, \mathrm{y})=\mathrm{x}^{2}+\mathrm{y}^{2}
f(x,y)=x2+y2 ,可得
f
(
x
)
=
x
2
+
9
x
2
,然后求
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})=0
f′(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 。
更直观一些,将 x 2 + y 2 = c \mathrm{x}^{2}+\mathrm{y}^{2}=\mathrm{c} x2+y2=c的曲线族画出来,如图所示,当曲线族中的圆与 x y = 3 xy=3 xy=3 曲线相切时,切点到原点的距离最短。也就是说, f ( x , y ) = c f(x, y)=c f(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 , y x,y x,y的值是多少呢? 该如何求解呢?
在讨论梯度概念时,梯度与等高线的关系描述如下:函数 z = f ( x , y ) z = f ( x , y ) z=f(x,y) 在点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)梯度方向与过点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)的等高线 f ( x , y ) = c f(x,y)=c f(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) 。分别求偏导,并且加上约束条件
x
y
=
3
xy=3
xy=3,可以得到方程组:
{
∂
f
∂
x
=
−
λ
∂
g
∂
x
∂
f
∂
y
=
−
λ
∂
g
∂
y
x
y
=
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
即:
{
2
x
=
−
λ
y
2
y
=
−
λ
x
x
y
=
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=-2
x=3,y=3,λ=−2 或者
x
=
−
3
,
y
=
−
3
,
λ
=
−
2
\mathrm{x}=-\sqrt{3}, \mathrm{y}=-\sqrt{3}, \lambda=-2
x=−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
)
=
x
y
z
\mathrm{V}(\mathrm{x}, \mathrm{y}, \mathrm{z})=\mathrm{xyz}
V(x,y,z)=xyz,在约束条件
2
x
y
+
2
x
z
+
2
y
z
=
12
2 \mathrm{xy}+2 \mathrm{xz}+2 \mathrm{yz}=12
2xy+2xz+2yz=12下,求体积
V
\mathrm{V}
V的最大值。
解:
F
(
x
,
y
,
z
,
λ
)
=
x
3
y
2
z
+
λ
⋅
(
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)
求偏导可得方程组
{
3
x
2
y
2
z
+
λ
=
0
2
x
3
y
z
+
λ
=
0
x
3
y
2
+
λ
=
0
x
+
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),
u
mux
=
6912
u_{\operatorname{mux}}=6912
umux=6912 。
由凸优化问题我们知道:
例如要求解 min x f ( x ) \min_{x}{f(x)} minxf(x),那么就是解方程 ∇ f ( x ) = 0 \nabla f(x) =0 ∇f(x)=0,最终的 x ∗ x^{\ast} x∗ 为最优解。
那么当有约束条件怎么呢?
拉格朗日法就是把一个有约束问题转换成一个无约束问题
优化问题一般有以下几种形式
min
x
f
0
(
x
)
min
x
f
0
(
x
)
max
x
f
0
(
x
)
s.t.
f
i
(
x
)
≤
0
,
i
=
1
,
…
,
m
s.t.
f
i
(
x
)
≥
0
,
i
=
1
,
…
,
m
s.t.
f
i
(
x
)
≤
0
,
i
=
1
,
…
,
m
h
i
(
x
)
=
0
,
i
=
1
,
…
,
p
h
i
(
x
)
=
0
,
i
=
1
,
…
,
p
h
i
(
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
最常用的是第一种,求最小值,约束为小于等于。
对于仅含等式约束的优化问题:
min
f
(
x
)
s.t.
h
i
(
x
)
=
0
i
=
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
∈
R
n
,
f
(
x
)
\boldsymbol{x} \in \mathbb{R}^{n}, f(\boldsymbol{x})
x∈Rn,f(x) 和
h
i
(
x
)
h_{i}(\boldsymbol{x})
hi(x) 均有连续的一阶偏导数。首先列出其拉格朗日函数:
L ( x , λ ) = f ( x ) + ∑ i = 1 n λ i h i ( 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再搭配约束条件 h i ( x ) = 0 h_{i}(\boldsymbol{x})=0 hi(x)=0 解出 x \boldsymbol{x} x, 求解出的所有 x \boldsymbol{x} x 即为上述优化问题的所有可能极值点。
拉格朗日函数与原始问题的关系
min
x
f
0
(
x
)
s.t.
f
i
(
x
)
≤
0
,
i
=
1
,
…
,
m
h
i
(
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
,
λ
,
ν
)
=
f
0
(
x
)
+
∑
i
=
1
m
λ
i
f
i
(
x
)
+
∑
i
=
1
p
ν
i
h
i
(
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和
v
i
v_i
vi是两个拉格朗日乘子,由于
f
i
(
x
)
f_i(x)
fi(x)是不等式约束,所以
λ
i
\lambda_i
λi有约束条件必须大于0;
h
i
(
x
)
h_i(x)
hi(x)是等式约束,
v
i
v_i
vi没有约束。
上面式子等价于这个式子:
min
x
max
λ
,
v
L
(
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
λ
,
v
L
(
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
)
=
{
f
0
(
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 使得某个 f i ( x ) > 0 f_{i}(x)>0 fi(x)>0 则我们可令 0 ≤ λ i 0 \leq \lambda_{i} 0≤λi → + ∞ \rightarrow+\infty →+∞ , 进而有 θ p ( x ) = + ∞ \theta_{p}(x)=+\infty θp(x)=+∞
- 若存在 x 使得某个 h i ( x ) ≠ 0 h_{i}(x) \neq 0 hi(x)=0 则我们可令 v i h i ( x ) → + ∞ v_{i} h_{i}(x) \rightarrow+\infty vihi(x)→+∞ , 进而有 θ p ( x ) = + ∞ \theta_{p}(x)=+\infty θp(x)=+∞
- 若 x ∈ { x ∣ ∀ i , v i , λ i ≥ 0 , λ i f i ( x ) ≤ 0 , v i h i ( 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 λ , v L ( x , λ , ν ) = f 0 ( x ) \max _{\lambda, v} \mathcal{L}(x, \lambda, \nu)=f_{0}(x) maxλ,vL(x,λ,ν)=f0(x)