最近学习SVM的相关内容时,接触到了拉格朗日函数及其对偶问题,于是就学习了一些相关内容,在此整理总结一下。文章内容为个人理解,如有错误,欢迎指正!

文章目录

  • 1. 引言
    • 1.1 在约束条件下求函数的极值
    • 1.2 引入拉格朗日乘数法
  • 2. 拉格朗日乘数法
    • 2.1 拉格朗日乘数法简介
    • 2.2 几何理解:拉格朗日函数与梯度的关系
      • 2.2.1 几何理解
      • 2.2.2 举例
    • 2.3 松弛条件与紧致条件
  • 3. 拉格朗日对偶问题
    • 3.1 关于“凸”
      • 3.1.1 凸集
      • 3.1.2 凸函数
      • 3.1.3 凸优化问题
    • 3.2 拉格朗日对偶问题
      • 3.2.1 原始问题转换
      • 3.2.2 对偶问题
    • 3.3 原问题与对偶问题的关系
      • 3.3.1 原问题的解≥\ge≥对偶问题的解恒成立
      • 3.3.2 直观理解二者关系
      • 3.3.3 原问题何时等价于其对偶问题
  • 4. slater条件与KKT条件
    • 4.1 slater条件
    • 4.2 KKT条件

1. 引言

1.1 在约束条件下求函数的极值

我们一般见到的问题大多都是直接求函数的极值,通常我们会求解函数的导数并令其等于0来求出其极值。但是对于有约束条件的求函数极值的问题该怎么处理?

举例:求解
minf(x,y)=x2+y2s.t.x2+y=0min \ f(x,y)=x^2+y^2 \\ s.t. \ \ x^2 + y = 0 min f(x,y)=x2+y2s.t.  x2+y=0
对于这个问题我们最先想到的就是将yyy表示为xxx的表达式,再带入到原函数中,之后通过对xxx求导,得到可能的极值点,然后带入极值点求出最值。

但是,该方法存在局限性,倘若约束条件不存在代数解(即yyy无法表示为xxx的表达式),或者当无约束的目标函数表达式过于复杂,这时候该如何处理问题?

1.2 引入拉格朗日乘数法

拉格朗日乘数法(百度解释:链接)提供了一种方法:将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束。所以利用拉格朗日乘数法我们可以将原始的有约束条件的最优化问题,转变为没有约束条件的最优化问题。


2. 拉格朗日乘数法

2.1 拉格朗日乘数法简介

对于这样的问题:
minf(x),x∈Rns.t.gi(x)≤0,i=1,2,3,...,mmin\ f(\mathbf x),\ \mathbf x\in \mathbb R^n \\ s.t. \ \ g_i(\mathbf x)\le 0, i = 1,2,3,...,m min f(x), x∈Rns.t.  gi​(x)≤0,i=1,2,3,...,m
对于有多个约束条件的求极值/最值问题,可以构造拉格朗日函数:
L(x,λ)=f(x)+∑λigi(x)L(\mathbf x,\lambda)=f(\mathbf x)+\sum \lambda_i g_i(\mathbf x) L(x,λ)=f(x)+∑λi​gi​(x)
并计算函数对每个变量的一阶偏导数并令其等于0,计算所得的解就是最优解的必要条件。

2.2 几何理解:拉格朗日函数与梯度的关系

其实,让拉格朗日函数梯度为0的点,就是可能的极值点,下面就理解一下拉格朗日函数与梯度的关系。

2.2.1 几何理解

假设现有问题,通过计算出可能的极值点,然后代入函数得到最小值:
minz=f(x,y)s.t.g(x,y)=0min \ \ z=f(x,y) \\ s.t. \ \ g(x,y)=0 min  z=f(x,y)s.t.  g(x,y)=0
注:图片来自https://zhuanlan.zhihu.com/p/103976631

我们从Z轴的方向俯瞰函数,图中的线就是函数的等值线。

把函数z=f(x,y)z=f(x,y)z=f(x,y)想象成一个盆地,g(x,y)=0g(x,y)=0g(x,y)=0想象成一个垂直于xOyxOyxOy平面的一个曲面,这个曲面截出来的就是在约束条件g(x,y)=0g(x,y)=0g(x,y)=0下的函数z=f(x,y)z=f(x,y)z=f(x,y),我们知道截出来的是一条曲线,假设这条曲线叫做 ϕ\phiϕ。

假设点P(x0,y0)P(x_0,y_0)P(x0​,y0​)是曲线ϕ\phiϕ上的极值点,那么PPP应该满足哪些条件?。从图中我们可以看到PPP点处,曲线g(x,y)=0g(x,y)=0g(x,y)=0与PPP处的等高线z1=f(x,y)z_1=f(x,y)z1​=f(x,y)相切,也就是说,这时候PPP点处曲线z1z_1z1​的法向量与曲线g(x,y)=0g(x,y)=0g(x,y)=0的法向量共线。

等高线z1=f(x,y)z_1=f(x,y)z1​=f(x,y)在PPP处的法向量与函数z=f(x,y)z=f(x,y)z=f(x,y)在PPP处的梯度共线(关于法向量和梯度的关系可参考:法向量,梯度)。因此在PPP点处,函数z=f(x,y)z=f(x,y)z=f(x,y)的梯度∇p={fx′(x0,y0),fy′(x0,y0)}\nabla_p=\{ f_x^{'}(x_0,y_0), f_y^{'}(x_0,y_0) \}∇p​={fx′​(x0​,y0​),fy′​(x0​,y0​)}与曲线g(x,y)=0g(x,y)=0g(x,y)=0的法向量{gx′(x0,y0),gy′(x0,y0)}\{ g_x^{'}(x_0,y_0), g_y^{'}(x_0,y_0) \}{gx′​(x0​,y0​),gy′​(x0​,y0​)}共线。

由此我们可知∃λ∈R\exists \lambda \in \mathbb R∃λ∈R使得:
{fx′(x0,y0),fy′(x0,y0)}+λ{gx′(x0,y0),gy′(x0,y0)}=0\{f_x^{'}(x_0,y_0), f_y^{'}(x_0,y_0) \} + \lambda \{ g_x^{'}(x_0,y_0), g_y^{'}(x_0,y_0) \} = 0 {fx′​(x0​,y0​),fy′​(x0​,y0​)}+λ{gx′​(x0​,y0​),gy′​(x0​,y0​)}=0
又∵g(x,y)=0\because g(x,y)=0∵g(x,y)=0,将这些条件整合得到:
{fx′=λgx′fy′=λgy′g(x,y)=0\begin{cases} f_x^{'} = \lambda g_x^{'} \\ f_y^{'} = \lambda g_y^{'}\\ g(x,y)=0 \end{cases} ⎩⎪⎨⎪⎧​fx′​=λgx′​fy′​=λgy′​g(x,y)=0​
然后我们求解这个方程组,就能得到条件极值点了。

采用拉格朗日乘数法,我们构造拉格朗日函数:
L(x,y)=f(x,y)+λg(x,y)L(x,y)= f(x,y) + \lambda g(x,y) L(x,y)=f(x,y)+λg(x,y)
之后求解拉格朗日函数对每个变量的一阶偏导数并令其等于0,我们得到的方程组其实就是上文中推导出的方程组,只不过这里的λ\lambdaλ相当于上文方程组中的−λ-\lambda−λ,但λ\lambdaλ本身就是个参数,它的作用就是用来调节两个向量的大小从而使得它们相加后为0:
{∂L(x,y)∂x=∂f(x,y)∂x+λ∂g(x,y)∂x=0∂L(x,y)∂y=∂f(x,y)∂y+λ∂g(x,y)∂y=0∂L(x,y)∂λ=g(x,y)=0\begin{cases} \cfrac{\partial L(x,y)}{\partial x} = \cfrac{\partial f(x,y)}{\partial x} + \lambda \cfrac{\partial g(x,y)}{\partial x} = 0\\ \cfrac{\partial L(x,y)}{\partial y} = \cfrac{\partial f(x,y)}{\partial y} + \lambda \cfrac{\partial g(x,y)}{\partial y} = 0\\ \cfrac{\partial L(x,y)}{\partial \lambda} = g(x,y) =0 \end{cases} ⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​∂x∂L(x,y)​=∂x∂f(x,y)​+λ∂x∂g(x,y)​=0∂y∂L(x,y)​=∂y∂f(x,y)​+λ∂y∂g(x,y)​=0∂λ∂L(x,y)​=g(x,y)=0​

2.2.2 举例

  • 示例函数

    为了更好地理解,这里举个例子:假设函数z=f(x,y)=x2+y2z=f(x,y)=x^2+y^2z=f(x,y)=x2+y2,g(x,y)=x2+y−1=0g(x,y)=x^2+y-1=0g(x,y)=x2+y−1=0,分别从z,y,x轴来看,分别如下图的图(a)(b)(c)所示,假设f(x,y)f(x,y)f(x,y)被g(x,y)=0g(x,y)=0g(x,y)=0截出来的曲线为ϕ\phiϕ :

    (a) (b) (c)

    通过观察图(b)可以很容易发现曲线ϕ\phiϕ有两个极小点和一个极大值点。在图中标出这三个点,并得到这三个点在xOyxOyxOy平面上的投影点A(−22,12),B(22,12),C(0,1)A(-\cfrac{\sqrt{2}}{2},\cfrac{1}{2}),B(\cfrac{\sqrt{2}}{2},\cfrac{1}{2}),C(0,1)A(−22​​,21​),B(22​​,21​),C(0,1)

  • 拉格朗日乘数法的应用
    接着用拉格朗日乘数法来求解A,B,CA,B,CA,B,C点的坐标。

    1. 构造拉格朗日函数
      L(x,y,λ)=x2+y2+λ(x2+y−1)L(x,y,\lambda) = x^2+y^2 + \lambda(x^2+y-1) L(x,y,λ)=x2+y2+λ(x2+y−1)
    2. 令拉格朗日函数的梯度为0
      {∂L∂x=2x+2λx=0∂L∂y=2y+λ=0∂L∂λ=x2+y−1=0⇒{x(1+λ)=0y=−λ2x2+y−1=0\begin{cases} \cfrac{\partial L}{\partial x} = 2x+2\lambda x = 0 \\ \cfrac{\partial L}{\partial y} = 2y + \lambda = 0 \\ \cfrac{\partial L}{\partial \lambda} = x^2+y-1 = 0 \end{cases} \ \ \ \ \ \ \ \Rightarrow \begin{cases} x(1+\lambda)= 0 \\ y = -\cfrac{\lambda}{2}\\ x^2+y-1=0 \end{cases} ⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​∂x∂L​=2x+2λx=0∂y∂L​=2y+λ=0∂λ∂L​=x2+y−1=0​       ⇒⎩⎪⎪⎨⎪⎪⎧​x(1+λ)=0y=−2λ​x2+y−1=0​
    3. 求出极值点
      1o1^o1o : 若x≠0x\neq 0x​=0,则λ=−1,⇒y=12\lambda = -1, \Rightarrow y=\cfrac{1}{2}λ=−1,⇒y=21​,带入x2+y−1=0x^2+y-1=0x2+y−1=0 得 x=±22x= \pm \cfrac{\sqrt 2}{2}x=±22​​。得到极值点(−22,12),(22,12)(-\cfrac{\sqrt 2}{2}, \cfrac{1}{2}),(\cfrac{\sqrt 2}{2}, \cfrac{1}{2})(−22​​,21​),(22​​,21​)。
      2o2^o2o : 若y≠0y\neq 0y​=0,则λ≠0\lambda \neq 0λ​=0(且λ≠−1\lambda \neq -1λ​=−1)⇒x=0\Rightarrow x=0⇒x=0,带入x2+y−1=0x^2+y-1=0x2+y−1=0 得 y=1,λ=−2y=1,\lambda = -2y=1,λ=−2。得到极值点(0,1)(0,1)(0,1)。

    在上文中提到了极值点处,g(x,y)=0g(x,y)=0g(x,y)=0应该与f(x,y)f(x,y)f(x,y)对应的等高线相切,那么我们从图中直观的看一下。俯瞰函数,图中紫色线l1l_1l1​是f(x,y)f(x,y)f(x,y)在CCC处的等高线,蓝色线l2l_2l2​是f(x,y)f(x,y)f(x,y)在A,BA,BA,B处的等高线,绿色线l3l_3l3​是g(x,y)=0g(x,y)=0g(x,y)=0在xOyxOyxOy平面的投影。我们可以很容易看出:l3l_3l3​与l1,l2l_1, l_2l1​,l2​分别相切于点C,A,BC,A,BC,A,B:

2.3 松弛条件与紧致条件

当约束条件有多个时,所有的约束条件都一定会起作用吗?来看这样的问题:
minf(x),x∈Rns.t.gi(x)=ωiT⋅x+bi≤0i=1,2,…,m,ωi∈Rn,bi∈Rmin \ \ f(x), x \in \mathbb R^n \\ s.t. \ \ g_i(x) = \omega_i^T \cdot x + b_i \le 0\\ i = 1,2,\dots ,m, \omega_i \in \mathbb R^n, b_i \in \mathbb R min  f(x),x∈Rns.t.  gi​(x)=ωiT​⋅x+bi​≤0i=1,2,…,m,ωi​∈Rn,bi​∈R
构建拉格朗日函数:
L(x,λ)=f(x)+∑i=1mλigi(x)L(x, \lambda) = f(x) + \sum_{i=1}^m\lambda_i g_i(x) L(x,λ)=f(x)+i=1∑m​λi​gi​(x)
假设由5个约束条件得到的可行域是这样的:
注:图片截自https://www.bilibili.com/video/BV1HP4y1Y79e?spm_id_from=333.880.my_history.page.click

图2

根据2.2的经验,我们知道可能的极值点应该是 x∗x^*x∗。我们令函数的梯度等于0,得到:
∇L(x,λ)=0⇒−∇f(x)=∑i=1mλi⋅∇gi(x)\nabla L(x,\lambda) = 0 \Rightarrow -\nabla f(x) = \sum_{i=1}^m\lambda_i \cdot \nabla g_i(x) ∇L(x,λ)=0⇒−∇f(x)=i=1∑m​λi​⋅∇gi​(x)
由此可知∇f\nabla f∇f 的反方向,就等于所有约束条件的梯度和(注意梯度是个向量),但是我们观察图2发现,真正起作用的梯度只有∇gα(x∗)\nabla g_{\alpha}(x^*)∇gα​(x∗) 和 ∇gβ(x∗)\nabla g_{\beta}(x^*)∇gβ​(x∗),也就是说:
λα∇gα(x∗)+λβ∇gβ(x∗)=−∇f(x)⇒λα,λβ≠0\lambda_{\alpha} \nabla g_{\alpha}(x^*) + \lambda_{\beta} \nabla g_{\beta}(x^*) = -\nabla f(x) \ \ \ \ \Rightarrow \ \ \ \ \ \lambda_{\alpha}, \lambda_{\beta} \neq 0 λα​∇gα​(x∗)+λβ​∇gβ​(x∗)=−∇f(x)    ⇒     λα​,λβ​​=0
我们可以看到x∗x^*x∗落在约束条件gαg_{\alpha}gα​和gβg_{\beta}gβ​上,也就是说:
gα(x∗)=0,gβ(x∗)=0g_{\alpha}(x^*)=0, \ \ \ \ g_{\beta}(x^*) = 0 gα​(x∗)=0,    gβ​(x∗)=0
将x∗x^*x∗带入待其他约束条件中,可以发现其他的gi(x∗)<0g_i(x^*) \lt 0gi​(x∗)<0。那么为了让其他的∇gi(x∗)\nabla g_i(x^*)∇gi​(x∗)不起作用,我们需要通过调整λi\lambda_iλi​的值,使得
λi⋅∇gi(x∗)=0⇒λi=0,其中i≠α,β\lambda_i \cdot \nabla g_i(x^*)=0 \ \ \ \ \Rightarrow \ \ \ \ \lambda_i = 0,其中i\neq \alpha ,\beta λi​⋅∇gi​(x∗)=0    ⇒    λi​=0,其中i​=α,β
直观的看

那么对于λi\lambda_iλi​(λi≥0\lambda_i \ge 0λi​≥0,关于拉格朗日乘子≥0\ge 0≥0可参考链接)就有如下结论:
(1)若λi=0\lambda_i =0λi​=0,就说对应的约束条件gi(x)g_i(x)gi​(x)是松弛的;
(2)若λi>0\lambda_i \gt 0λi​>0,就说对应的约束条件gi(x)g_i(x)gi​(x)是紧致的。


3. 拉格朗日对偶问题

当我们求函数的最值时,先使用拉格朗日乘数法找出的可能的点(这些点可能是极值点,也可能是鞍点),所以说我们还需要对找出的点做进一步的筛选,来确定最终的最值。那么什么时候函数的极值就是最值呢?思考中学学过的凸函数,当一个函数是凸函数时,该函数的极值就是最值。同样的,当我们的优化问题是一个凸问题时,求解的极值就是最值。

3.1 关于“凸”

在了解拉格朗日对偶问题之前,先了解一下几个和“凸”有关的概念。

3.1.1 凸集

凸集:百度百科。用白话来讲,用二维平面几何图形举例,凸集就是图形中任意两个点连成的线段也在这个图形中,也就是如下图所示:

3.1.2 凸函数

关于凹凸函数的定义,国内有些数学界的定义和国外数学界的定义是相反的,但是不管怎么定义,凸函数取反就是凹函数,反之亦然。按照百度百科对凸函数的定义:凸函数是一个定义在某个向量空间的凸子集CCC上的实值函数fff,而且对于凸子集CCC中任意两个向量x1,x2\mathbf x_1, \mathbf x_2x1​,x2​ 有 f(x1+x22)≤f(x1)+f(x2)2f(\cfrac{\mathbf x_1+ \mathbf x_2}{2}) \le \cfrac{f(\mathbf x_1) + f(\mathbf x_2)}{2}f(2x1​+x2​​)≤2f(x1​)+f(x2​)​成立。可以把它想象成一个开口朝下的二次函数。

3.1.3 凸优化问题

凸优化问题是研究定义于凸集中的凸函数最小化的问题。也就是说问题的定义域是个凸集,问题对应的函数是个凸函数。

3.2 拉格朗日对偶问题

假设现有这样的问题:
minf(x),x∈Rns.t.gi(x)≤0i=1,2,...,mhj(x)=0j=1,2,...,nmin \ \ f(x) , x \in \mathbb R^n\\ s.t. \ \ g_i(x) \le 0 \ \ i = 1,2,...,m\\ \ \ \ \ \ \ h_j(x) = 0 \ \ j = 1,2,...,n min  f(x),x∈Rns.t.  gi​(x)≤0  i=1,2,...,m      hj​(x)=0  j=1,2,...,n

3.2.1 原始问题转换

利用拉格朗日乘数法,我们可以构造拉格朗日函数:
L(x,λ,μ)=f(x)+∑i=1mλigi(x)+∑j=1nμjhj(x)L(x, \lambda, \mu) = f(x) + \sum_{i=1}^m \lambda_i g_i(x) + \sum_{j=1}^n \mu_j h_j(x) L(x,λ,μ)=f(x)+i=1∑m​λi​gi​(x)+j=1∑n​μj​hj​(x)
之后要做的就是minL(x,λ,μ)min \ \ L(x,\lambda, \mu)min  L(x,λ,μ),但是拉格朗日函数有三个变量,如何对其进行最小化?其实是分两步进行的:
(1)先将xxx看做常量,对λ,μ\lambda, \muλ,μ求最大值;
(2)确定了λ,μ\lambda, \muλ,μ之后,对xxx求最小值.
于是就将原始的问题转化成了:
min⁡xmax⁡λ,μL(x,λ,μ)s.t.λ≥0\min_{x}\max_{\lambda, \mu} L(x,\lambda, \mu)\\ s.t. \ \ \lambda \ge 0 xmin​λ,μmax​L(x,λ,μ)s.t.  λ≥0

为什么要这样转换呢?我们先来分析一下原始问题:原始问题是有约束条件的最小化问题,也就是说在全局范围内,xxx要么在可行域(即满足约束条件)内,要么在可行域之外,那就分两种情况讨论:

  1. xxx在可行域内
    此时xxx满足所有的约束条件,即gi(x)≤0i=1,2,...,mhj(x)=0j=1,2,...,ng_i(x) \le 0 \ \ i = 1,2,...,m \ \ \ h_j(x) = 0 \ \ j= 1,2,...,ngi​(x)≤0  i=1,2,...,m   hj​(x)=0  j=1,2,...,n。
    ∵hj(x)=0\because h_j(x)=0∵hj​(x)=0,∴\therefore∴无论μj\mu_jμj​取什么值,一定有μjhj(x)=0\mu_jh_j(x)=0μj​hj​(x)=0。
    又∵gi(x)≤0\because g_i(x) \le 0∵gi​(x)≤0,且λi≥0\lambda_i \ge 0λi​≥0,∴λigi(x)\therefore \lambda_ig_i(x)∴λi​gi​(x)的最大值为0.
    因此,在可行域内有:
    max⁡λi,μj;λi≥0L(x,λ,μ)=f(x)+max⁡λi,μj;λi≥0[∑i=1mλigi(x)+∑j=1nμjhj(x)]=f(x)\max_{\lambda_i, \mu_j;\lambda_i \ge 0} L(x, \lambda, \mu) = f(x) + \max_{\lambda_i, \mu_j;\lambda_i \ge 0}[\sum_{i=1}^m \lambda_i g_i(x) + \sum_{j=1}^n \mu_j h_j(x)] = f(x) λi​,μj​;λi​≥0max​L(x,λ,μ)=f(x)+λi​,μj​;λi​≥0max​[i=1∑m​λi​gi​(x)+j=1∑n​μj​hj​(x)]=f(x)

  2. xxx在可行域外
    此时xxx不满足所有的约束条件。若hj(x)≠0h_j(x) \neq 0hj​(x)​=0,那么最大化之后μjhj(x)→+∞\mu_jh_j(x) \rightarrow + \inftyμj​hj​(x)→+∞。若gi(x)>0g_i(x) \gt 0gi​(x)>0,那么最大化之后λigi(x)→+∞\lambda_ig_i(x) \rightarrow +\inftyλi​gi​(x)→+∞。
    因此,在可行域之外有:
    max⁡λi,μj;λi≥0L(x,λ,μ)=+∞\max_{\lambda_i, \mu_j;\lambda_i \ge 0} L(x, \lambda, \mu) =+\infty λi​,μj​;λi​≥0max​L(x,λ,μ)=+∞

综合1、 2可知,对f(x)f(x)f(x)在可行域内进行最小化时,就相当于最小化max⁡λi,μj;λi≥0L(x,λ,μ)\max_{\lambda_i, \mu_j;\lambda_i \ge 0} L(x, \lambda, \mu)maxλi​,μj​;λi​≥0​L(x,λ,μ);在可行域之外,max⁡λi,μj;λi≥0L(x,λ,μ)\max_{\lambda_i, \mu_j;\lambda_i \ge 0} L(x, \lambda, \mu)maxλi​,μj​;λi​≥0​L(x,λ,μ)趋向于正无穷大,没有极值。

综合来说就是min⁡x{f(x),+∞}\min_x\{f(x), +\infty\}minx​{f(x),+∞}。因此,当我们尝试最小化max⁡λi,μj;λi≥0L(x,λ,μ)\max_{\lambda_i, \mu_j;\lambda_i \ge 0} L(x, \lambda, \mu)maxλi​,μj​;λi​≥0​L(x,λ,μ)时,就相当于求解原始问题:在约束条件下最小化f(x)f(x)f(x)。

到这儿我们就知道了使用拉格朗日乘数法构造拉格朗日函数后,为什么要先最大化然后再最小化。那么我们称转换后的问题为原问题,即:
min⁡xmax⁡λ,μL(x,λ,μ)s.t.λ≥0\min_{x}\max_{\lambda, \mu} L(x,\lambda, \mu)\\ s.t. \ \ \lambda \ge 0 xmin​λ,μmax​L(x,λ,μ)s.t.  λ≥0
参考:拉格朗日函数为什么要先最大化?

3.2.2 对偶问题

对于任何一个拉格朗日函数,它都有与其对应的对偶函数,该对偶函数的自变量含有拉格朗日乘子。对于我们在3.2.1中构造的拉格朗日函数,我们可以构造它的对偶函数:
φ(λ,μ)=min⁡xL(x,λ,μ)\varphi (\lambda,\mu) = \min_x L(x, \lambda, \mu) φ(λ,μ)=xmin​L(x,λ,μ)
那么原问题(参见3.2.1末尾)的对偶问题就是:
max⁡λ,μφ(λ,μ)=max⁡λ,μmin⁡xL(x,λ,μ)s.t.λ≥0\max_{\lambda, \mu} \varphi (\lambda, \mu)= \max_{\lambda, \mu} \min_x L(x, \lambda, \mu)\\ s.t. \ \ \lambda \ge 0 λ,μmax​φ(λ,μ)=λ,μmax​xmin​L(x,λ,μ)s.t.  λ≥0
看起来就是原问题的计算顺序反过来了:先求最小再求最大。其实这个对xxx求最小min⁡xL(x,λ,μ)\min_x L(x, \lambda, \mu)minx​L(x,λ,μ)其实就相当于函数对xxx的梯度为0,所以可以将对偶问题等价表示为:
max⁡λ,μφ(λ,μ)s.t.∇xL(x,λ,μ)=0λ≥0\max_{\lambda, \mu} \varphi (\lambda, \mu) \\ s.t. \ \ \nabla_x L(x, \lambda, \mu) = 0 \\ \lambda \ge 0 λ,μmax​φ(λ,μ)s.t.  ∇x​L(x,λ,μ)=0λ≥0

在这里还要说明一条重要的结论:对偶问题一定是凸优化问题。 对于上文中提到的对偶函数φ(λ,μ)=min⁡xL(x,λ,μ)\varphi(\lambda,\mu)=\min_x L(x,\lambda,\mu)φ(λ,μ)=minx​L(x,λ,μ),假设我们现在求得了使函数LLL最小的x∗x^*x∗,那么对偶函数就可以表示为:
φ(λ,μ)=f(x∗)+∑i=1mλigi(x∗)+∑j=1nμjhj(x∗)\varphi(\lambda, \mu) = f(x^*) + \sum_{i=1}^m\lambda_ig_i(x^*) +\sum_{j=1}^n\mu_jh_j(x^*) φ(λ,μ)=f(x∗)+i=1∑m​λi​gi​(x∗)+j=1∑n​μj​hj​(x∗)
其中f(x∗),gi(x∗),hj(x∗)f(x^*), \ g_i(x^*), \ h_j(x^*)f(x∗), gi​(x∗), hj​(x∗)都是常量,也就是说φ(λ,μ)\varphi(\lambda, \mu)φ(λ,μ)是一条在λ,μ\lambda,\muλ,μ构成的平面上的直线,根据凸函数和凹函数的定义我们知道直线既是凸函数也是凹函数,而且约束条件λ≥0\lambda \ge 0λ≥0是个凸集。对偶问题是求函数φ(λ,μ)\varphi(\lambda, \mu)φ(λ,μ)的最大值,那么我们将函数反过来取个负号问题不就变成了最小化的问题了吗,而且函数反过来它照样是个凸函数。

综上所述,对偶问题满足:(1)问题的定义域是个凸集;(2)问题对应的函数是个凸函数;(3)求解的是函数最小化问题。因此对偶问题满足凸优化问题的所有条件(参见3.1.3凸优化问题),所以对偶问题是凸优化问题。

  • 说明:详细证明请自主查阅资料,这里仅简单举例说明。
  • 补充:拉格朗日对偶函数的一个重要性质是,不论原问题是否为凸问题,拉格朗日对偶函数一定是个凹函数。

3.3 原问题与对偶问题的关系

经过上述讨论我们知道对偶问题一定是个凸优化问题,既然对偶问题有这么好的性质,那是不是所有的问题都可以通过求解其对偶问题,来得到最优解呢?No,no,no.接下来我们讨论一下原问题与其对偶问题的关系。

3.3.1 原问题的解≥\ge≥对偶问题的解恒成立

先把原问题与对偶问题摆出来:
原问题:min⁡xmax⁡λ,μL(x,λ,μ)对偶问题:max⁡λ,μmin⁡xL(x,λ,μ)s.t.λ≥0s.t.λ≥0原问题:\min_x\max_{\lambda,\mu}L(x,\lambda,\mu) \ \ \ \ \ \ \ \ \ \ \ \ \ 对偶问题:\max_{\lambda, \mu}\min_x L(x,\lambda,\mu)\\ s.t.\ \ \lambda \ge 0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ s.t. \lambda \ge 0 原问题:xmin​λ,μmax​L(x,λ,μ)             对偶问题:λ,μmax​xmin​L(x,λ,μ)s.t.  λ≥0                                               s.t.λ≥0
来看如下推导过程:
max⁡λ,μL(x,λ,μ)≥L(x,λ,μ)≥min⁡xL(x,λ,μ)⇓max⁡λ,μL(x,λ,μ)≥min⁡xmax⁡λ,μL(x,λ,μ)≥max⁡λ,μmin⁡xL(x,λ,μ)≥min⁡xL(x,λ,μ)⇓P∗=min⁡xmax⁡λ,μL(x,λ,μ)≥max⁡λ,μmin⁡xL(x,λ,μ)=D∗\max_{\lambda, \mu} L(x,\lambda,\mu) \ge L(x,\lambda,\mu) \ge \min_x L(x,\lambda,\mu) \\ \Downarrow\\ \max_{\lambda, \mu} L(x,\lambda,\mu) \ge \min_x \max_{\lambda, \mu} L(x,\lambda,\mu) \ge \max_{\lambda,\mu}\min_x L(x,\lambda,\mu) \ge \min_x L(x,\lambda,\mu)\\ \Downarrow\\ P^* = \min_x \max_{\lambda, \mu} L(x,\lambda,\mu) \ge \max_{\lambda,\mu}\min_x L(x,\lambda,\mu)=D^* λ,μmax​L(x,λ,μ)≥L(x,λ,μ)≥xmin​L(x,λ,μ)⇓λ,μmax​L(x,λ,μ)≥xmin​λ,μmax​L(x,λ,μ)≥λ,μmax​xmin​L(x,λ,μ)≥xmin​L(x,λ,μ)⇓P∗=xmin​λ,μmax​L(x,λ,μ)≥λ,μmax​xmin​L(x,λ,μ)=D∗
我们将P∗P^*P∗称为原问题的解,D∗D^*D∗称为对偶问题的解,可知P∗≥D∗P^* \ge D^*P∗≥D∗恒成立,也就是说原问题的解恒大于等于对偶问题的解。

3.3.2 直观理解二者关系

∙\bullet∙ 变换表示形式
我们先前构造的拉格朗日函数是L(x,λ,μ)=f(x)+∑i=1mλigi(x)+∑j=1nμjhj(x)L(x, \lambda, \mu) = f(x) + \sum_{i=1}^m \lambda_i g_i(x) + \sum_{j=1}^n \mu_j h_j(x)L(x,λ,μ)=f(x)+∑i=1m​λi​gi​(x)+∑j=1n​μj​hj​(x),由于原始问题中的约束条件hj(x)=0h_j(x)=0hj​(x)=0,因此这里我们将拉格朗日函数简化一下表示为L(x,λ,μ)=f(x)+∑i=1mλigi(x)L(x, \lambda, \mu) = f(x) + \sum_{i=1}^m \lambda_i g_i(x)L(x,λ,μ)=f(x)+∑i=1m​λi​gi​(x),进一步简化,用向量来表示:
L(x,λ,μ)=t+λT⋅u其中t=f(x),u=∑i=1mλigi(x)均为向量L(x, \lambda, \mu) = \mathbf{ t + \lambda^T \cdot u} \ \ \ \ 其中\mathbf{t=f(\mathbf x),u=\sum_{i=1}^m \lambda_i g_i(x)}均为向量 L(x,λ,μ)=t+λT⋅u    其中t=f(x),u=i=1∑m​λi​gi​(x)均为向量
之后我们重新表示一下原问题与对偶问题:
G1={(t,u)∣t=f(x),ui=gi(x),x∈D}D={x∣gi(x)≤0i=1,2,...,mhj(x)=0j=1,2,...,n}⇓原问题:min⁡x{t∣(t,u)∈G1,u≤0}G_1 = \{ (\mathbf {t,u}) | t=f(\mathbf x), \mathbf{u_i = g_i(x), \mathbf{x \in D}}\} \\ D = \{\mathbf{x | g_i(x) \le 0 \ \ i = 1,2,...,m \ \ \ h_j(x) = 0 \ \ j= 1,2,...,n}\}\\ \Downarrow \\ 原问题:\min_x \{ \mathbf{t | (t,u) \in G_1, u\le 0}\} G1​={(t,u)∣t=f(x),ui​=gi​(x),x∈D}D={x∣gi​(x)≤0  i=1,2,...,m   hj​(x)=0  j=1,2,...,n}⇓原问题:xmin​{t∣(t,u)∈G1​,u≤0}
G2={(t,u)∣t=f(x),ui=gi(x),x∈Rn}⇓对偶问题:max⁡λmin⁡x{t+λT⋅u∣(t,u)∈G2,λ≥0}G_2 = \{ \mathbf{(t,u)|t=f(x), u_i = g_i(x), x \in \mathbb R^n}\} \\ \Downarrow\\ 对偶问题:\max_{\lambda}\min_x\{ \mathbf{t + \lambda^T \cdot u | (t,u) \in G_2, \lambda \ge 0}\} G2​={(t,u)∣t=f(x),ui​=gi​(x),x∈Rn}⇓对偶问题:λmax​xmin​{t+λT⋅u∣(t,u)∈G2​,λ≥0}

∙\bullet∙ 可视化

接着来降维理解一下,我们把t,u\mathbf{t,u}t,u想象成二维平面上的变量,之后通过二维平面图形来理解一下原问题与对偶问题的关系。
原问题:min⁡x{t∣(t,u)∈G1,u≤0}对偶问题:max⁡λmin⁡x{t+λT⋅u∣(t,u)∈G2,λ≥0}原问题:\min_x \{ \mathbf{t | (t,u) \in G_1,u \le 0 }\} \ \ \ \ 对偶问题:\max_{\lambda}\min_x\{ \mathbf{t + \lambda^T \cdot u | (t,u) \in G_2, \lambda \ge 0}\} 原问题:xmin​{t∣(t,u)∈G1​,u≤0}    对偶问题:λmax​xmin​{t+λT⋅u∣(t,u)∈G2​,λ≥0}

注:图片截自https://www.bilibili.com/video/BV1HP4y1Y79e?spm_id_from=333.880.my_history.page.click

图中G1G_1G1​为原问题的可行域,G2G_2G2​为对偶问题的可行域。
(1)对于原问题,要求解的是G1G_1G1​范围内且u≤0\mathbf u \le0u≤0,t\mathbf tt的最小值,可以很容易找到对应的解就是图中的P∗P^*P∗
(2)对于对偶问题,它要分为两步来看,第一步是min,第二步是max。首先我们将t+λT⋅ut+\lambda^T \cdot ut+λT⋅u看做一条直线,−λT-\lambda^T−λT就相当于直线的斜率。(对应着看:y+kx=by+kx=by+kx=b)

  • min:在定义域内,首先在λ(λ≥0)\lambda(\lambda \ge 0)λ(λ≥0)固定的情况下(就相当于直线的斜率固定),找到t+λT⋅ut+\lambda^T \cdot ut+λT⋅u的最小值。其实t+λT⋅ut+\lambda^T \cdot ut+λT⋅u就相当于直线在ttt上的截距(对应着看:y+kx=by+kx=by+kx=b),所以也就是相当于在直线斜率固定的情况下平移直线,使得直线在ttt轴上的截距最小,也就是左图中深绿色的线与ttt的绿色交点。所以我们在定义域内确定了一点AAA(如左图所示)。

  • max: 在第一步中确定了一点AAA,接着需要变动直线的斜率−λT-\lambda^T−λT使得直线的截距最大,也就是在保证λ≥0\lambda \ge 0λ≥0的情况下,绕着AAA旋转直线,使得直线在ttt上的截距最大。最终得到了对偶函数的解D∗D^*D∗。

从图中我们也能直观的看到原问题的解一定是大于等于对偶问题的解的。

3.3.3 原问题何时等价于其对偶问题

求解原问题时我们希望它和其对偶问题是等价的,这样直接求解对偶问题的解就相当与求解原问题,那么什么情况下原问题和对偶问题才能等价呢?首先介绍一下强弱对偶关系。
假设原问题的解是P∗P^*P∗,对偶问题的解是D∗D^*D∗:
∙\bullet∙ 强对偶关系 D∗=P∗D^* = P^*D∗=P∗
∙\bullet∙ 弱对偶关系D∗≤P∗D^* \le P^*D∗≤P∗

所以说当问题满足强对偶关系时,原问题与其对偶问题是等价的,此时对偶问题的解就相当于原问题的解。

考虑上文中求解P∗,D∗P^*,D^*P∗,D∗,如果可行域变成了一个凸集,那么此时就有P∗=D∗P^*=D^*P∗=D∗:
注:图片截自https://www.bilibili.com/video/BV1HP4y1Y79e?spm_id_from=333.880.my_history.page.click

其实这就是一个凸优化问题,但是凸优化问题不一定满足强对偶关系,当凸优化问题满足slater条件时,则有强对偶关系。接下来就简单介绍一下slater条件。


4. slater条件与KKT条件

对于一个凸优化问题:
minf(x),x∈Rns.t.gi(x)≤0i=1,2,...,mhj(x)=0j=1,2,...,nmin \ \ f(x) , x \in \mathbb R^n\\ s.t. \ \ g_i(x) \le 0 \ \ i = 1,2,...,m\\ \ \ \ \ \ \ h_j(x) = 0 \ \ j = 1,2,...,n min  f(x),x∈Rns.t.  gi​(x)≤0  i=1,2,...,m      hj​(x)=0  j=1,2,...,n

4.1 slater条件

∃x∈relintD\exist x \in relint\ D∃x∈relint D,使得gi(x)<0,i=1,2,...,mg_i(x) \lt 0, i=1,2,...,mgi​(x)<0,i=1,2,...,m,其中relintDrelint \ Drelint D指的是定义域DDD内部。

也就是说,若定义域内至少有一个点使得所有不等式约束条件都不取等号,就满足slater条件。

当原问题是凸问题且满足slater条件时,则该问题一定是强对偶 的。但是一个强对偶问题不一定满足slater条件。

4.2 KKT条件

KKT条件是强对偶问题的必要条件,即强对偶问题一定满足KKT条件。

对于上述的凸优化问题,我们构造拉格朗日函数如下:
L(x,λ,μ)=f(x)+∑i=1mλigi(x)+∑j=1nμjhj(x)L(x, \lambda, \mu) = f(x) + \sum_{i=1}^m \lambda_i g_i(x) + \sum_{j=1}^n \mu_j h_j(x) L(x,λ,μ)=f(x)+i=1∑m​λi​gi​(x)+j=1∑n​μj​hj​(x)
可知该问题的对偶问题为:
max⁡λ,μφ(λ,μ),其中φ(λ,μ)=min⁡xL(x,λ,μ)s.t.∇xL(x,λ,μ)=0λ≥0\max_{\lambda, \mu} \varphi (\lambda, \mu),其中\varphi (\lambda, \mu)=\min_xL(x,\lambda,\mu) \\ s.t. \ \ \nabla_x L(x, \lambda, \mu) = 0 \\ \lambda \ge 0 λ,μmax​φ(λ,μ),其中φ(λ,μ)=xmin​L(x,λ,μ)s.t.  ∇x​L(x,λ,μ)=0λ≥0
∙\bullet∙ KKT条件

  1. 原问题可行条件
    gi(x)≤0hi(x)=0g_i(x) \le 0\\ h_i(x) =0 gi​(x)≤0hi​(x)=0
  2. 对偶问题可行条件
    ∇xL(x,λ,μ)=0λ≥0\nabla_x L(x,\lambda, \mu) = 0\\ \lambda \ge 0 ∇x​L(x,λ,μ)=0λ≥0
  3. 互补松弛条件
    λigi(x)=0\lambda_ig_i(x)=0 λi​gi​(x)=0
    这五个条件项共同组成了KKT条件。

∙\bullet∙ 说明
虽然KKT条件是强对偶问题的必要条件,但是一般在使用时,只要不是特别冷门偏僻的问题,我们是可以把KKT条件当做强对偶问题的充分必要条件使用的。


参考资料:
[1] B站: 拉格朗日乘数法
[2] B站:“拉格朗日对偶问题”如何直观理解?“KKT条件” “Slater条件” “凸优化”打包理解
[3] 周志华老师博客:Lagrange乘数法
[4] 知乎:条件极值,拉格朗日乘数法
[5] 简易解说拉格朗日对偶
[6] 拉格朗日对偶理解
[7] KKT条件

拉格朗日函数、拉格朗日对偶问题、KKT条件个人理解相关推荐

  1. 拉格朗日乘数法及KKT条件-通俗理解

    拉格朗日乘子法及KKT条件数学理解 1.拉格朗日乘数法的基本思想 在数学最优问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.这 ...

  2. 个人总结 :SVM 与 拉格朗日函数、对偶问题 和 KKT条件 以及 SMO算法

    提到SVM,可能首先想到的是令人头大的公式推导,通过确定思想,公式等式转化,拉格朗日函数,求梯度,约束变换,KKT.SMO...最后终于得到我们的最优解.而在这其中,不免作为核心的就是拉格朗日函数以及 ...

  3. 拉格朗日对偶原理与KKT条件的理解

    关于拉格朗日对偶和KKT条件的理解 关于这部分内容,我是在学习svm的时候碰到的,内容简单,但是确实要理解了才能理解svm的推导过程,故把参考的一些足够的文章放在下面咯!!! SVM(二)拉格朗日对偶 ...

  4. 从拉格朗日乘数法到KKT条件

    从拉格朗日乘数法到KKT条件 最近看论文遇到了Karush–Kuhn–Tucker (KKT)条件,想搞清楚这是个什么东东,因此就把这个东西认真学习一下并且分享出来,希望对大家有用.学习KKT就不得不 ...

  5. kkt条件的理解_直观理解KKT条件

    KKT最优化条件是Karush[1939],以及Kuhn和Tucker[1951]先后独立发表出來的.这组最优化条件在Kuhn和Tucker发表之后才逐渐受到重视,因此许多情况下只记载成库恩塔克条件( ...

  6. SVM支持向量机-手写笔记(超详细:拉格朗日乘数法、KKT条件、对偶性质、最优化、合页损失、核函数...)

    SVM支持向量机-手写笔记 作者:某丁 日期:2021.05.21 写完了,发现想要真正理解SVM还需要继续深入学习,以上所写只不过是冰山一角,我的管中窥豹而已. 参考 [1] 一文搞懂支持向量机(S ...

  7. PRML读书会第七章 Sparse Kernel Machines(支持向量机, support vector machine ,KKT条件,RVM)...

    主讲人 网神 (新浪微博: @豆角茄子麻酱凉面) 网神(66707180) 18:59:22  大家好,今天一起交流下PRML第7章.第六章核函数里提到,有一类机器学习算法,不是对参数做点估计或求其分 ...

  8. 拉格朗日乘子法与KKT条件

    欢迎转载,转载请注明出处:https://blog.csdn.net/qq_41709378/article/details/106599811 --------------------------- ...

  9. 凸优化学习笔记 11:对偶原理 拉格朗日函数

    前面讲了凸优化问题的定义,以及一些常见的凸优化问题类型,这一章就要引入著名的拉格朗日函数和对偶问题了.通过对偶问题,我们可以将一些非凸问题转化为凸优化问题,还可以求出原问题的非平凡下界,这对复杂优化问 ...

最新文章

  1. oracle sql 平均分配 分组_SQL学习二
  2. JavaScript数学,四舍五入到小数点后两位[重复]
  3. Python-生成模拟原始脑电数据
  4. 网页性能优化01-精灵图利弊与应用场景
  5. 几个常用的Linux操作系统监控脚本
  6. Android APP常见的5类内存泄露及解决方法
  7. 开始学习《自己动手写操作系统》遇到的小问题.
  8. VMware虚拟机安装Windows Server 2008 R2
  9. 矩阵乘法及简易公式推导
  10. 简谈浅层拷贝和深层拷贝
  11. 计算机函数average意思,average函数的功能是计算什么
  12. Python解武士数独问题
  13. cannot find method ‘value‘
  14. (python代码+讲解)重叠社区发现EAGLE层次算法的实现
  15. virtual camera
  16. Jquery之遍历元素
  17. 基于java+SpringBoot+HTML+Mysql音乐网站
  18. 英语不好怎么学python?这份python英语常用单词给我收好
  19. 计算机是否将取代纸质书籍,平板电脑代替纸质教科书 利弊各几分?
  20. 做形态学方法的团队_2020年第十六届国际土壤微形态学会议(ICOSM)

热门文章

  1. 浅学 ----- C++ 继承和多态,文件操作
  2. BCD-七段数码管显示译码器
  3. 暴力破解+验证码爆破
  4. 嵌入式Linux下基于FFmpeg的视频硬件编解码
  5. 新零售mysql设计(品牌表 分类表 品牌分类表)(二次修改)
  6. 平台商店虚幻市场正常,epic库无法连接网络,网络端口管理软件导致异常?
  7. [GDI+]DrawRectangle和FillRectangle,细节决定成败
  8. audio插入背景音乐_HTML5 标签audio添加网页背景音乐代码
  9. 如何在电脑设置静态ip
  10. 【第五届蓝桥杯】绳圈