强化学习小笔记 —— 如何选择合适的更新步长

在强化学习中,动作价值函数的更新可以使用增量法,如下所示:
Q k = 1 k ∑ i = 1 k r i = 1 k ( r k + ∑ i = 1 k − 1 r i ) = 1 k ( r k + ( k − 1 ) Q k − 1 ) = 1 k ( r k + k Q k − 1 − Q k − 1 ) = Q k − 1 + 1 k [ r k − Q k − 1 ] \begin{align*} Q_k &= \frac{1}{k}\sum_{i=1}^k r_i \\ &= \frac{1}{k}(r_k + \sum_{i=1}^{k-1}r_i) \\ &= \frac{1}{k}(r_k + (k-1)Q_{k-1}) \\ &= \frac{1}{k}(r_k + kQ_{k-1} - Q_{k-1}) \\ &= Q_{k-1} + \frac{1}{k}[r_k - Q_{k-1}] \end{align*} Qk=k1i=1∑kri=k1(rk+i=1∑k−1ri)=k1(rk+(k−1)Qk−1)=k1(rk+kQk−1−Qk−1)=Qk−1+k1[rk−Qk−1]

因此,根据最新观测到的奖励 r k r_k rk,使用增量计算方法根据误差 r k − Q k − 1 r_k - Q_{k-1} rk−Qk−1调整当前的估计值 Q k Q_k Qk,步长为 1 k \frac{1}{k} k1,继而获得新的估计值 Q k Q_{k} Qk。这意味着,如果最近观测到的奖励大于当前的估计值,我们会向上修改行动值的估计值。

请注意,由于存在 1 k \frac{1}{k} k1项,随着我们进行更多的观测,我们调整估计的比率将变小(公式中的 k k k随着访问次数的增加而不断增加,导致 1 k \frac{1}{k} k1越来越小)。因此,我们对最新的观测不太重视,对特定动作的动作值的估计会随着时间的推移而逐渐稳定下来。这意味着学习过程会逐渐变得保守,因为我们更加相信之前的经验。

但是,如果环境不是静止而是随时间变化的,这可能是不利的。在某些情况下,我们希望使用不会随时间减小的固定不长,例如,固定的步长 α ∈ ( 0 , 1 ) \alpha \in (0,1) α∈(0,1)。当环境随时间变化时,我们希望智能体能够适应环境的变化,而不是过分依赖过去的经验。如果我们使用固定步长,智能体将更好地适应这些变化,因为它会持续地从新的经验中学习,而不是逐渐降低学习速率。

综上,在一个平稳问题(环境)中,我们通常设置步长不断递减,这将有助于模型更快收敛。在一个随时间变化的环境中,我们通常设置固定的步长,避免模型过分依赖过去的经验。

相关推荐
南汐汐月3 小时前
重生归来,我要成功 Python 高手--day31 线性回归
python·机器学习·线性回归
时序大模型3 小时前
KDD2025 |DUET:时间 - 通道双聚类框架,多变量时序预测的 “全能选手”出现!
人工智能·机器学习·时间序列预测·时间序列·kdd2025
报错小能手3 小时前
C++笔记(面向对象)定义虚函数规则 运行时多态原理
开发语言·c++·笔记
_dindong3 小时前
【递归、回溯、搜索】专题六:记忆化搜索
数据结构·c++·笔记·学习·算法·深度优先·哈希算法
深入理解GEE云计算4 小时前
遥感生态指数(RSEI):理论发展、方法论争与实践进展
javascript·人工智能·算法·机器学习
云外天ノ☼4 小时前
一、Node.js入门实战指南:从零搭建你的第一个后端
前端·javascript·笔记·node.js
渡我白衣4 小时前
C++:链接的两难 —— ODR中的强与弱符号机制
开发语言·c++·人工智能·深度学习·网络协议·算法·机器学习
再睡一夏就好5 小时前
【C++闯关笔记】使用红黑树简单模拟实现map与set
java·c语言·数据结构·c++·笔记·语法·1024程序员节
MeowKnight9585 小时前
【数据结构】双链表 二叉树 练习记录
笔记
im_AMBER5 小时前
Leetcode 43
笔记·学习·算法·leetcode