优化中的subgradient方法
哎。刚刚submit上paper比較心虚啊。无心学习。还是好好码码文字吧。
subgradient介绍
subgradient中文名叫次梯度。和梯度一样,全然能够多放梯度使用。至于为什么叫子梯度,是由于有一些凸函数是不可导的,没法用梯度。所以subgradient就在这里使用了。
注意到。子梯度也是求解凸函数的。仅仅是凸函数不是处处可导。
f:X→R是一个凸函数,X∈Rn是一个凸集。
若是f在x′处∇f(x′)可导。考虑一阶泰勒展开式:
能够得到f(x)的一个下届(f(x)是一个凸函数)
若是f(x)在x′处不可导,仍然。能够得到一个f(x)的下届
这个g就叫做f(x)的子梯度。g∈Rn
非常明显。在一个点会有不止一个次梯度,在点x全部f(x)的次梯度集合叫做此微分∂f(x)
我们能够看出,当f(x)是凸集而且在x附近有界时,∂f(x)是非空的,而且∂f(x)是一个闭凸集。
次梯度性质
满足:
1)scaling:
2)addition:
3)point-wise maximum:f(x)=maxi=1,...,mfi(x)而且fi(x)是可微的,那么:
即全部该点函数值等于最大值的函数的梯度的凸包。
在非约束最优化问题中。要求解一个凸函数f:Rn→R的最小值
非常显然,若是f可导。那么我们仅仅须要求解导数为0的点
当f不可导的时候,上述条件就能够一般化成
也即0满足次梯度的定义
以下是次梯度法的一般方法:
1.t=1选择有限的正的迭代步长{αt}∞t=1
2.计算一个次梯度g∈∂f(xt)
3.更新xt+1=xt−αtgt
4.若是算法没有收敛。则t=t+1返回第二步继续计算
次梯度方法性质:
1.简单通用性:就是说第二步中,∂f(xt)不论什么一个次梯度都是能够的.
2.收敛性:仅仅要选择的步长合适。总会收敛的
3.收敛慢:须要大量的迭代才干收敛
4.非单调收敛:−gt不须要是下降方向。在这样的情况下,不能使用线性搜索选择合适的αt
5.没有非常好的停止准则
对于不同步长的序列的收敛结果
最好还是设ftbest=min{f(x1),..,f(xt)}是t次迭代中的最优结果
1.步长和不可消时(Non-summable diminishing step size):
limt→∞αt=0 而且∑∞t=1αt==∞
这样的情况能够收敛到最优解:limt→∞ftbest−f(x∗)=0
2.Constant step size:
αt=γ,where γ>0
收敛到次优解:limt→∞ftbest−f(x∗)≤αG2/2
3.Constant step length:
αt=γ||gt||(i.e. ||xt+1−xt||=γ),||g||≤G,∀g∈∂f
能够收敛到次优解limt→∞ftbest−f(x∗)≤γG/2
4.Polyak’s rule: αt=f(xt)−f(x∗)||gt||2
若是最优值f(x∗)可知则能够用这样的方法。
不等式约束的凸二次优化问题
问题formulate
一个不等式约束的凸二次优化问题能够表示为:
注意到ξi≥max(0,1−yi(wTxi+b)),而且当目标函数取得最优的时候,这里的等号是成立的,所以能够进行取代:
ξi=max(0,1−yi(wTxi+b))
所以就能够将这个二次悠哈问题改写成一个非约束凸优化问题
问题求解
由于
是可微的,而且
∂wf0(w,b)=w, ∂bf0(w,b)=0
函数fi(w,b)=max0,1−yi(wTxi+b)是一个点最大值。所以其次微分能够写作,全部active function的梯度的convex combination
| i-th function | ∂wfi(w,b) | ∂bfi(w,b) |
|---|---|---|
| I+={i|yi(wTxi+b)>1} | 0 | 0 |
| I0={i|yi(wTxi+b)=1} | Co{0,−yixi} | Co{0,−yi} |
| I−={i|yi(wTxi+b)<1} | −yixi | −yi |
所以次微分能够写作∂f(w,b)=∂f0(w,b)+C∑mi=1∂fi(w,b)能够使用參数话的表示方法,设0≤βi≤1,i∈I0,所以就有g=[w′b′]∈∂f(x)
优化中的subgradient方法的更多相关文章
- 拓扑优化中SIMP方法与水平集方法有何优缺点,水平集法变换到高维,不是更复杂了
作者:周平章链接:https://www.zhihu.com/question/52008623/answer/187927508来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...
- jquery 中一些 特殊方法 的特殊使用 一览表
cnblogs的页面, 一种是管理页面, 是随笔的列表 a full list of essays. 另一种是 首页. 要搜索文档的话, 就使用 "首页"的那种方式. 一个jque ...
- 优化PHP程序的方法(温故知新)
1. If a method c++an be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化 ...
- Java String类中的intern()方法
今天在看一本书的时候注意到一个String的intern()方法,平常没用过,只是见过这个方法,也没去仔细看过这个方法.所以今天看了一下.个人觉得给String类中加入这个方法可能是为了提升一点点性能 ...
- [转]优化PHP程序的方法
1. If a method c++an be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化 ...
- 网站静态化处理—web前端优化—中(12)
网站静态化处理—web前端优化—中(12) Web前端很多优化原则都是从如何提升网络通讯效率的角度提出的,但是这些原则使用的时候还是有很多陷阱在里面,如果我们不能深入理解这些优化原则背后所隐藏的技术原 ...
- 《JS权威指南学习总结--7.9 ES5中的数组方法》
内容要点: ES5中定义了9个新的数组方法来遍历.映射.过滤.检测.简化和搜索数组. 概述:首先,大多数方法的第一个参数接收一个函数,并且对数组的每个元素(或一个元素)调用一次该函数. 如果是稀疏数组 ...
- MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?
本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...
随机推荐
- Ubuntu下apache2启动、停止、重启、配置
Linux系统为Ubuntu 一.Start Apache 2 Server /启动apache服务# /etc/init.d/apache2 startor$ sudo /etc/init.d/ap ...
- js字符串基本操作
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtm ...
- Ubuntu 17.10开启 root 登陆
使用过 Ubuntu 的人都知道,Ubuntu 默认是不能以 root 登陆的,但是我们是不是就完全不能使用 root 进行登陆了呢?当然不是,只是我们需要做一些设置.而 Ubuntu 17.10 和 ...
- Java之反转排序
顾名思义,反转排序就是以相反的顺序把原来的数组内容重新进行排序.反转排序算法在我们的程序开发中也是经常用到的.而反转排序的基本思想也很简单,就是把数组最后一个元素与第一个元素进行交换,倒数第二个与第二 ...
- asp.net 微信公众号源码
需要源码,请加QQ:858-048-581 功能菜单 该源码功能十分的全面,具体介绍如下:1.菜单回复:微信自定义回复.关注时回复.默认回复.文本回复.图文回复.语音回复. 请求回复记录.LBS位置回 ...
- day6 subprocess模块、logging模块
logging模块 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储 ...
- 【51nod】1655 染色问题
题解 首先每个颜色出现的次数应该是一样的 \(\frac{C_{n}^{2}}{n} = \frac{n - 1}{2}\) 所以n如果是偶数那么就无解了 然后我们需要让每个点连颜色不同的四条边 只要 ...
- thinkphp5.0与thinkphp3.2之间的区别
5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规 ...
- thinkphp调整框架核心目录think的位置
thinkphp的核心目录即框架文件可以放在项目之外的目录,这点手册上有提到,放在项目之外的地方可以方便其他项目共用一个框架文件. 在入口文件的index.php中,在导入框架目录这一行,可以直接修改 ...
- Spark入门2(Spark简析)
一.Spark核心概念-RDD RDD是弹性分布式数据集,一个RDD由多个partition构成,一个partition对应一个task.RDD的操作分为两种:Trasformation(把一个RDD ...