首页 > 其他分享 >RL 学习曲线怎么看?

RL 学习曲线怎么看?

时间:2022-08-31 11:36:45浏览次数:90  
标签:怎么 训练 曲线 学习 学习曲线 RL 最优 强化

https://zhuanlan.zhihu.com/p/342919579

   

   

   

好用的强化学习算法是?

 

超参数很容易调整或确定。SAC的 reward scaling 可以在训练前直接推算出来。PPO超参数的细微改变不会极大地影响训练

训练快,收敛稳、得分高。看下面的学习曲线 learning curve

 

弯弯曲曲的学习曲线很正常,图片截取自 Ape-X 与 SAC 论文

   

   

   

   

学习曲线怎么看?

横轴可以是训练所需的步数(智能体与环境交互的次数)、训练轮数(达到固定步数、失败、通关 就终止终止这一轮的训练episode)、训练耗时(这个指标还与设备性能有关)

   

纵轴可以是 每轮得分( 每一轮的每一步的reward 加起来,episode return),对于没有终止状态的任务,可以计算某个时间窗口内reward之和

   

有时候还有用 plt.fill_between 之类的上下std画出来的波动范围,用于让崎岖的曲线更好看一点:先选择某一段数据,然后计算它的均值,再把它的标准差画出来,甚至可以画出它的上下偏差(琴形图)。如果同一个策略在环境随机重置后得分相差很大,那么就需要多测几次。

   

   

   

   

好的算法的学习曲线应该是?

训练快,曲线越快达到某个目标分数 target reward (需要多测几次的结果才有说服力)

收敛稳,曲线后期不抖动(曲线在前期剧烈抖动是可以接受的)

得分高,曲线的最高点可以达到很高(即便曲线后期下降地很厉害也没关系,因为我们可以保存整个训练期间"平均得分"最高的模型)

   

一般地,学习曲线长这个样子↙,过于平滑的学习曲线↘应该激起怀疑:

 

对比诚实的DQN训练结果,左图为Nature 2015 DQN的诚实结果。右图为黄鸿基的不诚实结果。

上图右侧粉色曲线必定是造假的结果,而且极为拙劣:造假者因为没有入门强化学习(甚至没入门机器学习)而画出来这样的曲线。审稿人也没有入门强化学习。若想了解更多请移步那个知乎问题,不要在这里讨论

知乎问题:如何看待南京邮电大学学生(黄鸿基)2020申请到加州理工EE系唯一一个大陆PhD? (加州理工是好学校)

搜索引擎"南京邮电大学 黄鸿基 冒充北大 加州理工 光滑的曲线"(南京邮电是好学校)

造假论文 Deep Reinforcement Learning for UAV Navigation Through Massive MIMO Technique ,投了 IEEE Transactions on Vehicular Technology (IEEE是好期刊)

叶强:《强化学习》第三讲 动态规划寻找最优策略 :"本讲着重讲解了利用动态规划来进行强化学习,具体是进行强化学习中的"规划",也就是在已知模型的基础上判断一个策略的价值函数,并在此基础上寻找到最优的策略和最优价值函数,或者直接寻找最优策略和最优价值函数。本讲是整个强化学习课程核心内容的引子。"

很多刚入门的会理解错加粗的话,换我来解释:强化学习会以"寻找最优策略"为目标,试图找出最优策略。「试图」这个词很重要,实际使用中,增加训练量不一定保证学习曲线会一直上升,甚至不能保证上升趋势。上面黄鸿基由于缺乏对DRL的理解,导致它伪造的曲线后期是平的(这个人没理解什么叫收敛)。下图截取自Parametrized DQN,可以看到,在一个不简单的任务中,背景浅色的曲线非常波折,得平滑后才能得到有较好可视化效果的曲线。

 

截图来自 Parametrized DQN 的图5,这是正常的learning curve

   

   

标签:怎么,训练,曲线,学习,学习曲线,RL,最优,强化
From: https://www.cnblogs.com/libxing/p/16642401.html

相关文章

  • 222怎么写一个自己的gym环境
    首先我按照遗传算法纯python写好了强化学习算法只要把这个移植到gym框架就好  主要看了这两个网址https://blog.csdn.net/weixin_44597347/article/details/12430......
  • RL 视频讲什么训练效果是好的
    https://www.bilibili.com/video/BV1ca41187qB?p=3  17分55秒    什么效果比较好无论是奖励还是步数都是缓缓的上升         如果奖励......
  • kafka详解(一)--kafka是什么及怎么用
    kafka是什么在回答这个问题之前,我们需要先了解另一个东西--eventstreaming。什么是eventstreaming我觉得,eventstreaming是一个动态的概念,它描述了一个个event("s......
  • 【django学习-03】URLS(路由系统)
    一:URL配置(URLconf)就像Django所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对......
  • Day02_Hello World
    编写代码publicclassHello{ publicstaticvoidmain(String[]args){ System.out.print("Hello,World!"); }}运行HelloWorld......
  • Day04写程序hello world
    Helloworld随便新建一个文件夹,存放代码新建一个java文件文件后缀名为javaHello.java【注意点】系统可能没有显示文件后缀名,我们需要手动打开编写代码......
  • vsftp日志xferlog格式分析
    1、开始vsftp记录日志。修改/etc/vsftpd/vsftpd.conf如下:xferlog_enable=YESxferlog_std_format=YESxferlog_file=/var/log/xferlogFTP服务器的日志设置,可以通过修改主......
  • yum出错Error: Cannot find a valid baseurl for repo: base
    最近在安装mysql的rpm包时,出现了一个问题,当使用命令:rpm-iMysql-server-xxxx.rpm时出现以下错误: error:Faileddependencies:ld-linux.so.2isneededbyMySql-serv......
  • Python自学教程12-类和对象怎么用
    Python是一门现代化的编程语言,也是一门面向对象的编程语言。现代编程语言几乎都支持面向对象编程,面向对象编程是最有效的软件编写方法之一。你可以用类和对象来表示现实当......
  • Rust 适合傻瓜、白痴、初学者和其他所有人! — 第 1 部分:Hello World 和货物
    Rust适合傻瓜、白痴、初学者和其他所有人!—第1部分:HelloWorld和货物介绍再次问候铁锈爱好者。如果您还没有查看上一篇文章,如果您想简要了解Rust并设置您的编程......