from http://blog.csdn.net/tsq292978891/article/details/78619384
都是一种权值更新算法,类似于SGD算法,其中,RMSProp是RProp算法的改良版。
RProp算法
- 首先为各权重变化赋一个初始值,设定权重变化加速因子与减速因子。
- 在网络前馈迭代中当连续误差梯度符号不变时,采用加速策略,加快训练速度;当连续误差梯度符号变化时,采用减速策略,以期稳定收敛。
- 网络结合当前误差梯度符号与变化步长实现BP,同时,为了避免网络学习发生振荡或下溢,算法要求设定权重变化的上下限。
不同权值参数的梯度的数量级可能相差很大,因此很难找到一个全局的学习步长。
靠参数梯度的符号,动态的调节学习步长
适用于full-batch learning,不适用于mini-batch learning
缺点:不能应用于mini-batch learning中。
原因:
假设有一个在线学习系统,batch==1,初始的学习步长较小,在其上应用prop算法。这里有十组训练数据,前九组都使得梯度符号与之前的梯度符号相同,那么学习步长就会增加九次;而第十次得来的梯度符号与之前的相反,那么学习步长就会减小一次。这样一个过程下来,学习步长会增长很多(增大了9次学习步长,只减小了一次学习步长),如果系统的训练数据集非常之大,那学习步长可能频繁的来回波动,这样肯定是不利于学习的。
改进版,rmsprop算法:
rmsprop算法不再孤立地更新学习步长,而是联系之前的每一次梯度变化情况,具体如下。
- rmsprop算法给每一个权值一个变量MeanSquare(w,t)用来记录第t次更新步长时前t次的梯度平方的平均值。
- 然后再用第t次的梯度除上前t次的梯度的平方的平均值,得到学习步长的更新比例。
- 根据此比例去得到新的学习步长。如果当前得到的梯度为负,那学习步长就会减小一点点;如果当前得到的梯度为正,那学习步长就会增大一点点。
这样看来,rmsprop算法步长的更新更加缓和。
这些算法并不能完全解决局部最小值问题,只是使得参数收敛的速度更快。针对是否能收敛到全局最优解,还与模型的初始化有关。
为了得到所需的全局优化算法。两种流行的全局优化算法是粒子群优化算法(PSO)和遗传算法(GA)。