深度强化学习(DRL)算法 附录 3 —— 蒙特卡洛方法(MC)和时序差分(TD)
状态转移概率一般是不知道的,所以我们需要 model-free 的方法,如 MC 和 TD。
状态转移概率一般是不知道的,所以我们需要 model-free 的方法,如 MC 和 TD
蒙特卡洛方法(MC)
ε \varepsilon ε-贪心策略:
贪心动作选择概率:1 - ε + ε ∣ A ∣ \varepsilon + \frac{\varepsilon}{\left| A\right|} ε+∣A∣ε
非贪心动作选择概率: ε ∣ A ∣ \frac{\varepsilon}{\left| A \right|} ∣A∣ε
这就是 ε \varepsilon ε-贪心策略
策略评估
s0, a0, r1, s1, a1, r2, s2, a2, … rT, sT(收集很多长度为 T 的 episode,使用任意 ε \varepsilon ε
-软性策略产生)
构造 hash-map
s0 -> G1, G2, …
s1 -> G1’, G2’, …
s2-> G1’‘, G2’', …
每个 key 下的 G 取平均(大数定理),就是策略评估。
需要注意的是,Gt = r + γ \gamma γ
Gt+1,这种递归表示,从后往前计算更快。
但是要满足无穷多 episode 和 试探性出发假设的条件,才能准确策略评估,但这样无穷多 episode 效率太低了,我们可以采用类似价值迭代和异步价值迭代的方法避免无穷多 episode。
策略改进
使用 ε \varepsilon ε-贪心策略,同样满足策略改进定理。且对 $\forall s \in S, a \in A, $ 有 $ \pi(a|s) > 0$ ,是一个软性策略,避免试探性出发假设。
同轨策略 MC 控制
行动策略(用来采样) = 目标策略(用来优化,我们想要的最终策略),所以必须都是软性策略。
控制指的是 PE + PI 两步过程。
离轨策略 MC 控制
行动策略 ≠ \neq =目标策略,所以只要保证行动策略是软性策略,目标策略可以是贪心策略。
实现的方法:重要性采样,因为重要性采样的原因,目标策略和行动策略生成的 episode 必须保证相同,如果非贪心的行为比较普遍,则会降低学习速度。
增量式更新
这个很好理解,我们不必须等很多 episode 采样完之后再进行平均(同轨策略不存在这个问题,因为每次采样完* 1/n 就可以计算平均)。v’ 代表采样一次得到 g 之后的新平均值
v ′ ← ( n − 1 ) ∗ v + g n = v + 1 n ∗ ( g − v ) v' \leftarrow \frac{(n-1)*v + g}{n} = v + \frac{1}{n}*(g-v) v′←n(n−1)∗v+g=v+n1∗(g−v)
同轨策略不存在 g 权重不同的情况,把离轨策略的权重加上就可以得到离轨策略增量式更新:
c ← c + w c \leftarrow c+w c←c+w
v ‘ ← v + w c ( g − v ) v‘ \leftarrow v + \frac{w}{c}(g-v) v‘←v+cw(g−v)(1)
常量 α \alpha α 更新
从平均的角度,我们得到了增量式更新的表达试,我们从另一个角度来 (1)式:
v 是我们想要得到的期望回报,g-v 是 error, w c \frac{w}{c} cw 替换成 α \alpha α ,如果 error 大于 0,我们应该增加 v ,小于 0 我们应该减小 v ,那么多次后,就可以接近我们的的期望回报。
v ← v + α ( g − v ) = ( 1 − α ) v + α g v \leftarrow v + \alpha(g-v) = (1-\alpha)v+ \alpha g v←v+α(g−v)=(1−α)v+αg
我看可以考到 α \alpha α = 0,我们完全不会更新 v ,只考虑现在, α = 1 \alpha = 1 α=1 ,我们只考虑未来, α \alpha α 保持不变就是所谓的常量 α \alpha α 更新。
补充:虽然 v 可以通过 pi 和 q 求出来,但是实际上 PE 和 PI 是分开的,所以一般实践上我们更关心的是 q,后面介绍 TD 算法的时候,就把 v 换成 q 了。(DRL 的神奇之处,神经网络可以直接求 v,所以 PPO 我们看到了新的定义,advantage = q - v)。
时序差分(TD)
根据常量 α \alpha α更新,用 bootstrap 的思想可以很简单的推出时序差分的常用算法
Sarsa(同轨)
- 策略改进(把策略改进提前实现起来更简单,也可以像 MC 那样使用任意 ε \varepsilon ε-策略采样)
π ← ε \pi \leftarrow \varepsilon π←ε-greedy(Q) (目标策略)
- 策略评估
π ← ε \pi \leftarrow \varepsilon π←ε-greedy(Q) (行动策略)
q ( s t + 1 , a t + 1 ) ← q ( s t , a t ) + α ( r + γ q ( s t + 1 , a t + 1 ) ⏟ t d − t a r g e t − q ( s t , a t ) ) ⏟ t d − e r r o r q(s_{t+1},a_{t+1}) \leftarrow q(s_{t},a_{t}) + \alpha \underbrace{\underbrace{(r + \gamma q(s_{t+1},a_{t+1})}_{td-target} - q(s_{t},a_{t}))}_{td-error} q(st+1,at+1)←q(st,at)+αtd−error
td−target
(r+γq(st+1,at+1)−q(st,at))
(小写表示一次采样)所以 Sarsa 的核心就是每次采样变成了 (st, at, rt+1, st+1, at+1),这也是算法名字的来源。
Q-learning(离轨)
- 策略改进(把策略改进提前实现起来更简单,也可以像 MC 那样使用任意 ε \varepsilon ε-策略采样)
贪心策略 (目标策略) - 策略评估
π ← ε \pi \leftarrow \varepsilon π←ε-greedy(Q) (行动策略)
q ( s t + 1 , a t + 1 ) ← q ( s t , a t ) + α ( r + γ m a x a q ( s t + 1 , a ) ⏟ t d − t a r g e t − q ( s t , a t ) ) ⏟ t d − e r r o r q(s_{t+1},a_{t+1}) \leftarrow q(s_{t},a_{t}) + \alpha \underbrace{\underbrace{(r + \gamma max_{a}q(s_{t+1},a)}_{td-target} - q(s_{t},a_{t}))}_{td-error} q(st+1,at+1)←q(st,at)+αtd−error
td−target
(r+γmaxaq(st+1,a)−q(st,at))
(小写表示一次采样)
为什么这里没有用重要性采样,因为目标策略的序列和行动策略没关系,不像 MC off-policy 需要用行动策略的采样来评估目标策略的采样。(理解这点很重要)
期望 Sarsa(同轨)
期望 Sarsa 和 Sarsa 类似,只不过取了加权平均
- 策略改进(把策略改进提前实现起来更简单,也可以像 MC 那样使用任意 ε \varepsilon ε-策略采样)
π ← ε \pi \leftarrow \varepsilon π←ε-greedy(Q) (目标策略) - 策略评估
π ← ε \pi \leftarrow \varepsilon π←ε-greedy(Q) (行动策略)
q ( s t + 1 , a t + 1 ) ← q ( s t , a t ) + α ( r + γ ∑ a π ( a ∣ s t + 1 ) q ( s t + 1 , a ) ⏟ t d − t a r g e t − q ( s t , a t ) ) ⏟ t d − e r r o r q(s_{t+1},a_{t+1}) \leftarrow q(s_{t},a_{t}) + \alpha \underbrace{\underbrace{(r + \gamma \sum_{a}^{}{\pi(a|s_{t+1})}q(s_{t+1},a)}_{td-target} - q(s_{t},a_{t}))}_{td-error} q(st+1,at+1)←q(st,at)+αtd−error td−target (r+γa∑π(a∣st+1)q(st+1,a)−q(st,at))
(小写表示一次采样)
参考
- https://www.bilibili.com/medialist/play/97068901?from=space&business=space_series&business_id=594040&desc=1&spm_id_from=333.999.0.0
- http://incompleteideas.net/book/RLbook2020.pdf
- https://nbviewer.org/github/MathFoundationRL/Book-Mathmatical-Foundation-of-Reinforcement-Learning/blob/main/Lecture%20slides/L7-Temporal-difference%20learning.pdf

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)