深入理解强化学习——多臂赌博机:增量式实现

分类目录:《深入理解强化学习》总目录


至今我们讨论的动作---价值方法都把动作价值作为观测到的收益的样本均值来估计。下面我们探讨如何才能以一种高效的方式计算这些均值,尤其是如何保持常数级的内存需求和常数级的单时刻计算量。

为了简化标记,我们关心单个动作。令 R i R_i Ri表示这一动作被选择 i i i次后获得的收益, Q n Q_n Qn表示被选择 n − 1 n-1 n−1次后它的估计的动作价值,现在可以简单地把它写为:
Q n = R 1 + R 2 + ⋯ + R n − 1 n − 1 Q_n=\frac{R_1+R_2+\cdots+R_{n-1}}{n-1} Qn=n−1R1+R2+⋯+Rn−1

这种简明的实现需要维护所有收益的记录,然后在每次需要估计价值时进行计算。然而,由于已知的收益越来越多,内存和计算量会随着时间增长。每增加一次收益就需要更多的内存存储和更多的计算资源来对分子求和,但这确实不是必须的。为了计算每个新的收益,很容易设计增量式公式以小而恒定的计算来更新平均值。给定 Q n Q_n Qn和第 n n n次的收益 R n R_n Rn,所有 n n n个收益的新的均值可以这样计算:
Q n + 1 = Q n + 1 n R n − Q n Q_{n+1}=Q_n+\frac{1}{n}R_n-Q_n Qn+1=Qn+n1Rn−Qn

这个式子即使对 n = 1 n=1 n=1也有效,对任意 Q 1 Q_1 Q1,可以得到 Q 2 = R 1 Q_2=R_1 Q2=R1。对于每一个新的收益,这种实现只需要存储 Q n Q_n Qn和 n n n,并用上式进行少量计算即可。

上式的一般的形式是:
新估计值 = 旧估计值 + 步长 ∗ 目标 − 旧估计值 \text{新估计值}=\text{旧估计值}+\text{步长}*\\text{目标}-\\text{旧估计值} 新估计值=旧估计值+步长∗目标−旧估计值

表达式 目标 − 旧估计值 \text{目标}-\text{旧估计值} 目标−旧估计值是估计值的误差。误差会随着向"目标"(Target)靠近的每一步而减小。虽然"目标"中可能充满噪声,但我们还是假定"目标"会告诉我们可行的前进方向。比如在上述例子中,目标就是第 n n n次的收益。

值得注意的是,上述增量式方法中的"步长"(Stepsize)会随着时间而变化。处理动作 a a a对应的第 n n n个收益的方法用的"步长"是 1 n \frac{1}{n} n1。我们将"步长"记作 α \alpha α,或者更普适地记作 α t ( a ) \alpha_t(a) αt(a)。

参考文献:

1 张伟楠, 沈键, 俞勇. 动手学强化学习M. 人民邮电出版社, 2022.

2 Richard S. Sutton, Andrew G. Barto. 强化学习(第2版)M. 电子工业出版社, 2019

3 Maxim Lapan. 深度强化学习实践(原书第2版)M. 北京华章图文信息有限公司, 2021

4 王琦, 杨毅远, 江季. Easy RL:强化学习教程 M. 人民邮电出版社, 2022

相关推荐
Alson_Code1 分钟前
Spring AI-1.1.0
java·人工智能·后端·spring·ai编程
AI客栈7 分钟前
云原生 AI 平台搭建与智能调度系统设计
人工智能
Wenzar_9 分钟前
用 JAX 构建可微分光子神经网络仿真器
java·人工智能·深度学习·神经网络
小真zzz10 分钟前
搜极星:专业第三方中立洞察GEO专家——深度详解
人工智能
我爱cope12 分钟前
【Agent智能体23 | 规划-规划工作流】
人工智能·设计模式·语言模型·职场和发展
lzhdim19 分钟前
C盘空间多出来4GB:谷歌服软 Chrome本地AI大模型可禁用、删除了
前端·人工智能·chrome
Monkery20 分钟前
WWDC26 全面汇总
前端·人工智能
Cloud_Shy61821 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第四章 Item 27 - 29)
开发语言·人工智能·经验分享·python·学习方法
汤姆yu22 分钟前
AI全生命周期七大安全模块落地指南
人工智能·信息安全·大模型
断眉的派大星22 分钟前
YOLO26 完整学习笔记:从 Anchor-Free、TAL、STAL 到端到端无 NMS 部署
人工智能·笔记·学习·yolo·目标检测·计算机视觉·目标跟踪