强化学习笔记:强化学习的约束

article/2025/8/22 19:21:41

1 所需的样本数量过大

深度强化学习一个严重的问题在于需要巨大的样本量。举个例子,玩Atari游戏

 

19.17 中纵轴是算法的分数与 人类分数的比值, 100% 表示达到人类玩家的水准。
图中横轴是收集到的游戏帧数,即样本数量。
Rainbow DQN 需要 1 8 百万帧才能达到人类玩 家水平,超过 1 亿帧还未收敛

再举几个例子。AlphaGo Zero 用了 2 9 百万局自我博弈,每一局约有 100 个状态和动作。

TD3 算法 MuJoCo 物理仿真环境中训练 Half-CheetahAntHopper 等模拟机器人,虽然只有几个关节需要控制,但是在样本数量 100 万时尚未收敛。甚至 连 PendulumReacher 这种只有一两个关节的最简单的控制问题,TD3 也需要超过 10 万 个样本。

现实世界中的问题远远比 Atari MuJoCo 复杂,其状态空间、动作空间都远大于 Atari、MuJoCo.
强化学习所需的样本量太大,这会限制强化学习在现实中 的应用。

探索阶段代价太大

强化学习要求智能体与环境交互,用收集到的经验去更新策略。在交互的过程中,智能体会改变环境。在仿真、游戏的环境中,智能体对环境造成任何影响都无所谓。但是在现实世界中,智能体对环境的影响可能会造成巨大的代价。
在强化学习初始的探索阶段,策略几乎是随机的。如果是物理世界中的应用,智能体的动作难免造成很大的代价。如果应用到推荐系统中,如果上线一个随机的推荐策略,那么用户的体验会极差,很低的点击率也会给网站造成收入的损失。如果应用到自动驾驶中,随机的控制策略会导致车辆撞毁。如果应用到医疗中,随机的治疗方案会致死致残。
  • 在物理世界的应用中,不能直接让初始的随机策略与环境交互,而应该先对策略做预训练,再在真实环境中部署。
    • 一种方法是事先准备一个数据集,用行为克隆等监督学习方法做预训练。
    • 另一种方法是搭建模拟器,在模拟器中预训练策略。比如阿里巴巴提出的“虚拟淘宝”系统 是对真实用户的模仿,用这样的模拟器预训练推荐策略。
    • 线强化学习 (Offline RL) 是一个热门而又有价值的研究方向
    • Offline reinforcement learning: tutorial, review, and perspectives on open problems.

3  超参数的影响非常大

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

3.1 结构超参数

神经网络结构超参数包括层的数量、宽度、激活函数,这些都对结果有很大影响。

拿激活函数来说,在监督学习中,在隐层中用不同的激活函数(比如 ReLU 、 Leaky ReLU)对结果影响很小,因此总是用 ReLU 就可以。
但是在深度强化学习中,隐层激活函数对结果的影响很大;有时 ReLU 远好于 Leaky ReLU ,而有时 Leaky ReLU 远 好于 ReLU [Deep reinforcement learning that matters ]。由于这种不一致性,我们在实践中不得不尝试不同的激活函数。

3.2 算法超参数

  • 强化学习中的算法超参数很多,包括学习率、批大小 (Batch Size)、经验回放的参数、探索用的噪声。
    • 学习率(即梯度算法的步长)对结果的影响非常大,必须要很仔细地调。DDPGTD3A2C 等方法中不止有一个学习率。策略网络、价值网络、目标网络中都有各自的学习率。
    • 如果用经验回放,那么还需要调几个超参数,比如回放数组的大小、经验回放的起始时间等。
      • 回放数组的大小对结果有影响,过大或者过小的数组都不好。
      • 经验回放的起始时间需要调,比如 Rainbow 在收集到 8 万条四元组的时候开始经验回放,而标准的 DQN 则最好是在收集到 20 万条之后开始经验回放
    •  在探索阶段,DQN、DPG 等方法的动作中应当加入一定噪声。噪声的大小是需要调的超参数,它可以平衡探索 (Exploration) 和利用 (Exploitation)。
      • 除了设置初始的噪声的幅度,我们还需要设置噪声的衰减率,让噪声逐渐变小。

实验效果严重依赖于实现的好坏

上面的讨论目的在于说明超参数对结果有重大影响。
对于相同的方法,不同的人会有不同的实现,比如用不同的网络结构、激活函数、训练算法、学习率、经验回放、噪声。哪怕是一些细微的区别,也会影响最终的效果。
论文 [ 48 ] 使用了几个比较有名的开源代码,它们都有 TRPO DDPG 方法在 Half-Cheetah 环境中的实验。论文使用了它们的默认设置,比较了实验结果,如图 19.18 所示。

 

很显然, 相同的方法,不同人的编程实现,实验效果差距巨大。

实验对比的可靠性问题

  如果一篇学术论文提出一种新的方法,往往要在 Atari 、 MuJoCo 等标准的实验环境中做实验,并与 DQN DDPG TD3 A2C TRPO 等有名的基线做实验对照。通常只有当新的方法效果显著优于基线时,论文才有可能发表。
但是 论文实验中报告的结果真的可信吗?从图 19.18 中不难看出,基线算法的表现严重依赖于编程实现的好坏。如果你提出一种新的方法,你把自己的方法实现得非常好,而你从开源的实现中选一个不那么好的基线做实验对比,那么你可以轻松打败基线算法。

稳定性极差

强化学习训练的过程中充满了随机性。除了环境的随机性之外,随机性还来自于神经网络随机初始化、决策的随机性、经验回放的随机性。
想必大家都有这样的经历:用完全相同的程序、完全相同的超参数,仅仅更改随机种子 (Random Seed) ,就会导致训练的效果有天壤之别。
如示意图 19.19 所示,如果重复训练十次,往往会有几次完全不收敛。哪怕是非常简单的问题,也会出现这种不收敛的情形。
在监督学习中,由于随机初始化和随机梯度中的随机性,即使用同样的超参数,训练出的模型表现也会不一致,测试准确率可能会差几个百分点。但是监督学习中几乎不 会出现图 19.19 中这种情形;如果出现了,几乎可以肯定代码中有错。
但是强化学习确实 会出现完全不收敛的情形,哪怕代码和超参数都是对的。

 


http://chatgpt.dhexx.cn/article/3nYXZmMr.shtml

相关文章

强化学习的模型

文章目录 前言一、强化学习是什么?二、基本模型1.基本框架2.学习过程 三.马尔科夫决策过程(Markov Decision Process. MDP)1.马尔科夫性质2.MDP的基本组成部分3.MDP的基本流程 四、基于模型和免模型的强化学习1.模型2.基于模型的强化学习&…

深度强化学习调研

深度强化学习(DRL) (一)强化学习 强化学习(Reinforcement Learning,简称RL)是机器学习领域的一个研究热点,当前已经广泛应用于工业制造、仿真模拟、机器人控制、优化与调度、游戏博…

强化学习总结

强化学习 一、强化学习概述 1.强化学习简介 强化学习最早可以追溯到早期控制论以及统计、心理学、神经科学、计算机科学等学科的一些研究。在最近的五到十年中,强化学习在机器学习和人工智能研究者中得到了大量的关注,它描绘了一种在不进行具体指导的情…

强化学习介绍

文章目录 1 什么是强化学习?2 强化学习的特征与特点3 强化学习的要素与框架3.1 Policy3.2 Reward3.3 Value3.4 model3.5 Return(cumulative future reward) 回报|未来累积回报3.6 Discounted return 折扣回报 4 强化学习流程5 例子 马里奥 (一定要看&…

强化学习(Q-learning)

强化学习RF简介 强化学习是机器学习中的一种重要类型,一个其中特工通过 执行操作并查看查询查询结果来学习如何在环境中表现行为。 机器学习算法可以分为3种:有监督学习(Supervised Learning)、无监督学习(Unsupervi…

强化学习简介

强化学习简介 强化学习(Reinforcement Learning,RL)是机器学习中的一个领域,是学习做什么(即如何把当前的情景映射成动作)才能使得数值化的收益最大化,学习者不会被告知应该采取什么动作,而是必须自己通过尝试去发现哪…

强化学习(一):简介——什么是强化学习?

本文将介绍强化学习的基本含义,了解什么是强化学习、强化学习的概念与基本框架以及强化学习中常见的问题类型。 什么是强化学习? 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习&#xff0c…

机器学习算法(三十):强化学习(Reinforcement Learning)

目录 1 简介 1.1 什么是强化学习 1.2 强化学习的主要特点 1.3 强化学习的组成部分 2 强化学习训练过程 3 强化学习算法归类 3.1 Value Based 3.2 Policy Based 3.3 Actor-Critic 3.4 其他分类 4 EE(Explore & Exploit)探索与利用 5 强化…

强化学习入门这一篇就够了!!!万字长文

强化学习 强化学习入门这一篇就够了万字长文带你明明白白学习强化学习... 强化学习入门这一篇就够了 强化学习前言一、概率统计知识回顾1.1 随机变量和观测值1.2 概率密度函数1.3 期望1.4 随机抽样 二、强化学习的专业术语2.1 State and action2.2 policy-策略2.3 reward2.4 状…

关于gensim的一些使用记录

NLP神器 Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。 支持包括TF-IDF,潜在语义分析(Latent Semantic Analysis,LSA),潜狄利克…

gensim官方文档实践笔记

中文文档比机翻还颠三倒四, 所以还是自己记录一下, 顺便加一些注解. 目录 文档document 语料库Corpus 语料库作用 语料库预处理 词汇编号 向量Vector 方法1: 特征向量(vector of features) 方法2: doc2bow 模型Model 语料库和向量空间 字符串转向量 语料库流Corpu…

gensim安装

输入以下命令即可: pip install gensim -i http://pypi.douban.com/simple --trusted-host pypi.douban.com以下是过程: 尝试1:直接在anaconda3上面搜索出来安装 速度太慢,失败 尝试2:更换pip源,如下所示…

Gensim:一款进行文本主题识别的 Python 工具库

从大量文本中自动提取人们谈论的主题(主题识别)是自然语言处理的基本应用之一。大型文本示例包括社交媒体订阅、消费者对酒店、电影和其他业务的评价、用户评论、新闻和客户发来的邮件。 在本中,将使用LDA 从 20Newsgroup 数据集 中提取主题的实战案例。欢迎深入探…

gensim 快速入门 Word2Vec

文章目录 gensim的核心概念Word2Vec简介Word2Vec初试探将单词可视化 训练自己的Word2Vec模型 gensim的核心概念 Document: 文档。可以是一个一句话,或者一段话Corpus: 文档的集合Vector: 文档向量。将文档通过数学向量表示。Model: 模型。将文档转换为向量的模型。…

vue获得焦点事件处理函数中控制其失去焦点,但是失去焦点后该获得焦点事件一直被触发

当input获取焦点的时候需要判断另一个操作是否已完成,否则需要引导用户先去执行另一个操作,是则允许输入。 另一个操作跟当前操作是在同一个页面上,无法通过“下一步”进行控制。 解决思路是: 当input获取焦点的时候&#xff0…

div失去焦点事件onblur()无效

初学js事件&#xff0c;想做一个点击时变红&#xff0c;取消聚焦时变白的div&#xff0c;于是我这样写代码&#xff1a; <div style"width: 100px;height: 50px;border: 1px solid;"></div> <script>let div document.getElementsByTagName(&quo…

input失去焦点事件和点击事件冲突的解决思路

首先说一下应用场景 el-input框为禁用状态时&#xff0c;点击取消禁用&#xff0c;并显示后方两个按钮&#xff0c; 点击绿色按钮保存input框当前值&#xff0c;失去焦点或点击红色框时恢复改变前的值 思路就是不在input上的失去焦点方法&#xff0c;而是手动调用失去焦点方法…

input中blur失去焦点事件与点击事件冲突

场景&#xff1a; 当在输入框里输入手机号的时候&#xff0c;输入框高亮&#xff0c;并且关闭按钮显示&#xff0c;input失焦时关闭按钮隐藏 现象&#xff1a; 遇到的问题是&#xff0c;当我们点击关闭按钮清空input框数据时&#xff0c;发现只是关闭按钮隐藏了&#xff0c…

div失去焦点事件onblur()不触发解决方法

需求&#xff1a; 做一个弹出框组件&#xff0c;文字点击时会在文字下方弹出一个框&#xff0c;在vue3中监听div元素的blur事件发现事件并不会在div失去焦点时触发 解决方法 bug原因&#xff1a;在vue中div默认不触发事件,除非将元素添加tabindex"-1"属性才会触发…

JavaScript学习(二十一)——表单相关事件(焦点事件)

表单事件实际上就是对元素获得或失去焦点的动作进行控制。可以利用表单事件来改变获得或失去焦点的元素样式&#xff0c;这里所指的元素可以是同一类型&#xff0c;也可以是多个不同类型的元素。 获取焦点与失去焦点事件 获得焦点事件(onfocus) 是当某个元素获得焦点时触发事件…