zoukankan      html  css  js  c++  java
  • 转 弹性反向传播(RProp)和均方根反向传播(RMSProp)

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

  • 相关阅读:
    CSS3 动画--- CSS3 animation
    CSS3 3D变形 transform---rotateX(), rotateY(), rotateZ(), 透视(perspective)
    CSS3 2D变形 transform---移动 translate(x, y), 缩放 scale(x, y), 旋转 rotate(deg), transform-origin, 倾斜 skew(deg, deg)
    CSS3 过渡---transition
    情人节用Python智能聊天机器人的实现|制作一个虚拟恋人
    Python基础知识详解 从入门到精通(七)类与对象
    Python核心编程:8个实践性建议
    给Python初学者的一些编程技巧
    30分钟编写一个抓取 Unsplash 图片的 Python爬虫
    Python反编译调用有道翻译(附完整代码)
  • 原文地址:https://www.cnblogs.com/mdumpling/p/8046619.html
Copyright © 2011-2022 走看看