动手学强化学习(四)——蒙特卡洛方法
一、蒙特卡洛方法
蒙特卡洛方法是一种无模型(Model-Free)的强化学习算法,它通过直接与环境交互采样轨迹(episodes)来估计状态或动作的价值函数(Value Function),而不需要依赖环境动态模型(如转移概率矩阵 P(s′∣s,a)和奖励函数 R(s,a)的显式知识)。简单来说,我们前面来说的策略都是通过公式推导出公式q,但是蒙特卡洛可以直接通过数据量来推出q,这样就省略勒模型
假设,有一枚硬币,抛硬币后,若正面朝上,定义随机变量X=1;若反面朝上X=-1,。目标是计算X的期望E(X)。
基于Model-base的方法,基于已知的概率模型,概率都为0.5,那么期望计算公式E(X)=0.5*1+0.5*(-1)=0
如果通过蒙特卡洛方法,就直接从数据入手。通过多次独立地抛硬币进行采样。比如,抛次硬币,假设得到6次正面,4次反面,对应的值分别为1和-1,计算这次采样的平均值为(6-4)/10 = 0.2,用这个平均数来近似期望。当抛硬币的次数逐渐增大时,根据大数定律,样本均值会越来越趋近于随机变量的期望值。
二、 MC Basic
MC Basic 是蒙特卡洛方法的一种简单实现,结合了策略评估(Policy Evaluation)和策略改进(Policy Improvement)的迭代过程,属于基于策略迭代(Policy Iteration)的无模型算法。在强化学习中,要计算在策略pi下的状态 - 动作值函数 q(s,a),即从状态出发,采取动作a后,遵循策略pi所获得的期望回报。
从状态s出发,采取动作a,然后按照策略pi在环境中进行交互,直到到达终止状态,这一过程称为一个 episode,得到一个回报 g(s,a)。重复上述过程多次,得到多个回报,对这些回报取平均值
随着采样次数的增加,该估计会越来越接近真实的。
2.1 网格世界的蒙特卡洛
在一个M * N 的网格世界中,智能体需要从一个位置移动到另一个位置。每个网格可能有不同的奖励值,例如,有些网格代表正奖励,有些代表负奖励,还有些可能是障碍。智能体要学习一个策略,以最大化从起始状态到终止状态的累积奖励。
智能体从初始状态 s0 开始,按照当前策略选择动作进行移动。假设在某一时刻智能体处于状态,根据策略选择动作,然后转移到下一个状态,并获得奖励。重复这个过程,直到到达终止状态,形成一个 episode,如(s0,a0,r0,s1,a1,r1,...,st,at,r),其中T是终止时刻,该 episode 的回报
2.2 首次访问法
对于每个状态 - 动作对(s,a),只考虑在一个 episode 中第一次访问到(s,a)时后续所获得的回报来估计qpi(s,a)。例如,在一个 episode 中多次访问到(s,a),但只使用第一次访问后得到的回报 G 来更新对qpi(s,a)的估计。若有n个 episode 中首次访问到(s,a),得到的回报分别为G1,G2,G3...,则的估计值为。
2.3 每次访问法
对于每个状态 - 动作对(s,a),在一个 episode 中每次访问到(s,a)时后续所获得的回报都用于估计qpi(s,a)。即每次访问到(s,a)都记录下后续的回报,然后对所有这些回报求平均值来更新qpi(s,a)的估计。
同样使用贪心策略来迭代到最终