强化学习 RL 基础 4:随机近似求解贝尔曼方程 | 从 时序差分 到 Q-learning


前言

本文内容主要参考《赵世钰. 强化学习的数学原理》 整理编写,属于个人学习笔记,详细内容请参见教材,致谢 赵世钰 老师。


1. 时序差分算法推导 – 应用随机近似

1.1 状态值更新

强化学习 RL 基础 1:马尔科夫决策过程 MDP 与 贝尔曼方程 中,我们知道状态价值通过贝尔曼方程可描述为:
v π ( s k ) = E ( r k + 1 + γ v π ( s k + 1 ) ) (1.1) v_\pi(s_k) = \mathbb{E}(r_{k+1} + \gamma v_\pi(s_{k+1})) \tag{1.1} vπ(sk)=E(rk+1+γvπ(sk+1))(1.1)
强化学习 RL 基础 2:从贝尔曼方程到策略求解 中,描述了通过系统模型,或无模型通过数据(蒙特卡洛方法),来计算贝尔曼方程;
然而在无模型时,蒙特卡洛方法需要完整的回合 (esipode) 数据来进行估计,更高效的方法是通过随机近似来完成这一过程:

针对式 ( 1.1 ) (1.1) (1.1),可定义函数:
g ( v k ) = v k − ( E ( r k + 1 + γ v π ( s k + 1 ) ) ) g(v_k) = v_k - \big(\mathbb{E}(r_{k+1} + \gamma v_\pi(s_{k+1}))\big) g(vk)=vk(E(rk+1+γvπ(sk+1)))

在存在噪声 η \eta η 单次观测下,有:
g ˜ ( v k ) = v k − ( E ( r k + 1 + γ v π ( s k + 1 ) ) + η k ) = v k − ( r k + 1 + γ v π ( s k + 1 ) ) \begin{align*} \~g(v_k) &= v_k - \big( \mathbb{E}(r_{k+1} + \gamma v_\pi(s_{k+1})) + \eta_k \big) \\ &= v_k - \big( r_{k+1} + \gamma v_\pi(s_{k+1}) \big) \end{align*} g˜(vk)=vk(E(rk+1+γvπ(sk+1))+ηk)=vk(rk+1+γvπ(sk+1))
根据 RM 算法,有:
v k + 1 = v k − α k g ˜ ( v k ) = v k − α k ( v k − ( r k + 1 + γ v π ( s k + 1 ) ) (1.2) \begin{align*} v_{k+1} &= v_k - \alpha_k \~g(v_k) \\ &= v_k - \alpha_k \big( v_k - \big( r_{k+1} + \gamma v_\pi(s_{k+1}) \big) \end{align*} \tag{1.2} vk+1=vkαkg˜(vk)=vkαk(vk(rk+1+γvπ(sk+1))(1.2)
迭代可得 g ( w k ) = 0 g(w_k) = 0 g(wk)=0,即实现:
v k = E ( r k + 1 + γ v π ( s k + 1 ) ) = v π ( s k ) v_k = \mathbb{E}(r_{k+1} + \gamma v_\pi(s_{k+1})) = v_\pi(s_k) vk=E(rk+1+γvπ(sk+1))=vπ(sk)

使用 v k ( s k + 1 ) v_k(s_{k+1}) vk(sk+1) 替换式 ( 1.2 ) (1.2) (1.2) 中的 v π ( s k + 1 ) v_\pi(s_{k+1}) vπ(sk+1)
即得到时序差分 (TD) 算法 (严格的数学推动参见教材):
v k + 1 ( s k ) = v k ( s k ) − α k [ v k ( s k ) − ( r k + 1 + γ v k ( s k + 1 ) ) ] (1.3) v_{k+1}(s_k) = v_k(s_k) - \alpha_k \big[ v_k(s_k) - ( r_{k+1} + \gamma v_k(s_{k+1})) \big] \tag{1.3} vk+1(sk)=vk(sk)αk[vk(sk)(rk+1+γvk(sk+1))](1.3)
其中, v t a r g ( s k ) = r k + 1 + γ v k ( s k + 1 ) v_{\mathrm{targ}}(s_k) = r_{k+1} + \gamma v_k(s_{k+1}) vtarg(sk)=rk+1+γvk(sk+1) 一般称为 TD 目标,在先进的算法中也常使用;
v k ( s k ) − ( r k + 1 + γ v k ( s k + 1 ) ) v_k(s_k) - ( r_{k+1} + \gamma v_k(s_{k+1})) vk(sk)(rk+1+γvk(sk+1)) 称为 TD 误差

时序差分算法实现了 只使用即时奖励 r k + 1 r_{k+1} rk+1 来对贝尔曼方程进行快速更新

1.2 动作值更新

类似的,针对动作值:
q π ( s k , a k ) = E s ∼ S [ r k + 1 + γ v π ( s k + 1 ) ∣ a k ] = E ( r k + 1 ∣ s k , a k ) + γ E s ∼ S ( v π ( s k + 1 ) ) = E ( r k + 1 ∣ s k , a k ) + γ E s k + 1 ∼ S ( ∑ π ( a k + 1 ∣ s k + 1 ) q π ( s k + 1 , a k + 1 ) ) = E ( r k + 1 ∣ s k , a k ) + γ E s k + 1 ∼ S , a k + 1 ∼ π q π ( s k + 1 , a k + 1 ) ) (1.4) \begin{align*} q_\pi(s_k, a_k) &= \mathbb{E}_{s \sim S} \big[ r_{k+1} + \gamma v_\pi(s_{k+1}) | a_k \big] \\ &= \mathbb{E}(r_{k+1}|s_k,a_k) + \gamma \mathbb{E}_{s \sim S}(v_\pi(s_{k+1})) \\ &= \mathbb{E}(r_{k+1}|s_k,a_k) + \gamma \mathbb{E}_{s_{k+1} \sim S} \big(\sum{}\pi(a_{k+1}|s_{k+1}) q_\pi(s_{k+1}, a_{k+1})\big) \\ &= \mathbb{E}(r_{k+1}|s_k,a_k) + \gamma \mathbb{E}_{s_{k+1} \sim S, a_{k+1} \sim \pi}q_\pi(s_{k+1}, a_{k+1})\big) \end{align*} \tag{1.4} qπ(sk,ak)=EsS[rk+1+γvπ(sk+1)ak]=E(rk+1sk,ak)+γEsS(vπ(sk+1))=E(rk+1sk,ak)+γEsk+1S(π(ak+1sk+1)qπ(sk+1,ak+1))=E(rk+1sk,ak)+γEsk+1S,ak+1πqπ(sk+1,ak+1))(1.4)
有 TD 算法可估计状态值:
q k + 1 = q k − α k ( q k − ( r k + 1 + γ q k ( s k + 1 , a k + 1 ) ) (1.5) q_{k+1} = q_k - \alpha_k \big( q_k - \big( r_{k+1} + \gamma q_k(s_{k+1}, a_{k+1}) \big) \tag{1.5} qk+1=qkαk(qk(rk+1+γqk(sk+1,ak+1))(1.5)

2. 使用 TD 算法求解贝尔曼方程 | sarsa 算法最终的

强化学习 RL 基础 2:从贝尔曼方程到策略求解 中的截断策略迭代类似,sarsa 算法使用 TD 算法同时更新贝尔曼方程和策略


单步 sarsa 算法
初始化 q 0 ( s , a ) q_0(s,a) q0(s,a),并导出探索贪婪 ( ϵ \epsilon ϵ-Greedy) 策略 π 0 \pi_0 π0,选取常数 α k = c \alpha_k = c αk=c γ \gamma γ
for t = 0:T do:
---- 设置初始状态 s 0 s_0 s0,根据 π 0 \pi_0 π0 生成 a 0 a_0 a0
---- for k = 0:K do:
---- ---- 根据 s k , a k , π k s_k,a_{k},\pi_k sk,ak,πk 生成 s k + 1 , a k + 1 s_{k+1}, a_{k+1} sk+1,ak+1,并记录样本数据 { s k , a k , r k + 1 , s k + 1 , a k + 1 } \{s_k, a_k, r_{k+1}, s_{k+1}, a_{k+1}\} {sk,ak,rk+1,sk+1,ak+1}
---- ---- 更新价值:
q K t + k + 1 ( s k , a k ) = q K t + k ( s k , a k ) − c ( q k ( s k , a k ) − ( r k + 1 + γ q k ( s k + 1 , a k + 1 ) ) q_{Kt+k+1}(s_k, a_k) = q_{Kt+k}(s_k, a_k) - c \big( q_k(s_k, a_k) - \big( r_{k+1} + \gamma q_k(s_{k+1}, a_{k+1}) \big) qKt+k+1(sk,ak)=qKt+k(sk,ak)c(qk(sk,ak)(rk+1+γqk(sk+1,ak+1))
---- ---- 更新策略( ϵ \epsilon ϵ-Greedy):
---- ---- for a a a in A \mathcal{A} A do:
---- ---- ---- if a = = arg ⁡ max ⁡ a q K t + k + 1 ( s k , a ) a == \arg \max_a q_{Kt+k+1}(s_k, a) a==argmaxaqKt+k+1(sk,a) do:
---- ---- ---- ---- π K t + k + 1 ( a ∣ s k ) = 1 − ϵ ( ∣ A ∣ − 1 ) / ∣ A ∣ \pi_ {Kt+k+1}(a|s_k)=1-\epsilon(|\mathcal{A}|-1) / |\mathcal{A}| πKt+k+1(ask)=1ϵ(A1)/∣A
---- ---- ---- else do:
---- ---- ---- ---- π K t + k + 1 ( a ∣ s k ) = ϵ / ∣ A ∣ \pi_ {Kt+k+1}(a|s_k)=\epsilon / |\mathcal{A}| πKt+k+1(ask)=ϵ/∣A


在更新价值时,也可采用 n n n 的形式估计:
q k + 1 ( s k , a k ) = q k ( s k , a k ) − c ( q k ( s k , a k ) − ( r k + 1 + γ r k + 2 + ⋯ + γ n − 1 q k ( s k + n , a k + n ) ) q_{k+1}(s_k, a_k) = q_{k}(s_k, a_k) - c \big( q_k(s_k, a_k) - \big( r_{k+1} +\gamma r_{k+2} + \cdots + \gamma^{n-1} q_k(s_{k+n}, a_{k+n}) \big) qk+1(sk,ak)=qk(sk,ak)c(qk(sk,ak)(rk+1+γrk+2++γn1qk(sk+n,ak+n))
以上称为 n n n 步 sarsa 算法
n → ∞ n \to \infty n 时,其等价于 强化学习 RL 基础 2:从贝尔曼方程到策略求解 中的蒙特卡洛估计。

3. Q-learning 算法

将单步sarsa 算法中的价值更新改为:
q k + 1 ( s k , a k ) = q k ( s k , a k ) − c ( q k ( s k , a k ) − ( r k + 1 + γ max ⁡ a q k ( s k + 1 , a ) ) q_{k+1}(s_k, a_k) = q_{k}(s_k, a_k) - c \big( q_k(s_k, a_k) - \big( r_{k+1} + \gamma \max_a q_k(s_{k+1}, a) \big) qk+1(sk,ak)=qk(sk,ak)c(qk(sk,ak)(rk+1+γamaxqk(sk+1,a))
即为著名的 Q-learning 算法,其本质上是在求解贝尔曼最优方程,
最优策略即最终通过贝尔曼最优方程导出的贪婪策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车队老哥记录生活

支持作者创作更多免费好文~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值