注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

HT·生活

123

 
 
 

日志

 
 

一些机器学习优化算法(面试的时候总是问)  

2015-10-19 17:20:25|  分类: Deep Learning |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一些变量定义

:表示t时刻的更新量

:待优化的函数在t时刻的倒数

:待优化的函数在t时刻的二阶倒数

:表示学习率

:表示常数,防止分母为0

 

  1. 普通的SGD(stochastic gradient descent)

    更新公式

    

    

  1. 带冲量的SGD

    相当于,当前的梯度不仅包含当前的带优化函数一阶导数,还包括前一个时刻的一阶导数,更新公式如下

    

    

 

  1. 带Nesterov 冲量的SGD

相当于,更新的时候用的不是当前的计算的梯度,而且经过中间t+0.5时刻的一个纠正梯度,更新公式如下(后面一项是冲量)

 

  1. 牛顿法

普通的SGD用到的是一阶导数(也就是一阶平面来拟合损失函数),牛顿法还用到了二阶导数,更新公式如下

说明:牛顿法在非凸下不能保证梯度下降,没有全局收敛性,对初值的要求也比较敏感,特别容易收敛到局部最小值。对于可以理解为自适应的步长,相当于坡的陡度越大走的step越小,坡的陡度越小,走的step越大。

  1. Adagrad(adaptive gradient)

这个方法就是把以前1-t时刻的梯度信息也用到当前参数更新中,然后能够自适应地调整学习的步长,也就是说调参比较简单,相比其他方法而言。更新公式如下

第一个公式有一些变种,可以变成adadelta等等方法,本身下面的开方也可求和,加上衰减因子等等。是为了防止下面的分母为0。这个方法和RMSprop不知道什么区别,感觉就是在下面梯度平方求和的时候加了一些系数。

  1. 共轭梯度法(Conjugate Gradient)

共轭方向法是介于最速下降法与牛顿法之间的一个方法, 它仅需利用一阶导数信息, 但克服了最速下降法收敛慢的缺点, 又避免了存储和计算牛顿法所需要的二阶导数信息. 共轭方向法是从研究二次函数的极小化产生的, 但是它可以推广到处理非二次函数的极小化问题. 最典型的共轭方向法是共轭梯度法. 而拟牛顿法也是共轭方向法的一种。

这种方法利用了向量组"共轭"的性质,下面描述一下该方法的步骤

基本思想,将共轭性和最速下降方向结合,利用已知的迭代点处的梯度方向构造一组共轭方向,并且按照此方向搜索,求出函数的极小值。

第一步:任意取初始点,第一个搜索方向为 ;

第二步:设已求得点为,如果,则令

        下一个搜索方向

        这个时候就需要确定,根据假设关于A共轭,所以有

    

        所以

优点:不需要考虑步长的设置。

 

 

参考:http://jacoxu.com/?p=242

  评论这张
 
阅读(206)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017