拉格朗日乘子法是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子,可将有
d
d
d个变量与
k
k
k个约束条件的最优化问题转化为具有
d
+
k
d+k
d+k个变量的无约束优化问题求解。
先考虑一个等式约束的优化问题。假定
x
x
x为
d
d
d维向量,欲寻找
x
x
x的某个取值
x
?
x^*
x?,使目标函数
f
(
x
)
f(x)
f(x)最小且同时满足
g
(
x
)
=
0
g(x)=0
g(x)=0的约束。从几何角度看,该问题的目标是在由方程
g
(
x
)
=
0
g(x)=0
g(x)=0确定的
d
?
1
d-1
d?1维曲面上寻找能使目标函数
f
(
x
)
f(x)
f(x)最小化的点。此时可以得到如下结论:
- 对于约束曲面上的任意点
x
x
x,该点的梯度
?
g
(
x
)
\nabla g(x)
?g(x)正交于约束曲面
- 在最优点
x
?
x^*
x?,目标函数在该点的梯度
?
f
(
x
?
)
\nabla f(x^*)
?f(x?)正交于约束曲面
由此可知,在最优点
x
?
x^*
x?,如下图所示,梯度
?
g
(
x
)
\nabla g(x)
?g(x)和
?
f
(
x
?
)
\nabla f(x^*)
?f(x?)的方向必相同或相反,即存在
λ
≠
0
\lambda\neq0
λ?=0使得:
?
f
(
x
?
)
+
λ
?
g
(
x
?
)
=
0
\nabla f(x^*) + \lambda\nabla g(x^*) =0
?f(x?)+λ?g(x?)=0
λ
\lambda
λ称为拉格朗日乘子,我们定义拉格朗日函
L
(
x
,
λ
)
=
f
(
x
)
+
λ
g
(
x
)
L(x,\lambda)=f(x)+\lambda g(x)
L(x,λ)=f(x)+λg(x) 不难发现,将其对
x
x
x的偏导数
?
x
L
(
x
,
λ
)
\nabla_x L(x,\lambda)
?x?L(x,λ)置零即得上式。同时,将其对入的偏导数
?
λ
L
(
x
,
λ
)
\nabla_\lambda L(x,\lambda)
?λ?L(x,λ)置零即得约束条件
g
(
x
)
=
0
g(x)=0
g(x)=0。
于是,原约束优化问题可转化为对拉格朗日函数
L
(
x
,
λ
)
L(x,\lambda)
L(x,λ)的无约束优化问题。
现在我们以一个常见的例子来考虑拉格朗日乘子法。假设
x
x
x为2维向量,且:
g
(
x
)
=
x
1
2
x
2
?
3
=
0
g(x)=x_1^2x_2-3=0
g(x)=x12?x2??3=0 现在我们想求其上的点与原点的最短距离,即:
min
?
f
(
x
)
=
x
1
2
+
x
2
2
\min f(x)=x_1^2+x_2^2
minf(x)=x12?+x22? 此时,圆(
f
(
x
)
f(x)
f(x))和曲线(
g
(
x
)
g(x)
g(x))相切,也就是在该点切线相同:
此时
f
f
f梯度:
?
f
x
1
=
2
x
1
?
f
x
2
=
2
x
2
\nabla f_{x_1}=2x_1 \\ \nabla f_{x_2}=2x_2
?fx1??=2x1??fx2??=2x2? 此时
g
g
g梯度:
?
g
x
1
=
2
x
1
x
2
?
g
x
2
=
x
1
2
\begin{aligned} &\nabla g_{x_1}=2x_1x_2\\ &\nabla g_{x_2}=x_1^2 \end{aligned}
??gx1??=2x1?x2??gx2??=x12??
梯度向量平行,我们可以写为:
?
f
=
λ
?
g
\nabla f=\lambda \nabla g
?f=λ?g
所以我们可得:
?
f
=
λ
?
g
g
(
x
)
=
x
1
2
x
2
?
3
=
0
\begin{aligned} \nabla f&=\lambda \nabla g\\ g(x)&=x_1^2x_2-3=0 \end{aligned}
?fg(x)?=λ?g=x12?x2??3=0? 我们构造拉格朗日函数:
L
(
x
,
λ
)
=
f
(
x
)
+
λ
g
(
x
)
L(x,\lambda)=f(x)+\lambda g(x)
L(x,λ)=f(x)+λg(x) 并利用拉格朗日乘子法即可得到与上式相同的等式:
?
λ
L
(
x
,
λ
)
=
?
f
+
λ
?
g
=
0
?
λ
L
(
x
,
λ
)
=
g
(
x
)
=
x
1
2
x
2
?
3
=
0
\begin{aligned} \nabla_\lambda L(x,\lambda)&=\nabla f+\lambda \nabla g=0\\ \nabla_\lambda L(x,\lambda)&=g(x)=x_1^2x_2-3=0 \end{aligned}
?λ?L(x,λ)?λ?L(x,λ)?=?f+λ?g=0=g(x)=x12?x2??3=0?
|