【Convex Optimization Stanford】Lec5. Duality 对偶问题

【Convex Optimization Stanford】Lec5. Duality 对偶问题

前言

我们总在追寻爱情的本质,追寻心动的起源,总在寻找真爱,可是真爱是什么,每个人的标准都不一样,我们又如何才能找到呢?

共轭函数的性质:

仿射包的定义和性质:

矩阵的列空间 R ( A ) \mathcal{R}(A) R(A):

拉格朗日对偶

一开始的讨论并非一个凸优化问题,仅讨论对于一个一般的优化问题,不一定是凸的。




拉格朗日对偶与共轭函数

拉格朗日对偶问题

弱对偶与强对偶

约束资格

定义:

在凸优化问题中,保持该问题和其对偶问题是强对偶的条件称为约束资格。(constraint qualification)

Slater资格约束

涉及的概念

  • 严格可行点(strict feasible point):
    指的是严格满足所有优化问题约束条件的点。并且要求该点在可行域的 D \mathcal{D} D的内部,
  • 内部(int)和相对内部(relint):

省流版

  1. 可行域 D \mathcal{D} D内存在至少一个严格可行点
  2. 仅针对凸优化问题

可判断满足KKT条件。且能保证原问题一定有最优解。

注意:条件可放宽为:

  1. 可行域 D \mathcal{D} D的相对内部存在至少一个严格可行点
  2. 该点对于线性不等式不需要严格
  3. 凸优化问题

一些例子

LP

QP

省流版

  1. LP问题,除非原问题与对偶问题没有可行解,否则 p ∗ = d ∗ p^*=d^* p∗=d∗
  2. QP问题永远满足 p ∗ = d ∗ p^*=d^* p∗=d∗

非凸问题的强对偶情况

几何差值法


KKT条件

即:

如果一个问题满足强对偶,且 x , λ , v x,\lambda, \mathcal{v} x,λ,v分别是原问题和对偶问题的最优解,则一定满足以下四个条件:

  1. 满足原始的约束条件
  2. 满足对偶约束
  3. 满足互补松弛
  4. 拉格朗日函数对x的梯度等于0

强对偶+最优(原函数+对偶函数)---》KKT性质

互补松弛项

省流版:就是所有不等式项约束的加权和为0,才能让 L ( x ∗ , λ ∗ , v ∗ ) = f 0 ( x ∗ ) \mathcal{L}(x^*,\lambda^*, \mathcal{v}^*)=f_0(x^*) L(x∗,λ∗,v∗)=f0(x∗)。

KKT在凸优化问题的性质

凸优化问题+满足KKT条件-----》最优解

需要说明的是:第四条件之所以能推出这个的原因,是因为该问题为凸优化问题,则所有的函数 f i ( x ) f_i(x) fi(x)都是凸函数,因此其线形组合也是凸函数,即拉格朗日函数是凸函数,因此其全局只有一个最优点,且该最优点就是全局最优点。

最后这个KKT和Slater条件的关系,因为Slater条件如果满足,则说明该凸优化问题是一个强对偶问题,且原函数有最优值,因此对于一个 x x x,只要能找到一对 λ , v \lambda, \mathcal{v} λ,v,使得他们满足KKT条件,则他们一定是最优的。实际上,只用到了Slater条件中的凸优化问题和一定有解的两个性质,强对偶性实际上并没有用上,只是强对偶性用于作应证。

扰动和敏感性分析



对偶与问题重构

通常的方式:

  1. 引入新的变量或等式约束
  2. 将显式约束改为隐式或反之亦反
  3. 变换目标函数或限制函数的形式

引入新变量并加入等式限制

大概意思就是用新的变量表达久的变量,并将其相等关系作为限制条件写入。

隐式限制

实际上就是通过对偶的形式,让隐式约束在对偶过程中消掉,从而在对偶问题的计算过程中,能够更加简化。

带有泛化不等式约束的情况

把泛化不等式给拆开,拆成单个函数即可。

半正定规划

相关推荐
学长毕设9 小时前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
小小de风呀13 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
李某学编程13 小时前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
Song_RsHt14 小时前
Redis 与微服务,什么场景下无可替代
java·redis·后端·学习·微服务
~kiss~17 小时前
PRO-LONG: Programmatic Memory Enables Long-Horizon Reasoning 程序式记忆赋能长程推理
学习
程序猿编码17 小时前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理
ms72wx18 小时前
Docker 命令学习笔记:从入门到进阶的实战指南
笔记·学习·docker
外收内放18 小时前
FastAPI猜字谜实战(4):让AI主持人开口
开发语言·python·学习·fastapi
叶子野格19 小时前
《JAVA学习:前置知识》
学习
小猪佩奇TONY19 小时前
Linux 内核学习(19) --- linux swap 机制
linux·学习·swap·kswapd