优化相关-凸优化

  • 凸优化相关
    • 凸函数的定义
    • 凸优化问题的定义
      • 1.无约束优化
      • 2.带约束优化
    • 凸优化问题的求解
  • 拉格朗日乘子法和KKT条件
    • 统计学习方法-李航
    • 以下是瑞典皇家理工学院-KKT课件(表达上有一定偏差,但个人倾向以李航为准):
  • 拉格朗日对偶性
    • 1.原始问题
    • 2.对偶问题
    • 证明:对偶问题的解是原始问题解的下界
  • 参考

凸优化相关

凸函数的定义

为了避免陷入局部最优,人们尽可能使用凸函数作为优化问题的目标函数。

  • 凸集定义:欧式空间中,对于集合中的任意两点的连线,连线上任意一点都在集合中,我们就说这个集合是凸集;
  • 凸函数定义:对于任意属于[0,1]的a和任意属于凸集的两点x, y,有f(ax+(1−a)y)≤a∗f(x)+(1−a)∗f(y)f( ax + (1-a)y ) \leq a * f(x) +(1-a) * f(y)f(ax+(1−a)y)≤a∗f(x)+(1−a)∗f(y),几何上的直观理解就是两点连线上某点的函数值,大于等于两点之间某点的函数值;
  • 凸函数的性质:凸函数的任一局部极值点也是全局极值点;
  • 半正定矩阵的定义:特征值大于等于0的实对称矩阵;
  • 半正定矩阵的充要条件:行列式(n阶顺序主子式)等于0,行列式的i阶顺序主子式>=0,i从1到n-1;
  • 凸函数的充要条件:如果f(x)在开凸集S上具有二阶连续偏导数,且f(x)的海塞矩阵(二阶偏导的矩阵)在S上处处半正定,则f(x)为S上的凸函数。

凸优化问题的定义

1.无约束优化

无约束优化问题中,如果f(x)是凸函数,那么可以直接通过f(x)的梯度等于0来求得全局极小值点。

2.带约束优化

考虑带约束的优化问题,可以描述为如下形式:

其中f(x)是目标函数,g(x)为不等式约束,h(x)为等式约束。

  • 若f(x),h(x),g(x)三个函数都是线性函数,则该优化问题称为线性规划;若任意一个是非线性函数,则称为非线性规划;
  • 若目标函数f(x)为二次函数,约束g(x), h(x)全为线性函数,称为二次规划;
  • 若f(x)为凸函数,g(x)为凸函数,h(x)为线性函数,则该问题称为凸优化。注意这里不等式约束若为g(x)≤0g(x) \leq 0g(x)≤0则要求g(x)为凸函数,若g(x)≥0g(x) \geq 0g(x)≥0则要求g(x)为凹函数;
  • 凸优化的性质:局部最优也是全局最优,KKT条件就是极小值点(而且是全局极小)存在的充要条件;不是凸优化的话,KKT条件是极小值点的必要不充分条件(满足KKT条件的点,也不一定是极小值点,但极小值点一定满足KKT条件)。

凸优化问题的求解

  • 对于无约束的优化问题,直接令梯度等于0求解;
  • 对于含有约束的优化问题:
    • 对于含有等式约束的优化问题,拉格朗日乘子法,构造拉格朗日函数,令偏导为0求解;
    • 对于含有不等式约束的优化问题,同样构造拉格朗日函数,利用KKT条件求解;
  • 对于含有约束的优化问题,还可以转化为对偶问题来求解

拉格朗日乘子法和KKT条件

统计学习方法-李航

针对带约束的原始问题

构造拉格朗日函数:
L(x,α,β)=f(x)+∑i=1kαici(x)+∑j=1lβjhj(x),L(x, \alpha, \beta)=f(x)+\sum \limits_{i=1}^k \alpha_ic_i(x)+\sum \limits_{j=1}^l \beta_jh_j(x),L(x,α,β)=f(x)+i=1∑k​αi​ci​(x)+j=1∑l​βj​hj​(x),
其中αi\alpha_iαi​, βi\beta_iβi​是拉格朗日乘子,αi≥0\alpha_i \geq 0αi​≥0.

当原始问题满足凸优化条件时,使用如下KKT条件求解最优值:

以下是瑞典皇家理工学院-KKT课件(表达上有一定偏差,但个人倾向以李航为准):

  1. 当优化问题时凸优化时,针对带不等式约束的原始问题如下求解:
  2. 不是凸优化的话,还需要附加多一个正定的条件才能变成充要条件,如下图所示:
  3. 对于同时有多个等式约束和多个不等式约束,构造的拉格朗日函数就是在目标函数后面把这些约束相应的加起来,KKT条件也是如此,如下图所示:

拉格朗日对偶性

约束最优化问题中,常利用拉格朗日对偶性将原始问题转换为对偶问题通过解对偶问题得到原始问题的解。(实质上利用了对偶问题一定是凸函数,而凸函数容易优化)

但是要明确,对偶问题的解不一定直接等于原问题的解(弱对偶),对偶问题有三点性质:

  • 强对偶-原始、对偶问题同解 ;
  • 弱对偶-原始、对偶问题不同解,但对偶问题的解是原始解的下界;
  • 对偶问题一定是凸函数,但原始问题不一定是;

1.原始问题

将求带约束的minf(x)min \ f(x)min f(x)转换为求对应拉格朗日函数上界的最小值,由于参数不同,可能会有多个上界。

2.对偶问题

证明:对偶问题的解是原始问题解的下界


如上,d∗≤p∗d^* \leq p^*d∗≤p∗称为弱对偶,对于所有优化问题都成立。


d∗=p∗d^* = p^*d∗=p∗称为强对偶,满足某些条件才成立,这时可以用解对偶问题替代原始问题。

满足如下条件时,对偶问题的解与原始问题解相同(即强对偶成立)。注意:这里的条件只是强对偶成立的一种情况,对于非凸的问题也有可能是强对偶

当强对偶成立时,对偶问题的解也即是原始问题解:


参考

拉格朗日对偶性
拉格朗日乘子法和KKT条件
机器学习原理-拉格朗日乘子法和KKT条件
瑞典皇家理工学院(KTH)“统计学习基础”
统计学习方法-李航

数学基础修炼手册-数学分析-凸优化相关推荐

  1. 机器学习数学基础--凸优化

    机器学习数学基础--凸优化 1.计算几何是研究什么的? 2.计算几何理论中(或凸集中)过两点的一条直线的表达式,是如何描述的?与初中数学中那些直线方程有什么差异?有什么好处? **在计算几何理论中(或 ...

  2. 机器学习数学基础系列|凸优化——开启新世界的大门(上)

    在机器学习中,要做的核心工作之一就是根据实际问题,定义出一个目标函数,接着找到这个目标函数的最优解.在找这个最优解的过程中,你可能会生不如死~ 但是,上帝关上了你的门,总会给你打开一扇窗~ 有一类问题 ...

  3. 【Android 修炼手册】常用技术篇 -- Android 热修复解析

    这是[Android 修炼手册]第 8 篇文章,如果还没有看过前面系列文章,欢迎点击 这里 查看- 预备知识 了解 android 基本开发 了解 ClassLoader 相关知识 看完本文可以达到什 ...

  4. 【Android 修炼手册】常用技术篇 -- Android 插件化解析

    预备知识 了解 android 基本开发 了解 android 四大组件基本原理 了解 ClassLoader 相关知识 看完本文可以达到什么程度 了解插件化常见的实现原理 阅读前准备工作 clone ...

  5. 【Android 修炼手册】Gradle 篇 -- Android Gradle Plugin 主要 Task 分析

    上文回顾 上篇文章里讲了 android gradle plugin 的整体流程,引入插件以后生成了很多 Task,这篇文章就谈谈生成的这些 Task 都有什么用处,以及一些主要 Task 的实现 预 ...

  6. 详解凸优化、贝叶斯、MCMC、GCN

    几年前如果熟练使用TensorFlow,同时掌握基本的AI算法就可以很容易找到一份高薪的工作,但现在不一样了,AI岗位的要求越来越高,对知识的深度也提出了更高的要求. 如果现在一个面试官让你从零推导S ...

  7. 详解机器学习的凸优化、图神经网络、强化学习、贝叶斯方法等四大主题

    AI是一门入门简单,但想深入却很难的学科,这也是为什么AI高端人才一直非常紧缺的重要原因.在AI领域技术领域,我们可以说机器学习功底决定了一个人的上限也不为过.为什么?机器学习就像物理学中的数学,如果 ...

  8. GCN、GAT、凸优化、贝叶斯、MCMC、LDA

    加入AI行业拿到高薪仅仅是职业生涯的开始.现阶段AI人才结构在不断升级,对AI人才的要求也不断升高,如果对自己没有很高的要求,其实很容易被快速发展的趋势所淘汰. 为了迎合时代的需求,我们去年推出了&l ...

  9. 详解凸优化、图神经网络、强化学习、贝叶斯方法等四大主题

    加入AI行业拿到高薪仅仅是职业生涯的开始.现阶段AI人才结构在不断升级,这也意味着如果目前仍然停留在调用一些函数库,则在未来1-2年内很大概率上会失去核心竞争力的.几年前如果熟练使用TensorFlo ...

  10. 勇往直前的菜鸟修炼手册

    文章目录 勇往直前的菜鸟修炼手册 自我介绍 项目相关 项目业务组件相关 前端框架和业务组件 管理方面 走查代码篇 日常怎么走查代码 企业微信的机器人道具,可以钩住代码push的消息. 假如你是一个前端 ...

最新文章

  1. 使用Python,OpenCV生成Aruco标记
  2. Kubernetes vs Docker:了解2021年的容器
  3. 机器视觉的发展潜力巨大
  4. 使用 TensorFlow 的公司
  5. Spring Boot微信点餐——实战开发DAO层
  6. python升级或者其他原因把yum搞坏了
  7. 快速 Get 面试题中:线程池七个参数和工作原理问题,理解万岁
  8. Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No s
  9. Linux下/var/spool/clientmqueue空间不足的解决
  10. EntityFramework进阶——继承
  11. [leetcode]5341. 最后 K 个数的乘积
  12. ubuntu16.04安装百度网盘(使用deepin-wine)2019年3月亲测可用以及安装MATLAB的技巧
  13. 如何用纯 CSS 创作 404 文字变形为 NON 文字的交互特效
  14. 《设计模式》组合模式---伊利工厂
  15. 找回 Windows 11 丢失的扫雷游戏【新春快乐】
  16. 滑窗口统计基因组GC含量的分布
  17. 对比分析高速传输和同步软件:Aspera 与 镭速(Raysync)
  18. 笔记本开启热点后上不了网
  19. JSP实现word文档的上传,在线预览,下载
  20. HQL 报 return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 错误解决方案

热门文章

  1. 机器人机构学基础(朱大昌)第二章部分习题答案
  2. Win虚拟机查询不到自己的IP地址
  3. 微计算机最常用的输入法,输入无极限 最常用五款拼音输入法横评
  4. 基于matlab的暴雨强度公式参数推求,基于Lingo和单纯形算法的综合暴雨强度公式参数解析...
  5. 编写一个UNIX文件系统
  6. 数据挖掘:概念与技术(第三版)之第四章的学习记录
  7. linux centos安装wine qq,ubuntu安装wine QQ
  8. creator小功能----浅谈cc.Director与 资源加载策略
  9. JS 中样式显示(clientWidth和clientHeight、offsetLeft、scrollHeight )
  10. JavaWeb:(练习)十二、简单的学生管理系统