蒙特卡洛方法
模型无关的强化学习
值函数估计
蒙特卡洛方法
Monte-Carlo methods 是一类广泛的计算算法
例子
蒙特卡洛价值估计
目标:从策略 π 下的经验片段学习 Vπ
s0(i)a0(i),R(s0)(i)s1(i)a1(i),R(s1)(i)s2(i)⋯sT(i)∼π
累积奖励(return)是总折扣奖励
Gt=Rt+1+γRt+2+γ2Rt+3+⋯+γT−1RT
值函数(value function)是期望累计奖励
Vπ(s)=E[R(s0)+γR(s1)+⋯∣s0=s,π]
=E[Gt∣st=s,π]
≃N1∑i=1NGt(i)
- 使用策略 π 从状态 s 采样 N 个片段
- 计算平均累计奖励
蒙特卡洛策略评估使用经验均值累计奖励而不是期望累计奖励
实现蒙特卡洛值估计
实现
使用策略 π 采样片段
s0(i)a0(i),R(s0)(i)s1(i)a1(i),R(s1)(i)s2(i)⋯sT(i)∼π
在一个片段中每个时间步长 t 的状态 s 都被访问
- 增量计数器 N(s)←N(s)+1
- 增量总累计奖励 S(s)←S(s)+Gt
- 值被估计为累计奖励的均值 V(s)=N(s)S(s)
- 由大数定律得 V(s)→Vπ(s) as N(s)→∞
增量蒙特卡洛更新
每个片段结束后逐步更新 V(s)
对于每个状态 St 和对应累计奖励 Gt
N(St)←N(St)+1
V(St)←V(St)+N(St)1(Gt−V(St))
对于非稳定问题(即环境会随时间发生变化),我们可以跟踪一个现阶段的平均值(即不考虑过久之前的片段)
V(St)←V(St)+α(Gt−V(St))
实现值估计
思路:Vπ(s)≃N1∑i=1NGt(i)
实现:V(St)←V(St)+α(Gt−V(St))
直接从经验片段中学习
model-free,模型无关的:为止马尔可夫决策过程的状态转移/奖励
从完整的片段中进行学习:没有使用 bootstrapping 方法
最简单的思想:值 value = 平均累计奖励 mean return
警告⚠️:只能讲蒙特卡洛方法应用于可分片段的马尔可夫决策过程中!
即,所有的片段都有终止状态
模型无关控制方法
模型无关的控制应用场景
在线策略和离线策略学习
两类模型无关的强化学习
- 在线策略学习 On-Policy
- Learning on the job
- 利用策略 π 的经验采样不断学习改进策略 π
- 离线策略学习 Off-Policy
- Look over someone’s shoulder
- 利用另一个策略 μ 的经验采样不断学习改进策略 π
状态值和状态-动作值
Gt=Rt+1+γRt+2+⋯+γT−1RT
状态值
马尔可夫决策过程的状态值函数 Vπ(s) 是指从状态 s 开始,执行策略 π 的期望累计奖励为
Vπ(s)=Eπ[Gt∣St=s]
状态-动作值
马尔可夫决策过程的状态-动作值函数 Qπ(s,a) 是指从状态 s 开始,执行 a 动作之后,执行策略 π 的期望累计奖励
Qπ(s,a)=Eπ[Gt∣St=s,At=a]
贝尔曼期望方程
状态值函数 Vπ(s) 可被分解为即时奖励加上后续状态的折扣值
Vπ(s)=Eπ[Rt+1+γVπ(St+1)∣St=s]
状态-动作值函数 Qπ(s,a) 也能被分解为
Qπ(s,a)=Eπ[Rt+1+γQπ(St+1,At+1)∣St=s,At=a]
因此
- Vπ(s)=∑a∈AQπ(s,a)
- Qπ(s,a)=R(s,a)+γ∑s′∈SPsa(s′)Vπ(s′)
模型无关的策略迭代
给定状态值函数 V(s) 和状态-动作值函数 Q(s,a),模型无关的策略迭代应使用状态-动作值函数
基于状态值函数 V(s) 的贪心策略改进需要建立马尔可夫决策过程的模型
πnew(s)=argmaxa∈A{R(s,a)+γ∑s′∈SPsa(s′)Vπ(s′)}
- 我们不知道状态转移概率 Psa(s′)
基于状态-动作值函数 Q(s,a) 的贪心策略改进是模型无关的
πnew(s)=argmaxa∈AQ(s,a)
使用状态-动作值函数的广义策略迭代
- 策略评估:蒙特卡洛策略估计 Q=Qπ
- 策略改进:贪心策略改进
ε-greedy 策略探索
确保持续探索最简单的想法
所有 m 个动作都以非零概率进行尝试
以 1-ε 的概率,选择贪心动作
以 ε 的概率,随机选择一个动作
π(a∣s)=mϵ+1−ϵ 当 a∗=argmaxa∈AQ(s,a)
π(a∣s)=mϵ otherwise
ε-greedy 策略改进
定理:
- 对于任意 ε-greedy 的策略 π,关于 Qπ 的 ε-greedy 策略 π′ 是 π 的一个改进,即 Vπ′(s)≥Vπ(s)
Vπ′(s)=Qπ(s,π′(s))=∑a∈Aπ′(a∣s)Qπ(s,a)
=mϵ∑a∈AQπ(s,a)+(1−ϵ)maxa∈AQπ(s,a)
≥mϵ∑a∈AQπ(s,a)+(1−ϵ)∑a∈A1−ϵπ(a∣s)−mϵQπ(s,a)
=∑a∈Aπ(a∣s)Qπ(s,a)=Vπ(s)
蒙特卡洛控制
对于每个片段 episode
- 策略评估:蒙特卡洛策略估计 Q≈Qπ
- 策略改进:ε-greedy 策略改进
蒙特卡洛控制 vs. 时序差分控制
- 时序差分(TD)学习相比蒙特卡洛(MC)有许多优点
- 自然的想法:在控制中,使用时序差分代替蒙特卡洛
- 使用时序差分来更细状态-动作值函数
- 使用 ε-greedy 策略改进
- 每个时间步长更新状态-动作值函数
重要性采样
估计一个不同分布的期望
Ex∼p[f(x)]=∫xp(x)f(x)dx
=∫xq(x)q(x)p(x)f(x)dx
=Ex∼q[q(x)p(x)f(x)]
将每个实例的权重重新分配为 β(x)=q(x)p(x)
使用重要性采样的离线策略蒙特卡洛
使用策略 μ 产生的累计奖励评估策略 π
根据两个策略之间的重要性比率(importance ratio)对累计奖励 Gt 加权
每个片段乘以重要性比率
{s1,a1,r2,s2,a2,⋯,sT}∼μ
Gtπ/μ=μ(at∣st)μ(at+1∣st+1)π(at∣st)π(at+1∣st+1)⋯μ(aT∣sT)π(aT∣sT)Gt
更新值函数以逼近修正的累计奖励值
V(st)←V(st)+α(Gtπ/μ−V(st))
- 无法在 π 非零而 μ 为 0 时使用
- 重要性采样将显著增大方差(variance)
使用重要性采样的离线策略时序差分
使用策略 μ 产生的时序差分目标评估策略 π
根据重要性采样对时序差分目标 r+γV(s′) 加权
仅需要一步来进行重要性采样验证
V(st)←V(st)+α(μ(at∣st)π(at∣st)(rt+1+γV(st+1))−V(st))
- 重要性采样修正:μ(at∣st)π(at∣st)
- 时序差分目标:rt+1+γV(st+1)
时序差分学习
时序差分学习
Gt=Rt+1+γRt+2+γ2Rt+3+⋯=Rt+1+γV(St+1)
V(St)←V(St)+α(Rt+1+γV(St+1)−V(St))
观测值 Rt+1,对未来的猜测 γV(St+1)
- 时序差分方法直接从经验片段中进行学习
- 时序差分是模型无关的
- 通过自举法(bootstrapping),时序差分从不完整的片段中学习
- 时序差分更新当前预测值使之接近估计累计奖励(非真实值)
蒙特卡洛 MC VS 时序差分 TD
相同的目标:从策略 π 下的经验片段学习 Vπ
增量地进行每次蒙特卡洛过程
最简单的时序差分学习算法:
更新 V(St) 使之接近估计累计奖励 Rt+1+γV(St+1)
V(St)←V(St)+α(Rt+1+γV(St+1)−V(St))
时序差分目标: Rt+1+γV(St+1)
时序差分误差:δt=Rt+1+γV(St+1)−V(St)
蒙特卡洛和时序差分的优缺点
时序差分能够在知道最后结果之前进行学习
- 能够在每一步之后进行学习
- 蒙特卡洛必须等待片段结束,直到累计奖励已知
时序差分能够无需最后结果而进行学习
- 时序差分能够从不完整序列中学习,而蒙特卡洛只能从完整序列中学习
- 时序差分在连续*(无终止的)*环境下工作
- 蒙特卡洛只能在片段化*(有终止)*环境下工作
蒙特卡洛 MC
蒙特卡洛具有高方差,无偏差 V(St)←V(St)+α(Gt−V(St))
时序差分 TD
时序差分具有低方差,有偏差 V(St)←V(St)+α(Rt+1+γV(St+1)−V(St))
- 通常比蒙特卡洛更高效
- 时序差分最终收敛到 Vπ(St)
- 比蒙特卡洛对初始值更加敏感
偏差 Bias 和方差 Variance 的权衡
累计奖励 Gt=Rt+1+γRt+2+⋯+γT−1RT 是 Vπ(St) 的无偏估计
时序差分真实目标 Rt+1+γVπ(St+1) 是 Vπ(St) 的无偏估计
时序差分目标 Rt+1+γV(St+1) 是 Vπ(St) 的有偏估计
时序差分目标具有比累计奖励更低的方差
- 累计奖励——取决于多步随机动作,多步状态转移和多步奖励
- 时序差分目标——取决于单步随机动作,单步状态转移和单步奖励
多步时序差分学习
对于有时间约束的情况,我们可以跳过 n 步预测的部分,直接进入模型无关的控制
定义 n 步累计奖励
Gt(n)=Rt+1+γRt+2+⋯+γn−1R(t+n)+γnV(St+n)
n 步时序差分学习
V(St)←V(St)+α(Gt(n)−V(St))