目录

  • 1 基本概念
  • 2 凸优化问题
  • 3 非凸优化问题
  • 4 总结

1 基本概念

(1)凸集和非凸集
凸集是一个点集, 这个点集有一个性质, 就是在这个集合中任取不同的两个点x和y, 他们之间的线段(包括端点)上的点都属于这个点集,那么就说这个点集是一个凸集。比如下图中左边的图形是凸集,而右边就是非凸集,因为可以找到两个点,使它们之间的线段上的点不在集合中

(3)凸函数(Convex function)和非凸函数(Convave function)
通常把函数分为凸函数和非凸函数。凸函数的几何意义在于,定义域中任意两点连线组成的线段都在这两点的函数曲线(面)上方。如图所示。凸函数是有且只有全局最优解的,而非凸函数可能有多个局部最优解。

判定方法:

  • 对于一元函数f(x),首先必须定义域是凸集,其次通过其二阶导数f′′(x) 的符号来判断。如果函数的二阶导数总是非负,即f′′(x)≥0 ,则f(x)是凸函数。
  • 对于多元函数f(X),首先必须定义域是凸集,其次通过其Hessian矩阵(Hessian矩阵是由多元函数的二阶导数组成的方阵)的正定性来判断。如果Hessian矩阵是半正定矩阵,则是f(X)凸函数。

(4)凸优化和非凸优化
在最小化(最大化)的优化要求下,目标函数是凸函数且约束条件所形成的可行域集合是一个凸集的优化方法,因此凸优化的判定条件有两个

  • 函数定义域是凸集
  • 目标函数是凸函数

(4)水平子集(sublevel sets)
由凸函数的概念出发,我们可以引出水平子集(sublevel set)的概念。假定f(x)是一个凸函数, 给定一个实数α∈R,我们把集合
{x(f)∣f(x)≤α}\{ x(f)| f(x) \leq \alpha \}{x(f)∣f(x)≤α}
叫做α−水平子集。 也就是说α水平子集是所有满足f(x)≤α的点构成的集合。利用凸函数性质,我们可以证明水平子集也是凸集:
f(θx+(1−θy))≤θf(x)+(1−θ)f(y)≤θα+(1−θ)αf(\theta x +(1-\theta y)) \leq \theta f(x)+(1-\theta)f(y) \leq \theta \alpha +(1-\theta)\alphaf(θx+(1−θy))≤θf(x)+(1−θ)f(y)≤θα+(1−θ)α
水平子集告诉我们,给凸函数添加一个上限,定义域内剩下的点构成的点集还是一个凸集。
(5)仿射函数(affine functions)
数学上,我们把形如
h(x)=Ax+bh(x)=Ax+bh(x)=Ax+b
的函数叫做仿射函数。其中,A是一个m*n的矩阵,x是一个k向量,b是一个m向量。直观上理解,仿射函数将一个n维空间的向量通过线性变换A映射到m维空间,并在其基础上加上向量b,进行了平移。实际上反映了一种从 k维到m维的空间映射关系。

2 凸优化问题

(1)定义
数学上表示为
minf(x)s.tx∈Cmin \space f(x)\\ s.t\space x∈Cmin f(x)s.t x∈C
其中f是凸函数,C是凸集。以下是用仿射函数的表示法
minf(x)s.tgi(x)≤0,i=1,...,mhi(x)=0,i=1,..,pmin \space f(x)\\ s.t\space g_i(x) ≤0,i = 1,...,m\\ h_i(x) = 0,i = 1,..,pmin f(x)s.t gi​(x)≤0,i=1,...,mhi​(x)=0,i=1,..,p
其中g(x)是凸函数,h(x)是仿射函数。原约束集C表示为了一系列凸集的交集。
(2)简介
优化方法是几乎所有机器学习模型中最重要的核心部分,凸优化是优化方法论中的特例,是一个非常大的领域。
例如针对逻辑回归、线性回归这样的凸函数,使用梯度下降或者牛顿法可以求出参数的全局最优解,针对神经网络这样的非凸函数,我们可能会找到许多局部最优解。
(3)经典凸优化问题

  • Least squares(最小二乘法,常用,目标:线性关系;限制条件:线性关系)
  • Convex quadratic minimization with linear constraints(线性约束条件下的二次规划问题,常用,目标:平方关系;限制条件:线性关系)
  • Linear programming(线性规划)
  • Quadratic minimization with convex quadratic constraints(具有凸二次约束的二次最小化)
  • Conic optimization(圆锥优化)
  • Geometric programming(几何规划)
  • Second order cone programming(二阶锥规划)
  • Semidefinite programming(半定规划)
  • Entropy maximization with appropriate constraints(具有适当约束的熵最大化)

3 非凸优化问题

(1)简介
在实际解决问题过程中,都希望我们建立的目标函数是凸函数,这样我们不必担心局部最优解问题,但实际上,我们遇到的问题大多数情况下建立的目标函数都是非凸函数,因此我们需要根据场景选择不同的优化方法。
我们在寻找优化方法论时,一定要选择更合理的方法论。很多非凸优化问题可以转化(并非是等价的)为凸优化问题,并给出问题的近似解。
当非凸优化应用到机器学习中时,目标函数可以允许算法设计者编码适当和期望的行为到机器学习模型中,例如非凸优化中的目标函数可以表示为衡量拟合训练数据好坏的损失函数。正如 Goodfellow 所说,一般的非凸优化和深度学习中的非凸优化,最大的区别就是深度学习不能直接最小化性能度量,而只能最小化损失函数以近似度量模型的性能。而对目标函数的约束条件是允许约束模型编码行为或知识的能力,例如约束模型的大小。
(2)传统解决方法
面对非凸问题及其与 NP-hard 之间的关系,传统的解决方案是修改问题的形式化或定义以使用现有工具解决问题,即凸松弛(Relaxation),对问题限制条件的松弛,将原问题等价为凸优化问题。但是我们求出来的最优解与原问题的最优解可能是相等,也可能有一定的误差的,所以通过relaxation,我们需要证明relaxation得出的最优解和原问题的最优解的误差范围。
由于该方法允许使用类似的算法技术,所谓的凸松弛方法得到了广泛研究。例如,推荐系统和稀疏回归问题都应用了凸松弛方法。对于稀疏线性回归,凸松弛方法带来了流行的 LASSO 回归。
(3)非凸优化方法
机器学习和信号处理领域出现了一种新方法,不对非凸问题进行松弛处理而是直接解决。引起目标是直接优化非凸公式,该方法通常被称为非凸优化方法。非凸优化方法常用的技术包括简单高效的基元(primitives),如投影梯度下降、交替最小化、期望最大化算法、随机优化及其变体。这些方法在实践中速度很快,且仍然是从业者最喜欢用的方法。
如果该问题具备较好的结构,那么不仅可以使用松弛方法,还可以使用非凸优化算法。在这类案例中,非凸方法不仅能避免 NP-hard,还可以提供可证明的最优解。事实上,在实践中它们往往显著优于基于松弛的方法,不管是速度还是可扩展性

4 总结

当我们拿到一个业务问题,一定需要按照算法思维去做,先将问题转换为一个严谨的数学问题,判断我们写出的目标函数的凹凸性,如果目标函数非凸,我们需要对问题的限制条件做一些转化,进而求出转化后问题的近似解,并证明其与原问题的误差范围。如果是凸函数,我们需要选择相应的优化方法论进行优化,因为优化问题是机器学习算法中的核心部分。

【机器学习】凸集、凸函数、凸优化、凸优化问题、非凸优化问题概念详解相关推荐

  1. 逻辑回归损失函数通常是凸函数(附平方差损失的非凸证明以及交叉熵损失函数求导)

    Q:为什么逻辑回归损失函数往往要求是凸函数?(此处凸函数是指下凸,国内和国外凸函数的标准不一样,是相反的,吴恩达的机器学习课程凸函数是指下凸) A:如果损失函数是非凸的,使用梯度下降法优化时,最后得到 ...

  2. 小程序setdata优化_微信小程序 setData的使用方法详解

    微信小程序 setData的使用方法详解 微信小程序 setData的使用方法详解 最近在使用微信小程序的setData时,遇到了以下问题.如下: 官网文档在使用setData()设置数组对象的某个元 ...

  3. 机器学习05|一万五字:SVM支持向量机02 【jupyter代码详解篇】

    文章目录 Jupyter实现 任务一 从DataSet.txt中导入数据,获得训练集以及标签. 任务二 调整alpha的值 任务三 上述原理过程中,需要计算真实值与预测值之间的误差,定义一个函数Com ...

  4. 一文看懂谷歌 NYC 算法与优化业务全景:三大项目组12个子领域详解(附重点论文下载)

    雷锋网 AI 科技评论消息,众所周知,谷歌的研究团队遍布世界各地,而纽约自然也是非常重要的一个地点,尤其是多个谷歌算法研究小组的孕育地.目前,谷歌算法优化团队为谷歌产品的顺利诞生提供了非常多的算法支持 ...

  5. 【运筹优化】凸多面体重叠判断算法:GJK 算法详解 C++代码实现二维情形的凸多边形重叠判断

    文章目录 一.GJK 算法简介 二.前置知识 2.1 二维向量的点乘和叉乘 2.2 三维向量叉乘 2.3 凸多边形 2.4 闵可夫斯基差 2.5 单纯形 2.6 Support 函数 三.GJK 算法 ...

  6. 流形优化: Manifold Optimization 的 全网最通俗版本详解 (一)

    前言 之前忙于论文, 停更了很久. 接下来的一段时间,出于各种原因, 决定在CSDN平台上做 最近在 混合波束成形 及 智能反射面 领域 非常常见的流形优化 (Manifold Optimizatio ...

  7. android性能优化面试,Android面试心得必备技能储备详解

    写在文章前面的话: "工欲行其事,必先利其器",英雄和侠客更需要宝剑助己成功.同样,在现代软件开发环境中,每个Android开发者都需要更好的工具,帮助我们增强功能.提高效率. 在 ...

  8. 《机器学习实战》第二章学习笔记:K-近邻算法(代码详解)

    <机器学习实战>数据资料以及总代码可以去GitHub中下载: GitHub代码地址:https://github.com/yangshangqi/Machine-Learning-in-A ...

  9. 机器学习--组合分类方法之AdaBoost算法实战(单层决策树原理代码详解)

    详细原理请看我的这篇文章,那里是纯理论说明,大量的数学推倒,建议大家多看看数学推倒,因为那才是本质,只有理解了本质你才知道如何使用这个算法,这个算法的优缺点你才会深入理解,搞算法其实就是搞数学,代码实 ...

最新文章

  1. WINCE config.bib文件中的FSRAMPERCENT的意义
  2. 《CCNA无线640-722认证考试指南》——9.3节集中式架构
  3. 从硬盘上把数据传回到计算机称为什么,计算机基础知识 第一章 习题三
  4. 怎么这两天总能看到刺激我的好东西
  5. android 线程 界面,android开发教程之子线程中更新界面
  6. Android自定义View之上拉、下拉列表 头部元素跟随 缩放、平移效果的实现
  7. Spring Cloud-honghu Cloud分布式微服务云系统--云架构代码结构构建
  8. Kali Linux镜像安装(1)
  9. Gilbert Strang的线性代数课程笔记-第一课
  10. 商务短信通平台建设实施方案
  11. 电脑怎么用自带录音器录制系统的声音
  12. Transformer综述(A Survey on Vision Transformer) 阅读学习笔记(三)--Transformer应用的图像处理与视频处理的研究
  13. 影响虚拟主机访问速度的因素,主要有哪些?
  14. 动态规划算法解Travelling Salesman Problem(TSP)问题
  15. UI设计中图形设计详解
  16. 随机密码生成Python
  17. NOT EXISTS真的不走索引么?如何优化NOT EXISTS!
  18. blender绑定后,姿态模式 骨骼动 模型不动
  19. 十七、网上商城项目(5)
  20. 干货福利 | “新基建”时代,数据如何驱动企业数智化升级

热门文章

  1. 笔记本计算机名称PC2019,2019值得推荐的13寸笔记本电脑汇总
  2. 在windows11环境下如何通过主机名ping通其它系统
  3. EOS、BPS怎样进行应用的部署
  4. go 进阶 多路复用支持: 一. netpoller 初始化
  5. Python统计序列或文件中元素的频度
  6. Unity_Shader中级篇_10_Unity Shader入门精要
  7. RabbitMQ之消息的自动应答、手动应答和消息持久化(Java开发)
  8. 计算机外设配件的主要相关参数有哪些,举例说明计算机外设主要有哪些设备?...
  9. 【天池】优惠券使用预测
  10. 如何安装谷歌服务框架?(Google三件套下载教程)