【强化学习】四、无模型预测

四、无模型预测

1.蒙特卡罗强化学习Monte-Carlo Reinforcement Learning

MC方法可直接从分幕(episodes)的经验中学习

MC是无模型(Model-free)的算法:MDP的转换和奖励是未知的

MC从完整的episodes(回合)中学习

MC使用最简单的想法:价值(value)=平均回报(mean return)

注意:MC只能应用于分幕的MDP中,所有的episodes必须终止


蒙特卡罗策略评估

目标:在给定策略 π \pi π下,从一系列episodes经验中学习价值函数 v π v_\pi vπ
S 1 , A 1 , R 2 , … , S k ∼ k S_1, A_1, R_2, \dots,S_k \sim k S1,A1,R2,,Skk
回顾:回报是带折扣总奖励
G t = R t + 1 + γ R t + 2 + … + γ T − 1 R T G_t=R_{t+1}+\gamma R_{t+2}+\ldots+\gamma^{T-1} R_T Gt=Rt+1+γRt+2++γT1RT
回顾:价值函数是回报的期望
v π ( s ) = E π [ G t ∣ S t = s ] v_\pi(s)=\mathbb E_\pi[G_t \mid S_t=s] vπ(s)=Eπ[GtSt=s]
蒙特卡罗策略评估使用每个状态的平均回报来代替回报的期望


首次访问型(First-Visit)蒙特卡罗策略评估

目标:评估状态s

每幕中,状态s第一次出现时,进行如下操作一次

  1. 增加计数个数 N ( s ) ← N ( s ) + 1 N(s) \leftarrow N(s)+1 N(s)N(s)+1
  2. 增加回报总和 S ( s ) ← S ( s ) + G t S(s) \leftarrow S(s)+G_t S(s)S(s)+Gt
  3. 价值由平均回报估算 V ( s ) = S ( s ) / N ( s ) V(s)=S(s)/N(s) V(s)=S(s)/N(s)

根据大数定律: V ( s ) → V π ( s ) a s N ( s ) → ∞ V(s)\rightarrow V_\pi(s) \quad as \quad N(s) \rightarrow \infin V(s)Vπ(s)asN(s)


每次访问型(Every-Visit)蒙特卡罗策略评估

目标:评估状态s

每幕中,状态s每出现一次时,进行如下操作一次

  1. 增加计数个数 N ( s ) ← N ( s ) + 1 N(s) \leftarrow N(s)+1 N(s)N(s)+1
  2. 增加回报总和 S ( s ) ← S ( s ) + G t S(s) \leftarrow S(s)+G_t S(s)S(s)+Gt
  3. 价值由平均回报估算 V ( s ) = S ( s ) / N ( s ) V(s)=S(s)/N(s) V(s)=S(s)/N(s)

根据大数定律: V ( s ) → V π ( s ) a s N ( s ) → ∞ V(s)\rightarrow V_\pi(s) \quad as \quad N(s) \rightarrow \infin V(s)Vπ(s)asN(s)

image-20230816145407072

image-20230816145432647

累进式均值更新

序列 x 1 , x 2 . . . x_1,x_2... x1,x2...的平均值 μ 1 , μ 2 , . . . \mu_1,\mu_2,... μ1,μ2,...可以增量计算
μ k = μ k − 1 + 1 k ( x k − μ k − 1 ) \mu_k=\mu_{k-1}+\frac{1}{k}(x_k-\mu_{k-1}) μk=μk1+k1(xkμk1)


累进式蒙特卡罗更新

在episode S 1 , A 1 , R 2 , . . . , R T S_1,A_1,R_2,...,R_T S1,A1,R2,...,RT后逐步更新 V ( s ) V(s) V(s)

对于每个具有回报 G t G_t Gt的状态 S t S_t St
N ( S t ) ← N ( S t ) + 1 V ( S t ) ← V ( S t ) + 1 N ( S t ) ( G t − V ( S t ) ) N(S_t) \leftarrow N(S_t) + 1 \\ V(S_t) \leftarrow V(S_t) + \frac{1}{N(S_t)}(G_t-V(S_t)) N(St)N(St)+1V(St)V(St)+N(St)1(GtV(St))
在非平稳问题中,跟踪连续平均值(即忘掉旧episodes)可能很有用
V ( S t ) ← V ( S t ) + α ( G t − V ( S t ) ) V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(G_t-V\left(S_t\right)\right) V(St)V(St)+α(GtV(St))


2.时序差分学习(Temporal-Difference Learning)

TD方法可直接从经验中学习

TD是无模型的:不了解MDP转换/奖励

TD通过自举(bootstrapping)从不完整的episodes中学习,对于没有完成的幕也可以学习,这与蒙特卡罗不同,自举是指新的是根据旧的来进行学习

猜测episode的结果,同时持续更新这个猜测


MC和TD

目标:根据策略 π \pi π得到的经验学习价值函数 v π v_\pi vπ

增量式every-visit蒙特卡罗

  • 朝着实际回报 G t G_t Gt的方向更新价值 V ( S t ) V(S_t) V(St) G t G_t Gt是指整轮游戏结束后,才能算得的t时刻的回报,是一个能得到的确定的数

V ( S t ) ← V ( S t ) + α ( G t − V ( S t ) ) V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(G_t-V\left(S_t\right)\right) V(St)V(St)+α(GtV(St))

最简单的时序差分算法:TD(0)

朝着估计回报 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1)的方向更新 V ( S t ) V(S_t) V(St)
V ( S t ) ← V ( S t ) + α ( R t + 1 + γ V ( S t + 1 ) − V ( S t ) ) V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(R_{t+1}+\gamma V\left(S_{t+1}\right)-V\left(S_t\right)\right) V(St)V(St)+α(Rt+1+γV(St+1)V(St))
( R t + 1 + γ V ( S t + 1 ) ) \left(R_{t+1}+\gamma V\left(S_{t+1}\right)\right) (Rt+1+γV(St+1))被称为TD target

δ t = R t + 1 + γ V ( S t + 1 ) − V ( S t ) \delta_t=R_{t+1}+\gamma V\left(S_{t+1}\right)-V(S_t) δt=Rt+1+γV(St+1)V(St)被称为TD error

自举: 猜测episode的结果,同时持续更新这个猜测,这里就是猜测 V ( S t + 1 ) V(S_{t+1}) V(St+1)来更新 V ( S t ) V(S_t) V(St)

例子:开车回家

image-20230816153727510

image-20230816153806570

MC和TD的优点和缺点

TD可以在知道最终结果之前学习

  • TD可以在每一步之后在线学习

  • MC必须等到episode结束才能知道回报

TD可以在没有最终结果的情况下学习

  • TD可以从不完整的序列中学习

  • MC只能从完整序列中学习

  • TD在连续(非终止)环境中工作

  • MC仅适用于episode(终止)环境


偏差/方差的平衡

回报 G t = R t + 1 + γ R t + 2 + ⋯ + γ T − 1 R t + T G_t=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{T-1} R_{t+T} Gt=Rt+1+γRt+2++γT1Rt+T v π ( S t ) v_\pi(S_t) vπ(St)的无偏估计

真实的TD target R t + 1 + γ v π ( S t + 1 ) R_{t+1}+\gamma v_\pi\left(S_{t+1}\right) Rt+1+γvπ(St+1) v π ( S t ) v_\pi(S_t) vπ(St)的无偏估计

TD target R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V\left(S_{t+1}\right) Rt+1+γV(St+1) v π ( S t ) v_\pi(S_t) vπ(St)的有偏估计

TD target R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V\left(S_{t+1}\right) Rt+1+γV(St+1)的方差比回报 G t G_t Gt低得多

  • 回报取决于一系列随机的动作、转移与奖励
  • TD target取决于一个动作及其对应的转移与奖励

v π v_\pi vπ是真实的价值函数, V V V是预测的价值函数,只有 V V V收敛了,才是真实的价值函数


MC和TD的优点和缺点(2)

MC具有高方差,零偏差

  • 良好的收敛性

  • 对初始值不太敏感

  • 很容易理解和使用

MC方法具有高方差的原因是:我们在玩游戏的时候,游戏本身是有随机性的,所以我们可以把 G a G_a Ga看成一个随机变量。因为我们每次到 s a s_a sa的时候,最后得到的 G a G_a Ga其实是不一样的。我们看到同样的状态 s a s_a sa,最后到游戏结束的时候,因为游戏本身是有随机性的,玩游戏的模型可能也有随机性,所以我们每次得到的 G a G_a Ga是不一样的,每一次得到的 G a G_a Ga的差别其实会很大。为什么会很大呢?因为 G a G_a Ga是很多个不同的步骤的奖励的和。假设我们每一个步骤都会得到一个奖励, G a G_a Ga是从状态 s a s_a sa开始一直到游戏结束,每一个步骤的奖励的和。

TD方差低,但存在偏差

  • 通常比MC更高效

  • TD(0)收敛至 v π ( S t ) v_\pi(S_t) vπ(St)

  • 对初始值更敏感


MC和TD的优点和缺点(3)

TD利用了马尔可夫性

  • 通常在马尔可夫环境中效率更高

MC没有利用马尔可夫性

  • 通常在非马尔可夫环境中更有效

MC、TD、DP的比较

MC:

image-20230816163943247

TD:

image-20230816164057864

DP:

image-20230816164120943


3.TD( λ \lambda λ)

n步TD

让TD target看更多步未来的状态

image-20230816164640234

考虑n步回报
n = 1 ( T D ) G t ( 1 ) = R t + 1 + γ V ( S t + 1 ) n = 2 G t ( 2 ) = R t + 1 + γ R t + 2 + γ 2 V ( S t + 2 ) ⋮ n = ∞ ( M C ) G t ( ∞ ) = R t + 1 + γ R t + 2 + … + γ T − 1 R T \begin{aligned} & n=1 \quad (TD) \quad G_t^{(1)}=R_{t+1}+\gamma V\left(S_{t+1}\right) \\ & n=2 \quad \quad \quad \quad G_t^{(2)}=R_{t+1}+\gamma R_{t+2}+\gamma^2 V\left(S_{t+2}\right) \\ & \vdots \\ & n=\infin \quad (MC) \quad G_t^{(\infty)}=R_{t+1}+\gamma R_{t+2}+\ldots+\gamma^{T-1} R_T \end{aligned} n=1(TD)Gt(1)=Rt+1+γV(St+1)n=2Gt(2)=Rt+1+γRt+2+γ2V(St+2)n=(MC)Gt()=Rt+1+γRt+2++γT1RT
定义n步回报为:
G t ( n ) = R t + 1 + γ R t + 2 + … + γ n − 1 R t + n + γ n V ( S t + n ) G_t^{(n)}=R_{t+1}+\gamma R_{t+2}+\ldots+\gamma^{n-1} R_{t+n}+\gamma^n V\left(S_{t+n}\right) Gt(n)=Rt+1+γRt+2++γn1Rt+n+γnV(St+n)
n步时序差分算法:
V ( S t ) ← V ( S t ) + α ( G t ( n ) − V ( S t ) ) V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(G_t^{(n)}-V\left(S_t\right)\right) V(St)V(St)+α(Gt(n)V(St))


TD( λ \lambda λ)

image-20230816165559988

G t λ G_t^\lambda Gtλ整合了所有的n步回报 G t ( n ) G_t(n) Gt(n)

加和时,使用权重 ( 1 − λ ) λ n − 1 (1-\lambda)\lambda^{n-1} (1λ)λn1
G t λ = ( 1 − λ ) ∑ n = 1 ∞ λ n − 1 G t ( n ) G_t^\lambda=(1-\lambda) \sum_{n=1}^{\infty} \lambda^{n-1} G_t^{(n)} Gtλ=(1λ)n=1λn1Gt(n)
得到 T D ( λ ) TD(\lambda) TD(λ)
V ( S t ) ← V ( S t ) + α ( G t ( n ) − V ( S t ) ) V\left(S_t\right) \leftarrow V\left(S_t\right)+\alpha\left(G_t^{(n)}-V\left(S_t\right)\right) V(St)V(St)+α(Gt(n)V(St))
λ = 0 \lambda=0 λ=0时就是TD(0), λ = 1 \lambda=1 λ=1时就是MC


4.参考资料

强化学习基础 北京邮电大学 鲁鹏 强化学习基础 (本科生课程) 北京邮电大学 鲁鹏_哔哩哔哩_bilibili

深度强化学习 台湾大学 李宏毅 DRL Lecture 1_ Policy Gradient (Review)_哔哩哔哩_bilibili

蘑菇书EasyRL datawhalechina/easy-rl: 强化学习中文教程(蘑菇书),在线阅读地址:https://datawhalechina.github.io/easy-rl/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
强化学习(Reinforcement Learning)和模型预测控制(Model Predictive Control)是两种常用的控制策略。 强化学习是一种通过试错学习来优化控制策略的方法。在无模型强化学习中,通过与环境的交互来学习最佳的控制策略,而无需事先建立系统的数学模型。这种方法的优点是在线计算量较小,并且在理论上可以获得最优控制策略。然而,应用无模型强化学习来获得生物过程的最佳进料策略可能会面临一些实际问题,例如需要大量的数据、探索过程可能会损害工艺性能、无法明确施加状态约束、对超参数敏感等。此外,由于成本或报酬的变化,可能需要重新学习控制策略,而且生成的控制策略可能不直观或不符合操作员的直觉标准。[1] 模型预测控制是一种基于系统动力学模型的控制方法。通过建立系统的数学模型,可以预测未来的系统行为,并根据这些预测结果来优化控制策略。在模型预测控制中,通常会选择一个相对不错的控制量作为状态的近似,这样可以得到较好的控制效果。这种方法通常涉及监督学习,即通过专家演示来确定控制量。[2]在生物过程中,虽然建立的模型可能不准确,但仍然可以用于计算近似最优输入,从而提供有意义的数据。为了改进控制策略并减少数据需求,可以将无模型强化学习模型预测控制相结合,利用系统动力学的先验知识来提供可用的模型,并通过较少的数据来改进控制策略。[3]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值