KKT条件(Karush-Kuhn-Tucker Conditions)

article/2025/8/20 22:11:36

总目录

一、 凸优化基础(Convex Optimization basics)

  1. 凸优化基础(Convex Optimization basics)

二、 一阶梯度方法(First-order methods)

  1. 梯度下降(Gradient Descent)
  2. 次梯度(Subgradients)
  3. 近端梯度法(Proximal Gradient Descent)
  4. 随机梯度下降(Stochastic gradient descent)

三、对偶

  1. 线性规划中的对偶(Duality in linear programs)
  2. 凸优化中的对偶(Duality in General Programs)
  3. KKT条件(Karush-Kuhn-Tucker Conditions)
  4. 对偶的应用及拓展(Duality Uses and Correspondences)
  5. 对偶方法(Dual Methods)
  6. 交替方向乘子法(Alternating Direction Method of Multipliers)

Introduction

上一节我们提到了强对偶,即原问题的最优值与对偶问题的最优值相等。下面我们需要解决怎样找到优化问题的最优解。而KKT条件就是最优解需要满足的条件。

KKT条件

给定一个一般性的优化问题:
min ⁡ x f ( x ) s u b j e c t t o h i ( x ) ≤ 0 , i = 1 , . . . , m l i ( x ) = 0 , j = 1 , . . . , r \begin{aligned} \min_{x}\quad &f(x)\\ {\rm subject\ to}\quad &h_i(x)\leq 0,\ i=1,...,m\\ &l_i(x)=0,\ j=1,...,r \end{aligned} xminsubject tof(x)hi(x)0, i=1,...,mli(x)=0, j=1,...,r

KKT条件(Karush-Kuhn-Tucker conditions or KKT conditions)定义为:

  • 稳定性条件: 0 ∈ ∂ x ( f ( x ) + ∑ i = 1 m u i h i ( x ) + ∑ j = 1 r v j l j ( x ) ) 0\in\partial_x(f(x)+\sum^m_{i=1}u_ih_i(x)+\sum^r_{j=1}v_jl_j(x)) 0x(f(x)+i=1muihi(x)+j=1rvjlj(x))
  • 互补松弛性: u i ⋅ h i ( x ) = 0 f o r a l l i u_i\cdot h_i(x)=0\quad {\rm for\ all}\ i uihi(x)=0for all i
  • 原问题可行域: h i ( x ) ≤ 0 , l i ( x ) = 0 f o r a l l i , j h_i(x)\leq 0, l_i(x)=0\quad {\rm for\ all\ }i,j hi(x)0,li(x)=0for all i,j
  • 对偶问题可行域: u i ≥ 0 f o r a l l i u_i\geq 0\quad {\rm for\ all\ } i ui0for all i

充分性与必要性说明

必要性

假设 x ∗ x^* x u ∗ , v ∗ u^*,v^* u,v分别是原问题和对偶问题的最优解,且原问题和对偶问题的对偶间隙为0(即强对偶)。那么:
f ( x ∗ ) = g ( u ∗ , v ∗ ) = min ⁡ x f ( x ) + ∑ i = 1 m u i ∗ h i ( x ) + ∑ j = 1 r v j ∗ l j ( x ) ≤ f ( x ∗ ) + ∑ i = 1 m u i ∗ h i ( x ∗ ) + ∑ j = 1 r v j ∗ l j ( x ∗ ) ≤ f ( x ∗ ) \begin{aligned} f(x^*)&=g(u^*,v^*)\\ &=\min_x f(x)+\sum^m_{i=1}u^*_ih_i(x)+\sum^r_{j=1}v^*_jl_j(x)\\ &\leq f(x^*)+\sum^m_{i=1}u^*_ih_i(x^*)+\sum^r_{j=1}v^*_jl_j(x^*)\\ &\leq f(x^*) \end{aligned} f(x)=g(u,v)=xminf(x)+i=1muihi(x)+j=1rvjlj(x)f(x)+i=1muihi(x)+j=1rvjlj(x)f(x)

即所有不等式都可以取等号。因此,我们可以得到:

  • x ∗ x^* x最小化 L ( x , u ∗ , v ∗ ) L(x,u^*,v^*) L(x,u,v),那么 L ( x , u ∗ , v ∗ ) L(x,u^*,v^*) L(x,u,v) x = x ∗ x=x^* x=x处的次微分一定包含0——即稳定性条件。
  • ∑ i = 1 m u i ∗ h i ( x ∗ ) = 0 \sum^m_{i=1}u^*_ih_i(x^*)=0 i=1muihi(x)=0——即互补松弛性

必要性:如果 x ∗ x^* x u ∗ , v ∗ u^*,v^* u,v分别是原问题与对偶问题的解,且对偶间隙为0,那么 x ∗ , u ∗ , v ∗ x^*,u^*,v^* x,u,v满足KKT条件。

充分性

如果存在 x ∗ , u ∗ , v ∗ x^*,u^*,v^* x,u,v满足KKT条件,那么
g ( u ∗ , v ∗ ) = f ( x ∗ ) + ∑ i = 1 m u i ∗ h i ( x ∗ ) + ∑ j = 1 r v j ∗ l j ( x ∗ ) = f ( x ∗ ) \begin{aligned} g(u^*,v^*)&=f(x^*)+\sum^m_{i=1}u^*_ih_i(x^*)+\sum^r_{j=1}v^*_jl_j(x^*)\\ &= f(x^*) \end{aligned} g(u,v)=f(x)+i=1muihi(x)+j=1rvjlj(x)=f(x)

因此,对偶间隙为0,所以 x ∗ x^* x u ∗ , v ∗ u^*,v^* u,v分别是原问题与对偶问题的解。
充分性:如果 x ∗ , u ∗ , v ∗ x^*,u^*,v^* x,u,v满足KKT条件,那么 x ∗ x^* x u ∗ , v ∗ u^*,v^* u,v分别是原问题与对偶问题的解

总结

综上所述,KKT条件等价于对偶间隙为0:

  • 总是充分的
  • 在强对偶条件下是必要的

那么我们可以得到:如果一个问题有强对偶性,那么 x ∗ , u ∗ , v ∗ x^*,u^*,v^* x,u,v满足KKT条件与 x ∗ x^* x u ∗ , v ∗ u^*,v^* u,v分别是原问题与对偶问题的解是等价的。
可以看出,对于无约束优化问题,KKT条件就是次梯度最优化条件。对于一般性凸优化问题,KKT条件是次梯度最优化条件的推广。

例子:支持向量机(SVM)
给定 y ∈ { − 1 , 1 } n y\in \{-1,1\}^n y{1,1}n X ∈ R n × p X\in R^{n\times p} XRn×p有行向量 x 1 , . . . , x n x_1,...,x_n x1,...,xn,则支持向量机(SVM)定义为:
min ⁡ β , β 0 , ξ 1 2 ∥ β ∥ 2 2 + C ∑ i = 1 n ξ i s u b j e c t t o ξ i ≥ 0 , i = 1 , . . . , n y i ( x i T β + β 0 ) ≥ 1 − ξ i , i = 1 , . . . , n \begin{aligned} \min_{\beta,\beta_0,\xi}\quad &\frac{1}{2}\|\beta\|^2_2+C\sum^n_{i=1}\xi_i\\ {\rm subject\ to}\quad & \xi_i\geq 0,\ i=1,...,n\\ &y_i(x_i^T\beta + \beta_0) \geq1-\xi_i,\ i=1,...,n \end{aligned} β,β0,ξminsubject to21β22+Ci=1nξiξi0, i=1,...,nyi(xiTβ+β0)1ξi, i=1,...,n

引入对偶变量 v , w ≥ 0 v,w\geq 0 v,w0。KKT稳定性条件为:
0 = ∑ i = 1 n w i y i , β = ∑ i = 1 n w i y i x i , w = C 1 − v 0=\sum^n_{i=1}w_iy_i,\quad \beta=\sum^n_{i=1}w_iy_ix_i, \quad w=C1-v 0=i=1nwiyi,β=i=1nwiyixi,w=C1v

互补松弛性:
v i ξ i = 0 , w i ( 1 − ξ i − y i ( x i T β + β 0 ) ) = 0 , i = 1 , . . . , n v_i\xi_i=0,\quad w_i(1-\xi_i-y_i(x^T_i\beta+\beta_0))=0,\quad i=1,...,n viξi=0,wi(1ξiyi(xiTβ+β0))=0,i=1,...,n

因此,在最优点处我们有 β = ∑ i = 1 n w i y i x i \beta=\sum^n_{i=1}w_iy_ix_i β=i=1nwiyixi,且仅当 y i ( x i T β + β 0 ) = 1 − ξ i y_i(x_i^T\beta + \beta_0) =1-\xi_i yi(xiTβ+β0)=1ξi w i w_i wi是非零的,这些点 i i i被叫做支持点(support points)

  • 对于支持点 i i i,如果 ξ i = 0 \xi_i=0 ξi=0,则 x i x_i xi位于分割边界上,且 w i ∈ ( 0 , C ] w_i\in (0,C] wi(0,C]
  • 对于支持点 i i i,如果 ξ i ≠ 0 \xi_i\neq0 ξi=0,则 x i x_i xi位于分割边界的错误一边,且 w i = C w_i= C wi=C
    在这里插入图片描述

有约束形式与拉格朗日形式

在统计和机器学习中,我们常常把一个优化问题在其有约束形式(constrained form),即
min ⁡ x f ( x ) s u b j e c t t o h ( x ) ≤ t \min_x f(x)\quad {\rm subject\ to\quad }h(x)\leq t xminf(x)subject toh(x)t

和拉格朗日形式(Lagrange form),即
min ⁡ x f ( x ) + λ ⋅ h ( x ) \min_x f(x)+\lambda\cdot h(x) xminf(x)+λh(x)

之间进行互换,并认为这两种形式是等价的。由上面分析可知,假如 f , h f,h f,h都是凸函数,这种等价在 h ( x ) < t h(x)<t h(x)<t时是成立的。

Conclusion

对偶的一个关键性质是,在强对偶条件下,KKT条件是最优解的充要条件,即原问题的解可以通过其对偶问题得到。由于对偶问题一定是凸优化问题,这在对偶问题比原问题更简单时非常有用。


http://chatgpt.dhexx.cn/article/nOKBagP3.shtml

相关文章

windows下Armadillo+openBlas

1、处理Armadillo 1.1、http://arma.sourceforge.net/download.html#windows下载Armadillo&#xff0c;解压后把其中的include文件夹完整拷贝出来&#xff0c;放到某处&#xff0c;我放在了D:\Armadillo里 1.2、修改D:\Armadillo\include\armadillo_bits\config.hpp&#xff…

C++线性代数库armadillo

armadillo是为C设计的线性代数函数库&#xff0c;语法和函数类似MATLAB&#xff0c; 介绍主页 http://arma.sourceforge.net/ 与MATLAB语法对照如下http://arma.sourceforge.net/docs.html#syntax 功能概览 &#xff08;1&#xff09;matrix, vector, cube and field class…

Armadillo使用介绍(九):下载Armadillo、配置工程、运行第一个程序

一、下载Armadillo 通过以下两种途径下载Armadillo C库源码&#xff1a; Armadillo Download page 如下图所示&#xff0c;可以下载到最新版本的armadillo库&#xff08;随着时间变化&#xff0c;armadillo版本可能会比图示的版本更高&#xff09;。 点击上图红框中的链接后…

C++调用Armadillo计算库

1. 下载压缩包&#xff0c;解压到目录&#xff0c;比如D:\ALGLIB\armadillo&#xff0c;只保留include文件夹和examples里的lib_win32文件夹即可&#xff1b; 下载地址&#xff1a;Armadillo: C library for linear algebra & scientific computinghttp://arma.sourceforge…

armadillo 使用杂记

2022.10.06 验证矩阵首地址与首元素首地址的关系 验证矩阵中元素的存储方式 做以下实验 mat m;//输出矩阵头位置cout<<&m<<endl;m<<4<<6<<3<<endr<<1<<3<<1<<endr<<3<<5<<1<<endr;/…

Ubuntu21.10下安装使用Armadillo库

文章目录 一、前言二、下载安装文件三、编译与安装四、代码示例五、总结 一、前言 Armdillo 矩阵运算速度跟 MATLAB 一个量级&#xff0c;为目前使用比较广的 C 矩阵运算库之一&#xff0c;是在 C 下使用 MATLAB 方式操作矩阵很好的选择&#xff0c;许多 MATLAB 的矩阵操作函数…

Armadillo 线性代数库中的聚类算法避坑

1、本文的由来 最近由于需要在C语言编写的项目中使用高斯混合模型聚类算法&#xff0c;最开始是打算自己写一个的&#xff08;参考的是《机器学习》&#xff0c;周志华著这本书&#xff09;&#xff0c;但是最后发现自己写的算法运行效率低&#xff0c;而且对于维度比较高的样本…

C++线代运算库Armadillo配置(Qt CLion VSCode)

目录 1. 前言 2. Armadillo下载 方法1&#xff1a;官网下载 方法2&#xff1a;安装包下载 3. Qt 中 Armadillo 配置 4. CLion 中 Armadillo 配置 5. VSCode 中 Armadillo 配置 1. 前言 工作和学习上一直用着 Armadillo 库中的矩阵运算&#xff0c;极大的提升了 Matlab 代…

Clion 使用 armadillo 配置方法

Clion 使用 armadillo 配置方法 jetbrains 全家桶是我的最爱 但是C的编写网上都是visual studio 的教程&#xff0c;尤其是对于库文件的引用&#xff0c;Clion很少有指导&#xff0c;最近需要将python的程序转为C&#xff0c;用到了armadillo 矩阵库&#xff0c; 但是网上对于…

Armadillo C++ Library

Armadillo 简介 Armadillo C Library是一种C的线性代数库&#xff08;矩阵数学&#xff09;&#xff0c;具有良好的平衡速度与易用性。其底层可以调用不同的BLAS和LAPACK库来提高效率&#xff0c;同时利用模板编程提高了代码的操作性 官网下载链接&#xff1a;点这里下载 Vi…

C++中armadillo矩阵库使用说明

在http://blog.csdn.net/piaoxuezhong/article/details/58055709博文中介绍了eigen矩阵库的使用&#xff0c;这里介绍另一种矩阵库&#xff1a;armadillo~ Armadillo&#xff1a;C下的Matlab替代品 armadillo是目前使用比较广的C矩阵运算库之一&#xff0c;许多Matlab的矩阵操…

armadillo库安装教程

目录 armadillo库功能介绍 armadillo库安装 vs中添加步骤 测试 armadillo库功能介绍 在c编程中&#xff0c;我们在进行一些算法运算经常会面对矩阵计算&#xff0c;c的标准库中是没有关于矩阵运算的库的&#xff0c;在面对矩阵计算我们只能自己编写相关代码进行计算&#xf…

armadillo使用,armadillo提高编译效率和速度

Armadillo是一个全面的、基于模板的 C 线性代数库&#xff0c;设计有 LAPACK 和 ATLAS 库的替代接口。 armadillo使用工具旨在提供速度和易用性&#xff0c;以及类似于 Matlab 的熟悉语法(或 API)。 armadillo使用允许您编写可以集成到组件或应用程序中的各种类型的数学函数。它…

C++ Armadillo矩阵库的安装与基本用法

文章目录 Armadillo安装入门案例直接赋值切片常用函数 Armadillo 安装 Armadillo是一个具有Matlab风格的线性代数包。下载之后解压到任意文件夹&#xff0c;然后对VS工程进行设置。 菜单栏生成->配置管理器&#xff0c;将平台改为x64右键项目名称->属性(快捷键ShiftF4…

一个常见的大数据平台架构

这是一个典型的大数据架构&#xff0c;且对架构进行了「分层」&#xff0c;分为「数据源层」、「数据传输层」、「数据存储层」、「编程模型层」和「数据分析层」&#xff0c;如果继续往上走的话&#xff0c;还有「数据可视化层」和「数据应用层」。

大数据平台架构实践

说明 本篇博客整理自参考内容&#xff0c;完整内容请查看原文章&#xff1b; 技术选型 MOLAP 与Druid相类似的实时数据分析工具&#xff0c;还有Linkedln的Pinot和eBay的Kylin&#xff0c;它们都是基于Java开发的。Druid相对比较轻量级&#xff0c;用的人也多&#xff0c;毕…

网易大数据平台架构实践分享!

随着网易云音乐、新闻、考拉、严选等互联网业务的快速发展&#xff0c;网易开始加速大数据平台建设&#xff0c;以提高数据获取速度&#xff0c;提升数据分析效率&#xff0c;更快发挥数据价值。 本次演讲主要分享网易如何围绕和改造开源技术&#xff0c;以产品化思维打造网易自…

详解大数据平台架构

目录: 什么是大数据 Hadoop介绍-HDFS、MR、Hbase 大数据平台应用举例-腾讯 公司的大数据平台架构 “就像望远镜让我们能够感受宇宙,显微镜让我们能够观测微生物一样,大数据正在改变我们的生活以及理解世界的方式……”。 大数据的4V特征 公司的“大数据” 随着公司业…

京东金融大数据平台架构(附82页PPT)

公众号推文规则变了&#xff0c;点击上方 "数据社", 设为星标 后台回复【加群】&#xff0c;申请加入数据学习交流群 大家好&#xff0c;我是一哥&#xff0c;给大家分享一下京东金融大数据分析平台总体架构介绍&#xff0c;废话不说&#xff0c;干货收藏吧&#xff…

大数据平台架构设计探究

本文首发于 vivo互联网技术 微信公众号 链接&#xff1a;https://mp.weixin.qq.com/s/npRRRDqNUHNjbybliFxOxA 作者&#xff1a;刘延江 近年来&#xff0c;随着IT技术与大数据、机器学习、算法方向的不断发展&#xff0c;越来越多的企业都意识到了数据存在的价值&#xff0c;将…