强化学习论文《Deep Reinforcement Learning that Matters》笔记

news2024/11/23 20:57:18

文章目录

    • 1. 简介
    • 2. 实验分析
      • 超参数
      • 网络架构
      • Reward Scale
      • Random Seeds and Trails
      • Environment
      • Codebases
    • 3. Reporting Evaluation Metrics
      • Online view vs. Policy Optimization
      • Confidence Bounds
      • Power Analysis
      • Significance
    • 4. 结论
    • 5. 参考资料

1. 简介

这篇2017年的论文 是强化学习领域的经典论文,也被称为劝退文,在自己的强化学习试验中也有很多困惑,就想把这篇论文读一读。

论文摘要翻译:近年来,深度强化学习 (RL) 在解决各个领域的挑战性问题方面取得了重大进展。复现现有工作并准确判断新方法提供的改进对于维持这一进展至关重要。不幸的是,复现最先进的深度 RL 方法的结果不太直接。特别是,标准基准环境中的不确定性和方法本身固有的方差,会使报告的结果难以解释。如果没有显着性指标和更严格的实验报告标准化,很难确定对之前SOTA的改进是否有意义。在本文中,我们研究了可复现性、适当的实验技术和报告程序所带来的挑战。我们说明了与公共基线比较时报告指标和结果的可变性,并给出使深度 RL 的未来结果更具可复现性的指南。通过最大限度地减少因不可重复且容易被误解的结果而造成的浪费精力,希望我们能够推动讨论如何确保领域的持续进展。

为了清晰起见,论文将实验聚焦在策略梯度(policy gradient, PG)方法的连续控制上。

论文比较了几种无模型的PG算法:

  • TRPO (Trust Region Policy Optimization)
  • DDPG (Deep Deterministic Policy Gradients)
  • PPO (Deep Deterministic Policy Gradient)
  • ACKTR (Actor Critic using Kronecker-Factored Trust Region)

2. 实验分析

作者们对影响SOTA RL方法复现性的因素提出了几个问题,并针对这些问题做了一系列的实验。为了保证公平性每个评估都使用不同的随机种子的做了五次试验(种子集对于所有的试验是一样的)

超参数

Q:超参数设置对基线性能的影响有多大?

调优后的超参数在许多算法获得最佳结果方面发挥着重要作用,但是相关文献中最佳超参数配置的选择往往不一样,选择的值范围也没有报道。而不良的超参数选择不利于与基线算法的公平比较。

网络架构

Q:对策略函数和价值函数的网络架构的选择如何影响性能?

  • 比较了文献中常用的三种网络架构:(64,64), (100, 50,25), (400, 300)。三种激活函数:tanh、ReLU、Leaky Relu。

  • 实验结果表明激活函数的调整对于结果的影响很大,并且在不同的算法和环境中的效果不一致。

  • 这种不一致表明了网络架构与算法方法之间的相互关联性。 例如,使用带有 PPO 的大型网络可能需要调整其他超参数,例如信任区域裁剪或学习率以补偿架构变化。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Reward Scale

Q: reward scale 如何影响结果?为什么reward rescaling 被使用?

  • reward scale是指对环境给出的奖励成一个系数,使奖励变成 r ^ = r σ ^ \hat{r} = r \hat{\sigma} r^=rσ^
  • 在基于梯度的方法中,大且稀疏的输出规模可能会导致学习饱和和效率低下的问题,因为在基于动作价值函数的方法如DDPG中, clipping 或 rescaling rewards 可以压缩估计期望回报的空间。
  • reward rescaling也对结果有很大的影响,但是对不同的环境和scaling value是不一致的.
  • layer normalization对reward rescaling的效果有影响

在这里插入图片描述

Random Seeds and Trails

Q:随机种子对性能影响很大吗?可以通过平均适合次数的试验来得到结果吗?

  • 进行10次试验,这10次试验只有随机种子不同,然后将它们分成2个组,再平均两个组的结果,如下图。算法的结果是很不一样的。

  • 仅改变随机种子,每一次运行的方差就可以创建明显不同的分布了

在这里插入图片描述

Environment

Q:环境特性如何影响RL算法的性能呢?

  • 使用的环境是OpenAI Gym中的Hopper-v1, HalfCheetah-v1, Swimmer-v1 and Walker2d-v1

  • 算法在不同的环境中的表现是不一样的,在所有环境中都表现最好的算法是不明确的。

  • 在下图中,DDPG算法在稳定的环境的表现中最好,但是在不稳定的环境中性能急剧下降。

  • 从TRPO在Swimmer-v1环境中陷入局部最优的例子,说明不仅要展示回报,还要展示所学策略的实际动作。入股不了解评估结果表明的内容,则可能会报告误导性结果,这些结果实际上只是优化局部最优,而不是期望的行为。

在这里插入图片描述

Codebases

Q: 常用的baseline实现是可比较的吗?

  • 不同实现的差异对性能有明显的影响,在前面图片里的表格1和表格2以及下面的图片中可以看出。
    在这里插入图片描述

3. Reporting Evaluation Metrics

实践中,一般RL 算法的评估是通过展示平均累积奖励(平均回报)的图片或表格。也会通过在固定时间步内的最大奖励来评估。

因为算法的不稳定性,使用最大回报来评估显然对于公平的比较来说是不够的。因为随机种子和试验次数未知,比较平均回报也可能是有误导的。而与置信区间结合时,在足够多的试验中,可能可以做出明智的决定,所以作者们研究了机器学习中的boostraping 和显著性试验来评估算法性能。

Online view vs. Policy Optimization

  • 在RL的online view 中,agent会在整个学习过程中优化回报,不必等到一个轨迹的结束。在这个视角下,评估可以使用整个学习过程中的平均累积奖励。
  • 在policy optimization中,在整个任务轨迹的长度中使用单个目标策略来决定该目标可以获得的平均回报。

论文使用policy optimization,但是方法对于online view也适用

Confidence Bounds

  • 一个bootstrap 估计器是通过有放回的多次采样来产生统计相关的均值和置信区间
  • 下面图片中的表格3展示了boostrap均值和95%置信区间
  • 发现TRPO和PPO在小的置信区间最稳定的。
  • 如果置信区间非常大,进行更多的实验次数可能是有必要的(增加样本)

在这里插入图片描述

Power Analysis

  • power analysis 是决定是否需要更多样本的一种方法
  • 试验的结果说明在不稳定的实验中,需要更多的样本,而在小样本的稳定试验中,确实不需要更多的样本。

Significance

  • 在监督学习中,在比较机器学习结果时,会讨论k-fold t-test, corrected resampled t-test等,但是一些假设可能在强化学习中不满足。
  • 论文中还是考虑了一些指标:the simple 2-sample t-test、 the Kolmogorov-Smirnov test 、 bootstrap percent differences with 95% confidence intervals。实验结果是符合作者预期的。

4. 结论

Q:从论文实验有什么建议呢?

  • 超参数,通过标准的超参数搜索找到至少与基线算法的性能相匹配的参数很重要
  • 用于比较的新基线算法实现应该与原始代码库结果相匹配
  • 使用不同的随机种子进行多次试验
  • 进行适当的显著性试验以确定较高的平均回报是否实际上代表更好的性能很重要
  • 进行可复现试验最重要的步骤是报告比较的基线方法和新方法的所有超参数、实现细节、实验设置和评估方法。

5. 参考资料

  1. Henderson, Peter, Riashat Islam, Philip Bachman, Joelle Pineau, Doina Precup, and David Meger. 2022. “Deep Reinforcement Learning That Matters.” Proceedings of the AAAI Conference on Artificial Intelligence, June. doi:10.1609/aaai.v32i1.11694.
  2. 论文代码
  3. https://www.jiqizhixin.com/articles/2017-09-22-3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PHP】phpstudy添加的网站,访问出现 嗯… 无法访问此页面

使用phpstudy创建网站,只有localhost可以访问, 其他所有网站无法访问,可能是你的账户没有修改vhost的权限 找到 C:\Windows\System32\drivers\etc下的vhost文件, 1、右键属性 将只读去掉 2、把用户对此文件的控制权限全部勾上 …

解决直播间源码音视频不同步问题的有效方式

随着网络技术的发展和移动设备的普及,电视、电脑、手机等数码产品越来越智能,我们不管是在家或是在外面都可以运用不同的数码产品去看剧或是短视频等,但可能很多人遇到过这样一种情况:当我们在看剧或是短视频的时候,可…

微信小程序可输入弹窗

addWhite() {wx.showModal({title: 添加白名单,editable: true, // 可输入content: ,complete: (res) > {if (res.confirm) {if (!res.content) { // 输入的值wx.showToast({title: 请填写白名单,icon: error})this.addWhite()}else {// 调接口}}}})},

Linux命令-按照与使用(17)(转载)解决同一台服务器上部署多个tomcat的同一个项目session冲突问题...

———————————————— 版权声明:本文为CSDN博主「strive_or_die」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/strive_or_die/article/details/103191546…

EXCEL模板如何自定义并使用?

文章目录 0.引言1.新建EXCEL2.EXCEL另存为模板3.使用模板 0.引言 使用Excel模板可以帮助用户更高效地处理和分析大量数据,简化重复任务,并提供清晰直观的数据可视化效果。对于需要频繁进行数据处理和分析的个人或组织来说,使用Excel模板是一个…

半导体自动化专用除静电设备的特点和功能

半导体自动化专用离子风机是一种用于半导体制造过程中的特殊风机设备。它通过产生带电粒子(离子)的气流来实现静电去除和除尘,以确保半导体制造环境的洁净和无尘。 以下是半导体自动化专用离子风机的一些特点和功能: 1. 静电去除…

听GPT 讲K8s源代码--pkg(七)

k8s项目中 pkg/kubelet/config,pkg/kubelet/configmap,pkg/kubelet/container,pkg/kubelet/cri 这几个目录处理与 kubelet 配置、ConfigMap、容器管理和容器运行时交互相关的功能。它们共同构成了 kubelet 的核心功能,使其能够在 …

在外远程查看家里内网监控

在外远程查看家里内网监控 现代生活节奏紧张,巨大的压力压得我们喘不过气来,因此很多人选择在家里养一只陪伴我们的宠物,用以舒缓紧张的情绪和繁重的压力。但养了这些小家伙后,不在家时又总想随时看看家里小可爱们的情况&#xf…

STL:双端队列容器适配器仿函数优先级队列

deque 双端队列可以在头部和尾部进行插入删除操作与vector相比,头插效率高,不需要搬移元素 与list相比,空间利用率高 deque逻辑上空间是连续的,物理上并不是,是由一段段小空间拼接而成的 双端队列的迭代器比较复杂 cur…

Python爬虫技术及其原理详解

概要 随着互联网的发展,大量的数据被存储在网络上,而我们需要从中获取有用的信息。Python作为一种功能强大且易于学习的编程语言,被广泛用于网络爬虫的开发。本文将详细介绍Python爬虫所需的技术及其原理,并提供相关的代码案例。 …

Python—数据结构(一)

先放一张自己学习和整理归纳的思维导图,以便让大家都知道我自己的整体学习路线。 数据结构的学习路上内容枯燥,但坚持下来一定有很大的收获!加油💪🏻! 数据结构 数据的概念数据元素: 若干基本…

php基于redis处理session的方法

php基于redis处理session的方法 一个基于redis的处理session的方法,如下: class Session_custom { private $redis; // redis实例 private $prefix sess_; // session_id前缀 // 会话开始时,会执行该方法,连接redis服务器 p…

【JVM】JVM执行流程 JVM类加载 垃圾回收机制等

目录 🌷1、JVM是什么? 🌷2、JVM的执行流程(能够描述数据区5部分) 🌷3、JVM类加载过程 🌷4、双亲委派机制:描述类加载的过程 问题1:类加载器 问题2:什么…

前端知识点视频补充

使用工具: Vscode使用: 需要下载插件:open in browser。这个插件可以快速打开浏览器。 选择文件夹有两种方式:选择打开文件、拖拽方式(这种最方便) 快捷键:快速生成Htm结构文件:…

msvcr100.dll丢失的解决方法

在解决msvcr100.dll丢失问题前,给大家介绍一下为什么msvcr100.dll会丢失 msvcr100.dll文件丢失的原因可能有多种。以下是一些常见的原因: 文件被误删:有时候,用户可能会误删除msvcr100.dll文件,导致其丢失。 文件损…

蓝桥杯专题-真题版含答案-【生命之树】【消除尾一】【密码脱落】【生日蜡烛】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

用户管理功能

后端 # 获取用户列表 bp.get("/user/list") def user_list():users UserModel.query.order_by(UserModel.join_time.desc()).all()user_list [user.to_dict() for user in users]return restful.ok(datauser_list)# 用户是否可用 bp.post("/user/active"…

json-server提供json接口服务--示例版本

一、基于以下数据做接口常用功能的查询 1.1启动服务并且创建数据库文件,对外提供文件如下: {"posts": [{"author": "杰瑞","id": 1},{"id": 2,"title": "json-server","au…

通过Jmeter压测存储过程

一、存储过程准备: 1、建立一个空表: 1 CREATE TABLE test_data ( id NUMBER, name VARCHAR2(50), age NUMBER ); 2、建立一个存储过程: 1 2 3 4 5 6 7 8 9 CREATE OR REPLACE PROCEDURE insert_test_data (n IN NUMBER) AS BEGIN --E…

顺丰基于 Flink CDC + Hudi 推进实时业务落地

摘要:本文整理自大数据研发高级工程师唐尚文,在 Flink Forward Asia 2022 数据集成专场的分享。本篇内容主要分为三个部分: 应用场景 实践与优化 未来规划 点击查看原文视频 & 演讲PPT 一、应用场景 1.1 顺丰集团业务概览 顺丰除了大家…