强化学习之父Richard Sutton给出一个简单思路,大幅增强所有RL算法

news/2024/11/2 12:54:13/

来源 | 机器之心

在当今的大模型时代,以 RLHF 为代表的强化学习方法具有无可替代的重要性,甚至成为了 OpenAI ο1 等模型实现强大推理能力的关键。

但这些强化学习方法仍有改进空间。近日,强化学习之父、阿尔伯塔大学教授 Richard Sutton 的团队低调更新了一篇论文,其中提出了一种新的通用思想 Reward Centering,并称该思想适用于几乎所有强化学习算法。这里我们将其译为「奖励聚中」。

该论文是首届强化学习会议(RLC 2024)的入选论文之一。一作 Abhishek Naik 刚刚从阿尔伯塔大学获得博士学位,他是 Sutton 教授的第 12 位博士毕业生。
 

图片

下面我们简要看看 Reward Centering 有何创新之处。

图片

  • 论文标题:Reward Centering

  • 论文地址:https://arxiv.org/pdf/2405.09999

奖励聚中理论

智能体和环境之间的交互可以表述为一个有限马尔可夫决策过程(MDP)(S, A, R, p),其中 S 表示状态集,A 表示动作集,R 表示奖励集,p : S × R × S × A → [0, 1] 表示转换的动态。在时间步骤 t,智能体处于状态 S_t,使用行为策略 b : A × S → [0, 1] 采取行动 A_t,然后根据转换动态:

图片

观察下一个状态 S_{t+1} 和奖励 R_{t+1}。

这里研究的问题是持续性问题,即智能体和环境的交互会无限地进行。智能体的目标是最大化长期获得的平均奖励。为此,该团队考虑了估计每个状态的预期折扣奖励总和的方法:

图片

这里,折扣因子不是问题的一部分,而是一个算法参数。

奖励聚中思想很简单:从奖励中减去实际观察到的奖励的平均值。这样做会让修改后的奖励看起来以均值为中心。

这种以均值为中心的奖励在 bandit 设置中很常见。举个例子,Sutton 和 Barto 在 2018 年的一篇论文中表明,根据观察到的奖励估计和减去平均奖励可以显着提高学习速度。

而这里,该团队证明所有强化学习算法都能享受到这种好处,并且当折现因子 γ 接近 1 时,好处会更大。

奖励聚中之所以这么好,一个底层原因可通过折现价值函数的罗朗级数(Laurent Series)分解来揭示。

折现价值函数可被分解成两部分。其中一部分是一个常数,并不依赖状态或动作,因此并不参与动作选取。


用数学表示的话,对于与折现因子 γ 对应的策略 π 的表格折现价值函数

图片


 

图片


 

其中 r(π) 是策略 π 获得的独立于状态的平均奖励,

图片

是状态 s 的微分值。它们各自对于遍历 MDP 的定义为:

图片

图片

则是一个误差项,当折现因子变为 1 时变为零。状态值的这种分解也意味着状态-动作值有类似的分解。


这种 Laurent 级数分解能解释奖励聚中为何有助于解决 bandit 问题。

在完整的强化学习问题中,与状态无关的偏移可能会相当大。举个例子,图 2 中展示的三状态马尔科夫奖励过程。如果状态从 A 变成 B,则奖励是 +3,否则都是 0。平均奖励为 r(π) = 1。右侧表中给出了三个折现因子的折现状态值。


 

图片

现在,从每个状态中减去常数偏移的折现值

图片

,也被称为聚中折现值。


可以看到,这个已经聚中的值在幅度上要小得多,并且当折现因子增大时,也只会发生轻微变化。这里还给出了微分值以供参考。

这些趋势普遍成立:对于任意问题,折现值的幅度都会随着折现因子接近 1 而急剧增加,而聚中折现值则变化不大,并接近微分值。

从数学上看,聚中折现值是平均聚中奖励的预期折现和:

 

图片


 

其中 γ ∈ [0, 1]。当 γ = 1 时,聚中折现值与微分值相同。更一般地说,聚中折现值是微分值加上来自罗朗级数分解的误差项,如上图右侧所示。

因此,奖励聚中能够通过两个组件(恒定平均奖励和聚中折现值函数)捕获折现值函数中的所有信息。这种分解非常有价值:
 

  • 当γ→1时,折现值趋于爆炸,但聚中折现值仍然很小且易于处理。

  • 如果问题的奖励偏移了一个常数 c,那么折现值的幅度就会增加 c/(1 − γ),但聚中折现值会保持不变,因为平均奖励也会增加 c。


使用奖励聚中时,还可以设计出在智能体的生命周期内可以改变折现因子(算法参数)的算法。对于标准折现算法来说,这通常是低效或无效的,因为它们的非聚中值可能会发生巨大变化。相比之下,聚中值可能变化不大,当折现因子接近 1 时,变化会变得微不足道。


当然,为了获得这些潜在好处,首先需要基于数据估计出平均奖励。


简单奖励聚中以及基于价值的奖励聚中

估计平均奖励最简单的方法是根据之前已经观察到的奖励估计平均值。也就是说,如果

图片

表示 t 个时间步骤后的平均奖励估计,则

图片

。更一般地,可以使用步长参数 βt 来更新该估计:

 

图片


 

该团队表示,这种简单的聚中方法适用于几乎任何强化学习算法。举个例子,奖励聚中可以与传统的时间差分(TD)学习组合起来学习一个状态-价值函数估计:

 

图片


 

此外,他们还提出了基于价值的奖励聚中。这种方法的灵感来自强化学习的平均奖励公式。Wan et al. (2021) 表明,使用时间差分(TD)误差(而不是 (4) 中的传统误差)可以对表格离策略设置中的奖励率进行无偏估计。事实证明,平均奖励公式中的这个思路在折扣奖励公式中也非常有效。

该团队表明,如果行为策略采取目标策略所做的所有操作,那么可以使用 TD 误差很好地近似目标策略的平均奖励:
 

图片

由于这种聚中方法除了奖励之外还涉及价值,因此他们将其称为基于价值的聚中。不同于简单的奖励聚中,现在平均奖励估计和价值估计的收敛是相互依赖的。

实验

该团队实验了 (5) 式的四种算法变体版本,并测试了不同的折现因子。详细过程请阅读原论文,这里我们简单看看结果。

 

图片


 

如图 3 所示,当奖励由一个 oracle 进行聚中处理时,学习曲线的起点会低得多。对于其它算法,第一个误差都在 r(π)/(1 − γ) 量级。

无聚中的 TD 学习(蓝色)最终达到了与 oracle 聚中算法(橙色)相同的误差率,这符合预期。

简单聚中方法(绿色)确实有助于更快地降低 RMSVE,但其最终误差率会稍微高一点。这也符合预期,因为平均奖励估计会随时间而变化,导致与非聚中或 oracle 聚中版本相比,更新的变数更大。当 γ 更大时也有类似的趋势。这些实验表明,简单的奖励聚中技术在在策略设置中非常有效,并且对于较大的折扣因子,效果更为明显。

在学习率和渐近误差方面,基于价值的奖励聚中(红色)在在策略问题上与简单聚中差不多。但在离策略问题上,基于价值的聚中能以更快的速度得到更低的 RMSVE,同时最终误差率也差不多。

总体而言,可以观察到奖励聚中可以提高折现奖励预测算法(如 TD 学习)的学习率,尤其是对于较大的折扣因子。虽然简单奖励聚中方法已经相当有效,但基于价值的奖励聚中更适合一般的离策略问题。

此外,该团队还研究了奖励聚中对 Q 学习的影响。具体的理论描述和实验过程请访问原论文。
 

图片

图片

总之,实验表明,奖励聚中可以提高 Q 学习算法的表格、线性和非线性变体在多种问题上的性能。当折现因子接近 1 时,学习率的提升会更大。此外,该算法对问题奖励变化的稳健性也有所提升。

看起来,奖励聚中这个看起来非常简单的方法确实可以显著提升强化学习算法。你怎么看待这一方法,会在你的研究和应用中尝试它吗?


http://www.ppmy.cn/news/1543867.html

相关文章

C++ 数据结构 静态顺序表、动态顺序表。

静态顺序表(Static Array List)是一种线性数据结构,通常用数组实现。它具有固定的大小,并在编译时分配内存。以下是静态顺序表的一些基本概念和实现示例。 静态顺序表基本概念 固定大小:静态顺序表的大小在创建时定义…

Unreal5从入门到精通之如何解决在VR项目在头显中卡顿的问题

前言 以前我们使用Unity开发VR,Unity提供了非常便利的插件和工具来做VR。但是由于Unity的渲染效果不如Unreal,现在我们改用Unreal来做VR了,所有的VR相关的配置和操作都要重新学习。 今天就来总结一下,我在开发VR过程中碰到的所有问题。 1.编辑器,以VR运行 默认运行方式…

Fsm1

为了处理有时间上先后的事件,在FPGA中采用状态机的形式完成事件处理。 Mealy 状态机:输出不仅取决于当前状态,还取决于输入状态。 Moore 状态机:组合逻辑的输出只取决于当前状态,而与输入状态无关。 二段式状态机&…

【源码+文档】基于SpringBoot+Vue旅游网站系统【提供源码+答辩PPT+参考文档+项目部署】

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

算法笔记()

文章目录 什么是算法算法的分类算法的意义 其他比较好的算法网站比较知名的算法博主 算法这个课题有点太大了,穷尽一生也难以望其涯岸那是肯定的,甚至几代人无数精英也做不到完全掌握,我们普通人就更不要想了,能理解多少算多少吧。…

docker swarm部署xxl-job的踩坑记

文章目录 背景介绍方案介绍事故发生问题总结问题解决原因分析 背景介绍 最近新入职了一家公司做数据开发,发现之前公司所用的定时任务调度还是Crontab的方式。比较原始,对定时任务的状态、日志等都难以管理和监控。同时项目多了之后也没有一个统一的平台…

elementUI table 多级表头隔行变背景颜色

效果图如下: 代码如下: 其中rowIndex 0 意思为多级表头的第一行,columnIndex 0 意思为某一行的第一列 如 rowIndex 0, columnIndex 1 的意思为多级表头的第一行中的第二列 指在上效果图中 激活指标 如 rowIndex 1&#x…

用神经网络自动玩游戏

用神经网络玩游戏CartPole是OpenAI gym中的一个游戏测试,车上顶着一个自由摆动的杆子,实现杆子的平衡,杆子每次倒向一端车就开始移动让杆子保持动态直立的状态. 游戏地址:https://gymnasium.farama.org/env ... _control/cart_pole/一、搭建…