原来拉格朗日乘子法这么简单!

在日常生活中,我们经常会遇见带有条件约束的优化问题,如经典的“采购食品”问题等。遇到此类问题时,老师们往往告诉我们使用拉格朗日乘子法解决!它的应用十分广泛,如支持向量机,线性规划等。那么,拉格朗日乘子法到底是什么?它背后的数学原理又是怎样的?本篇博客将为您一一解答。注意,本篇博客只是简单的对拉格朗日乘子法进行介绍和数学推导,并非严格的数学证明!

拉格朗日乘子法

前面提到,我们往往会遇见带有条件约束的优化问题。那么,我们不妨先将其用标准的数学式表达,

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}

这里,变量xRn,D=i=0m dom fii=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_i表示域, pp^{*}表示最优值,且原始的优化函数可以是非凸的。上式约束被称为为原始约束(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})

这里的λi\lambda_iνi\nu_i都是拉格朗日乘子,分别对应于fi(x)0f_i(x) \le 0hi(x)=0h_i(x) = 0。而上式也被称为拉格朗日函数。不难看出,对于所有的可行解,当λ0\lambda \le 0时,拉格朗日函数是原始优化问题的下界。因为对于所有的可行解,当λ0\lambda \le 0时,i=1mλifi(x)0\sum_{i = 1}^{m}\lambda_{i}f_i(x) \ge 0

因此,我们不妨考虑一下拉格朗日函数的下界,即拉格朗日函数对偶函数,定义如下,

g(λ,ν)=infxDL(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}

在这里,可能有读者产生疑惑了——为什么要考虑拉格朗日函数的下界啊?不是求解原始优化问题的就行了吗?它们之间有什么联系啊?难道是下面的等式?

f0(x)L(x,λ,ν)g(λ,ν)g(λ,ν)pf_0(\mathbf{x}) \ge L(\mathbf{x}, \lambda, \nu) \ge g(\lambda, \nu) \to g(\lambda, \nu) \le p^{*}

没错,正式在下。不对,正是上面的不等式。因此,根据上述不等式,我们可以通过求解如下拉格朗日函数对偶问题的最优值dd^{*}来求解原始优化问题的最优值pp^{*}

maxg(λ,ν)s.t.λ0 \begin{aligned} &max \quad g(\lambda, \nu) \\ &\begin{aligned} s.t. \quad \lambda \le 0 \\ \end{aligned} \end{aligned}

这里,我们称对偶问题的条件约束为**对偶约束(dual constraints)**更重要的是,即使原始优化函数是非凸的,拉格朗日对偶函数也始终是凸函数,并且对偶问题也始终是凸优化问题。此外,我们称

  • 弱对偶性(weak duality)dpd^{*} \le p^{*}

    • 对于非凸问题和凸问题总是成立;
    • 可以用来寻找困难问题的平凡下界。
  • 强对偶性(strong duality)d=pd^{*} = p^{*}

    • 通常不会成立;
    • 当问题是凸问题时,通常成立。

假设具有强对偶性,即d=pd^{*} = p^{*},则有

f0(x)=g(λ,ν)=f0(x)i=1mλifi(x)i=1pνihi(x)f0(x)i=1mλifi(x)i=1pνihi(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}

于是,有

  • x\mathbf{x^{*}}使得L(x,λ,ν)L(\mathbf{x}^{*}, \lambda, \nu)值最小;
  • λifi(x)=0,i=1,2,,m\lambda_{i}^{*}f_i(\mathbf{x}^{*}) = 0, i = 1, 2, \dots, m

λi<0fi(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}

上式还有另一个专有名词——互补松弛性(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;
  • 对偶约束(dual constraints)λ0;\lambda \le 0;
  • 互补松弛性(complementary slackness)λifi(x)=0,i=1,,m;\lambda_{i}f_i(\mathbf{x}) = 0, i = 1, \dots, m;
  • 拉格朗日函数对于x\mathbf{x}的梯度满足:
    f0(x)+i=1mλifi(x)+i=1pνihi(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

可以证明,当强对偶性成立,x,λ,ν\mathbf{x}, \lambda, \nu最优时,它们一定满足KKT条件。因此,只要利用这一性质,我们便可以设计算法解决带有条件约束的优化问题,如内敛法等。

参考文献

卜东波,《Lec9.pdf》

常虹,《Support Vector Machines》

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读