优化中的subgradient方法

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

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?)可知则可以用这种方法。

时间: 2024-10-12 08:30:30

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

普林斯顿公开课 算法1-10:并查集-优化的快速合并方法

应用 渗透问题 游戏中会用到. 动态连接 最近共同祖先 等价有限状态机 物理学Hoshen-Kopelman算法:就是对网格中的像素进行分块 Hinley-Milner多态类型推断 Kruskai最小生成树 Fortran等价语句编译 形态学开闭属性 Matlab中关于图像处理的bwlabel函数 渗透问题 一个N×N的矩阵,判断顶部和底部是否连通就是渗透问题. 下图中左侧的矩阵能渗透,右侧矩阵不能渗透. 渗透问题在电学.流体力学.社会交际中都有应用. 在游戏中可能需要生成一张地图,但是作为地图

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

本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的方案,因为现实中很多情况都不是固定不变的,能总结出来通用性的做法或者说是规律,是要考虑非常多的场景的,同时,面对能够达到优化的方式要追究其原因,同样的做法,换了个场景,达不到优化效果的,还要追究其原因.个人对此场景在不用情况表示怀疑,然后自己测试了一把,果然发现一些问题,同时也证实了一些预期的想法.

优化MYSQL数据库的方法

1.选取最适用的字段属性 尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM 2.使用连接(JOIN)来代替子查询:  a.删除没有任何订单客户 ELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo) b.提取所有没有订单客户 SELECT FROM customerinfo WHERE customerid NOT in(SELECT cust

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

1. If a method c++an be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化,就对它做静态声明.速率可提升至4倍. 2. echo is faster than print. echo 比 print 快. 3. Use echo's multiple parameters instead of string concatenation. 使用echo的多重参数(译注:指用

机器学习(十三)——机器学习中的矩阵方法(3)病态矩阵、协同过滤的ALS算法(1)

http://antkillerfarm.github.io/ 向量的范数(续) 范数可用符号∥x∥λ表示.常用的有: ∥x∥1=|x1|+?+|xn| ∥x∥2=x21+?+x2n???????????√ ∥x∥∞=max(|x1|,-,|xn|) 这里不做解释的给出如下示意图: 其中,0范数表示向量中非0元素的个数.上图中的图形被称为lp ball.表征在同一范数条件下,具有相同距离的点的集合. 范数满足如下不等式: ∥A+B∥≤∥A∥+∥B∥(三角不等式) 向量范数推广可得到矩阵范数.某些

浅析网站结构优化中导航系统的设置技巧

站长们,你们对于网站结构优化中导航系统的设置知多少呢?导航系统的设置的好坏对于网站结构的优化有着相当大的影响.咱们的导航做的目标越清晰,越符合用户的体验度.人性化一点来说,网站导航就跟汽车导航的作用差不多,指明目标,所以我们要从两个方面考虑如何导航系统. 从用户的角度来看,第一点用户可能会从任何一个内页进入到咱们的网站,导航系统要做的就是随时清除的让用户知道自己在网站的哪个位置.因为点开多个网站的内页后,用户自己也已经晕了,不知道自己是怎么点进这个页面的.所以,我们在设计的时候最好统一页面的风格

mysql的MyISAM 和 InnoDB 的区别?优化MYSQL数据库的方法?

MyISAM 和 InnoDB 的基本区别 1.InnoDB不支持FULLTEXT类型的索引. 2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可.注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的. 3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他

java.util.ComparableTimSort中的sort()方法简单分析

TimSort算法是一种起源于归并排序和插入排序的混合排序算法,设计初衷是为了在真实世界中的各种数据中能够有较好的性能. 该算法最初是由Tim Peters于2002年在Python语言中提出的. TimSort 是一个归并排序做了大量优化的版本号. 对归并排序排在已经反向排好序的输入时表现O(n2)的特点做了特别优化.对已经正向排好序的输入降低回溯.对两种情况混合(一会升序.一会降序)的输入处理比較好. 在jdk1.7之后.Arrays类中的sort方法有一个分支推断,当LegacyMerge

Oracle SQL优化一(常见方法)

1.表访问方式优化: a)普通表优先“Index Lookup 索引扫描”,避免全表扫描 大多数场景下,通过“Index Lookup 索引扫描”要比“Full Table Scan (FTS) 全表扫描”效率要高的多.在编写SQL时,为了保证查询能够使用索引,需要避免出现如下场景: is null 和 is not null 在oracle中null是不能够作为索引的,如果某列数据中有“null”,不要在该列上创建索引,即使创建,也不会提高查询性能. 而在SQL语句中,如果使用is null和