哎。刚刚submit上paper比較心虚啊。无心学习。还是好好码码文字吧。

subgradient介绍

subgradient中文名叫次梯度。和梯度一样,全然能够多放梯度使用。至于为什么叫子梯度,是由于有一些凸函数是不可导的,没法用梯度。所以subgradient就在这里使用了。

注意到。子梯度也是求解凸函数的。仅仅是凸函数不是处处可导。

f:X→R是一个凸函数,X∈Rn是一个凸集。

若是f在x′处∇f(x′)可导。考虑一阶泰勒展开式:

f(x)≥f(x′)+∇(f(x′)T(x−x′),∀x∈X

能够得到f(x)的一个下届(f(x)是一个凸函数)

若是f(x)在x′处不可导,仍然。能够得到一个f(x)的下届

f(x)≥f(x′)+gT(x−x′),∀x∈X

这个g就叫做f(x)的子梯度。g∈Rn

非常明显。在一个点会有不止一个次梯度,在点x全部f(x)的次梯度集合叫做此微分∂f(x)

















我们能够看出,当f(x)是凸集而且在x附近有界时,∂f(x)是非空的,而且∂f(x)是一个闭凸集。

次梯度性质

∂f(x)={g}⇔f(x)可微并且g=∇f(x)

满足:

1)scaling:

∂(αf(x))=α∂f(x),if α>0

2)addition:

∂(f1(x)+f2(x))=∂fz(x)+∂f2(x)

3)point-wise maximum:f(x)=maxi=1,...,mfi(x)而且fi(x)是可微的,那么:

∂f(x)=Co{∇fi(x)∣fi(x)=f(x)}

即全部该点函数值等于最大值的函数的梯度的凸包。

在非约束最优化问题中。要求解一个凸函数f:Rn→R的最小值

x∗∈argminx∈Rnf(x)

非常显然,若是f可导。那么我们仅仅须要求解导数为0的点

f(x∗=minx∈Rn⇔0=∇f(x∗)

当f不可导的时候,上述条件就能够一般化成

f(x∗)=minx∈Rn⇔0∈∇f(x∗)

也即0满足次梯度的定义

f(x)≥f(x′)+0T(x−x′),∀x∈Rn

以下是次梯度法的一般方法:

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

一个不等式约束的凸二次优化问题能够表示为:

(w∗,b∗,ξ∗)=argminw,b,ξ[12||w||2+C∑i=1mξi]
s.t.       yi(wTxi+b)ξi≥1−ξi,   ≥0              i=1,⋯,m,i=1,⋯,m.

注意到ξi≥max(0,1−yi(wTxi+b)),而且当目标函数取得最优的时候,这里的等号是成立的,所以能够进行取代:

ξi=max(0,1−yi(wTxi+b))

所以就能够将这个二次悠哈问题改写成一个非约束凸优化问题

(w∗,b∗)=argminw,bf(w,b)=argminw,b[12||w||2f0(w,b)+C∑i=1mmax(0,1−yi(wTxi+b))fi(w,b)]

问题求解

由于

f0(w,b)=12||w||2

是可微的,而且

∂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)

w′(β)b′(β)=w−C∑i∈I0βiyixi−C∑i∈I−yixi=−C∑i∈I0βiyi−C∑i∈I−yi

优化中的subgradient方法的更多相关文章

  1. 拓扑优化中SIMP方法与水平集方法有何优缺点,水平集法变换到高维,不是更复杂了

    作者:周平章链接:https://www.zhihu.com/question/52008623/answer/187927508来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  2. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  3. jquery 中一些 特殊方法 的特殊使用 一览表

    cnblogs的页面, 一种是管理页面, 是随笔的列表 a full list of essays. 另一种是 首页. 要搜索文档的话, 就使用 "首页"的那种方式. 一个jque ...

  4. 优化PHP程序的方法(温故知新)

    1. If a method c++an be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化 ...

  5. Java String类中的intern()方法

    今天在看一本书的时候注意到一个String的intern()方法,平常没用过,只是见过这个方法,也没去仔细看过这个方法.所以今天看了一下.个人觉得给String类中加入这个方法可能是为了提升一点点性能 ...

  6. [转]优化PHP程序的方法

    1. If a method c++an be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化 ...

  7. 网站静态化处理—web前端优化—中(12)

    网站静态化处理—web前端优化—中(12) Web前端很多优化原则都是从如何提升网络通讯效率的角度提出的,但是这些原则使用的时候还是有很多陷阱在里面,如果我们不能深入理解这些优化原则背后所隐藏的技术原 ...

  8. 《JS权威指南学习总结--7.9 ES5中的数组方法》

    内容要点: ES5中定义了9个新的数组方法来遍历.映射.过滤.检测.简化和搜索数组. 概述:首先,大多数方法的第一个参数接收一个函数,并且对数组的每个元素(或一个元素)调用一次该函数. 如果是稀疏数组 ...

  9. MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?

    本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...

随机推荐

  1. require和import的区别

    require:是一种common协议,大家按照这个约定书写自己的代码,实现模块化. import:是ES6的模块语法实现.是语言自身的模块实现.

  2. VFS,super_block,inode,dentry—结构体图解

    总结: VFS只存在于内存中,它在系统启动时被创建,系统关闭时注销. VFS的作用就是屏蔽各类文件系统的差异,给用户.应用程序.甚至Linux其他管理模块提供统一的接口集合. 管理VFS数据结构的组成 ...

  3. 用django-cors-headers做跨域

    什么是CORS? CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,可以让Ajax实现跨域访问. 其实,在服务器的response header ...

  4. MySQL通过rpm安装及其单机多实例部署

    1. CentOS 下安装 MySQL Oracle 收购 MySQL 后,CentOS 为避免 MySQL 闭源的风险,改用 MySQL 的分支 MariaDB:MariaDB 完全兼容 MySQL ...

  5. .net/c#常用框架/中间件简介

    任务调度 Quartz.NET:Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允 许开发人员根据时间间隔 ...

  6. 2、图文讲解.NET CLR是什么

    大家首先要清楚的是,.NET平台与C#不是一回事.这点大家一定要明白,对开发人员来讲他有两个概念.第一,它是C#,VB.net等程序运行的平台.第二,它因为为这些语言提供了丰富的类库(称之为基类库), ...

  7. Adapter.notifyDataSetChanged()源码分析以及与ListView.setAdapter的区别

    一直很好奇,notifyDataSetChanged究竟是重绘了整个ListView还是只重绘了被修改的那些Item,它与重新设置适配器即调用setAdapter的区别在哪里?所以特地追踪了一下源码, ...

  8. 【BZOJ】1061: [Noi2008]志愿者招募

    题解 可能是世界上最裸的一个单纯形 (话说全幺模矩阵是啥我到现在都不知道) 假装我们已经看过了算导,或者xxx的论文,知道了单纯形是怎么实现的 扔一个blog走掉..https://www.cnblo ...

  9. 跟厂长学PHP7内核(一):发展史

    PHP1 1994年,一位名叫Rasmus lerdorf的兄台为了在网上展示自己的履历和网页流量的统计,用Perl开发了一套脚本,后来因与日俱增的需求无法得到满足,lerdorf便使用c语言进行了重 ...

  10. 新一代数据库TiDB在美团的实践

    1. 背景和现状 近几年,基于MySQL构建的传统关系型数据库服务,已经很难支撑美团业务的爆发式增长,这就促使我们去探索更合理的数据存储方案和实践新的运维方式.而随着分布式数据库大放异彩,美团DBA团 ...