带有即插即用的代码,包含重要性采样
在强化学习中,我们使用蒙特卡洛(MC)估计或时序差分(TD)学习来建立样本轨迹的“目标”回报。这两种方法都允许我们从一个转换动态未知的环境中学习,也就是说,p(s',r|s,a)
是未知的。
MC使用从状态-动作对到达终止状态的完整回报。它的方差很高,但在样本独立且相同分布时是无偏的。
我将在另一天保存MC和TD之间的比较,并支持使用代码。今天的重点是MC本身。我将讨论策略内MC和策略外MC之间的区别,并使用可以尝试不同输入的即插即用代码来证明。
要点
在阅读本文的最后,您将在没有代码支持的情况下,更深刻地理解策略内和策略外方法之间的区别。此外,您还将掌握以下工具:
- 探索不同组合的Wind Grid World,可以轻松调整以适应您的喜好;
- 通过包含重要性采样的策略内或策略外MC进行训练;
- 可视化已经学习到的动作值和策略。
环境
这里考虑的是经典的Wind Grid World。由于风的原因,转移是随机的,因为有一个等于self.wind
的概率,代理移动时会随机移动而不是按其预期的方向移动。
我们将G
定义为目标,当代理降落在目标上时,会获得高回报,并且这也是一个终止状态。T
是陷阱,会导致代理承受相当大的负回报。除此之外的每一步都会产生−1的奖励。代理无法移出定义的空间。
from copy import deepcopyimport numpy as npfrom tqdm import tqdmimport matplotlib.pyplot as pltimport matplotlib.patches as patchesimport matplotlib.colors as mcolorsfrom matplotlib.cm import ScalarMappableclass…