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

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


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

为了简化标记,我们关心单个动作。令 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

相关推荐
镜象科技29 分钟前
AI情感大模型应用场景全解:从校园到医院再到企业的落地地图
人工智能
Joshua-a1 小时前
工程数学-理解卷积的含义_线性时不变系统的冲激响应与卷积
人工智能·深度学习
song5011 小时前
React Native for OpenHarmony 实战:三方库 react-native-css-transformer 的鸿蒙化适配指南
css·人工智能·深度学习·react native·transformer
老金带你玩AI6 小时前
ChatGPT dots,到底能替你操多少心?
人工智能
AliCloudROS7 小时前
计算巢 X DeepSeek Harness — 云端智能体工作台
人工智能·阿里云
深蓝AI7 小时前
GitHub的Push一年涨4.9倍:AI Agent为什么逼它重做Git存储?
人工智能·github
stereohomology7 小时前
大模型的观点谨:StoryTold 「Crafting Apps」四件套 · 深度总览
人工智能·llm
运维行者_7 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
Su米苏8 小时前
Spring AI 中MCP 与普通 @Tool的区别
java·人工智能·spring
美狐美颜sdk8 小时前
直播APP源码可以直接接入视频美颜sdk吗?技术方案详解
android·人工智能·音视频·美颜sdk·直播美颜sdk