博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数学理论】最优化问题:拉格朗日乘子法、KKT条件以及对偶问题
阅读量:2019 次
发布时间:2019-04-28

本文共 7686 字,大约阅读时间需要 25 分钟。

前言

最优化问题的求解方法在机器学习算法中是经常被用到的。下面是一个最优化问题的一个简单概述:

求解 f ( x ) f(x) f(x)最小值时的 x ∗ x^* x,即:
min ⁡ x f ( x ) \mathop {\min }\limits_x f(x) xminf(x)
无约束时,可通过求导的方式解决。事实情况中会涉及不同约束条件( s.t. \text {s.t.} s.t.),即存在等式约束和不等式约束。如下:

  • 等式约束: h i ( x ) = 0 , i = 1 , 2 , 3 , … , m h_{i}(x)=0 , i=1,2,3, \ldots, m hi(x)=0,i=1,2,3,,m
  • 不等式约束: g j ( x ) ≤ 0 , j = 1 , 2 , 3 , … , n g_{j}(x) \leq 0 , j=1,2,3, \ldots, n gj(x)0,j=1,2,3,,n
  • 同时存在等式约束和不等式约束:KKT(Karush-Kuhn-Tucker)条件

对于上面的问题该如何求解呢?

1 拉格朗日乘子法

通过拉格朗日函数将约束问题转化为无约束问题,在无约束问题中就方便求解了,这里主要是将等式约束转换为拉格朗日函数。则有:

目标函数为 f ( x ) f(x) f(x),约束条件为:
h k ( x ) , k = 1 , 2 , 3 , … , l h_{k}(x),k=1,2,3, \ldots, l hk(x),k=1,2,3,,l
对该优化问题建模就有:
min ⁡ f ( x ) s.t. h k ( x ) = 0 \min f(x) \quad \text {s.t.} \quad h_{k}(x)=0 minf(x)s.t.hk(x)=0
这时需要构建拉格朗日函数,将约束的问题转换为无约束的优化问题。
在这里插入图片描述
在上图中可以看出,只有相切的时候,才有可能是极值点,在相切的地方 h ( x ) h(x) h(x)的梯度和 f ( x ) f(x) f(x)的梯度应该在同一条直线上,即在极值点有:
∇ f ( x ) = λ ∇ h ( x ) \nabla f(x)=\lambda \nabla h(x) f(x)=λh(x)
根据上述分析,可将将原始优化问题表示为:
L ( x , λ ) = f ( x ) + ∑ k = 1 l λ k h k ( x ) L(x, \lambda)=f(x)+\sum_{k=1}^{l} \lambda_{k} h_{k}(x) L(x,λ)=f(x)+k=1lλkhk(x)
L ( x , λ ) L(x, \lambda) L(x,λ)即拉格朗日函数, λ k \lambda_{k} λk是拉格朗日乘子。拉格朗日函数对 x x x求偏导的结果为0时,即为最优解。

2 KKT条件

通过KKT条件将不等式约束转换为拉格朗日函数。优化问题中经常包含等式约束和不等式约束。对问题建模问题建模如下:

min ⁡ f ( x ) s.t. h k ( x ) = 0 , k = 1 , 2 , ⋯   , l g j ( x ) ≤ 0 , j = 1 , 2 , , ⋯   , n \min f(x) \\ \text{s.t.} \quad h_{k}(x)=0 , k=1,2,\cdots, l\\ \quad \quad \quad g_{j}(x) \le 0, j = 1, 2, ,\cdots, n minf(x)s.t.hk(x)=0,k=1,2,,lgj(x)0,j=1,2,,,n
对于等式约束,可以引入拉格朗日乘子进行转换。对于不等式约束使用KKT条件构造拉格朗日乘子,构造结果如下:
L ( x , λ , μ ) = f ( x ) + ∑ k = 1 l λ k h k ( x ) + ∑ j = 1 n μ j g j ( x ) L(x, \lambda, \mu)=f(x)+\sum_{k=1}^{l} \lambda_{k} h_{k}(x)+\sum_{j=1}^{n} \mu_{j} g_{j}(x) L(x,λ,μ)=f(x)+k=1lλkhk(x)+j=1nμjgj(x)
其中, λ k \lambda_{k} λk是为等式约束引入的拉格朗日乘子, μ j \mu_{j} μj是为不等式约束引入的松弛变量,也叫KKT乘子,需要注意的是KKT乘子是大于0的。这样就将有约束的优化问题转换为无约束问题的优化了,通过求导即可求出极值点。
其中,求出的极值点 x ∗ x^* x满足KKT条件:
{ ∇ f ( x ∗ ) + ∑ k λ k ∇ h k ( x ∗ ) + ∑ j μ j ∇ g j ( x ∗ ) = 0 μ j ≥ 0 μ j g j ( x ∗ ) = 0 g j ( x ∗ ) ≤ 0 \left\{\begin{aligned} \nabla f\left(x^{*}\right)+\sum_{k} \lambda_{k} \nabla h_{k}\left(x^{*}\right)+\sum_{j} \mu_{j} \nabla g_{j}\left(x^{*}\right) &=0 \\ \mu_{j} & \geq 0 \\ \mu_{j} g_{j}\left(x^{*}\right) &=0 \\ g_{j}\left(x^{*}\right) & \leq 0 \end{aligned}\right. f(x)+kλkhk(x)+jμjgj(x)μjμjgj(x)gj(x)=00=00
注: f ( x ) f(x) f(x) g ( x ) g(x) g(x)结尾凸函数

3 对偶问题

有时候原优化问题很难求解,为了解决问题,可将原优化问题进行等效转化,然后再求解。原优化问题:

min ⁡ f ( x ) s.t. h k ( x ) = 0 , k = 1 , 2 , ⋯   , l g j ( x ) ≤ 0 , j = 1 , 2 , , ⋯   , n \min f(x) \\ \text{s.t.} \quad h_{k}(x)=0 , k=1,2,\cdots, l\\ \quad \quad \quad g_{j}(x) \le 0, j = 1, 2, ,\cdots, n minf(x)s.t.hk(x)=0,k=1,2,,lgj(x)0,j=1,2,,,n
其对应的拉格朗日函数:
L ( x , λ , μ ) = f ( x ) + ∑ i = 1 m α i h i ( x ) + ∑ j = 1 n β j g j ( x ) L(x, \lambda, \mu)=f(x)+\sum_{i=1}^{m} \alpha_{i} h_{i}(x)+\sum_{j=1}^{n} \beta_{j} g_{j}(x) L(x,λ,μ)=f(x)+i=1mαihi(x)+j=1nβjgj(x)
对上式先最大化再最小化:
min ⁡ x [ max ⁡ α , β ; β j ≥ 0 L ( x , α , β ) ] = min ⁡ x { f ( x ) + max ⁡ α , β ; β j ≥ 0 [ ∑ i = 1 m α i h i ( x ) + ∑ j = 1 n β j g j ( x ) ] } \min _{x}\left[\max _{\alpha, \beta ; \beta_{j} \geq 0} L(x, \alpha, \beta)\right]=\min _{x}\left\{f(x)+\max _{\alpha, \beta ; \beta_{j} \geq 0}\left[\sum_{i=1}^{m} \alpha_{i} h_{i}(x)+\sum_{j=1}^{n} \beta_{j} g_{j}(x)\right]\right\} xmin[α,β;βj0maxL(x,α,β)]=xmin{
f(x)+α,β;βj0max[i=1mαihi(x)+j=1nβjgj(x)]}
在满足KKT条件的情况下,该式和原优化问题式等价的。下面来看看如何证明。

证明:

将上式分为两部分:

  1. 可行解区域内,原优化问题的约束条件都得到满足。因为 h i ( x ) = 0 h_i(x)=0 hi(x)=0,所以不管 α \alpha α如何变化,必然有 α h i ( x ) = 0 \alpha h_i(x)=0 αhi(x)=0 g j ( x ) ≤ 0 g_j(x)\le 0 gj(x)0,且限定了 β j > 0 \beta_j >0 βj>0,则 β j g i ( x ) \beta_jg_i(x) βjgi(x)最大值为0。综上,在可行解区域内:
    max ⁡ α , β ; β j ≥ 0 L ( x , α , β ) = f ( x ) + max ⁡ α , β ; β j ≥ 0 [ ∑ i = 1 m α i h i ( x ) + ∑ j = 1 n β j g j ( x ) ] = f ( x ) \max _{\alpha, \beta ; \beta_{j} \geq 0} L(x, \alpha, \beta)=f(x)+\max _{\alpha, \beta ; \beta_{j} \geq 0}\left[\sum_{i=1}^{m} \alpha_{i} h_{i}(x)+\sum_{j=1}^{n} \beta_{j} g_{j}(x)\right]=f(x) α,β;βj0maxL(x,α,β)=f(x)+α,β;βj0max[i=1mαihi(x)+j=1nβjgj(x)]=f(x)
  2. 可行解区域外,此时原优化问题的约束条件未满足。若 h i ( x ) ≠ 0 h_i(x)\ne 0 hi(x)=0,则最大化后为 + ∞ +\infty +。若 g j ( x ) > 0 g_j(x) > 0 gj(x)>0,则最大化后也为 + ∞ +\infty +。所以在可行解区域外:
    max ⁡ α , β ; β j ≥ 0 L ( x , α , β ) = + ∞ \max _{\alpha, \beta ; \beta_{j} \geq 0} L(x, \alpha, \beta)=+\infty α,β;βj0maxL(x,α,β)=+

综上两个论域, f ( x ) f(x) f(x)在可行域内最小化,等于 max ⁡ α , β ; β j ≥ 0 L ( x , α , β ) \mathop{\max }\limits_{\alpha, \beta ; \beta_{j} \geq 0} L(x, \alpha, \beta) α,β;βj0maxL(x,α,β)的最小化,而在可行域外, max ⁡ α , β ; β j ≥ 0 L ( x , α , β ) \mathop{\max }\limits_{\alpha, \beta ; \beta_{j} \geq 0} L(x, \alpha, \beta) α,β;βj0maxL(x,α,β)无极值。这样当尝试对其进行最小化时,也就相当于原优化问题了。

接着构建对偶问题

有如下定义:

θ p ( x ) = max ⁡ α , β ; β i ≥ 0 L ( x , α , β ) \theta_{p}(x)=\max _{\alpha, \beta; \beta_{i} \geq 0} \mathcal{L}(x, \alpha, \beta) θp(x)=α,β;βi0maxL(x,α,β)
则最小化primal(原始)问题与原问题有同样的解:
min ⁡ x θ p ( x ) = min ⁡ x max ⁡ α , β ; β i ≥ 0 L ( x , α , β ) \min _{x} \theta_{\mathrm{p}}(x)=\min _{x} \max _{\alpha, \beta;\beta_{i} \geq 0} \mathcal{L}(x, \alpha, \beta) xminθp(x)=xminα,β;βi0maxL(x,α,β)
定义dual(对偶)优化问题如下:
max ⁡ α , β ; β i ≥ 0 θ D ( α , β ) = max ⁡ α , β ; β i ≥ 0 min ⁡ x L ( x , α , β ) \max _{\alpha, \beta;\beta_{i} \geq 0} \theta_{\mathcal{D}}(\alpha, \beta)=\max _{\alpha, \beta;\beta_{i} \geq 0} \min _{x} \mathcal{L}(x, \alpha, \beta) α,β;βi0maxθD(α,β)=α,β;βi0maxxminL(x,α,β)
注: θ p \theta_p θp是针对 α \alpha α β \beta β的优化, θ D \theta_D θD是针对 w w w的优化。

根据上面的内容再做进一步定义:

p ∗ = min ⁡ x θ p ( x ) p^*=\mathop{\min}\limits_x \theta_p(x) p=xminθp(x)为primal最小化问题的值,

d ∗ = max ⁡ α , β ; β i ≥ 0 θ D ( α , β ) d^*=\mathop{\max}\limits_{\alpha,\beta;\beta_i\ge0}\theta_D(\alpha,\beta) d=α,β;βi0maxθD(α,β)为Dual问题的值,

他们之间满足:

d ∗ = max ⁡ α , β ; β i ≥ 0 min ⁡ x L ( x , α , β ) ≤ min ⁡ x max ⁡ α , β ; β i ≥ 0 L ( x , α , β ) = p ∗ d^{*}=\max _{\alpha, \beta;\beta_{i} \geq 0} \min _{x} \mathcal{L}(x, \alpha, \beta) \leq \min _{x} \max _{\alpha, \beta;\beta_{i} \geq 0} \mathcal{L}(x, \alpha, \beta)=p^{*} d=α,β;βi0maxxminL(x,α,β)xminα,β;βi0maxL(x,α,β)=p
只有在KKT条件成立时,才有 d ∗ = p ∗ d^*=p^* d=p,此时,就可以通过Dual问题来求解primal问题。
对偶问题证明:
d ∗ = max ⁡ α , β ; β i ≥ 0 min ⁡ x L ( x , α , β ) ≤ min ⁡ x max ⁡ α , β ; β i ≥ 0 L ( x , α , β ) = p ∗ d^{*}=\max _{\alpha, \beta;\beta_{i} \geq 0} \min _{x} \mathcal{L}(x, \alpha, \beta) \leq \min _{x} \max _{\alpha, \beta;\beta_{i} \geq 0} \mathcal{L}(x, \alpha, \beta)=p^{*} d=α,β;βi0maxxminL(x,α,β)xminα,β;βi0maxL(x,α,β)=p

对任意 ( x , α , β ) (x,\alpha,\beta) (x,α,β),如下不等式一定成立:

θ D ( α , β ) = min ⁡ x L ( x , α , β ) ≤ L ( x , α , β ) ≤ max ⁡ α , β ; β i ≥ 0 L ( x , α , β ) = θ p ( x ) \theta_{\mathcal{D}}(\alpha, \beta)=\min _{x} \mathcal{L}(x, \alpha, \beta) \leq \mathcal{L}(x, \alpha, \beta) \leq \max _{\alpha, \beta; \beta_{i} \geq 0} \mathcal{L}(x, \alpha, \beta)=\theta_{\mathrm{p}}(x) θD(α,β)=xminL(x,α,β)L(x,α,β)α,β;βi0maxL(x,α,β)=θp(x)
即:
θ D ( α , β ) ≤ θ p ( x ) \theta_{\mathcal{D}}(\alpha, \beta) \leq \theta_{\mathrm{p}}(x) θD(α,β)θp(x)
所以:
max ⁡ α , β ; β i ≥ 0 θ D ( α , β ) ≤ min ⁡ x θ p ( x ) \max _{\alpha, \beta; \beta_{i} \geq 0} \theta_{\mathcal{D}}(\alpha, \beta) \leq \min _{x} \theta_{p}(x) α,β;βi0maxθD(α,β)xminθp(x)
即可得到:
d ∗ = max ⁡ α , β ; β i ≥ 0 min ⁡ x L ( x , α , β ) ≤ min ⁡ x max ⁡ α , β ; β i ≥ 0 L ( x , α , β ) = p ∗ d^{*}=\max _{\alpha, \beta; \beta_{i} \geq 0} \min _{x} \mathcal{L}(x, \alpha, \beta) \leq \min _{x} \max _{\alpha, \beta; \beta_{i} \geq 0} \mathcal{L}(x, \alpha, \beta)=p^{*} d=α,β;βi0maxxminL(x,α,β)xminα,β;βi0maxL(x,α,β)=p

总结

上面一些内容也是从网络习得,也存在一些不严谨的地方,如有错误还请批评指正。

转载地址:http://cmlxf.baihongyu.com/

你可能感兴趣的文章
Python解惑之:True与False
查看>>
有了这些 Chrome 插件,效率提升10倍(建议收藏)
查看>>
Linux软件万花筒
查看>>
全球开源软件发展趋势分析
查看>>
flask整理之 flask程序中的debug模式
查看>>
区块链技术应用,最先医疗行业
查看>>
linux下安装jenkins+git+python
查看>>
解决uiautomatorviewer中添加xpath的方法
查看>>
性能测试的必要性评估以及评估方法
查看>>
使用redis实现订阅功能
查看>>
java内存模型
查看>>
volatile关键字
查看>>
Request_继承体系
查看>>
前端权限控制:获取用户信息接口构造数据
查看>>
七牛云存储:断点续传
查看>>
ubuntu opencv-python 安装很慢问题
查看>>
MySQL5.7版本修改了my.ini配置文件后mysql服务无法启动问题
查看>>
Exception in thread “main“ java.sql.SQLException错误之一: Column Index out of range, 0 < 1.
查看>>
机器学习之重头戏-特征预处理
查看>>
synchronized底层实现及锁的升级、降级
查看>>