机器学习系列(22)_SVM碎碎念part5:凸函数与优化
原文地址:SVM - Understanding the math - convex-functions/ by Brandon Amos
感谢参与翻译同学:@程亚雄 && @张蒙 && @jozee
时间:2018年1月。
出处:http://blog.csdn.net/han_xiaoyang/article/details/70214565
声明:版权所有,转载请联系寒小阳 (hanxiaoyang.ml@gmail.com)并注明出
1.引言
这是SVM数学基础系列教程第5部分。现在我们来学习凸函数相关的知识。如果你没有读过之前的文章,建议从《第一部分》开始学习。
1.1 如何找到全局最小值
有一种简单的方法可以找到全局最小值:
- 找到所有的局部极小值
- 最小的局部极小值就是全局最小值
还有另一种方法就是研究需要极小化的目标函数。如果这个函数是凸函数,那么就可以确保该函数的局部极小值即是全局最小值
定理:凸函数的局部极小值就是全局最小值 (Proof page 9)
2.凸函数
2.1 什么是凸函数
判断凸函数的条件是函数上的任意两点之间的线段与函数没有交点。
凸函数
然而,如果有交点,那么该函数就不是凸函数。
非凸函数
正如上图所示,函数两点之间的红色线段与函数曲线存在交点,这就意味着该函数是非凸函数。但是,请注意,上图中在某些特定的区间内,函数是满足凸函数条件,比如:区间[-1,+1]。
你可以在这里了解关于凸函数更加严谨的定义。但是当前最重要的是理解凸函数的局部极小值就是全局最小值。这有助于我们更加容易的求出凸函数的全局最小值。
通常,如果函数−f-f是凸函数,那么ff就是凹函数。
凹函数
原先对于凸函数的定义同样适用于凹函数。即函数上的任意两点之间的线段与函数没有交点,那么该函数为凹函数。。。
因此,数学家们给出了凸函数更加严格的定义:
凸函数判定条件修正为如果函数上镜图(epigraph)(函数曲线上的点和函数曲线上方所有的点的集合)是凸集,那么该函数就是凸函数
2.2 什么是凸集
在欧几里得空间中,凸集表示一个区域,区域内任意两个点之间的线段都包含在该区域内。(维基百科)
同理可证,如果任取集合中的两个点,两点之间的线段包含在该集合中,那么该集合为凸集。
哪个集合是凸集,哪个是凹集?
圆和三角形是凸集,你猜对了吗?在下图中分别画出三条红色线段。正如你所看到的,五角星图形中的红色线段有一部分并不包含在五角星里面,这就表明它不是凸集。
五角星不是凸集
现在利用前面学到的知识来判断一个函数是不是凸函数。
步骤一:我们有一个函数并且想要知道它是否是凸函数
步骤二:获取函数上镜图(把函数想象成一个U型容器,往里面灌水而且水不能溢出,一直加水直至到达容器的最高点,也就是函数极限)
步骤三:如果函数上镜图是凸的,那么该函数就是凸函数
2.3 如何判断函数为凸函数
通过函数上镜图可以很容易的判定该函数是否为凸函数,但是多元函数很难可视化。因此需要进一步研究凸函数的性质:
更一般地,一个连续的二阶可导多元函数在凸集上为凸函数,当且仅当函数的海森矩阵半正定。(维基百科)
如果想判定一个函数是否为凸函数,一种简单的方法就是使用海森矩阵(Hessian)。然而,这次我们不需要像前面的文章检查Hessian矩阵是否是正定矩阵,只需要检查它是否是半正定的。
两者的区别在哪?
定理:
以下的表述是等价的:
对称矩阵AA 是半正定矩阵
矩阵AA 的特征值为非负值
矩阵AA 的所有主子式非负
存在矩阵BB 使得A=BTBA=B^TB
(资料来源)
采用第4部分中的判定方法,使用子式来判断函数的海森矩阵是否为半正定。判定半正定和正定的区别在于,判定矩阵是否为半正定,需要检查所有的主子式,而不仅仅是顺序主子式 。同时,所有的主子式都必须是非负的。(大于0的数为正数;大于或者等于0的数为非负数)
2.3.1 举例:香蕉函数是凸函数吗?
香蕉函数的海森矩阵如下所示:
∇^2f(x,y)= \left\{\begin{matrix}1200x^2-400y+2 & -400x \\\ -400x & 200 \end{matrix}\right\}
海森矩阵的1阶主子式为:
M11M11 等于200200 (删除第一行和第一列)。
M22M22 等于 1200x2−400y+21200x^2 - 400y + 2 (删除第二行和第二列)。
如果函数为凸函数,那么函数的海森矩阵的所有主子式在凸集内都是非负的。哪个凸集?根据定义,这里的凸集指的是凸函数的定义域。在这篇文章中,当我们说某个函数在凸集上为凸函数,这里的凸集均指函数定义域。限制条件”在凸集内”表示集合区域的边缘上的点不在选取范围内。
在这个例子中,函数定义域为ℝ2ℝ^2 (凸集)。接下来,只需要证明在ℝ2ℝ^2 集合内任取一个点,都能使所有的主子式为非负的。
我们可以看到,子式M11M11 始终为正数。但是,很容易找到一个点,使得M22M22为负数。比如(1,4)(1,4) 这个点。
结论:香蕉(banana)函数不是凸函数。
还有很多方法可以判定函数是否为凸函数。更多相关阅读,请参考这篇论文,part 2.1。
3.为什么凸函数如此完美
首先,凸函数的局部极小值就是全局最小值。这是一个非常好的结论可以帮助我们快速找到问题的解。
此外,一般情况下,凸优化问题更容易求解。为什么?
下图可以帮助我们更好的理解这个问题。
凸曲面
把求解最优化问题想象成往一个曲面上扔一颗弹珠。这里的曲面为凸曲面,如上图所示,不论那颗弹珠落在曲面上的哪一个点,它最终都会自己滚到曲面的最低点处,也就是函数取最小值的那个点。
非凸曲面
那么非凸曲面的情况呢?正如你所看到的,随机地往曲面上扔一个弹珠,少数情况下弹珠能够滚到曲面的全局最低处。换句话说,就是在多数情况下,石头都只能滚到曲面的局部最低处。这种情况下,你该怎么处理?你会试图着朝某个方向把石头推到曲面上的另一个点吗?显然,这种情况比凸曲面的情况更加复杂。
弹珠的比喻很有意思,因为它跟一个叫做梯度下降的最优化算法的思想基本上是一样的。另一个求解最优化问题的方法就是使用众所周知的牛顿法。我鼓励感兴趣的读者去深入研究一下这些算法并且试着自己写代码实现它们。
4.总结
在这一部分,学习了凸集的概念和如何判定一个函数是否为凸函数。此外,最后我们举了弹珠的例子来简单明了的说明了为什么凸优化问题比非凸优化问题更加简单:因为凸优化问题中的局部极小值就是全局最小值。
机器学习系列(22)_SVM碎碎念part5:凸函数与优化相关推荐
- 机器学习系列(23)_SVM碎碎念part6:对偶和拉格朗日乘子
原文地址:SVM - Understanding the math - duality-lagrange-multipliers/ by Brandon Amos 感谢参与翻译同学:@Fox & ...
- 机器学习系列22:异常检测
https://www.toutiao.com/a6708617351643808269/ 2019-07-01 17:01:48 现在有一个网站,为了防止该网站被人恶意攻击,你采取了以下措施.给每个 ...
- 机器学习碎碎念:霍夫丁不等式
点击上方"AI有道",选择"设为星标" 关键时刻,第一时间送达! 红色石头每天碎碎念一些机器学习知识和概念,大家一起学习,每天进步一点点!喜欢的话别忘了文末点赞 ...
- 每月碎碎念 | 2019.08
Hi,这里是新开辟的"碎碎念"的世界. 这个区域作为记录心情的地方,把每日的所思所想所感所悟记录在这里,当做一个写日记的地方,每个月底汇总成一篇文章,只给我的朋友看. 不知不觉一个 ...
- 前端碎碎念 之 nextTick, setTimeout 以及 setImmediate 三者的执行顺序
『前端碎碎念』系列会记录我平时看书或者看文章遇到的问题,一般都是比较基础但是容易遗忘的知识点,你也可能会在面试中碰到. 我会查阅一些资料并可能加上自己的理解,来记录这些问题.更多文章请前往我的个人博客 ...
- 数据分析+数据挖掘暑期实习碎碎念
写在前面 在闺蜜的博客乱写一篇关于最近春招的心得! 先念念叨一点麻痹自我的鸡汤. 鸡汤说:要有最朴素的生活与最遥远的梦想,即使明日天寒地冻,路遥马亡. 鸡汤还说:慢慢走比较快:踏实一点,你想要的岁月都 ...
- 2018 年,我在朋友圈的碎碎念
阅读本文大概需要 3.8 分钟. 很多微信好友都知道,我朋友圈几乎一年 365 天输出,一方面我经常阅读,善于观察,有时候就在朋友圈随手记录一些思考与感悟,另一方面,通过输出倒逼输入的方式,逼自己持续 ...
- 每月碎碎念 | 2019.09
Hi,这里是新开辟的"碎碎念"的世界. 这个区域作为记录心情的地方,把每日的所思所想所感所悟记录在这里,当做一个写日记的地方,每个月底汇总成一篇文章,只给我的朋友看. 2019-9 ...
- ArcGIS 每天一个高级制图技巧:开篇碎碎念
# ArcGIS 每天一个高级制图技巧:开篇碎碎念 开篇说明 首先,在这个系列,我不会再写大片的教程和说明.碎片化的时代适合碎片化.精简的.易于理解的内容,所以在该系列中我就不会再长篇累牍的写作了. ...
最新文章
- C#GDI+图像处理
- c++入门之浅入浅出类——分享给很多想形象理解的人
- 今日arXiv精选 | 12篇EMNLP 2021最新论文
- 一块小饼干(Cookie)的故事-下篇
- python三菱_三菱机器人melfarxm.ocx控件的Python使用,MelfaRxMOCX,python,用法
- Python 装饰器详解(下)
- ho1365_共享力量的四种方法,而不是ho积
- Node.js抓取网页信息(cheerio网络爬虫)
- MySQL 性能优化神器 Explain 使用分析
- IDE、SATA、SCSI、SAS、FC、SSD 硬盘类型
- Unexpandable Clocks不可扩展时钟 UG903
- 云宏武汉大学国际软件学院桌面云
- 《网络攻防》实验九:web安全基础实践
- jQuery Ajax async=false异步改为同步时,导致浏览器假死的处理方法
- php发送邮件的方式,php 发送邮件几种方式
- Vue表单设计器的终极解决方案
- Spring Data JPA手动管理事务
- 2023.0125.1-edge浏览器与百分浏览器
- 微信发送视频不被压缩的方法
- 在连接里放<int:nid>获取参数 的nid值
热门文章
- microsoft exchange server 2007 mrm
- 攻防世界 简单的base编码
- 计算机毕设推荐基于微信小程序的自来水收费系统
- Netty私有协议栈 读书笔记
- 大学四年级(yuan)
- 让所有美术生头疼的素描静物,快看你画过没?
- SAA 心理素质差差的
- GPRS、433、Wifi、Zigbee模块概念和区别
- 湖南大学计算机软件开发毕业论文,湖南大学研究生学位论文_学位论文各页均加页眉,在版心上边线隔一行1 5磅的加粗、细双线(粗线在上),其上居_东城文库...
- STM32F103C8T6接入机智云平台,实现器件多点操控