本文是博主对《Reinforcement Learning- An introduction》的阅读笔记,不涉及内容的翻译,主要为个人的理解和思考。
上一节介绍了通过动态规划法来解决强化Markov decision process MDP环境下的学习问题, 动态规划法假设环境是完全可知,即对于状态动作间的转换概率p(s’,r|s,a)是完全可知,或者说给定状态state和运作action,可以确定性地知道下一状态。
但对于环境不可知的情况下,这时可以用蒙特卡罗方法来解决,其是通过从实际环境中去采样(experience)一系列状态、行动来获得真实奖励,此时状态动作的价值可以通过平均奖励来估计。
整体蒙特卡罗的学习还是基于通用policy两迭代过程(GPI),分为Policy Evaluation (Prediction)和Policy Improvement。Policy Evaluation阶段固定Policy,完成价值函数value function的估计。而在Policy Improvement中,通过价值函数估计来优化policy。对于蒙特卡罗方法,其关键在于价值函数value function的估计。完成价值函数估计后,优化policy便顺理成章了。
1. 蒙特卡罗方法
A. Policy Evaluation
前面分析了价值函数存在状态价值函数和动作价值函数两种,但是对于环境未知的情况下,已知状态的价值函数,却无法推导出Policy函数,因为无法确定当前状态和动作的下一状态。因此蒙特卡罗需要预估的是动作价值函数即,其估计值为当前状态和动作下未来收益的平均值:
蒙特卡罗方法将训练过程分成多轮,每一轮称为一个episode,在每一轮会从某个初始状态和初始动作开始,并从环境中采样一系列状态、动作、奖励序列:
其中表示状态和动作首次出现之后的累积收益,即:
B. Policy Improvement
policy函数可以直接根据价值函数来计算,但是因为蒙特卡罗方法根据policy函数来采样一系列状态动作,如果太硬,会导致某些状态动作一直没有机会被采样,换而言之,可能丢失探索(explore)最优解的机会,因此一种思路是采用ε-greedy的方法,下式中表示状态下可能采取的动作的数量。
另一种方法是选择初始状态和动作时,让每一对状态和动作都有一定概率选择,称为exploring starts。
2. off-policy蒙特卡罗方法
前文我们讨论了强化学习方法存在explore和exploit的权衡,一方面需要往更优的方向去寻找,另一方面需要探索新的方向。我们之前方法是根据ε-greedy等方法调整policy函数,来兼顾explore和exploit,这种通过目标policy函数来产出下轮训练数据的方法,称为on-policy方法。
另一种更为直观的方法是将explore和exploit过程分别拆分两个policy函数,其中优化policy函数称为target policy,而另外一个专门用于生成状态和动作对,用于探索的决策函数称为behavior policy,下轮训练数据不通过目标policy函数产出,因此称为off-policy方法。off-policy方法描述了一种更为通用的强化学习方法。
另一个问题是在off-policy中,target policy函数和behavior policy函数会存在分布不一致,这个不一致会带来预估的偏差,因此多数的off-policy策略引入重要性采样,来调整target policy函数和behavior policy函数间的偏差。
A. 重要性采样Importance-sampling
对于蒙特卡罗方法,这个偏差主要在通过policy函数产出的采样序列生成概率上不同,假设由初始状态,通过决策函数确定动作,最终生成一系列的序列:
其生成概率可以表示为:
target policy函数和behavior policy函数间偏差可以表示为:
此时我们修正累积收益的偏差:
B. 带权重的重要性采样weighted importance sampling
通过重要性采样,我们会在原有累积收益上乘上了一个偏差因子,这个偏差因子可能会因为target policy函数和behavior policy函数间的偏差而变得很大,从而导致同真实观察reward间的偏差太大,很难帮助target policy函数的学习,因此weighted importance sampling是在计算价值函数时,将偏差因子的也代入:
但这种方式显示是有偏的,其价值函数估计更偏向于behavior policy,但是其预估更为稳定。
C. behavior policy的函数的选择:
实际上对于蒙特卡罗方法来说,对于behavior policy的函数可以用任何软函数,需要满足两个条件:
- 可以保证target policy函数收敛
- 所有状态-动作都有机会被选择
D. 方法