机器学习-求解与优化

【算法】一篇入门之-RMSProp算法

作者 : 老饼 发表日期 : 2022-10-30 23:02:39 更新日期 : 2025-06-12 04:45:22
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



RMSProp算法(均方根传播,Root Mean Square Propagation‌)是2012年提出的一种优化算法

它是对AdaGrad算法的一种优化与改进,旨在解决AdaGrad算法后期学习率消失的问题

本文介绍RMSProp算法的思想、计算公式、算法流程,并用一个简单的例子展示RMSProp算法的代码实现





      01. RMSProp算法介绍      




本节介绍RMSProp算法的算法流程




    RMSProp算法是什么     


RMSProp算法(均方根传播,Root Mean Square Propagation‌)是2012年提出的一种优化算法
RMSProp算法是对AdaGrad算法的一种改进,它旨在解决AdaGrad算法学习率消失的问题
记待优化的第个参数为,RMSProp算法的更新公式如下:
 
           
其中,:参数的梯度            
                :衰减系数,取值范围为[0,1]
                                     :初始值为0,它实际就是的累计平方和
 :学习率               
                                     :一个极小的常数,它的作用避免分母为0 
可以看到,RMSProp就是在AdaGrad算法的基础上,对的更新公式进行了修改
RMSProp通过引入衰减系数来避免的无限增大,从而解决AdaGrad算法中学习率消失的问题








    02. RMSProp算法-代码实现    




本节展示RMSProp算法的具体代码实现




    RMSProp算法-代码实现    


下面使用RMSProp算法来求函数的最小值
  由于算法需要使用目标函数的梯度,所以需要先算出梯度,如下:
  ,
  
  RMSProp算法的具体实现代码如下:
import numpy as np
x     = np.array([0,0])                                                        # 初始化x
lr    = 0.1                                                                    # 设置学习率
gamma = 0.9                                                                    # 设置衰减系数
s     = np.array([0,0])                                                        # 初始化梯度累计量
esp   = 0.000001                                                               # 很小的常数
for i in range(100):                                                           # 最大迭代100次
    g = np.array([2*x[0]-4, 2*x[1]-6])                                         # 计算x的梯度  
    s  = gamma*s + (1-gamma)*g*g                                               # 更新梯度累计量
    x  = x - lr/np.sqrt(s+esp)*g                                               # 调整x
    print("第",i+1,"轮迭代:x=[",x[0],",",x[1],"],y=",(x[0]-2)**2+(x[1]-3)**2)  # 打印当前结果
    if((max(abs(g))< 0.0001) ):break                                           # 如果梯度过小,则退出迭代
运行结果如下:
 RMSProp算法代码实现结果 
可以看到,经过了59轮迭代,所得到解已经非常接近真实极小解[2,3] 






好了,以上就是RMSProp算法的简单介绍了~









 End 





图标 评论
添加评论