【深度强化学习】目前落地的挑战与前沿对策

到目前为止,深度强化学习最成功、最有名的应用仍然是 Atari 游戏、围棋游戏等。即使深度强化学习有很多现实中的应用,但其中成功的应用并不多。为什么呢?本文总结目前的挑战。

目录

  • 所需的样本数量太大
  • 探索阶段代价太大
  • 超参数的影响非常大
  • 稳定性极差
  • 总结与未来

所需的样本数量太大

深度强化学习一个严重的问题在于需要巨大的样本量。
用 Rainbow DQN 玩 Atari 游戏,达到人类玩家水平,需要至少1800万帧,且超过1亿帧还未收敛。(已经调优了多种超参数)
AlphaGo Zero 用了2900万局自我博弈,每一局约有100 个状态和动作。
TD3算法在MuJoCo物理仿真环境中训练Half-Cheetah、 Ant、 Hopper等模拟机器人,虽然只有几个关节需要控制,但是在样本数量100万时尚未收敛。甚至连Pendulum,Reacher这种只有一两个关节的最简单的控制问题,TD3也需要超过10万个样本。
现实的问题远远比Atari和MuJoCo复杂,其状态空间和动作空间都远大于Atari和MuJoCo,对于简单问题RL尚需要百万、千万级的样本,那对于现实复杂问题,可想样本量的恐怖。而且,在游戏中获取亿万样本并不困难,但是在现实中每获取一个样本都比较困难。举个例子,用机械手臂抓取一个物体至少需要几秒钟时间,那么一天只能收集一万个样本;同时用十个机械手臂,连续运转一百天,才能收集到一千万个样本,未必够训练一个深度强化学习模型。强化学习所需的样本量太大,这会限制强化学习在现实中的应用。

 

探索阶段代价太大

强化学习要求智能体与环境交互用收集到的经验去更新策略。在交互的过程中,智能体会改变环境。在仿真、游戏的环境中,智能体对环境造成任何影响都无所谓。但是在现实世界中,智能体对环境的影响可能会造成巨大的代价。
在强化学习初始的探索阶段,策略几乎是随机的。
如果应用到推荐系统中,上线一个随机的推荐策略,那么用户的体验会极差,很低的点击率也会给网站造成收入的损失。
如果应用到自动驾驶中,随机的控制策略会导致车辆撞毁。
如果应用到医疗中,随机的治疗方案会致死致残。
在物理世界的应用中,不能直接让初始的随机策略与环境交互,而应该先对策略做预训练,再在真实环境中部署。 其中涉及离线强化学习(Offline RL),是一个很有价值的研究方向。

  1. 一种方法是事先准备一个数据集,用行为克隆等监督学习方法做预训练。
  2. 另一种方法是搭建模拟器,在模拟器中预训练策略。

 

超参数的影响非常大

深度强化学习对超参数的设置极其敏感,需要很小心调参才能找到好的超参数。
超参数分两种:神经网络结构超参数算法超参数。这两类超参数的设置都严重影响实验效果。换句话说,完全相同的方法,由不同的人实现,效果会有天壤之别。

  1. 结构超参数: 神经网络结构超参数包括层的数量宽度激活函数,这些都对结果有很大影响。拿激活函数来说,在监督学习中,在隐层中用不同的激活函数(比如 ReLU、Leaky ReLU)对结果影响很小,因此总是用 ReLU 就可以。但是在深度强化学习中,隐层激活函数对结果的影响很大;有时 ReLU 远好于 Leaky ReLU,而有时 Leaky ReLU 远好于 ReLU。由于这种不一致性,我们在实践中不得不尝试不同的激活函数。
  2. 算法超参数: 强化学习中的算法超参数很多,包括学习率批大小 (Batch Size)、经验回放的参数探索用的噪声。(Rainbow 的论文调了超过 10 种算法超参数。)

实验效果严重依赖于实现的好坏。哪怕是一些细微的超参数区别,也会影响最终的效果。 即使都用同一个算法,比如 TRPO 和 DDPG 方法,不同人的编程实现,实验效果差距巨大。

在这里插入图片描述

实验对比的可靠性问题。如果一篇学术论文提出一种新的方法,往往要在 Atari、MuJoCo 等标准的实验环境中做实验,并与 DQN、DDPG、TD3、A2C、TRPO 等有名的基线做实验对照。但是这些基线算法的表现严重依赖于编程实现的好坏,如果你把自己的算法实现得很好,而从开源的基线代码中选一个不那么好的做实验对比,那你的算法可以轻松打败基线。

 

稳定性极差

强化学习训练的过程中充满了随机性。除了环境的随机性之外,随机性还来自于神经网络随机初始化、决策的随机性、经验回放的随机性。想必大家都有这样的经历:用完全相同的程序、完全相同的超参数,仅仅更改随机种子(Random Seed),就会导致训练的效果有天壤之别。如果重复训练十次,往往会有几次完全不收敛。哪怕是非常简单的问题,也会出现这种不收敛的情形。
所以实验时即使代码和超参数都是对的,强化学习也有可能会出现不收敛的情况。监督学习则几乎没有这种担忧。

在这里插入图片描述

 

总结与未来

RL需要过多的数据量,且现实应用中收集数据成本和代价太大。即使收集到合适数据,训练网络时,超参数和随机种子等因素对模型的训练影响非常大,不稳定。
近年来,研究人员提出了多种方法来应对这些问题,提高RL的实用性和效率。以下是一些前沿的改进方法:

  1. 使用模拟环境和数据增强,减少对真实世界数据的需求,但是这样训练出来的模型如温室的花朵。
  2. 事先准备一个数据集,用行为克隆等监督学习方法做预训练,再进入现实做环境交互,进一步训练。
  3. 迁移学习与元学习,减少新任务所需数据量。
  4. 多任务学习和强化学习的结合,同时学习多个相关任务,共享知识以提高学习效率和泛化能力。
  5. 模型基的RL,构建环境模型以预测未来状态和奖励,减少对真实环境交互的依赖。
  6. 自适应超参数调整。
  7. 集成学习和强化学习结合,结合多个模型或策略,以减少单一模型或策略的不稳定性和偏差。
  8. 利用大模型,具身智能等技术,让模型更具泛化性。

本文内容为看完王树森和张志华老师的《深度强化学习》一书的学习笔记,十分推荐大家去看原书!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB源码-第115期】基于matlab的QSM正交空间调制系统仿真,输出误码率曲线。

操作环境: MATLAB 2022a 1、算法描述 正交空间调制(QSM)是一种先进的无线通信技术,它通过利用发射端的多天线阵列来传输信息,从而提高了数据传输的效率和速率。这种技术的关键在于它使用天线阵列的空间特性来编码额…

YOLOv8改进 | Conv篇 | 在线重参数化卷积OREPA助力二次创新(提高推理速度 + FPS)

一、本文介绍 本文给大家带来的改进机制是一种重参数化的卷积模块OREPA,这种重参数化模块非常适合用于二次创新,我们可以将其替换网络中的其它卷积模块可以不影响推理速度的同时让模型学习到更多的特征。OREPA是通过在线卷积重参数化(Online Convolutional Re-parameteriza…

uni-app 经验分享,从入门到离职(年度实战总结:经验篇)——上传图片以及小程序隐私保护指引设置

文章目录 🔥年度征文📋前言⏬关于专栏 🎯关于上传图片需求🎯前置知识点和示例代码🧩uni.chooseImage()🧩uni.chooseMedia()📌uni.chooseImage() 与 uni.chooseMedia() 🧩uni.chooseF…

掌握Spring MVC拦截器整合技巧,实现灵活的请求处理与权限控制!

拦截器 1.1 拦截器概念1.2 拦截器入门案例1.2.1 环境准备1.2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:运行程序测试步骤5:修改拦截器拦截规则步骤6:简化SpringMvcSupport的编写 1.3 拦截器参数1.3.1 前置处理方法1.3…

【Go学习】macOS+IDEA运行golang项目,报command-line-arguments,undefined

写在前面的话:idea如何配置golang,自行百度 问题1:通过idea的terminal执行go test报错 ✘ xxxxxmacdeMacBook-Pro-3  /Volumes/mac/.../LearnGoWithTests/hello  go test go: go.mod file not found in current directory or any parent …

腾讯云 腾讯云服务器 - 腾讯云 产业智变·云启未来

腾讯云服务器CVM提供安全可靠的弹性计算服务,腾讯云明星级云服务器,弹性计算实时扩展或缩减计算资源,支持包年包月、按量计费和竞价实例计费模式,CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格,提供9个9的数…

jmeter-线程数设置为1,循环10次没问题,循环100次出现异常

一、多次尝试,发现出现异常的接口大致相同。 解决办法:在第一个出现异常的接口下添加超时时间,固定定时器:2000ms,再次运行就没问题了。 二、压力机自身存在的问题 1)在网络编程中,特别是在短…

时间序列预测 — BiLSTM-Attention实现单变量负荷预测(Tensorflow)

专栏链接:https://blog.csdn.net/qq_41921826/category_12495091.html 专栏内容 ​ 所有文章提供源代码、数据集、效果可视化 ​ 文章多次上领域内容榜、每日必看榜单、全站综合热榜 ​ ​ ​ ​ ​ ​ ​ 时间序列预测存在的问题 ​ 现有的大量方法没有真正的预测未…

canal server初始化源码分析

CanalLauncher类是canal server端启动的入口类,跟随代码进行深入。 在开始之前,我们可以先了解下, canal 配置方式 ManagerCanalInstanceGenerator: 基于manager管理的配置方式,实时感知配置并进行server重启Spring…

零售EDI:Babylist EDI 项目案例

Babylist 与各种不同的品牌和零售商合作,包括婴儿用品、玩具、衣物和其他相关产品的制造商。用户可以在 Babylist 上浏览各种不同的产品,并根据自己的需求和喜好选择适合的项目。本文将为大家介绍对接Babylist 的EDI项目案例。 Babylist EDI 需求 传输协…

经典计算机网络面试题

1.说说HTTP常用的状态码及其含义? 状态码 类别 1xx 信息性状态码 2xx 成功状态码 3xx 重定向状态码 4xx 客户端错误状态码 5xx 服务端错误状态码 日常开发中的状态码: 状态码 含义 101 切换请求协议 200 请求成功 301 永久性重定向&…

线上党建展厅有哪些功能,如何搭建一个成功的线上党建展厅

引言: 随着互联网的飞速发展,线上党建展厅成为党建宣传的新平工具,它提供了一个方便的党建学习、交流和展示的空间。那么线上党建展厅有哪些功能,如何搭建一个成功的线上党建展厅呢? 一、线上党建展厅有哪些功能 1.组…

Wheeltec小车的开发实录(0)

配置静态ip(可以联网) 首先在你正常链接网络的时候打开“Connection Information”(我的是wifi,而且是手机热点,所以我手机就相当于一台路由器) 查看路由ip 观察到Default Route 是192.168.***.225这就是我手机的地址&#xff0…

node.js(express.js)+mysql实现登录功能

文章目录 前言实现步骤 实现步骤一、检测登录表单的数据是否合法(3)新建schema/user.js(4)在routes/use.js中引入schema/user.js中的方法reg_login_schema,代码如下: 二、根据用户名查询用户的数据三、判断…

嵌入式-Stm32-江科大基于标准库的GPIO4个小实验

文章目录 一 、硬件介绍二 、实验:LED闪烁、LED流水灯、蜂鸣器提示2.1 需求1:面包板上的LED以1s为周期进行闪烁。亮0.5s,灭0.5s.....2.2 需求2: 8个LED实现流水灯 三、硬件介绍-按键开关、光敏电阻四、 实验 按键控制LED、光敏传感器控制蜂鸣器4.1 需求1…

Go 语言中高效切片拼接和 GO 1.22 提供的新方法

Table Contents 切片拼接的必要性基本拼接方法及其局限性使用 append 函数高效拼接的策略控制容量和避免副作用利用 Go 1.22 的新特性切片动态扩容的深入理解内存重新分配与数据迁移性能优化策略结论在 Go 语言中,切片拼接是一项常见的操作,但如果处理不当,可能会导致性能问…

【计算机网络】【新加坡南洋理工大学】【Computer Control Network】【广域网和局域网简介】【中英对照(自译)】

一、说明 仅供学习使用。 二、广域网(WAN)和局域网(LAN)简介

基于springboot+vue的在线拍卖系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

Android: alarm定时很短时,比如500ms,测试执行mPowerManager.forceSuspend()后,系统不会suspend

参考文档: https://blog.csdn.net/weixin_35691921/article/details/124961404 Android: alarm定时很短时,比如500ms,然后执行mPowerManager.forceSuspend()后,系统不会suspend,原因分析: static int ala…

软件测试|sqlalchemy relationship

简介 SQLAlchemy是一个流行的Python ORM(对象关系映射)库,它允许我们以面向对象的方式管理数据库。在SQLAlchemy中,relationship是一个重要的功能,用于建立表之间的关系。在本文中,我们将详细探讨relation…