文章目录
1. 简介
- 在“3.强化学习-动态规划”中我们假设环境模型已知,对马尔可夫决策问题(MDP)运用动态规划求解最优策略和最优价值。
- 这个章节主要针对环境未知的情况(未知MDP),对给定策略的价值函数进行预估(无模型预测)。
- 下一章节将会介绍无模型的控制问题(优化价值函数,在MDP未知的情况下)。
2. 蒙特卡洛学习(Monto-Carlo learning)
(book [3] chapter 5.1)
蒙特卡洛学习 MC,虽然该方法不是最高效的方法,但是却是有效的。
- 从回合(espisode)中直接学习经验
- 无模型(model-free), 没有MDP状态转移/奖励的知识
- 从完整的回合中学习:no-bootsrapping。 这种方法适合回合性的问题,如游戏,回合最终会结束。
- 运用非常简单的逻辑,价值value=mean return 回报均值
- 注意: 所有的回合(espisode)必须是完整的,已经结束的
2.1 蒙特卡洛策略评估
-
目标:从给定策略下的多个经历回合(espisodes)中学习该策略下的状态价值函数 V π ( s ) V_{\pi}(s) Vπ(s),即
S 1 , A 1 , R 2 . . . S k ∼ π S_1,A_1,R_2...S_k \sim \pi S1,A1,R2...Sk∼π
(S 状态,A 动作,R奖励) -
t时刻状态的总回报:
G t = R t + 1 + γ R t + 2 . . . + γ T − 1 R T G_t=R_{t+1}+\gamma R_{t+2}...+\gamma ^{T-1} R_{T} Gt=Rt+1+γRt+2...+γT−1RT
( γ \gamma γ is discount factor) -
回顾状态s的价值函数为回报的期望:
v π ( s ) = E π [ G t ∣ S t = s ] v_{\pi}(s)=\mathbb{E}_{\pi}[G_t|S_t=s] vπ(s)=Eπ[Gt∣St=s] -
蒙特卡洛策略评估运用经验均值回报来代替期望回报
2.1.1 首次访问(First-visit) 蒙特卡洛策略评估
假设我们想要估计状态s在策略 π \pi π下的价值 V π ( s ) V_{\pi}(s) Vπ(s) ,已知一些遵循此策略的回合(espisode),我们将每次s在回合中的出现定义为一次访问状态s。在一次回合中可能多次访问s。
对于每一个回合,
- 当该状态第一次出现在回合中时列入计算,
- 状态计数器,状态每次出现加1: N ( s ) ← N ( s ) + 1 N(s) \gets N(s)+1 N(s)←N(s)+1
- 增加总的收获: S ( s ) ← S ( s ) + 1 S(s) \gets S(s)+1 S(s)←S(s)+1
- 用回报的均值估计状态价值: V ( s ) ← S ( s ) / N ( s ) V(s) \gets S(s)/N(s) V(s)←S(s)/N(s)
- 根据大数定律: 当
N
(
s
)
→
∞
N(s) \rightarrow \infin
N(s)→∞
时, V ( s ) → V π ( s ) V(s) \rightarrow V_{\pi}(s) V(s)→Vπ(s)
2.1.2 每次访问(Every-visit) 蒙特卡洛策略评估
此方法和首次访问仅有一些区别。这里我们考虑每次的访问。
对于每一个回合,
- 当该状态每一次出现在回合中时列入计算,
- 状态计数器,状态每次出现加1: N ( s ) ← N ( s ) + 1 N(s) \gets N(s)+1 N(s)←N(s)+1
- 增加总的收获: S ( s ) ← S ( s ) + 1 S(s) \gets S(s)+1 S(s)←S(s)+1
- 用回报的均值估计状态价值: V ( s ) ← S ( s ) / N ( s ) V(s) \gets S(s)/N(s) V(s)←S(s)/N(s)
- 根据大数定律:当
N
(
s
)
→
∞
N(s) \rightarrow \infin
N(s)→∞
时, V ( s ) → V π ( s ) V(s) \rightarrow V_{\pi}(s) V(s)→Vπ(s)
【注】不同于动态规划,这里只用到了采样, 抽取一些完成的回合来估计价值 V ( s ) V(s) V(s)。在动态规划中, 则将所有路径进行计算。
例子-参考https://zhuanlan.zhihu.com/p/500866739中扑克21点游戏,这里的讲解挺清晰的。
2.2 增量均值 Incremental mean
序列 x 1 , x 2 . . . x_1,x_2... x1,x2...的均值 μ 1 , m u 2 . . . \mu_1,mu_2... μ1,mu2...可以通过增量进行计算,如下,
μ k = 1 / k ∑ j = 1 k x j = 1 / k ( x k + ∑ j = 1 k − 1 x j ) = μ k − 1 + 1 / k ( x k − μ k − 1 ) \mu_k =1/k \sum^k_{j=1} x_j=1/k (x_k+\sum^{k-1}_{j=1} x_j )=\mu_{k-1}+1/k(x_k-\mu_{k-1}) μk=1/k∑j=1kxj=1/k(xk+∑j=1k−1xj)=μk−1+1/k(xk−μk−1)
x 1 , . . . x k x_1,...x_k x1,...xk 的均值 μ k \mu_k μk可以通过 x 1 , . . . x k x_1,...x_k x1,...xk 的均值 μ k − 1 \mu_{k-1} μk−1以及增量 1 / k ( x k − μ k − 1 ) 1/k(x_k-\mu_{k-1}) 1/k(xk−μk−1) 得出。直观的理解就是通过新的 x k x_k xk和原来均值 μ k − 1 \mu_{k-1} μk−1的差对原均值 μ k − 1 \mu_{k-1} μk−1进行调整以获取新的均值 μ k \mu_k μk.
2.3 增量蒙特卡洛更新 Incremental Monto-Carlo updates
蒙特卡洛的价值均值更新可参考以上增量均值的模式,进行增量更新。
对于每个状态
S
t
S_t
St,其对应的回报
G
t
G_t
Gt
N
(
s
)
←
N
(
s
)
+
1
N(s) \gets N(s)+1
N(s)←N(s)+1 //状态计数
V
(
s
t
)
←
V
(
s
t
)
+
1
N
(
s
)
(
G
t
−
V
(
s
t
)
)
V(s_t) \gets V(s_t) +\frac{1}{N(s)}(G_t-V(s_t))
V(st)←V(st)+N(s)1(Gt−V(st)) //价值均值增量更新
对于非稳定问题(non-stationary), 我们可能想要对旧的回合进行遗忘:
V
(
s
t
)
←
V
(
s
t
)
+
α
(
G
t
−
V
(
s
t
)
)
V(s_t) \gets V(s_t) +\alpha(G_t-V(s_t))
V(st)←V(st)+α(Gt−V(st))
3. 时序差分学习 (Temporal-Difference learning)
(book [3] chapter 6.1,6.2,6.3)
3.1 时序差分学习 TD
- 从回合(espisode)中直接学习经验
- 无模型(model-free), 没有MDP状态转移/奖励的知识
- 从不完整的回合中学习:by-bootsrapping, 我们可以用部分的路径然后用对剩余路径奖励的估计值来代替真实的回报。
“更新初始的 猜测 向后继的 猜测 靠近”
3.2 蒙特卡洛学习 MC和时序差分学习 TD
-
目标:从经验回合中在线学习策略 π \pi π的价值 v π v_\pi vπ
-
增量每次访问(Every-visit) 的蒙特卡洛
更新价值 V ( s t ) V(s_t) V(st)趋向于真实回报 G t G_t Gt
V ( s t ) ← V ( s t ) + α ( G t − V ( s t ) ) V(s_t) \gets V(s_t) +\alpha(G_t-V(s_t)) V(st)←V(st)+α(Gt−V(st)) -
最简单的时序差分学习 :TD(0)
更新价值 V ( s t ) V(s_t) V(st)趋向于估计回报 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1)(也称为TD目标)V ( s t ) ← V ( s t ) + α ( R t + 1 + γ V ( S t + 1 ) − V ( s t ) ) V(s_t) \gets V(s_t) +\alpha(R_{t+1}+\gamma V(S_{t+1}) - V(s_t)) V(st)←V(st)+α(Rt+1+γV(St+1)−V(st))
δ t = R t + 1 + γ V ( S t + 1 ) − V ( s t ) \delta_t = R_{t+1}+ \gamma V(S_{t+1}) - V(s_t) δt=Rt+1+γV(St+1)−V(st)是TD误差
MC和 TD的优势劣势 1
- TD 可以在知道最终结果前进行学习
- TD可以在每一步后在线学习
- MC必须要等到回合结束,回报获得以后
- TD学习可以不需最终结果
- TD可以从不完整的序列里学习
- MC仅从完整的序列里学习
- TD可以在持续(无结点)的环境学习
- MC仅在有结点的回合环境学习
3.3 偏差/方差平衡
- 回报 G t = R t + 1 + γ R t + 2 + . . . + γ T − 1 R T G_t= R_{t+1}+\gamma R_{t+2}+...+\gamma ^{T-1} R_{T} Gt=Rt+1+γRt+2+...+γT−1RT是 V π ( s t ) V_\pi (s_t) Vπ(st)的无偏估计 (对于MC).
- 真实的TD目标 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1)是 V π ( s t ) V_\pi (s_t) Vπ(st)的无偏估计.
- TD目标 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1)是 V π ( s t ) V_\pi (s_t) Vπ(st)的有偏估计。 有偏来自于 V ( S t + 1 ) ≠ V π ( s t + 1 ) V(S_{t+1})\neq V_\pi (s_{t+1}) V(St+1)=Vπ(st+1)
- TD目标 比回报(MC)的方差更低
1.回报的值取决于很多随机的动作、转换、和奖励
2.TD目标取决于一个随机的动作、转换、和奖励
MC和 TD的优势劣势 2
-
MC的方差大,0偏差
- 收敛
- 对于初始值不敏感
- 简单,易理解
-
TD的方差小,但是有偏差
- 通常比MC更高效
- TD(0)收敛于 V π ( s t ) V_\pi (s_t) Vπ(st)
- 对于初始值更敏感
例子- 随机行走。
用来对比
α
\alpha
α-MC和TD在下图中MRP的预测能力
MRP是一个没有动作action的MDP
状态空间: 如下图:A、B、C、D、E为中间状态,C同时作为起始状态。灰色方格表示终止状态;
即时奖励: 右侧的终止状态得到即时奖励为1,左侧终止状态得到的即时奖励为0,在其他状态间转化得到的即时奖励是0;
状态转移: 任意状态下等概率向左或向右转移一步,进入终止状态即终止;
折扣系数 γ \gamma γ= 1;
给定的策略: 随机选择向左、向右两个行为。
问题: 对这个MRP问题进行预测,也就是评估随机行走这个策略的状态价值,即确定该MRP问题的状态价值函数。由于MRP是无折扣的,且只有右边的终止状态奖励为1,其他奖励为0,所以,某个状态的真实价值就是假如从该状态开始,终止于右边终止状态的概率。因此,中间状态C的价值真实值为 v π ( C ) = 0.5 v_\pi(C)=0.5 vπ(C)=0.5. A到E的真实状态价值为1/6,2/6,3/6,4/6,5/6。
求解: 下图左图是使用TD算法得到的结果。横坐标显示的是状态,纵坐标是各状态的价值估计,一共5条折线,数字表明的是实际经历的Episode数量,true value所指的那根折线反映的是各状态的实际价值。第0次时,各状态的价值被初始化为0.5,经过1次、10次、100次后得到的价值函数越来越接近实际状态价值函数。
上面右图比较了MC和TD算法在不同步长 α \alpha α参数下的学习曲线。横坐标是经历的episode数量,纵坐标是学习得到的状态函数和实际状态函数下各状态价值的均方差(五个状态的平均,然后跑了100次做平均)。红色是MC算法在不同step-size下的学习曲线,蓝色的曲线使用TD算法。可以看出TD较MC更高效。此图还可以看出当step-size不是非常小的情况下,TD有可能得不到最终的实际价值,将会在某一区间震荡。
批量MC和 TD
- MC和 TD 收敛: V ( s ) → v π ( s ) V(s) \rightarrow v_\pi(s) V(s)→vπ(s) as experience → ∞ \rightarrow \infty →∞
- 有限经历的批量结果?
…
确定性等价
- MC 收敛于最小化均方差解(是观测回报的最优拟合)
- TD 收敛于马尔可夫模型的最大似然解 (最好的解释数据)
MC和 TD的优势劣势 3
- TD 利用了马尔可夫性质,
- 在马尔可夫环境 更高效。不需要看整个的路径,利用已经总结好的之前的状态, 因此更高效;
- MD未利用马尔可夫性质,
- 如果你在非马尔可夫环境 (或者部分被观测)的话,MD更有效。
3.4 Monto-Carlo 备份
假设我们在MDP中,从 S t S_t St开始有左右两个动作(action), 假设根据红色部分,我们选择右边的动作,然后来自下一层中的两个state,等。现在是我们如何通过利用这样的前瞻式的树得到root node 状态 S t S_t St的价值。
蒙特卡洛是通过对完整路径的采样对
V
(
S
t
)
V(S_t)
V(St)进行更新。(如下红色标注的是一个完整的路径为一次采样)
(空心点为状态,实心点为动作)
3.5 TD备份
TD是一步瞻望,仅对当前状态的下一动作和阶段进行采样。 (如下图,
S
t
S_t
St在action 进行采样, 然后从
r
t
+
1
r_{t+1}
rt+1对下一环境状态节点采样, 然后通过
S
t
+
1
S_{t+1}
St+1 备份和
r
t
+
1
r_{t+1}
rt+1 对
S
t
S_t
St更新。
3.6 DP动态规划备份
DP是也是一步瞻望,但我们不对动作或者状态进行采样。我需要知道整个动态来计算期望值。
3.7 bootstrapping 和sampling采样
- bootstrapping 不用真实的回报而用估计的回报
- MC不用bootstrapping
- DP和TD用bootstrapping
- sampling
- MC 和TD采样
- DP不采样
3.8 强化学习统一视图
4.TD( λ ) \lambda) λ)
(book [3] chapter 7.1,12.1)
4.1 n-step 预测
4.2 n-step 回报
- 考虑一下子的n-step 回报,n=1,2,…
∞
\infin
∞.
回顾一下3.3中TD得回报公式,当n=1时,对应得时TD学习。
而当n= ∞ \infin ∞时,对应得时MC学习 - 定义n-step回报
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}+...+\gamma ^{n-1} R_{t+n}+\gamma ^{n}V(s_{t+n}) Gt(n)=Rt+1+γRt+2+...+γn−1Rt+n+γnV(st+n) - n-step TD
V ( s t ) ← V ( s t ) + α ( G t ( n ) − V ( s t ) ) V(s_t) \gets V(s_t) +\alpha(G_t^{(n)}-V(s_t)) V(st)←V(st)+α(Gt(n)−V(st))
我们试图更新$V(s_t) $, 使其接近于TD target G t ( n ) G_t^{(n)} Gt(n) ,或者降低 G t ( n ) − V ( s t ) G_t^{(n)}-V(s_t) Gt(n)−V(st) error signal.
例子- 随机游走
基于不同的stepsize
α
\alpha
α 和不同的n-step。
下一节 我们考虑所有的n-step。
4.3 平均 n-step 回报
我们可以对不同n下的 n-step 回报进行平均。
1
/
2
G
(
2
)
+
1
/
2
G
(
4
)
1/2G^{(2)}+1/2G^{(4)}
1/2G(2)+1/2G(4)
4.4 λ − \lambda- λ−回报
(book [3] chapter 12.1)
-
λ − \lambda- λ−回报 G t λ G_t^{\lambda} Gtλ 融合所有n-step 回报 G t ( n ) G_t^{(n)} Gt(n)
-
用权重 ( 1 − λ ) λ n − 1 (1-\lambda)\lambda^{n-1} (1−λ)λn−1, 则回报
G t λ = ( 1 − λ ) ∑ n − 1 ∞ λ n − 1 G t ( n ) G_t^{\lambda}=(1-\lambda)\sum_{n-1}^{\infin} \lambda^{n-1}G_t^{(n)} Gtλ=(1−λ)∑n−1∞λn−1Gt(n) -
前视 TD( λ \lambda λ), G t λ G_t^{\lambda} Gtλ as TD target
V ( s t ) ← V ( s t ) + α ( G t λ − V ( s t ) ) V(s_t) \gets V(s_t) +\alpha(G_t^{\lambda}-V(s_t)) V(st)←V(st)+α(Gtλ−V(st))( G t λ G_t^{\lambda} Gtλ 更具有鲁棒性)
4.5 TD( λ ) \lambda) λ)权重函数
下图说明了
λ
−
\lambda-
λ−回报中n-step回报序列的权重。1-step 回报对应的权重最高
1
−
λ
1-\lambda
1−λ.
为什么用几何加权geometric weighting??
4.6 前视TD( λ ) \lambda) λ)
- 前向视角指用未来的奖励更新当前状态,即基于向前看来更新状态。在这里指计算回报时朝未来看,朝着λ回报方向更新价值函数。
- 引入了λ之后,会发现要更新一个状态的状态价值,必须要走完整个回合,获得每一个状态的即时奖励以及最终状态获得的即时奖励。
- 这和MC算法的要求一样,因此TD(λ)算法有着和MC方法一样的劣势,只能工作在完整的回合的MDP。
基于随机游走的前视TD(
λ
)
\lambda)
λ)
- λ取值区间为[0,1],当λ=1时对应的就是MC算法。当λ=0时对应的就是TD算法
4.7 后视TD( λ ) \lambda) λ)
前向视角提供了理论基础,反向视角提供了机制。反向视角在线更新每一步,且从不完整的序列中更新。
资格迹Eligibility Traces
(book chapter 12)
资格迹 是一种更有效地实现 TD(λ) 的机制。它跟踪最近访问的状态(或状态-动作对),这些状态应该被更新。状态 s(或状态-动作对 ( s , a ) (s, a) (s,a))的资格迹随时间衰减,并在状态(或状态-动作对)被访问时增加。
例子:被电击的原因?
信用分配问题(Credit assignment problem):是铃声还是灯光引起了电击?
- 频率启发式(Frequency heuristic):将信用分配给最常出现的状态
- 近期启发式(Recency heuristic):将信用分配给最近的状态。
资格迹(Eligibility traces):结合了上述两种启发式。
时间 t 时状态 s 的资格迹
E
(
s
)
E(s)
E(s)更新如下:
E
t
(
s
)
=
γ
λ
E
t
−
1
(
s
)
+
1
s
t
=
s
E_t(s) = \gamma \lambda E_{t-1}(s) + 1_{s_t=s}
Et(s)=γλEt−1(s)+1st=s
其中
1
s
t
=
s
1_{s_t=s}
1st=s 是一个指示函数,如果状态
s
t
s_t
st 是 s,则为 1,否则为 0。
该方法为
T
D
(
λ
)
TD(\lambda)
TD(λ) 提供了后视视角。 每次更新依赖于当前的TD-error和当前时刻对过去事件资格迹。
TD(λ) 和资格迹之间的关系
- TD(λ) 与资格迹:TD(λ) 可以通过资格迹来实现,为多步更新提供了有效的机制。当收到奖励时,更新分布到所有在迹中的状态(或状态-动作对),权重由其资格迹决定。
- 统一框架:资格迹统一了 TD 学习和蒙特卡罗方法的概念。λ 参数允许在这些方法之间进行平滑插值。当 λ = 0 时,TD(λ) 退化为 TD(0);当 λ = 1 时,它近似于蒙特卡罗方法。
使用资格迹的 TD(λ) 示例
考虑一个在网格世界中导航的代理。在每个时间步,代理根据收到的奖励和下一个状态的价值更新当前状态的价值。有了资格迹,代理还会更新之前访问过的状态的价值,更新随时间衰减。
-
初始化:
- V ( s ) ← V(s) \leftarrow V(s)←任意值
- E ( s ) ← 0 E(s) \leftarrow 0 E(s)←0 对所有状态s
-
对于每个情节:
- 初始化状态 (s)
-
对于情节中的每一步:
- 采取动作 (a),观察奖励 (r) 和下一个状态 s ′ s' s′
- 计算 TD 误差: δ = r + γ V ( s ′ ) − V ( s ) \delta = r + \gamma V(s') - V(s) δ=r+γV(s′)−V(s)
- 更新资格迹 : E ( s ) ← E ( s ) + 1 E(s) \leftarrow E(s) + 1 E(s)←E(s)+1
- 对所有状态 (s):
- 更新价值: V ( s ) ← V ( s ) + α δ E ( s ) V(s) \leftarrow V(s) + \alpha \delta E(s) V(s)←V(s)+αδE(s)
- 衰减资格迹: E ( s ) ← γ λ E ( s ) E(s) \leftarrow \gamma \lambda E(s) E(s)←γλE(s)
- 转移到下一个状态 s ← s ′ s \leftarrow s' s←s′
总结
- TD(λ) 是 TD 学习的广义化,通过参数 λ 在 TD(0) 和蒙特卡罗方法之间进行平衡。
- 资格迹 是实现 TD(λ) 的工具,通过跟踪最近访问的状态(或状态-动作对)并更新它们来提高效率。
- 关系:TD(λ) 使用资格迹根据近期奖励和未来估计奖励更新价值函数,提供更平衡和有效的学习过程。
TD(λ) 和资格迹一起为在强化学习中学习最优策略提供了一个强大的框架。
[1] 封面图片来自于https://www.researchgate.net/publication/343415080_Adaptive_Bitrate_Video_Streaming_for_Wireless_nodes_A_Survey
[2]RL Course by David Silver - Lecture 4: Model-Free Prediction
[3] http://incompleteideas.net/book/the-book-2nd.html
[4] https://zhuanlan.zhihu.com/p/500866739