我是靠谱客的博主 俏皮战斗机,最近开发中收集的这篇文章主要介绍强化学习 补充笔记(TD算法、Q学习算法、SARSA算法、多步TD目标、经验回放、高估问题、对决网络、噪声网络)学习目标:学习内容:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

学习目标:

深入了解马尔科夫决策过程(MDP),包含TD算法、Q学习算法、SARSA算法、多步TD目标、经验回放、高估问题、对决网络、噪声网络。基础部分见:强化学习 马尔科夫决策过程(价值迭代、策略迭代、雅克比迭代、蒙特卡洛)


学习内容:

0.基础符号

奖励:一局游戏中从开始到结束的所有奖励 R 1 , . . . , R t , . . . , R n . R_1,...,R_t,...,R_n. R1,...,Rt,...,Rn.
折扣率 γ ∈ [ 0 , 1 ] gamma ∈[0,1] γ[0,1]
折扣回报 U t = R t + γ ⋅ R t + 1 + γ 2 ⋅ R t + 2 + . . . + γ n − t ⋅ R n U_t=R_t+gamma cdot R_{t+1}+gamma^2cdot R_{t+2}+...+gamma^{n-t}cdot R_{n} Ut=Rt+γRt+1+γ2Rt+2+...+γntRn
动作价值函数 Q π ( s t , a t ) = E [ U t ∣ S t = s t , A t = a t ] Q_pi(s_t,a_t)=mathbb{E}[U_t|S_t=s_t,A_t=a_t] Qπ(st,at)=E[UtSt=st,At=at]
最有动作价值函数:已知 s t s_t st a t a_t at,不论未来采取什么样的策略 π pi π,回报 U t U_t Ut都不可能超过 Q ⋆ Q_star Q Q ⋆ ( s t , a t ) = max ⁡ π Q π ( s t , a t ) , ∀ s t ∈ S , a t ∈ A Q_star(s_t,a_t)=max_pi Q_pi (s_t,a_t), forall s_t in mathcal{S}, a_t in mathcal{A} Q(st,at)=πmaxQπ(st,at),stS,atA

1.时间差分(TD)算法

(1)基础

利用TD训练深度Q网络(DQN),已有四元组 < s t , a t , r t , s t + 1 > <s_t,a_t,r_t,s_{t+1}> <st,at,rt,st+1>
已知贝尔曼(Bellman)最优方程
Q ⋆ ( s t , a t ) ⏟ U t  的期望  = E S t + 1 ∼ p ( ⋅ ∣ s t , a t ) [ R t + γ ⋅ max ⁡ A ∈ A Q ⋆ ( S t + 1 , A ) ⏟ U t + 1  的期望  ∣ S t = s t , A t = a t ] underbrace{Q_{star}left(s_t, a_tright)}_{U_t text { 的期望 }}=mathbb{E}_{S_{t+1} sim pleft(cdot mid s_t, a_tright)}[R_t+gamma cdot underbrace{max _{A in mathcal{A}} Q_{star}left(S_{t+1}, Aright)}_{U_{t+1} text { 的期望 }} mid S_t=s_t, A_t=a_t] Ut 的期望  Q(st,at)=ESt+1p(st,at)[Rt+γUt+1 的期望  AAmaxQ(St+1,A)St=st,At=at]
得到蒙特卡洛近似
Q ⋆ ( s t , a t ) ≈ r t + γ ⋅ max ⁡ a ∈ A Q ⋆ ( s t + 1 , a ) . Q_{star}left(s_t, a_tright) approx r_t+gamma cdot max _{a in mathcal{A}} Q_{star}left(s_{t+1}, aright) . Q(st,at)rt+γaAmaxQ(st+1,a).
带入神经网络参数
Q ⋆ ( s t , a t ; w ) ≈ r t + γ ⋅ max ⁡ a ∈ A Q ⋆ ( s t + 1 , a ; w ) . Q_{star}left(s_t, a_t;boldsymbol{w}right) approx r_t+gamma cdot max _{a in mathcal{A}} Q_{star}left(s_{t+1}, a;boldsymbol{w}right) . Q(st,at;w)rt+γaAmaxQ(st+1,a;w).

(2)流程

收集训练数据:我们可以用任何策略函数 π pi π 去控制智能体与环境交互, 这个 π pi π 就叫做行为策略 (Behavior Policy)。比较常用的是 ϵ epsilon ϵ-greedy 策略:
a t = { argmax ⁡ a Q ( s t , a ; w ) ,  以概率  ( 1 − ϵ ) ;  均匀抽取  A  中的一个动作,   以概率  ϵ . a_t= begin{cases}operatorname{argmax}_a Qleft(s_t, a ; boldsymbol{w}right), & text { 以概率 }(1-epsilon) ; \ text { 均匀抽取 } mathcal{A} text { 中的一个动作, } & text { 以概率 } epsilon .end{cases} at={argmaxaQ(st,a;w), 均匀抽取 A 中的一个动作 以概率 (1ϵ); 以概率 ϵ.
把智能体在一局游戏中的轨迹记作:
s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , ⋯ s n , a n , r n . s_1, a_1, r_1, s_2, a_2, r_2, cdots s_n, a_n, r_n . s1,a1,r1,s2,a2,r2,sn,an,rn.
把一条轨迹划分成 n n n ( s t , a t , r t , s t + 1 ) left(s_t, a_t, r_t, s_{t+1}right) (st,at,rt,st+1) 这种四元组, 存入数组, 这个数组叫做经验回放数组 (Replay Buffer)。
更新 DQN 参数 w w w : 随机从经验回放数组中取出一个四元组, 记作 ( s j , a j , r j , s j + 1 ) left(s_j, a_j, r_j, s_{j+1}right) (sj,aj,rj,sj+1) 。 设 DQN 当前的参数为 w now  boldsymbol{w}_{text {now }} wnow , 执行下面的步骤对参数做一次更新, 得到新的参数 w new  boldsymbol{w}_{text {new }} wnew 

  1. 对DQN做正向传播, 得到 Q mathrm{Q} Q 值:
    q ^ j = Q ( s j , a j ; w now  )  和  q ^ j + 1 = max ⁡ a ∈ A Q ( s j + 1 , a ; w now  ) . widehat{q}_j=Qleft(s_j, a_j ; boldsymbol{w}_{text {now }}right) quad text { 和 } quad widehat{q}_{j+1}=max _{a in mathcal{A}} Qleft(s_{j+1}, a ; boldsymbol{w}_{text {now }}right) . q j=Q(sj,aj;wnow )  q j+1=aAmaxQ(sj+1,a;wnow ).
  2. 计算TD目标和TD误差:
    y ^ j = r j + γ ⋅ q ^ j + 1  和  δ j = q ^ j − y ^ j . widehat{y}_j=r_j+gamma cdot widehat{q}_{j+1} text { 和 } delta_j=widehat{q}_j-widehat{y}_j . y j=rj+γq j+1  δj=q jy j.
  3. 对DQN做反向传播, 得到梯度:
    g j = ∇ w Q ( s j , a j ; w n o w ) . boldsymbol{g}_j=nabla_{boldsymbol{w}} Qleft(s_j, a_j ; boldsymbol{w}_{mathrm{now}}right) . gj=wQ(sj,aj;wnow).
  4. 做梯度下降更新DQN的参数:
    w new  ← w now  − α ⋅ δ j ⋅ g j . boldsymbol{w}_{text {new }} leftarrow boldsymbol{w}_{text {now }}-alpha cdot delta_j cdot boldsymbol{g}_j . wnew wnow αδjgj.

智能体收集数据、更新DQN参数这两者可以同时进行。可以在智能体每执行一个动作 之后, 对 w boldsymbol{w} w 做几次更新。也可以在每完成一局游戏之后, 对 w boldsymbol{w} w 做几次更新。

2.Q学习算法

(1)基础

利用Q学习(TD的一种)训练深度Q网络(DQN),已有四元组 < s t , a t , r t , s t + 1 > <s_t,a_t,r_t,s_{t+1}> <st,at,rt,st+1>
已知贝尔曼(Bellman)最优方程
Q ⋆ ( s t , a t ) ⏟ U t  的期望  = E S t + 1 ∼ p ( ⋅ ∣ s t , a t ) [ R t + γ ⋅ max ⁡ A ∈ A Q ⋆ ( S t + 1 , A ) ⏟ U t + 1  的期望  ∣ S t = s t , A t = a t ] underbrace{Q_{star}left(s_t, a_tright)}_{U_t text { 的期望 }}=mathbb{E}_{S_{t+1} sim pleft(cdot mid s_t, a_tright)}[R_t+gamma cdot underbrace{max _{A in mathcal{A}} Q_{star}left(S_{t+1}, Aright)}_{U_{t+1} text { 的期望 }} mid S_t=s_t, A_t=a_t] Ut 的期望  Q(st,at)=ESt+1p(st,at)[Rt+γUt+1 的期望  AAmaxQ(St+1,A)St=st,At=at]
公式左侧等效为:
Q ~ ( s t , a t ) widetilde{Q}{(s_t, a_t)} Q (st,at)
公式右侧蒙特卡洛近似等效为:
y t ^ ≜ r t + γ ⋅ max ⁡ a ∈ A Q ~ ( s t + 1 , a ) hat{y_t}triangleq r_t +gamma cdot max_{a in mathcal{A} }widetilde{Q}{(s_{t+1}, a)} yt^rt+γaAmaxQ (st+1,a)
更新表格 Q ~ widetilde{Q} Q ( s t , a t ) (s_t,a_t) (st,at)位置上的元素:
Q ~ ( s t , a t ) ← ( 1 − α ) ⋅ Q ~ ( s t , a t ) + α ⋅ y t ^ widetilde{Q}{(s_t, a_t)} leftarrow (1-alpha) cdot widetilde{Q}{(s_t, a_t)}+alpha cdot hat{y_t} Q (st,at)(1α)Q (st,at)+αyt^

(2)流程

收集训练数据:同TD算法。
a t = { argmax ⁡ a Q ~ ( s t , a ) ,  以概率  ( 1 − ϵ ) ; 均匀抽取  A  中的一个动作,   以概率  ϵ . a_t= begin{cases}operatorname{argmax}_a widetilde{Q}left(s_t, a right), & text { 以概率 }(1-epsilon) ; \ text {均匀抽取 } mathcal{A} text { 中的一个动作, } & text { 以概率 } epsilon .end{cases} at={argmaxaQ (st,a),均匀抽取 A 中的一个动作 以概率 (1ϵ); 以概率 ϵ.

把一条轨迹划分成 n n n ( s t , a t , r t , s t + 1 ) left(s_t, a_t, r_t, s_{t+1}right) (st,at,rt,st+1) 这种四元组, 存入数组。
经验回放更新表格 Q ~ tilde{Q} Q~ : 随机从经验回放数组中抽取一个四元组, 记作 ( s j , a j , r j , s j + 1 ) left(s_j, a_j, r_j, s_{j+1}right) (sj,aj,rj,sj+1)

  1. 把当前表格 Q ~ now  widetilde{Q}_{text {now }} Q now  中第 ( s j , a j ) left(s_j, a_jright) (sj,aj) 位置上的元素记作:
    q ^ j = Q ~ now  ( s j , a j ) . widehat{q}_j=tilde{Q}_{text {now }}left(s_j, a_jright) . q j=Q~now (sj,aj).
  2. 查看表格 Q ~ now  widetilde{Q}_{text {now }} Q now  的第 s j + 1 s_{j+1} sj+1 行, 把该行的最大值记作:
    q ^ j + 1 = max ⁡ a Q ~ now  ( s j + 1 , a ) . widehat{q}_{j+1}=max _a widetilde{Q}_{text {now }}left(s_{j+1}, aright) . q j+1=amaxQ now (sj+1,a).
  3. 计算TD目标和TD误差:
    y ^ j = r j + γ ⋅ q ^ j + 1 , δ j = q ^ j − y ^ j . widehat{y}_j=r_j+gamma cdot widehat{q}_{j+1}, quad delta_j=widehat{q}_j-widehat{y}_j . y j=rj+γq j+1,δj=q jy j.
  4. 更新表格中 ( s j , a j ) left(s_j, a_jright) (sj,aj) 位置上的元素,得到更新后的表格:
    Q ~ new  ( s j , a j ) ← Q ~ now  ( s j , a j ) − α ⋅ δ j . tilde{Q}_{text {new }}left(s_j, a_jright) leftarrow tilde{Q}_{text {now }}left(s_j, a_jright)-alpha cdot delta_j . Q~new (sj,aj)Q~now (sj,aj)αδj.

收集经验与更新表格 Q ~ widetilde{Q} Q 可以同时进行。每当智能体执行一次动作, 我们可以用经验回放 对 Q ~ widetilde{Q} Q 做几次更新。也可以当完成一局游戏, 对 Q ~ widetilde{Q} Q 做几次更新。

3.SARSA算法

(1)基础

已知贝尔曼方程
Q π ( s t , a t ) = E S t + 1 , A t + 1 [ R t + γ ⋅ Q π ( S t + 1 , A t + 1 ) ∣ S t = s t , A t = a t ] Q_pileft(s_t, a_tright)=mathbb{E}_{S_{t+1}, A_{t+1}}left[R_t+gamma cdot Q_pileft(S_{t+1}, A_{t+1}right) mid S_t=s_t, A_t=a_tright] Qπ(st,at)=ESt+1,At+1[Rt+γQπ(St+1,At+1)St=st,At=at]
左侧等效为: q ( s t , a t ) qleft(s_t, a_tright) q(st,at)

右侧根据蒙特卡洛近似为: y ^ t ≜ r t + γ ⋅ q ( s t + 1 , a ~ t + 1 ) widehat{y}_t triangleq r_t+gamma cdot qleft(s_{t+1}, tilde{a}_{t+1}right) y trt+γq(st+1,a~t+1)
更新表格 q q q ( s t , a t ) (s_t,a_t) (st,at)位置上的元素:
q ( s t , a t ) ← ( 1 − α ) ⋅ q ( s t , a t ) + α ⋅ y ^ t qleft(s_t, a_tright) leftarrow(1-alpha) cdot qleft(s_t, a_tright)+alpha cdot widehat{y}_t q(st,at)(1α)q(st,at)+αy t

(2)流程

五元组: ( s t , a t , r t , s t + 1 , a ~ t + 1 ) left(s_t, a_t, r_t, s_{t+1}, tilde{a}_{t+1}right) (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 ) pileft(cdot mid s_{t+1}right) π(st+1) 抽样得到的。
训练流程:设当前表格为 q now  q_{text{now }} qnow , 当前策略为 π now  pi_{text {now }} πnow  。 每一轮更新表格中的一个元素,把更新之后的表格记作 q new q_{text {new}} qnew

  1. 观测到当前状态 s t s_t st, 根据当前策略做抽样: a t ∼ π now  ( ⋅ ∣ s t ) a_t sim pi_{text {now }}left(cdot mid s_tright) atπnow (st)
  2. 把表格 q now  q_{text {now }} qnow  中第 ( s t , a t ) left(s_t, a_tright) (st,at) 位置上的元素记作:
    q ^ t = q now  ( s t , a t ) . widehat{q}_t=q_{text {now }}left(s_t, a_tright) . 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 ∼ π now  ( ⋅ ∣ s t + 1 ) tilde{a}_{t+1} sim pi_{text {now }}left(cdot mid s_{t+1}right) a~t+1πnow (st+1) 。注意, a ~ t + 1 tilde{a}_{t+1} a~t+1 只是假想的动作,智能体不予执行。
  5. 把表格 q now  q_{text {now }} qnow  中第 ( s t + 1 , a ~ t + 1 ) left(s_{t+1}, tilde{a}_{t+1}right) (st+1,a~t+1) 位置上的元素记作:
    q ^ t + 1 = q now  ( s t + 1 , a ~ t + 1 ) . widehat{q}_{t+1}=q_{text {now }}left(s_{t+1}, tilde{a}_{t+1}right) . 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}, quad delta_t=widehat{q}_t-widehat{y}_t . y t=rt+γq t+1,δt=q ty t.
  7. 更新表格中 ( s t , a t ) left(s_t, a_tright) (st,at) 位置上的元素:
    q new  ( s t , a t ) ← q now  ( s t , a t ) − α ⋅ δ t . q_{text {new }}left(s_t, a_tright) leftarrow q_{text {now }}left(s_t, a_tright)-alpha cdot delta_t . qnew (st,at)qnow (st,at)αδt.
  8. 用某种算法更新策略函数。该算法与 SARSA算法无关。

(3)对比

Q  学习   近似  Q ⋆  异策略   可以使用   经验回放   SARSA   近似  Q π  同策略   不能使用   经验回放  begin{array}{|c|c|c|c|} hline mathrm{Q} text { 学习 } & text { 近似 } Q_{star} & text { 异策略 } & begin{array}{c} text { 可以使用 } \ text { 经验回放 } end{array} \ hline text { SARSA } & text { 近似 } Q_pi & text { 同策略 } & begin{array}{l} text { 不能使用 } \ text { 经验回放 } end{array} \ hline end{array} Q 学习  SARSA  近似 Q 近似 Qπ 异策略  同策略  可以使用  经验回放  不能使用  经验回放 

至于神经网络形式的SARSA:在状态空间 S mathcal{S} S为无限集的情况下适用。只需将上述流程中的q函数增加一个神经网络的参数 w w w,同时第七步更改为反向传播和梯度下降的求解过程,此处不再赘述。

4.多步TD目标

(1)基础

此时回报可以写作如下形式:
U t = ( ∑ i = 0 m − 1 γ i R t + i ) + γ m U t + m U_t=left(sum_{i=0}^{m-1} gamma^i R_{t+i}right)+gamma^m U_{t+m} Ut=(i=0m1γiRt+i)+γmUt+m
由此可得动作值函数为:
Q π ( s t , a t ) ⏟ U t  的期望  = E [ ( ∑ i = 0 m − 1 γ i R t + i ) + γ m ⋅ Q π ( S t + m , A t + m ) ⏟ U t + m  的期望  ∣ S t = s t , A t = a t ] underbrace{Q_pileft(s_t, a_tright)}_{U_t text { 的期望 }}=mathbb{E}[left(sum_{i=0}^{m-1} gamma^i R_{t+i}right)+gamma^m cdot underbrace{Q_pileft(S_{t+m}, A_{t+m}right)}_{U_{t+m} text { 的期望 }} mid S_t=s_t, A_t=a_t] Ut 的期望  Qπ(st,at)=E[(i=0m1γiRt+i)+γmUt+m 的期望  Qπ(St+m,At+m)St=st,At=at]
左侧等效为:
q t ^ = q ( s t , a t ; w ) widehat{q_t}=qleft(s_t, a_t ; boldsymbol{w}right) qt =q(st,at;w)
右侧根据蒙特卡洛近似等效为:
y ^ t = ( ∑ i = 0 m − 1 γ i r t + i ) + γ m ⋅ q ( s t + m , a t + m ; w ) widehat{y}_t=left(sum_{i=0}^{m-1} gamma^i r_{t+i}right)+gamma^m cdot qleft(s_{t+m}, a_{t+m} ; boldsymbol{w}right) y t=(i=0m1γirt+i)+γmq(st+m,at+m;w)
损失函数设置为:
L ( w ) ≜ 1 2 [ q ( s t , a t ; w ) − y ^ t ] 2 L(boldsymbol{w}) triangleq frac{1}{2}left[qleft(s_t, a_t ; boldsymbol{w}right)-widehat{y}_tright]^2 L(w)21[q(st,at;w)y t]2
梯度下降为:
w ← w − α ⋅ ( q ^ t − y ^ t ) ⋅ ∇ w q ( s t , a t ; w ) boldsymbol{w} leftarrow boldsymbol{w}-alpha cdotleft(widehat{q}_t-widehat{y}_tright) cdot nabla_{boldsymbol{w}} qleft(s_t, a_t ; boldsymbol{w}right) wwα(q ty t)wq(st,at;w)
流程与SARAS同理,略。

5.经验回放

(1)基础

定义:把智能体与环境交互的记录(即经验)储存到一个数组,事后反复利用这些经验训练智能体。这个数组被称为经验回放数组 (Replay Buffer)

优点:打破序列相关性。

局限:经验回放数组中的经验通常是过时的行为策略收集的,而我们真正想要学的目标策略不同于过时的行为策略。

(2)扩展

优先经验回放 (Prioritized Experience Replay) 是一种特殊的经验回放方法,它比普通的经验回放效果更好:既能让收敛更快,也能让收敛时的平均回报更高。优先经验回放给每个四元组一个权重,然后根据权重做非均匀随机抽样。

6.高估问题

(1)基础

Q 学习算法有一个缺陷:用 Q 学习训练出的 DQN 会高估真实的价值,而且高估通常是非均匀的。来源有两个:(1)自举导致的误差积累。(2)最大化导致高估。

(2)目标网络(缓和自举高估)

目标网络记作:
Q ( s , a ; w − ) Qleft(s, a ; boldsymbol{w}^{-}right) Q(s,a;w)
其神经网络结构与DQN完全相同,但 w − w^- w w w w的值并不完全相同。

  1. 对DQN做正向传播,得到:
    q ^ j = Q ( s j , a j ; w now  ) . widehat{q}_j=Qleft(s_j, a_j ; boldsymbol{w}_{text {now }}right) . q j=Q(sj,aj;wnow ).
  2. 对目标网络做正向传播,得到
    q ^ j + 1 − = max ⁡ a ∈ A Q ( s j + 1 , a ; w n o w − ) . hat{q}_{j+1}^{-}=max _{a in mathcal{A}} Qleft(s_{j+1}, a ; boldsymbol{w}_{mathrm{now}}^{-}right) . q^j+1=aAmaxQ(sj+1,a;wnow).
  3. 计算TD目标和TD误差:
    y ^ j − = r j + γ ⋅ q ^ j + 1  和  δ j = q ^ j − y ^ j . widehat{y}_j^{-}=r_j+gamma cdot widehat{q}_{j+1} quad text { 和 } quad delta_j=widehat{q}_j-widehat{y}_j . y j=rj+γq j+1  δj=q jy j.
  4. 对DQN做反向传播,得到梯度 ∇ w Q ( s j , a j ; w now  ) nabla_{boldsymbol{w}} Qleft(s_j, a_j ; boldsymbol{w}_{text {now }}right) wQ(sj,aj;wnow )
  5. 做梯度下降更新DQN的参数:
    w new  ← w now  − α ⋅ δ j ⋅ ∇ w Q ( s j , a j ; w now  ) . boldsymbol{w}_{text {new }} leftarrow boldsymbol{w}_{text {now }}-alpha cdot delta_j cdot nabla_{boldsymbol{w}} Qleft(s_j, a_j ; boldsymbol{w}_{text {now }}right) . wnew wnow αδjwQ(sj,aj;wnow ).
  6. τ ∈ ( 0 , 1 ) tau in(0,1) τ(0,1) 是需要手动调的超参数。做加权平均更新目标网络的参数:
    w new  − ← τ ⋅ w new  + ( 1 − τ ) ⋅ w now  − boldsymbol{w}_{text {new }}^{-} leftarrow tau cdot boldsymbol{w}_{text {new }}+(1-tau) cdot boldsymbol{w}_{text {now }}^{-} wnew τwnew +(1τ)wnow 

(3)双Q学习法(解决最大化高估)

此处对比Q学习、目标网络、双Q学习法的区别,流程与上文(2)中类似:

Q学习算法
选择:即基于状态 s j + 1 s_{j+1} sj+1, 选出一个动作使得 DQN 的输出最大化:
a ⋆ = argmax ⁡ a ∈ A Q ( s j + 1 , a ; w ) . a^{star}=underset{a in mathcal{A}}{operatorname{argmax}} Qleft(s_{j+1}, a ; boldsymbol{w}right) . a=aAargmaxQ(sj+1,a;w).
求值:即计算 ( s j + 1 , a ⋆ ) left(s_{j+1}, a^{star}right) (sj+1,a) 的价值, 从而算出 TD 目标:
y ^ j = r j + Q ( s j + 1 , a ⋆ ; w ) . widehat{y}_j=r_j+Qleft(s_{j+1}, a^{star} ; boldsymbol{w}right) . y j=rj+Q(sj+1,a;w).
目标网络
选择: a − = argmax ⁡ a ∈ A Q ( s j + 1 , a ; w − ) quad a^{-}=underset{a in mathcal{A}}{operatorname{argmax}} Qleft(s_{j+1}, a ; boldsymbol{w}^{-}right) a=aAargmaxQ(sj+1,a;w),
求值: y t − ^ = r t + Q ( s j + 1 , a − ; w − ) quad widehat{y_t^{-}}=r_t+Qleft(s_{j+1}, a^{-} ; boldsymbol{w}^{-}right) yt =rt+Q(sj+1,a;w).
双Q学习, 第一步的选择用DQN, 第二步的求值用目标网络:
选择: a ⋆ = argmax ⁡ a ∈ A Q ( s j + 1 , a ; w ) quad a^{star}=underset{a in mathcal{A}}{operatorname{argmax}} Qleft(s_{j+1}, a ; boldsymbol{w}right) a=aAargmaxQ(sj+1,a;w),
求值: y ~ t = r t + Q ( s j + 1 , a ⋆ ; w − ) quad widetilde{y}_t=r_t+Qleft(s_{j+1}, a^{star} ; boldsymbol{w}^{-}right) y t=rt+Q(sj+1,a;w).

对比
 选择   求值   自举造成偏差   最大化造成偏差   Q学习   DQN   DQN   严重   严重   Q学习+目标网络 目标网络   目标网络   不严重   严重   双Q学习   DQN   目标网络   不严重   不严重  begin{array}{|l|l|l|l|l|} hline & text { 选择 } & text { 求值 } & text { 自举造成偏差 } & text { 最大化造成偏差 } \ hline text { Q学习 } & text { DQN } & text { DQN } & text { 严重 } & text { 严重 } \ hline text { Q学习+目标网络}& text {目标网络 } & text { 目标网络 } & text { 不严重 } & text { 严重 } \ hline text { 双Q学习 } & text { DQN } & text { 目标网络 } & text { 不严重 } & text { 不严重 } \ hline end{array}  Q学习  Q学习+目标网络 Q学习  选择  DQN 目标网络  DQN  求值  DQN  目标网络  目标网络  自举造成偏差  严重  不严重  不严重  最大化造成偏差  严重  严重  不严重 

7.对决网络

(1)基础

(2)流程

8.噪声网络

(1)基础

(2)流程

最后

以上就是俏皮战斗机为你收集整理的强化学习 补充笔记(TD算法、Q学习算法、SARSA算法、多步TD目标、经验回放、高估问题、对决网络、噪声网络)学习目标:学习内容:的全部内容,希望文章能够帮你解决强化学习 补充笔记(TD算法、Q学习算法、SARSA算法、多步TD目标、经验回放、高估问题、对决网络、噪声网络)学习目标:学习内容:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部