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


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


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

    为了简化标记,我们关心单个动作。令 R i R_i Ri表示这一动作被选择 i i i次后获得的收益, Q n Q_n Qn表示被选择 n − 1 n-1 n1次后它的估计的动作价值,现在可以简单地把它写为:
    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=n1R1+R2++Rn1

    这种简明的实现需要维护所有收益的记录,然后在每次需要估计价值时进行计算。然而,由于已知的收益越来越多,内存和计算量会随着时间增长。每增加一次收益就需要更多的内存存储和更多的计算资源来对分子求和,但这确实不是必须的。为了计算每个新的收益,很容易设计增量式公式以小而恒定的计算来更新平均值。给定 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+n1[RnQn]

    这个式子即使对 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

  • 相关阅读:
    Java学习笔记(三十五)
    HTTP 原理与CND原理
    百亿级访问量,如何做缓存架构设计
    如何实现视频提取伴奏?看完包你学会~
    Docker快速入门到项目部署,docker自定义镜像
    老卫带你学---leetcode刷题(48. 旋转图像)
    10 小时 RTX 4090 兑换券免费送!用户调研招募中
    PCV0.S10.0N.000,VIS插装式压力补偿器
    ubuntu系统中查看打开的端口
    win10系统图片查看器关联不上了
  • 原文地址:https://blog.csdn.net/hy592070616/article/details/134252655