from http://blog.csdn.net/tsq292978891/article/details/78619384

都是一种权值更新算法,类似于SGD算法,其中,RMSProp是RProp算法的改良版。

RProp算法

  1. 首先为各权重变化赋一个初始值,设定权重变化加速因子与减速因子。
  2. 在网络前馈迭代中当连续误差梯度符号不变时,采用加速策略,加快训练速度;当连续误差梯度符号变化时,采用减速策略,以期稳定收敛。
  3. 网络结合当前误差梯度符号与变化步长实现BP,同时,为了避免网络学习发生振荡或下溢,算法要求设定权重变化的上下限。

不同权值参数的梯度的数量级可能相差很大,因此很难找到一个全局的学习步长。 
靠参数梯度的符号,动态的调节学习步长 
适用于full-batch learning,不适用于mini-batch learning

缺点:不能应用于mini-batch learning中。 
原因:

假设有一个在线学习系统,batch==1,初始的学习步长较小,在其上应用prop算法。这里有十组训练数据,前九组都使得梯度符号与之前的梯度符号相同,那么学习步长就会增加九次;而第十次得来的梯度符号与之前的相反,那么学习步长就会减小一次。这样一个过程下来,学习步长会增长很多(增大了9次学习步长,只减小了一次学习步长),如果系统的训练数据集非常之大,那学习步长可能频繁的来回波动,这样肯定是不利于学习的。

改进版,rmsprop算法: 
rmsprop算法不再孤立地更新学习步长,而是联系之前的每一次梯度变化情况,具体如下。

  1. rmsprop算法给每一个权值一个变量MeanSquare(w,t)用来记录第t次更新步长时前t次的梯度平方的平均值。
  2. 然后再用第t次的梯度除上前t次的梯度的平方的平均值,得到学习步长的更新比例。
  3. 根据此比例去得到新的学习步长。如果当前得到的梯度为负,那学习步长就会减小一点点;如果当前得到的梯度为正,那学习步长就会增大一点点。

这样看来,rmsprop算法步长的更新更加缓和。 
这些算法并不能完全解决局部最小值问题,只是使得参数收敛的速度更快。针对是否能收敛到全局最优解,还与模型的初始化有关。

 
为了得到所需的全局优化算法。两种流行的全局优化算法是粒子群优化算法(PSO)和遗传算法(GA)。

最新文章

  1. 51nod 1643 小Q的家庭作业
  2. iOS越狱开发(一)
  3. [Xamarin] 關於SQLite 的操作 (转帖)
  4. Google Protocol Buffer 的使用和原理
  5. append some buttons to the standard datagrid pager bar
  6. BT5之网络配置
  7. 枚举在c与c++中定义的不同
  8. UVA 10820 - Send a Table 数论 (欧拉函数)
  9. POJ 3525 Most Distant Point from the Sea
  10. Qt浅谈之四十九俄罗斯方块(代码来自网络)
  11. web开发常用样式
  12. matlab 整局-部视知觉实验(读取excel点阵设计图替换数据)
  13. Mysql乱码问题总结
  14. 【XSY1515】【GDKOI2016】小学生数学题 组合数学
  15. 改xml
  16. Zabbix二次开发_02获取数据
  17. Spark RDD详解
  18. http正向代理与反向代理
  19. 怎样写SQL语句可以提高数据库的性能
  20. Java Web -- Servlet(5) 开发Servlet的三种方法、配置Servlet具体解释、Servlet的生命周期(2)

热门文章

  1. tmux 学习
  2. CTF—攻防练习之HTTP—SQl注入(get)
  3. Jmeter安装篇(win10)
  4. ugui多层解决方案
  5. 解决reportNG中文乱码(转:http://www.it610.com/article/3626590.htm)
  6. flask response 详解
  7. 洛谷 P2331 最大子矩阵 题解
  8. Python time strptime()方法 时间操作
  9. 一种在获取互斥锁陷入阻塞时可以被中断的 lock
  10. java线程捕获异常