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

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

拉格朗日乘子法

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

m a x f 0 ( x ) s . t . f i ( x ) ≤ 0 , i = 1 , 2 , … , m h i ( 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 ∈ R n , D = ⋂ i = 0 m   d o m   f i ∩ ⋂ i = 1 p   d o m   p i \bf{x} \in \mathbb{R}^{n}, D = \bigcap\limits_{i = 0}^{m}\ dom\ f_i \cap \bigcap\limits_{i = 1}^{p}\ dom\ p_i xRn,D=i=0m dom fii=1p dom pi表示域, p ∗ p^{*} p表示最优值,且原始的优化函数可以是非凸的。上式约束被称为为原始约束(primal constraints),并且我们不难将上式转化为无约束的优化问题,

L ( x , λ , ν ) = f 0 ( x ) − ∑ i = 1 m λ i f i ( x ) − ∑ i = 1 p ν i h i ( 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=1mλifi(x)i=1pνihi(x)

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

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

g ( λ , ν ) = inf ⁡ x ∈ D L ( x , λ , ν ) = f 0 ( x ) − ∑ i = 1 m λ i f i ( x ) − ∑ i = 1 p ν i h i ( 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(λ,ν)=xDinfL(x,λ,ν)=f0(x)i=1mλifi(x)i=1pνihi(x)

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

f 0 ( 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

m a x g ( λ , ν ) 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^{*} dp

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

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

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

f 0 ( x ∗ ) = g ( λ ∗ , ν ∗ ) = f 0 ( x ) − ∑ i = 1 m λ i ∗ f i ( x ) − ∑ i = 1 p ν i ∗ h i ( x ) ≤ f 0 ( x ∗ ) − ∑ i = 1 m λ i ∗ f i ( x ∗ ) − ∑ i = 1 p ν i ∗ h i ( x ∗ ) ≤ f 0 ( 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=1mλifi(x)i=1pνihi(x)f0(x)i=1mλifi(x)i=1pνihi(x)f0(x)

于是,有

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

λ i ∗ < 0 → f i ( x ∗ ) = 0 f i ( 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)=0fi(x)=0λi<0

上式还有另一个专有名词——互补松弛性(complementary slackness)。而如果我们将前面的条件约束集合在一起,就是著名的KKT条件(Karush-Kuhn-Tucher conditions)

  • 原始约束(primal constraints) f i ( x ) ≤ 0 , i = 1 , … , m , h i ( 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) λ i f i ( 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的梯度满足:
    ∇ f 0 ( x ) + ∑ i = 1 m λ i ∇ f i ( x ) + ∑ i = 1 p ν i ∇ h i ( 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=1mλifi(x)+i=1pνihi(x)=0

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

参考文献

卜东波,《Lec9.pdf》

常虹,《Support Vector Machines》

你可能感兴趣的:(机器学习,算法)