在日常生活中,我们经常会遇见带有条件约束的优化问题,如经典的“采购食品”问题等。遇到此类问题时,老师们往往告诉我们使用拉格朗日乘子法解决!它的应用十分广泛,如支持向量机,线性规划等。那么,拉格朗日乘子法到底是什么?它背后的数学原理又是怎样的?本篇博客将为您一一解答。注意,本篇博客只是简单的对拉格朗日乘子法进行介绍和数学推导,并非严格的数学证明!
拉格朗日乘子法
前面提到,我们往往会遇见带有条件约束的优化问题。那么,我们不妨先将其用标准的数学式表达,
maxf0(x)s.t.fi(x)≤0,i=1,2,…,mhi(x)=0,i=1,2,…,p \begin{aligned} &max \quad f_0(\bf{x}) \\ &\begin{aligned} s.t. \quad &f_i(\bf{x}) \le 0, &i = 1, 2, \dots, m \\ &h_i(\bf{x}) = 0, &i = 1, 2, \dots, p \\ \end{aligned} \end{aligned} maxf0(x)s.t.fi(x)≤0,hi(x)=0,i=1,2,…,mi=1,2,…,p
这里,变量x∈Rn,D=⋂i=0m dom fi∩⋂i=1p dom pi\bf{x} \in \mathbb{R}^{n}, D = \bigcap\limits_{i = 0}^{m}\ dom\ f_i \cap \bigcap\limits_{i = 1}^{p}\ dom\ p_ix∈Rn,D=i=0⋂m dom fi∩i=1⋂p dom pi表示域, p∗p^{*}p∗表示最优值,且原始的优化函数可以是非凸的。上式约束被称为为原始约束(primal constraints),并且我们不难将上式转化为无约束的优化问题,
L(x,λ,ν)=f0(x)−∑i=1mλifi(x)−∑i=1pνihi(x)L(\mathbf{x}, \lambda, \nu) = f_0(\mathbf{x}) - \sum_{i = 1}^{m}\lambda_{i}f_i(\mathbf{x}) - \sum_{i = 1}^{p}\nu_ih_i(\mathbf{x})L(x,λ,ν)=f0(x)−i=1∑mλifi(x)−i=1∑pνihi(x)
这里的λi\lambda_iλi与νi\nu_iνi都是拉格朗日乘子,分别对应于fi(x)≤0f_i(x) \le 0fi(x)≤0和hi(x)=0h_i(x) = 0hi(x)=0。而上式也被称为拉格朗日函数。不难看出,对于所有的可行解,当λ≤0\lambda \le 0λ≤0时,拉格朗日函数是原始优化问题的下界。因为对于所有的可行解,当λ≤0\lambda \le 0λ≤0时,∑i=1mλifi(x)≥0\sum_{i = 1}^{m}\lambda_{i}f_i(x) \ge 0∑i=1mλifi(x)≥0。
因此,我们不妨考虑一下拉格朗日函数的下界,即拉格朗日函数对偶函数,定义如下,
g(λ,ν)=infx∈DL(x,λ,ν)=f0(x)−∑i=1mλifi(x)−∑i=1pνihi(x) \begin{aligned} g(\lambda, \nu) &= \inf\limits_{\mathbf{x} \in D}L (\mathbf{x} , \lambda, \nu) \\ &= f_0(\mathbf{x}) - \sum_{i = 1}^{m}\lambda_{i}f_i(\mathbf{x}) - \sum_{i = 1}^{p}\nu_ih_i(\mathbf{x}) \\ \end{aligned} g(λ,ν)=x∈DinfL(x,λ,ν)=f0(x)−i=1∑mλifi(x)−i=1∑pνihi(x)
在这里,可能有读者产生疑惑了——为什么要考虑拉格朗日函数的下界啊?不是求解原始优化问题的就行了吗?它们之间有什么联系啊?难道是下面的等式?
f0(x)≥L(x,λ,ν)≥g(λ,ν)→g(λ,ν)≤p∗f_0(\mathbf{x}) \ge L(\mathbf{x}, \lambda, \nu) \ge g(\lambda, \nu) \to g(\lambda, \nu) \le p^{*}f0(x)≥L(x,λ,ν)≥g(λ,ν)→g(λ,ν)≤p∗
没错,正式在下。不对,正是上面的不等式。因此,根据上述不等式,我们可以通过求解如下拉格朗日函数对偶问题的最优值d∗d^{*}d∗来求解原始优化问题的最优值p∗p^{*}p∗,
maxg(λ,ν)s.t.λ≤0 \begin{aligned} &max \quad g(\lambda, \nu) \\ &\begin{aligned} s.t. \quad \lambda \le 0 \\ \end{aligned} \end{aligned} maxg(λ,ν)s.t.λ≤0
这里,我们称对偶问题的条件约束为**对偶约束(dual constraints)**更重要的是,即使原始优化函数是非凸的,拉格朗日对偶函数也始终是凸函数,并且对偶问题也始终是凸优化问题。此外,我们称
-
弱对偶性(weak duality):d∗≤p∗d^{*} \le p^{*}d∗≤p∗
- 对于非凸问题和凸问题总是成立;
- 可以用来寻找困难问题的平凡下界。
-
强对偶性(strong duality):d∗=p∗d^{*} = p^{*}d∗=p∗
- 通常不会成立;
- 当问题是凸问题时,通常成立。
假设具有强对偶性,即d∗=p∗d^{*} = p^{*}d∗=p∗,则有
f0(x∗)=g(λ∗,ν∗)=f0(x)−∑i=1mλi∗fi(x)−∑i=1pνi∗hi(x)≤f0(x∗)−∑i=1mλi∗fi(x∗)−∑i=1pνi∗hi(x∗)≤f0(x∗) \begin{aligned} f_0(\mathbf{x}^{*}) = g(\lambda^{*}, \nu^{*}) &= f_0(\mathbf{x}) - \sum_{i = 1}^{m}\lambda_{i}^{*}f_i(\mathbf{x}) - \sum_{i = 1}^{p}\nu_i^{*}h_i(\mathbf{x}) \\ &\le f_0(\mathbf{x}^{*}) - \sum_{i = 1}^{m}\lambda_{i}^{*}f_i^{}(\mathbf{x}^{*}) - \sum_{i = 1}^{p}\nu_i^{*}h_i(\mathbf{x}^{*}) \\ &\le f_0(\mathbf{x}^{*}) \\ \end{aligned} f0(x∗)=g(λ∗,ν∗)=f0(x)−i=1∑mλi∗fi(x)−i=1∑pνi∗hi(x)≤f0(x∗)−i=1∑mλi∗fi(x∗)−i=1∑pνi∗hi(x∗)≤f0(x∗)
于是,有
- x∗\mathbf{x^{*}}x∗使得L(x∗,λ,ν)L(\mathbf{x}^{*}, \lambda, \nu)L(x∗,λ,ν)值最小;
- λi∗fi(x∗)=0,i=1,2,…,m\lambda_{i}^{*}f_i(\mathbf{x}^{*}) = 0, i = 1, 2, \dots, mλi∗fi(x∗)=0,i=1,2,…,m
λi∗<0→fi(x∗)=0fi(x∗)=0→λi∗<0 \begin{aligned} \lambda_{i}^{*} < 0 &\to f_i(\mathbf{x}^{*}) = 0 \\ f_i(\mathbf{x}^{*}) = 0 &\to \lambda_{i}^{*} < 0 \\ \end{aligned} λi∗<0fi(x∗)=0→fi(x∗)=0→λi∗<0
上式还有另一个专有名词——互补松弛性(complementary slackness)。而如果我们将前面的条件约束集合在一起,就是著名的KKT条件(Karush-Kuhn-Tucher conditions),
- 原始约束(primal constraints):fi(x)≤0,i=1,…,m,hi(x)=0,i=1,…,p;f_i(\mathbf{x}) \le 0, i = 1, \dots, m, \quad h_i(\mathbf{x}) = 0, i = 1, \dots, p;fi(x)≤0,i=1,…,m,hi(x)=0,i=1,…,p;
- 对偶约束(dual constraints):λ≤0;\lambda \le 0;λ≤0;
- 互补松弛性(complementary slackness):λifi(x)=0,i=1,…,m;\lambda_{i}f_i(\mathbf{x}) = 0, i = 1, \dots, m;λifi(x)=0,i=1,…,m;
- 拉格朗日函数对于x\mathbf{x}x的梯度满足:
∇f0(x)+∑i=1mλi∇fi(x)+∑i=1pνi∇hi(x)=0 \nabla f_0(\mathbf{x}) + \sum_{i = 1}^{m}\lambda_i\nabla f_i(\mathbf{x}) + \sum_{i = 1}^{p}\nu_i\nabla h_i(\mathbf{x}) = 0 ∇f0(x)+i=1∑mλi∇fi(x)+i=1∑pνi∇hi(x)=0
可以证明,当强对偶性成立,x,λ,ν\mathbf{x}, \lambda, \nux,λ,ν最优时,它们一定满足KKT条件。因此,只要利用这一性质,我们便可以设计算法解决带有条件约束的优化问题,如内敛法等。
参考文献
卜东波,《Lec9.pdf》
常虹,《Support Vector Machines》

本文深入探讨了拉格朗日乘子法的基本原理及其在条件约束优化问题中的应用,包括其数学推导、拉格朗日函数、对偶问题及KKT条件等内容。
623

被折叠的 条评论
为什么被折叠?



