为什么说RL 是强化学习的技巧?

news2024/9/24 21:23:26

一、说明

        深度学习(DL)很难训练,强化学习(RL)要更难。在早期开发中,遵循与 DL 相同的策略:保持简单!消除任何妨碍您的花里胡哨的东西,并将不确定性降至最低。

        具体到RL:

  • 对于新模型和算法,请选择简单的玩具实验进行早期开发。
  • 首先简化问题,以便我们可以轻松快速地运行实验。
  • 对超参数调优有耐心。RL 对超参数非常敏感(比 DL 更差)。
  • 尝试不同的随机种子。

瞄准低处。始终从有效的事物开始工作。

二、RL简述

        设置引用

        许多无模型算法在显示任何进展迹象之前都有很长的预热期。通常,他们需要数百万次迭代才能看到一些有希望的举措。为了解决不确定性,一种有效的方法是熟悉使用其他强化学习方法的玩具实验。然后我们使用它们来交叉引用我们的进度。例如,在培训的这个时候,动作或奖励看起来是否正常?作为下面的示例,该图显示了在 57 款雅达利游戏中使用不同 DQN 方法的汇总训练进度。这为我们提供了一些关于何时继续训练以及何时开始调试开发类似 DQN 的方法的指南。

        输入要素

        首先使任务更容易解决。如果从原始像素中学习速度很慢,请先使用手工制作的功能。例如,使用从机器人手臂或观察到的物体位置收集的状态,而不是从原始像素进行推断。图像的高维性大大增加了问题的复杂性。雅达利游戏的游戏规则相对简单,在提取通用特征方面与CNN网络配合良好。这可能不适用于其他 RL 任务。

三、RL 不完全是深度学习

        不幸的是,深度学习中的许多成功,如监督学习,在强化学习中并不容易复制。让我们介绍一些问题。

        I.I.D.

        DL 和 RL 之间的一个主要区别是其训练输入的数据分布。在深度学习中,我们对输入进行随机化,使得每批训练数据都包含不同类别对象的良好平衡,并且每个样本都相互独立。我们无法从之前的样本中预测接下来可能会看到什么。

        我们称之为i.i.d.(独立且相同分布)。我们希望样本分布相同。即每批样品的数据分布应相似。下面,所有示例都来自同一类。它的输入数据分布强烈偏向于对象类“0”。因此,它不是 i.i.d。

        此示例批次不利于监督学习。我们不需要学习任何功能。相反,我们可以简单地将输出预测为“0”,而不考虑输入,以减少训练损失。

RL 中基于策略的方法

        RL 中的样本可以在同一训练批次中高度相关。探索的空间在很大程度上取决于当前的政策。正如我们所知道的那样,我们改变了探索的地方。因此,跨批次的输入数据分布在不断发展。批次之间的训练样本分布不相同。此外,对于价值学习方法,输出目标值正在发生变化,因为我们对事物的了解越来越多。RL远未达到i.i.d。这是一场噩梦,给RL带来了一些重大挑战:

  • 批处理规范化和 dropout 方法可能不适用于 RL。
  • 很难调整学习率以实现适当的收敛。因此,我们需要更高级的优化器,如 AdamW 或 RMSProp。对于策略梯度方法,请查看利用信任区域的 PPO 等方法。
  • 我们需要减缓输入和输出的变化,让它们有机会让模型学习和发展。

过拟合数据与过拟合任务

        在 DL 中,我们使用正则化来避免过度拟合数据。对于RL,我们需要在更高的层次上思考。

        首先,我们需要用许多场景来训练系统。例如,要训练机器人在室内飞行,我们应该创建尽可能多的房间和家具配置。为了最大化此类场景,我们可能需要创建仅用于训练目的的合成数据。

        多样性总是有帮助的!以下视频训练具有不同地形和障碍物的多种类型的对象。随着环境变得越来越多样化,我们可能会认为不可能很好地训练模型。但相反,它避免了过度拟合特定任务,并开始探索所有这些场景下的复杂行为。因此,复杂的环境增强了培训,而不是阻止了培训。但如前所述,我们应该在早期开发中保持绝对简单。像这样的建议应该在编码首先完全调试后完成。

        其次,使用不同的任务训练模型。

        对于雅达利太空入侵者游戏,当外星人向我们开火时,我们会逃跑。如果我们只用这个游戏进行训练,我们的解决方案将无法很好地泛化。例如,在乒乓球比赛中,我们想击球但不逃跑。通过多项任务的培训,我们获得了更好、更基础的知识。当一个物体接近时,我们应该得到警报。但根据具体情况,我们的行为有所不同。例如,在吃豆人游戏中,我们想逃离幽灵。但是当我们只是捕获能量丸时,我们会追逐幽灵并吃掉它们。

不要过度拟合任务。训练许多任务,以对事物的工作原理有基本的了解。

        DQN论文使用ε贪婪策略,即使在测试期间ε也等于0.05,以避免过度拟合。

        通常,我们可以为环境过度拟合任务。但是,如果不使用其他方案和任务进行验证,高度优化的解决方案不太可能在其他情况下工作。因此,在没有此类验证的情况下,不要提交大量的超参数优化。将设计定位为对超参数不太敏感。超敏感超参数通常不能很好地泛化。

        越大不一定越好

        我们不能盲目地增加深度网络的容量,因为它有过度拟合的风险。在 DL 中处理过拟合和爆炸梯度问题的解决方案可能不适用于 RL。

        基于模型的 RL 需要较少的样本来训练,并且特别容易受到过度拟合的影响。因此,这些模型需要简单得多。不幸的是,这限制了模型的表现力,并创造了次优解决方案的机会。

        在RL中,瓶颈通常在于样品效率、稳定性和收敛性。因此,设计一个强大而富有表现力的网络可能是第二要务。如果您没有耐心调整模型,则尤其如此。

        局部优化

        RL的局部最优比DL严重得多。在下面的视频中,一旦半只猎豹被卡在倒置的位置,即使它可以跑得更快,它也无法再次向上行走。

        首先,我们可以尝试不同的随机种子。不同的随机种子可能会达到不同的局部最优值。通过简单地更改随机种子,我们可以获得非常不同的性能结果。如下所示,以下性能之间的差异仅来自随机种子。不要低估它的影响!许多跑步的奖励可能只是因为随机种子。

平均两组5个不同的随机种子

始终使用不同的随机种子多个任务上测试算法或模型。

        其次,在训练中尝试更好的探索方案。半猎豹问题表明我们的探索太短视。增加勘探与开发的机会。

        第三,鼓励行动的多样性,以便我们可以从局部最优中脱颖而出。例如,在目标函数中添加激励,以鼓励操作的更高熵。

        它还有助于我们更好地适应环境变化或摆脱僵局。

        超参数调优

        许多RL方法的收敛性远不如DL。在某些强化学习方法中,例如使用深度网络近似器进行价值学习,训练可能不稳定。为了解决这些缺点,我们在目标函数中添加了新的激励或惩罚。

        一般来说,我们在 RL 中比在 DL 中需要更多的耐心。通常,RL 方法处理范围很窄的超参数,需要大量搜索才能找到它们。这就是为什么,如前所述,设置一些参考点很重要。对于超参数搜索,可以使用随机布局(即随机搜索参数),特别是对于高维空间。

鲁棒性

        不要对单个任务结果过于自信或悲观,除非改进不寻常。很难找到一种 RL 方法在所有任务中都能很好地工作。DQN擅长Atari游戏,但在CartPole等连续控制方面表现不佳。如果一个人在一项任务中表现不佳,并不意味着它会让其他人失望,反之亦然。

        从简单的玩具实验开始。如果没有进展,请切换到其他人。之后,尝试中等大小的问题。构建实验以证明算法擅长什么并分析弱点。

        以前,我们建议耐心调整超参数。这总是造成一个两难的境地,即我们是否应该进一步调整模型或尝试新的东西。更好的方法是自动化基准测试过程,以便可以并行测试和验证结果。

继续在不同任务中对算法进行基准测试。

四、重塑reword功能

        重新制定奖励函数,使其提供恒定且更好的中间反馈。例如,与其在对象到达目标时才给予奖励,不如建立更精细的目标。例如,当抓手靠近球时给予奖励。这提供了更多的学习信号来帮助培训。

        但重塑奖励函数可能会导致次优解决方案。在下面的视频中,它不是完成课程以获得大奖,而是永远循环收集 Turbo 奖励。所以一定要小心!就像深度学习一样,系统可能学到的东西可能会是一个很大的惊喜。因此,请花点时间评估它在新的奖励函数下试图实现的目标。

五、可行性研究

        当我们对图像进行降采样或降低采样频率时,信息将丢失。我们可以自己查看图像,以确保它保留足够的信息来解决问题。如果我们不能解决它,RL 方法可能也不是。此外,对问题运行随机策略。检查我们是否偶尔会看到一些所需的行为模式。

六、 数据预处理

        与 DL 类似,我们希望输入特征以零为中心。应用

        以剪辑大纲视图并标准化输入。对到目前为止看到的所有数据的μσ使用运行估计值。不要只使用一批样本来计算它们。同一批次中的样品在RL中高度相关。计算值不表示平均值和标准差。我们可能还希望标准化预测。但是,对于奖励,只需重新调整它,不要改变平均值。

七、监测

        像DL一样,人们倾向于在收集足够的信息之前采取行动。验证猜测需要很长时间,根据我的经验,得出了许多错误的结论。为公平比较创建一个控制良好的环境并不明显。例如,我们将从不同的随机种子中获得不同的结果。因此,一些观察很容易误导我们。根据数据做出有根据的猜测。请务必先复制并验证您的信息。

        在 RL 中,我们应该监控(如果适用):

  • 值函数,
  • 平均奖励,
  • 国家访问与分配,
  • 策略分布,
  • 梯度范数,
  • 参数更新中的大小,
  • 目标值变化,
  • 策略熵,以及
  • KL-新政策与现行政策的分歧。

        在直方图中可视化输入要素、输出和奖励。验证比例以及其是否正确居中。识别并删除任何异常值。

可视化一段时间内的数据和指标。绘制所收集数据的直方图。

        识别任何不当行为,如参数振荡、梯度爆炸/消失和非平滑值函数。检查价值函数(如果适用)是否很好地预测了实际奖励。将结果与策略梯度等基线方法和 Q 学习(如 OpenAI 基线存储库中的方法)进行比较。

监控培训进度

监控剧集返回的最小/平均值/最大值/标准偏差。后期训练中的大方差意味着训练不稳定。剧集时间是衡量进度的另一种方式。即使你每次都可能输,但更长的情节意味着你正在进步。

八、调音

        接下来,我们将讨论如何专门调整一些参数。

        批大小/缓冲区大小

        RL 通常使用比 DL 更大的批大小。较大的方差会破坏训练的稳定性,因此我们使用大批量来消除方差。如果学习没有进展,则增加批量大小。雅达利游戏上的 TRPO 的批量大小为 100K。

        对于 Atari 上的 DQN,当前网络和目标网络之间的更新频率为 10K,重放缓冲区大小为 1M 过渡帧。如果缓冲区大小的批大小不够大,则噪声将压倒训练。较大的批大小将提高性能,但会减慢计算速度。

        折扣系数γ

        γ需要足够大才能收集奖励。例如,如果 γ=0.99,它将忽略 100 个时间步之外的奖励。但是,如果奖励更频繁地给予,γ可能会更低。

        如果使用TD(λ)来计算奖励,我们可以对γ使用更高的值。λ 值将 TD 与蒙特卡罗混合以减少方差。蒙特卡洛没有偏差,但方差很大。另一方面,TD具有高偏差但低方差。当λ从0减少到零时,我们向TD移动而不是蒙特卡洛。在实践中,我们主要希望蒙特卡洛结果,并得到TD的一些小帮助。在本文中,其中一个玩具实验在γ为98.0且λ为96.<>时达到最佳性能。

        动作频率

        我们不需要更改每个视频帧的操作。我们可以在采取下一步行动之前跳过帧。但我们需要首先用真正的玩家来验证它的影响。如果人类很难跳过这么多帧,那么程序可能会遇到类似的困难。

        跳过帧实际上增加了探索。对于跳过帧,我们不会每次都遵循脚本(策略)。当我们跳过更多帧时,我们会探索更多。我们希望调整此值以查看探索可能如何进行。

九、消融

        许多设计修改具有类似的效果,并且变得多余。例如,许多方法具有规范化输入或使优化更稳定的效果。逐个删除它们以简化设计(如果它没有显示性能下降)。简单的设计将更好地概括其他任务。

十、策略梯度训练提示

        熵

密切监控策略熵。

        熵是随机性的度量。高熵与高随机性有关。如果熵很低,则策略非常确定,几乎没有探索。这对早期训练不利。开始时不应太低,结尾不应过高。如果训练过早地崩溃为确定性策略,则在目标中添加熵奖励以鼓励探索。我们还可以限制熵下降(可能通过信任区域),以避免策略中的激进更改。

        KL-背离

        激进的政策变化会增加做出错误决策的机会。密切监测新旧政策之间的KL分歧。将它们与使用既定方法的玩具实验进行比较。KL-散度为 0.01 是合理的,10 是异常的。对于较大的KL背离或较大的峰值,引入更大的KL背离惩罚。

监控KL背离。

        解释方差

        在许多情况下,我们尝试使用与基本事实相同的平均值进行预测,但也使用相同的方差。为了实现这一目标,我们需要引入一个名为解释方差的新指标。

        解释的方差定义为:

        假设预期回报(经验回报)以零为中心,方差为 1。如果模型在任何情况下持续预测零,则上述解释的方差为零。对于性能不佳的模型,解释的方差可能是负的。相反,如果我们的预测当场是正确的,那么解释的方差在我们的示例中将是一个。因此,请密切监视它。

解释方差衡量我们的价值函数估计有多好。

        策略初始化

        策略模型的参数初始化甚至比监督学习更重要。它决定了我们如何探索环境。在AlphaGo中,它使用监督学习来预先训练策略。尽管它后来在AlphaGO Zero中被删除,但它显示了领先一步如何帮助我们推进项目。应用过去的经验,例如通过迁移学习,可能会在项目开发中消除很多未知数。这可以有很大帮助。

        但是,当此类帮助不可用时,策略的最终层输出应为零或非常接近零。它最大化了熵和探索,而不是偏爱采取什么行动。

十一、Q学习技巧

        对于 Q 学习,请调整以下区域:

  • 体验重放内存缓冲区大小:Q 学习可以使用大型体验回放来稳定训练。DQN纸张存储了Atari游戏的最后1万帧视频帧。值得对缓冲区大小进行一些实验,但要注意总内存消耗。
  • 学习率时间表(学习率如何随时间衰减)。
  • 探索时间表(例如贪婪ε方法中的ε)。从高探索开始,逐渐减少。

        与策略梯度方法相比,Q学习需要更多的耐心。DQN收敛缓慢,开始时预热期很长,没有进展的迹象。在更简单的任务上测试实现,以证明代码首先正常工作。在 Atari 游戏中,需要 10-40M 帧才能找到看起来比随机操作更好的策略。此外,当使用深度网络逼近器时,价值学习方法无法保证收敛。它往往对超参数更敏感,通常需要广泛的搜索。

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

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

相关文章

利用spss进行因子筛选相关性分析

因变量放在前面&#xff0c;其他的变量全部导入即可 点击确定得到结果 两个星**表示相关性显著&#xff0c;*一颗星次之&#xff0c;一般我们选择两个星的变量&#xff0c;进行后续的建模

新能源电动汽车交流充电桩控制主板的配置

新能源电动汽车充电桩控制主板的配置 你是否曾经遇到过充电桩无法兼容你的电动车&#xff0c;或者充电速度慢如蜗牛?原来是充电桩主板的配置问题! 充电桩主板是充电桩控制系统的核心&#xff0c;它的配置决定了充电桩的性能和兼容性。 首先&#xff0c;处理器是充电桩主板的核…

Selenium+Java环境搭建(测试系列6)

目录 前言&#xff1a; 1.浏览器 1.1下载Chrome浏览器 1.2查看Chrome浏览器版本 1.3下载Chrome浏览器的驱动 2.配置系统环境变量path 3.验证是否成功 4.出现的问题 结束语&#xff1a; 前言&#xff1a; 这节中小编给大家讲解一下有关于Selenium Java环境的搭建&…

关于position:fixed定位的位置不对的问题(即没有按照浏览器的窗口进行定位)

问题&#xff1a; 今天在开发过程中发现元素使用 position: fixed 时位置有问题&#xff0c;位置跟我写的位置对不上&#xff0c;后面在 MDN 上面找到了答案&#xff0c;下面是关于 position: fixed 的描述&#xff1a; fixed&#xff1a; 元素会被移出正常文档流&#xff0c;并…

多组输入字符,每一次都判断这个字符是否为字母

首先多组输入&#xff0c;就要用到循环 然后是输入字符&#xff0c;用函数getchar() 又因为getchar()输入的字符后面有还有一个‘\0’&#xff0c;所以代码的最后还应该单独写一个getchar&#xff08;&#xff09;函数来把\0处理了 代码&#xff1a; int main() {int ch 0;wh…

图表的使用

<template><!-- 外层 --><div><!-- 上面 --><header><!-- 上面item --><div class"fl"><div class"leftimg"><img src"../../assets/orders.png" width"50px" alt /></div&…

【建议收藏】Kubernetes 网络策略入门:概念、示例和最佳实践,附云原生资料

目录 摘要 一、Kubernetes 网络策略组件 二、实施网络策略 示例 1&#xff1a;在命名空间中限制流量 示例 2&#xff1a;允许特定 Pod 的流量 示例 3&#xff1a;在单个策略中组合入站和出站规则 示例 4&#xff1a;阻止对特定 IP 范围的出站流量 三、Kubernetes 网络策…

Lua脚本解决多条命令原子性问题

Redis是一个流行的键值存储数据库&#xff0c;它提供了丰富的功能和命令。在Redis中&#xff0c;我们可以使用Lua脚本来编写多条命令&#xff0c;以确保这些命令的原子性执行。Lua是一种简单易学的编程语言&#xff0c;下面将介绍如何使用Redis提供的调用函数来操作Redis并保证…

redis中使用bloomfilter判断元素是否存在

一 bloomfiler的作用 1.1 bloomfilter的作用 由一个初始值为0的bit数组组成&#xff0c;和多个hash函数构成&#xff0c;用来判断集合中是否存在某个元素。 一个很长的二进制数组&#xff08;00000000&#xff09;一系列随机hash算法映射函数。主要用于判断一个元素是否存在…

【产品应用】一体化伺服电机在激光雷达设备中的应用

激光雷达作为一种重要的感知技术&#xff0c;被广泛应用于气象探测、追踪、机器人导航、风力资源等领域。而在激光雷达设备中&#xff0c;一体化伺服电机的应用正发挥着重要的作用。本文将介绍一体化伺服电机在激光雷达设备应用中的优势&#xff0c;展示其对激光雷达技术发展的…

四.在 Linux 上以 All-in-One 模式安装 KubeSphere

1.初始操作 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld# 关闭selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时# 关闭swap swapoff -a # 临时 sed -ri s/.*swap.*/#&/ /etc/fstab # 永久# 将桥接的I…

2023河南萌新联赛第(三)场:郑州大学 F

把题中所给的式子进行展开&#xff0c;最终可以得到一个等比数列。运用等比数列求和公式即可。 相关知识点&#xff1a;欧拉降幂&#xff0c;逆元。 逆元的用处&#xff1a;因为求和公式需要去除分子&#xff0c;而大数除法去取模会丢失精度&#xff0c;所以可以采用求出分子…

深度学习入门教程(1):用神经网络预测糖尿病病例Predict Diabetes Cases with Neural Networks

本深度学习入门教程是在polyu HPCStudio 启发以及资源支持下进行的&#xff0c;在此也感谢polyu以及提供支持的老师。 大纲&#xff08;what will you learn from this project&#xff09; 1&#xff1a;What are neural networks&#xff1f; 2&#xff1a;Why use neural …

Ubuntu /dev/loop<0..n>挂载的目录的分析

执行命令df -h lkmaoubuntu:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 1.6G 0 1.6G 0% /dev tmpfs 391M 2.1M 389M 1% /run /dev/sda1 59G 30G 26G 54% / tmpfs 2.0G 0 2.0G 0% /dev/s…

华硕PN62:BIOS来电重启 和win10关闭升级Windows11提示方法

1&#xff0c;开机长按del键进bios设置界面&#xff0c;点高级—电源管理或APM Restore AC Power Loss有两个都选power on。如果不成功&#xff0c;检查主板上纽扣电池是否有电。 restore on ac power loss意思是“交流失电恢复”&#xff0c;这是BIOS里的电源管理选项&#xf…

【Python机器学习】实验04(1) 多分类(基于逻辑回归)实践

文章目录 多分类以及机器学习实践如何对多个类别进行分类1.1 数据的预处理1.2 训练数据的准备1.3 定义假设函数&#xff0c;代价函数&#xff0c;梯度下降算法&#xff08;从实验3复制过来&#xff09;1.4 调用梯度下降算法来学习三个分类模型的参数1.5 利用模型进行预测1.6 评…

volatile关键字(轻量级锁)

目录 一、volatile出现背景 二、JMM概述 2.1、JMM的规定 三、volatile的特性 3.1、可见性 3.1.1、举例说明 3.1.2、总结 3.2、无法保证原子性 3.2.1、举例说明 3.2.2、分析 3.2.3、使用volatile对原子性测试 3.2.4、使用锁机制 3.2.5、总结 3.3、禁止指令重排序 四、v…

【KO】vite使用 git bash here创建vue3项目时方向键失败!

文章目录 起因过程结果 起因 今天使用vite创建ue3项目&#xff0c;因为git使用习惯了就直接用git运行创建命令&#xff0c;前两步都没啥问题&#xff0c;到选择框架的时候问题来了&#xff0c;方向键无效。如图&#xff1a; 过程 常理来说是直接用方向键↑和↓进行选择&…

day15-239. 滑动窗口最大值

239. 滑动窗口最大值 力扣题目链接(opens new window) 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 进阶&#xff1a; 你能…

docker部署zabbix 6.0高可用集群实验

0 实验环境 虚拟机&#xff0c;postgresql本地部署&#xff0c;zabbix server及nginx容器部署 1 postgresql 参看前作 《postgresql timescaledb离线安装笔记》完成部署&#xff0c;对外端口tcp 5432&#xff0c;账号zabbix&#xff0c;密码123 2 zabbix server 2.1 拉取…