文章目录
本次前言
- 查看之前1-4章
- 欢迎关注我的个人公众号右转的第二排架子,里面(将)有深度强化学习的笔记
概念、参数出处或者定义(方便理解和查阅)
- 第五章—价值网络:使用神经网络 q ( s , a ; w ) q(s,a;w) q(s,a;w)来近似 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a),这个神经网络就是价值网络
- 第六章—优先经验回放:对经验回放数组中每一个元组赋予一个权重,然后根据这个权重进行抽样
- 第六章—目标网络:用来切断自举,使用该网络计算TD目标
第五章 SARSA算法
- SARSA的目的是学习动作价值函数 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a),现在 Q π Q_\pi Qπ通常被用于评价策略的好坏,而非控制智能体, Q π Q_\pi Qπ(Critic裁判)常与策略函数 π \pi π(Actor演员)结合使用,被称作Actor-Critic方法(这玩意真的很重要,记住了)
表格形式的SARSA(State-Action-Reward-State-Action)
- 还是用回上面那个图,就是备注 Q ∗ Q_* Q∗改成 Q π Q_\pi Qπ,这里懒得再截图了
- 首先,我们要知道 Q π Q_\pi Qπ如果采取的 π \pi π策略不一样,那么表格的值就会变化(可能表格元素会变大也会变小)。我们想用表格 q q q近似上述的 Q π Q_\pi Qπ
- 推导表格形式的SARSA学习算法:由贝尔曼方程
Q π ( s t , a t ) = E S t + 1 , A t + 1 [ R t + γ ⋅ max A ∈ A Q π ( S t + 1 , A ) ∣ S t = s t , A t = a t ] Q_\pi(s_t,a_t) = \mathbb{E}_{S_{t+1},A_{t+1}}\Big[R_t + \gamma \cdot \max_{A \in \mathcal{A}}Q_\pi(S_{t+1}, A) | S_t = s_t,A_t = a_t\Big] Qπ(st,at)=ESt+1,At+1[Rt+γ⋅A∈AmaxQπ(St+1,A)∣St=st,At=at]1.左边 Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at)近似成 q ( s t , a t ) q(s_t,a_t) q(st,at), q ( s t , a t ) q(s_t,a_t) q(st,at)代表表格 t t t时刻对 Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at)做出的估计
2.方程右边的期望是关于下一时刻状态 S t + 1 S_{t+1} St+1和动作 A t + 1 A_{t+1} At+1求的,给定 s t , a t s_t,a_t st,at,环境会给出 r t r_t rt和新的状态 s t + 1 s_{t+1} st+1,然后基于 s t + 1 s_{t+1} st+1做随机抽样得到新的动作
a ~ t + 1 ∼ π ( ⋅ ∣ s t + 1 ) \tilde{a}_{t+1} \sim \pi(\cdot|s_{t+1}) a~t+1∼π(⋅∣st+1)用 r t , s t + 1 , a ~ t + 1 r_t,s_{t+1},\tilde{a}_{t+1} rt,st+1,a~t+1做蒙特卡洛近似得到
r t + γ ⋅ Q π ( s t + 1 , a ~ t + 1 ) r_t + \gamma \cdot Q_\pi(s_{t+1},\tilde{a}_{t+1}) rt+γ⋅Qπ(st+1,a~t+1)把 Q π Q_\pi Qπ近似成 q q q得到TD目标
y ~ t ≜ r t + γ ⋅ q ( s t + 1 , a ~ t + 1 ) \tilde{y}_t \triangleq r_t + \gamma \cdot q(s_{t+1},\tilde{a}_{t+1}) y~t≜rt+γ⋅q(st+1,a~t+1)即它是表格再 t + 1 t+1 t+1时刻对 Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at)做出的估计(根据之前那个北京到济南到上海那个例子再好好理解这个句话的意思)。然后因为 y ^ t \widehat{y}_t y t是更可靠估计(到这里还不懂为什么的话建议重新看前面),因此用来更新 q ( s t , a t ) q(s_t,a_t) q(st,at)
q ( s t , a t ) ← ( 1 − α ) ⋅ q ( s t , a t ) + α ⋅ y ~ t q(s_t,a_t) \leftarrow (1 - \alpha) \cdot q(s_t,a_t) + \alpha \cdot \tilde{y}_t q(st,at)←(1−α)⋅q(st,at)+α⋅y~tSARSA用到了这个五元组 ( s t , a t , r t , s t + 1 , a ~ t + 1 ) (s_t,a_t,r_t,s_{t+1},\tilde{a}_{t+1}) (st,at,rt,st+1,a~t+1),SARSA算法学到的 q q q依赖于策略 π \pi π,这是因为五元组中的 a ~ t + 1 \tilde{a}_{t+1} a~t+1是根据 π ( ⋅ ∣ s t + 1 ) \pi(\cdot|s_{t+1}) π(⋅∣st+1)抽样得到的 - 训练流程:当前表格记作 q n o w q_{now} qnow,更新后表格记作 q n e w q_{new} qnew
1.观测到当前状态 s t s_t st,根据当前策略做抽样 a t ∼ π n o w ( ⋅ ∣ s t ) a_t \sim \pi_{now}(\cdot|s_t) at∼πnow(⋅∣st)
2.把表格 q n o w q_{now} qnow中第 ( s t , a t ) (s_t,a_t) (st,at)位置上的元素记作
q ^ t = q n o w ( s t , a t ) \widehat{q}_t = q_{now}(s_t,a_t) q t=qnow(st,at)3.智能体执行动作 a t a_t at之后,观测到奖励 r t r_t rt和新的状态 s t + 1 s_{t+1} st+1
4.根据当前策略做抽样: a ~ t + 1 ∼ π n o w ( ⋅ ∣ s t + 1 ) \tilde{a}_{t+1} \sim \pi_{now}(\cdot|s_{t+1}) a~t+1∼πnow(⋅∣st+1),其中 a ~ t + 1 \tilde{a}_{t+1} a~t+1只是假想动作,智能体不予执行
5.把表格 q n o w q_{now} qnow中第 ( s t + 1 , a ~ t + 1 ) (s_{t+1},\tilde{a}_{t+1}) (st+1,a~t+1)位置上的元素记作
q ^ t + 1 = q n o w ( s t + 1 , a ~ t + 1 ) \widehat{q}_{t+1} = q_{now}(s_{t+1},\tilde{a}_{t+1}) q t+1=qnow(st+1,a~t+1)6.计算TD目标和TD误差
y ^ t = r t + γ ⋅ q ^ t + 1 δ t = q ^ t − y ^ t \widehat{y}_t = r_t + \gamma \cdot \widehat{q}_{t+1}\\ \delta_t = \widehat{q}_t - \widehat{y}_t y t=rt+γ⋅q t+1δt=q t−y t7.更新表格中 ( s t , a t ) (s_t,a_t) (st,at)位置上的元素
q n e w ( s t , a t ) ← q n o w ( s t , a t ) − α ⋅ δ t q_{new}(s_t,a_t) \leftarrow q_{now}(s_t, a_t) - \alpha \cdot \delta_t qnew(st,at)←qnow(st,at)−α⋅δt8.某种算法更新策略函数
SARSA和Q学习对比
- 书上这不是一个小节,但是我觉得很重要就把它化为一个小节了
- Q学习不依赖于 π \pi π,Q学习属于异策略,SARSA依赖于 π \pi π,属于同策略
- Q学习是为了学到表格 Q ~ \tilde{Q} Q~即最优动作价值函数 Q ∗ Q_* Q∗的近似,而 Q ∗ Q_* Q∗与 π \pi π无关,因此收集经验无论是哪个行为策略 π \pi π,都不影响Q学习得到的 Q Q Q,因此Q学习允许行为策略区别于目标策略,允许使用经验回放
- SARSA算法目标是学到表格 q q q即动作价值函数 Q π Q_\pi Qπ的近似, Q π Q_\pi Qπ用的 π \pi π函数不同,对应的 Q π Q_\pi Qπ不同,经验回放数组里的经验是用过时的行为策略 π o l d \pi_{old} πold收集到的,与当前策略 π n o w \pi_{now} πnow及其对应的价值 Q π n o w Q_{\pi_{now}} Qπnow对应不上,因此不能使用经验回放
神经网络形式的SARSA
- 价值网络(重点概念):如果状态空间 S \mathcal{S} S是无限集,显然用一张表格无法表示 Q π Q_\pi Qπ,一种方案就是使用一个神经网络 q ( s , a ; w ) q(s,a;w) q(s,a;w)来近似 Q π ( s , a ) Q_\pi(s,a) Qπ(s,a),理想情况下
q ( s , a ; w ) = Q π ( s , a ) ∀ s ∈ S , a ∈ A q(s,a;w) = Q_\pi(s,a)\\ \forall s \in S, a \in A q(s,a;w)=Qπ(s,a)∀s∈S,a∈A神经网络 q ( s , a ; w ) q(s,a;w) q(s,a;w)被称为价值网络。神经网络是人预先设定的,参数 w w w需要通过智能体与环境的交互学习
假如动作空间 A \mathcal{A} A为 ∣ A ∣ |A| ∣A∣维向量,价值网络的输出就 ∣ A ∣ |A| ∣A∣维的价值向量 - 算法推导
1.给定当前状态 s t s_t st,智能体执行动作 a t a_t at,环境会给出奖励 r t r_t r