深度强化学习 ②(DRL)

参考视频:📺王树森教授深度强化学习

前言

  • 最近在学习深度强化学习,学的一知半解😢😢😢,这是我的笔记,欢迎和我一起学习交流~

  • 这篇博客目前还相对比较乱,后面有时间会整理一次~

  • 由于 CSDN 目前有单篇博客字数限制,故分成两篇博客来展示 😁,这是第二篇

第一篇在这里:深度强化学习 ①(DRL)

文章目录

    • 9. 高估问题
      • 9.1 Bootstrapping
      • 9.2 高估问题
    • 10. Dueling Network
      • 10.1 Optimal advantage function
      • 10.2 搭建 Dueling Network
      • 10.3 训练
      • 10.4 不唯一问题
    • 11. Policy gradient with Baseline
      • 11.1 证明
      • 11.2 蒙特卡洛近似
      • 11.3 baseline 的选择
    • 12. REINFORCE with Baseline
      • 12.1 推导
      • 12.2 网络搭建
        • 1. 策略网络
        • 2. 状态价值网络
        • 3. 参数共享
        • 4. 更新策略网络
        • 5. 更新价值网络
        • 6.总览
    • 13. Advantage Actor-Critic(A2C)
      • 13.2 推导
      • 13.1 训练
    • 14. 连续控制
      • 14.1 Deterministic Policy Gradient(DPG,确定策略梯度)
        • 1. TD 算法更新价值网络
        • 2. 用确定策略梯度更新策略网络
        • 3. 用 Target Networks 对价值网络的训练进行改进
      • 14.2 随机策略和确定策略对比
      • 14.3 用随机策略做连续控制
        • 1. 构造策略网络
        • 2. 网络搭建
        • 3. 训练
        • 4. 计算策略梯度
    • 15. Trust Region Policy Optimization(TRPO,置信域策略优化)
      • 15.1 Trust Region(置信域)
      • 15.2 Trust region algorithms(置信域算法)
      • 15.3 推导目标函数
      • 15.4 TRPO
        • 1. Approximation
        • 2. Maximization
    • 16. Multi-Agent Reinforcement Learning(多智能体强化学习)
      • 16.1 Settings(常见设定)
      • 16.2 Terminologies
      • 16.3 Convergence(收敛问题)
      • 16.4 agents 之间的通信方式
        • 1. 去中心化
        • 2. 中心化
        • 3. 中心化训练&去中心化执行

9. 高估问题

9.1 Bootstrapping

Bootstrapping:自举。在强化学习中,指的是用一个估算去更新同类的估算

在 TD 更新 DQN 的过程中,TD target 本身部分基于 DQN 在 t+1 时刻的预测,而 TD target 又参与了梯度的计算,此时,为了更新 DQN 在 t 时刻做出的估计,用到了 DQN 在 t+1 时刻做出的预测,即用一个估计值去更新它本身

9.2 高估问题

9.2.1 高估原因

用 TD 训练 DQN,会导致 DQN 高估真实的动作价值。

  1. TD target 的计算中,最大化 max ⁡ a Q ( s t + 1 , a ; w ) \max_{a}Q(s_{t+1},a;w) maxaQ(st+1,a;w) 会让得到的 TD target 大于真实的动作价值,那么 DQN 也会高估

  2. Bootstrapping,若当前 DQN 已经出现高估,下一轮 TD target 也会高估,进一步推高了 DQN 的输出(高估传播)

    TD target 用到了 DQN 在 t+1 时刻的估计值,用 TD target 来更新 DQN 在 t 时刻的估计,即用 DQN 来更新 DQN 自己(自举)。若 t+1 时刻 DQN 已经高估了动作价值,然后对这个 DQN 进行了最大化进一步推高了价值估计,计算 TD target 的时候用到了这个高估的值,然后更新 DQN,这样的话高估又被传播到了 DQN,让 DQN 的高估变得更严重

    一旦 DQN 被高估,那么高估会不断被反馈到 DQN 自己,让 DQN 的高估越来越严重

DQN 对价值的高估是非均匀的,非均匀高估会让 DQN 的高估越来越严重,最终选择出来的最优动作也不是最优的

9.2.2 高估的解决方案
  1. 避免 Bootstrapping:不要用 DQN 自己算出来的 TD target 来更新 DQN,而是用另一个神经网络来计算 TD tartget(target network)
  2. 用 double DQN 来缓解最大化造成的高估
9.2.3 Target Network

两个神经网络结构相同,参数不同,用途不同

DQN Q ( s , a ; w − ) Q(s,a;w^-) Q(s,a;w) 用来控制 agent,并且收集经验(transition)

Target Network Q ( s , a ; w − ) Q(s,a;w^-) Q(s,a;w)用来计算 TD Target, y t = r t + γ ⋅ max ⁡ a Q ( s t + 1 , a ; w − ) y_t=r_t+\gamma \cdot \max_a Q(s_{t+1},a;w^-) yt=rt+γmaxaQ(st+1,a;w)

1. 过程

使用 transition ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1) 更新 DQN 参数 w

  1. 计算 TD target: y t = r t + γ ∗ max ⁡ a Q ( s t + 1 , a ; w − ) y_t=r_t+\gamma*\max_a Q(s_{t+1},a;w^-) yt=rt+γmaxaQ(st+1,a;w)

  2. 计算 TD error: δ t = Q ( s t , a t ; w ) − y t \delta_t=Q(s_t,a_t;w)-y_t δt=Q(st,at;w)yt

  3. 更新参数: w ← w − α ∗ δ t ∗ ∂ Q ( s t , a t ; w ) ∂ w w \leftarrow w-\alpha*\delta_t*\frac{\partial Q(s_t,a_t;w)}{\partial w} wwαδtwQ(st,at;w)

2. 更新 w − w^- w
  • 方式1: w − ← w . w^- \leftarrow w. ww.
  • 方式2: w − ← τ ⋅ w + ( 1 − τ ) ⋅ w − . w^- \leftarrow \tau \cdot w+(1-\tau)\cdot w^-. wτw+(1τ)w.

Target Network 可以减少 DQN 高估的程度,让 DQN 表现更好,但无法避免高估,因为还有最大化操作,仍然会让 TD target 大于真实价值,此外,Target Network 会用到 DQN 的参数,无法独立于 DQN,无法完全避免 Bootstrapping

9.2.4 Double DQN

选择最优动作时使用 DQN,计算 TD Target 时,使用 Target Network,可以大幅提高性能,缓解高估问题。

可以一定程度缓解高估问题的原因

  1. 计算最优动作使用的是 DQN: a ⋆ = a r g m a x a Q ( s t + 1 , a ; w ) a^\star=argmax_aQ(s_{t+1},a;w) a=argmaxaQ(st+1,a;w)

  2. 计算 TD target 使用的是 target network: y t = r t + γ ∗ Q ( s t + 1 , a ⋆ ; w − ) y_t=r_t+\gamma*Q(s_{t+1},a^\star;w^-) yt=rt+γQ(st+1,a;w)

  3. 从该不等式便能看出原因: Q ( s t + 1 , a ⋆ ; w − ) ≤ max ⁡ a Q ( s t + 1 , a ; w − ) . Q(s_{t+1},a^\star;w^-)\le \max_aQ(s_{t+1},a;w^-). Q(st+1,a;w)maxaQ(st+1,a;w).

    Double DQN 做出的估计更小,缓解了高估问题

10. Dueling Network

对神经网络结构的改进

10.1 Optimal advantage function

A ⋆ ( s , a ) = Q ⋆ ( s , a ) − V ⋆ ( s ) . A^\star(s,a)=Q^\star(s,a)-V^\star(s). A(s,a)=Q(s,a)V(s).

动作 a 相对于 baseline V ⋆ V^\star V 的优势

理论性质推导

定理1
V ⋆ ( s ) = max ⁡ a Q ⋆ ( s , a ) . V^\star(s)=\max_aQ^\star(s,a). V(s)=amaxQ(s,a).
给最优优势函数两边同时关于 a 求最大值,即
max ⁡ a A ⋆ ( s , a ) = max ⁡ a Q ⋆ ( s , a ) − V ⋆ ( s ) = 0. \begin{aligned} \max_aA^\star(s,a) &=\max_aQ^\star(s,a)-V^\star(s)\\ &=0. \end{aligned} amaxA(s,a)=amaxQ(s,a)V(s)=0.
然后对优势函数的定义公式进行变换,得到定理2
Q ⋆ ( s , a ) = V ⋆ ( s ) + A ⋆ ( s , a ) − max ⁡ a A ⋆ ( s , a ) . Q^\star(s,a)=V^\star(s)+A^\star(s,a)-\max_aA^\star(s,a). Q(s,a)=V(s)+A(s,a)amaxA(s,a).

10.2 搭建 Dueling Network

用神经网络 A ( s , a ; w A ) A(s,a;w^A) A(s,a;wA) 来近似优势函数 A ⋆ ( s , a ) A^\star(s,a) A(s,a)(输出一个向量)

网络结构

输入状态s
Conv
全连接层
对所有动作的打分,输出向量

用另一个神经网络 V ( s ; w V ) V(s;w^V) V(s;wV) 来近似最优状态价值函数 V ⋆ ( s ) V^\star(s) V(s),输出对状态 s 的打分(输出一个实数)

这两个神经网络可以共享卷积层的参数

输入状态s
Conv
全连接层
对状态 s 的打分,输出实数

将定理2 中的 V ⋆ V^\star V A ⋆ A^\star A 替换得
Q ( s , a ; w A , w V ) = V ( s ; w V ) + A ( s , a ; w A ) − max ⁡ a A ( s , a ; w A ) . Q(s,a;w^A,w^V)=V(s;w^V)+A(s,a;w^A)-\max_aA(s,a;w^A). Q(s,a;wA,wV)=V(s;wV)+A(s,a;wA)amaxA(s,a;wA).
将上式 Q ( s , a ; w A , w V ) Q(s,a;w^A,w^V) Q(s,a;wA,wV) 称为 Dueling Network,是 对最优动作价值函数的近似,故可以用来控制 agent(它的输入、输出和 DQN 完全一样,功能也一样)

输入状态s
多个Conv
多个全连接层1
对所有动作的打分,输出向量
多个全连接层2
对状态s的打分,输出实数
将对状态的分数分别加到每一个动作的分数上,并减去最大动作分数
对每个动作的打分

10.3 训练

用 Q-Learning 来学习参数 w,学习过程和 DQN 一样,

优先经验回放、Double DQN、Multi-step TD target 等对 TD 的优化,都可以用来训练 Dueling network

10.4 不唯一问题

定理2 中加上 − max ⁡ a A ⋆ ( s , a ) -\max_aA^\star(s,a) maxaA(s,a) 的原因是为了解决 Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a) 分解的不唯一性。

在训练过程中,若神经网络 V 和 A 上下波动,波动幅度相同方向相反,则 Dueling Network 的输出毫无差别,但两个神经网络都在上下波动,都不稳定。在加入最大化项之后,即时两个网络上下波动幅度相同方向相反,但最终的 Q ⋆ ( s , a ) Q^\star(s,a) Q(s,a) 就发生了变化。

实际中,将最大化换为均值 − m e a n a A ( s , a ; w A ) -mean_aA(s,a;w^A) meanaA(s,a;wA) 效果更好,更稳定

11. Policy gradient with Baseline

往策略学习中加入 baseline,可以降低方差,让收敛更快

baseline 是一个函数 b,可以是任何东西,但不能依赖于动作 A

11.1 证明

E A ∼ π [ b ⋅ ∂ l n π ( A ∣ s ; θ ) ∂ θ ] = b ⋅ E A ∼ π [ ∂ l n π ( A ∣ s ; θ ) ∂ θ ] = b ⋅ ∑ a π ( a ∣ s ; θ ) ⋅ [ 1 π ( a ∣ s ; θ ) ⋅ ∂ π ( a ∣ s ; θ ) ∂ θ ] = b ⋅ ∑ a ∂ π ( a ∣ s ; θ ) ∂ θ = b ⋅ ∂ ∑ a π ( a ∣ s ; θ ) ∂ θ = b ⋅ ∂ 1 ∂ θ = 0. \begin{aligned} E_{A\sim\pi}[b\cdot\frac{\partial ln \pi(A|s;\theta)}{\partial \theta}] &=b\cdot E_{A\sim\pi}[\frac{\partial ln \pi(A|s;\theta)}{\partial \theta}]\\ &=b\cdot \sum_a\pi(a|s;\theta)\cdot[\frac{1}{\pi(a|s;\theta)}\cdot\frac{\partial \pi(a|s;\theta)}{\partial\theta}]\\ &=b\cdot \sum_a\frac{\partial \pi(a|s;\theta)}{\partial\theta}\\ &=b\cdot \frac{\partial \sum_a \pi(a|s;\theta)}{\partial\theta}\\ &=b\cdot\frac{\partial 1}{\partial \theta}\\ &=0. \end{aligned} EAπ[bθl(As;θ)]=bEAπ[θl(As;θ)]=baπ(as;θ)[π(as;θ)1θπ(as;θ)]=baθπ(as;θ)=bθaπ(as;θ)=bθ1=0.

策略梯度
∂ V π ( s ; θ ) ∂ θ = E A ∼ π [ ∂ l n π ( A ∣ s ; θ ) ∂ θ ∗ Q π ( s , A ) ] = E A ∼ π [ ∂ l n π ( A ∣ s ; θ ) ∂ θ ∗ Q π ( s , A ) ] − E A ∼ π [ b ⋅ ∂ l n π ( A ∣ s ; θ ) ∂ θ ] = E A ∼ π [ ∂ l n π ( A ∣ s ; θ ) ∂ θ ∗ ( Q π ( s , A ) − b ) ] \begin{aligned} \frac{\partial V_\pi(s;\theta)}{\partial \theta} &=E_{A\sim\pi}[\frac{\partial ln \pi(A|s;\theta)}{\partial \theta}*Q_\pi(s,A)]\\ &=E_{A\sim\pi}[\frac{\partial ln \pi(A|s;\theta)}{\partial \theta}*Q_\pi(s,A)]-E_{A\sim\pi}[b\cdot\frac{\partial ln \pi(A|s;\theta)}{\partial \theta}]\\ &=E_{A\sim\pi}[\frac{\partial ln \pi(A|s;\theta)}{\partial \theta}*(Q_\pi(s,A)-b)] \end{aligned} θVπ(s;θ)=EAπ[θl(As;θ)Qπ(s,A)]=EAπ[θl(As;θ)Qπ(s,A)]EAπ[bθl(As;θ)]=EAπ[θl(As;θ)(Qπ(s,A)b)]
可得:若 baseline b 与动作 A t A_t At 无关,则策略梯度可以写为带 baseline 的形式,b 不会影响正确性,不管 b 是什么,都不会影响正确性,得到的期望一样。

为什么要用 b: 算法中真正用的策略梯度不是上面的公式,而是对上式的蒙特卡洛近似,b 不会影响期望,但会影响蒙特卡洛近似,若选择的 b 接近 Q π Q_\pi Qπ,那么 b 会让其蒙特卡洛近似的方差降低,算法收敛会更快

11.2 蒙特卡洛近似

E A ∼ π [ ∂ l n π ( A ∣ s ; θ ) ∂ θ ∗ ( Q π ( s , A ) − b ) ] E_{A\sim\pi}[\frac{\partial ln \pi(A|s;\theta)}{\partial \theta}*(Q_\pi(s,A)-b)] EAπ[θl(As;θ)(Qπ(s,A)b)] 记为 g ( A t ) g(A_t) g(At),期望是关于 A t A_t At 求的, A t A_t At 的概率密度函数是策略网络 π \pi π a t ∼ π ( ⋅ ∣ s t ; θ ) a_t\sim\pi(\cdot|s_t;\theta) atπ(st;θ)),根据 π \pi π 做随机抽样,得到动作 a t a_t at,计算 g ( a t ) g(a_t) g(at)(随机梯度),就是期望的蒙特卡洛近似,是策略梯度的无偏估计

用随机梯度上升更新 θ \theta θ. θ ← θ + β ⋅ g ( a t ) \theta \leftarrow \theta + \beta\cdot g(a_t) θθ+βg(at),让状态价值变大,

11.3 baseline 的选择

  1. b = 0 b=0 b=0 得到标准的策略梯度
  2. b = V π ( s t ) b=V_\pi(s_t) b=Vπ(st), 因为 V π ( s t ) V_\pi(s_t) Vπ(st) 很接近 Q π ( s t , A t ) Q_\pi(s_t,A_t) Qπ(st,At)

12. REINFORCE with Baseline

12.1 推导

g ( a t ) = ∂ l n π ( a t ∣ s t ; θ ) ∂ θ ∗ ( Q π ( s t , a t ) − V π ( s t ) ) g(a_t)=\frac{\partial ln \pi(a_t|s_t;\theta)}{\partial \theta}*(Q_\pi(s_t,a_t)-V_\pi(s_t)) g(at)=θl(atst;θ)(Qπ(st,at)Vπ(st))

公式中 Q π Q_\pi Qπ V π V_\pi Vπ 都不知道

Q π ( s t , a t ) = E [ U t ∣ s t , a t ] Q_\pi(s_t,a_t)=E[U_t|s_t,a_t] Qπ(st,at)=E[Utst,at],用观测到的 u t u_t ut 近似 Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at)(REINFORCE 算法)

  1. 从 t 时刻开始一直到游戏结束观测到的轨迹: s t , a t , r t , . . . , s n , a n , r n s_t,a_t,r_t,...,s_n,a_n,r_n st,at,rt,...,sn,an,rn
  2. 从 t 时刻开始所有的奖励加权求和得到回报 u t = ∑ i = t n γ i − t ⋅ r i u_t=\sum_{i=t}^{n}\gamma^{i-t}\cdot r_i ut=i=tnγitri,即为动作价值 Q π Q_\pi Qπ 的无偏估计

V π V_\pi Vπ 可以用神经网络 v ( s ; w ) v(s;w) v(s;w) 近似

则近似的策略梯度为:
∂ V π ( s t ) ∂ θ ≈ g ( a t ) ≈ ∂ l n π ( a t ∣ s t ; θ ) ∂ θ ⋅ ( u t − v ( s t ; w ) ) ] . \begin{aligned} \frac{\partial V_\pi(s_t)}{\partial \theta} &\approx g(a_t)\\ &\approx \frac{\partial ln \pi(a_t|s_t;\theta)}{\partial \theta} \cdot(u_t-v(s_t;w))]. \end{aligned} θVπ(st)g(at)θl(atst;θ)(utv(st;w))].

共三次近似

  1. 用蒙特卡洛近似期望,将策略梯度近似为随机梯度 g ( a t ) g(a_t) g(at)
  2. 将动作价值 Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at) 用回报 u t u_t ut 近似
  3. 将状态价值函数 V π V_\pi Vπ 用神经网络 v ( s ; w ) v(s;w) v(s;w) 近似

策略网络用来控制 agent,价值网络起辅助作用,作为 baseline,帮助训练策略网络

12.2 网络搭建

1. 策略网络
输入状态 s
Conv
Dense
Softmax
输出每个动作的概率
2. 状态价值网络
输入状态 s
Conv
Dense
输出状态 s 的分数
3. 参数共享
输入状态 s
Conv
Dense1
Softmax
输出每个动作的概率
Dense2
输出状态 s 的分数
4. 更新策略网络

θ ← θ + β ⋅ ∂ l n π ( a t ∣ s t ; θ ) ∂ θ ⋅ ( u t − v ( s t ; w ) ) θ ← θ + β ⋅ δ t ⋅ ∂ l n π ( a t ∣ s t ; θ ) ∂ θ \theta \leftarrow \theta+\beta \cdot \frac{\partial ln \pi(a_t|s_t;\theta)}{\partial \theta} \cdot(u_t-v(s_t;w))\\ \theta \leftarrow \theta+\beta \cdot \delta_t \cdot \frac{\partial ln \pi(a_t|s_t;\theta)}{\partial \theta}\\ θθ+βθl(atst;θ)(utv(st;w))θθ+βδtθl(atst;θ)

将价值网络的预测与真实观测 u t u_t ut 的差记为 − δ t -\delta_t δt

5. 更新价值网络

用神经网络 v ( s t ; w ) v(s_t;w) v(st;w) 近似函数 V π ( s t ) = E [ U t ∣ s t ] . V_\pi(s_t)=E[U_t|s_t]. Vπ(st)=E[Utst].

  1. 预测误差: δ t = v ( s t ; w ) − u t \delta_t=v(s_t;w)-u_t δt=v(st;w)ut
  2. 梯度: ∂ δ t 2 / 2 ∂ w = δ t ⋅ ∂ v ( s t ; w ) ∂ w \frac{\partial \delta_t^2/2}{\partial w}=\delta_t \cdot \frac{\partial v(s_t;w)}{\partial w} wδt2/2=δtwv(st;w)
  3. 梯度下降: w ← w − α ⋅ δ t ⋅ ∂ v ( s t ; w ) ∂ w w\leftarrow w-\alpha \cdot \delta_t \cdot \frac{\partial v(s_t;w)}{\partial w} wwαδtwv(st;w)
6.总览
  1. 从开始到一直到结束的所有 transition
  2. 用所有观测到的奖励计算回报 Return: u t = ∑ i = t n γ i − t ⋅ r i . u_t=\sum_{i=t}^{n}\gamma^{i-t}\cdot r_i. ut=i=tnγitri.
  3. Error: δ t = v ( s t ; w ) − u t . \delta_t=v(s_t;w)-u_t. δt=v(st;w)ut.
  4. 用策略梯度更新策略网络: θ ← θ + β ⋅ δ t ⋅ ∂ l n π ( a t ∣ s t ; θ ) ∂ θ . \theta \leftarrow \theta+\beta \cdot \delta_t \cdot \frac{\partial ln \pi(a_t|s_t;\theta)}{\partial \theta}. θθ+βδtθl(atst;θ).
  5. 更新价值网络: w ← w − α ⋅ δ t ⋅ ∂ v ( s t ; w ) ∂ w w\leftarrow w-\alpha \cdot \delta_t \cdot \frac{\partial v(s_t;w)}{\partial w} wwαδtwv(st;w)

13. Advantage Actor-Critic(A2C)

将 baseline 应用在 Actor-Critic 中

Actor

策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ) 近似策略函数 π ( a ∣ s ) \pi(a|s) π(as),控制 agent 运动

Critic

价值网络 v ( s ; w ) v(s;w) v(s;w) 近似状态价值函数 V π ( s ) V_\pi(s) Vπ(s),评价状态 s 的好坏

输入状态 s
Conv
Dense1
Softmax
输出每个动作的概率
Dense2
输出状态 s 的分数

13.2 推导

定理1
Q π ( s t , a t ) = E S t + 1 , A t + 1 [ R t + γ ⋅ Q π ( S t + 1 , A t + 1 ) ] = E S t + 1 [ R t + γ ⋅ E A t + 1 [ Q π ( S t + 1 , A t + 1 ) ] ] = E S t + 1 [ R t + γ ⋅ V π ( S t + 1 ) ] . \begin{aligned} Q_\pi(s_t,a_t) &=E_{S_{t+1},A_{t+1}}[R_t+\gamma \cdot Q_\pi(S_{t+1},A_{t+1})]\\ &=E_{S_{t+1}}[R_t+\gamma \cdot E_{A_{t+1}}[Q_\pi(S_{t+1},A_{t+1})]]\\ &=E_{S_{t+1}}[R_t+\gamma \cdot V_\pi(S_{t+1})]. \end{aligned} Qπ(st,at)=ESt+1,At+1[Rt+γQπ(St+1,At+1)]=ESt+1[Rt+γEAt+1[Qπ(St+1,At+1)]]=ESt+1[Rt+γVπ(St+1)].
蒙特卡洛近似: Q π ( s t , a t ) ≈ r t + γ ⋅ V π ( s t + 1 ) Q_\pi(s_t,a_t)\approx r_t + \gamma \cdot V_{\pi}(s_{t+1}) Qπ(st,at)rt+γVπ(st+1)

定理2
V π ( s t ) = E A t [ Q π ( s t , A t ) ] = E A t [ E S t + 1 [ R t + γ ⋅ V π ( S t + 1 ) ] ] = E A t , S t + 1 [ R t + γ ⋅ V π ( S t + 1 ) ] \begin{aligned} V_\pi(s_t) &=E_{A_t}[Q_\pi(s_t,A_t)]\\ &=E_{A_t}[E_{S_{t+1}}[R_t+\gamma \cdot V_\pi(S_{t+1})]]\\ &=E_{A_t,S_{t+1}}[R_t+\gamma \cdot V_\pi(S_{t+1})] \end{aligned} Vπ(st)=EAt[Qπ(st,At)]=EAt[ESt+1[Rt+γVπ(St+1)]]=EAt,St+1[Rt+γVπ(St+1)]

蒙特卡洛近似: V π ( s t ) ≈ r t + γ ⋅ V π ( s t + 1 ) V_\pi(s_t)\approx r_t + \gamma \cdot V_{\pi}(s_{t+1}) Vπ(st)rt+γVπ(st+1)

对策略梯度的近似
g ( a t ) ≈ ∂ l n π ( a t ∣ s t ; θ ) ∂ θ ⋅ ( r t + γ ⋅ v ( s t + 1 ; w ) − v ( s t ; w ) ) . g(a_t)\approx \frac{\partial ln \pi(a_t|s_t;\theta)}{\partial \theta} \cdot(r_t+\gamma \cdot v(s_{t+1};w)-v(s_t;w)). g(at)θl(atst;θ)(rt+γv(st+1;w)v(st;w)).

右边括号内的值即为优势(advantage),即价值网络对动作 at 的评价,若 at 很好,那么左边比右边大,两者之差是正值,若 at 不好,两者之差就是负的,两者之差可以反映出来 at 带来的优势。

13.1 训练

训练策略网络需要用到状态 s、动作 a、价值网络提供的优势,训练价值网络需要状态 s 和奖励 r

  1. 观测到一个 transiton s t , a t , r t , s t + 1 s_t,a_t,r_t,s_{t+1} st,at,rt,st+1
  2. TD target: y t = r t + γ ⋅ v ( s t + 1 ; w ) y_t=r_t+\gamma \cdot v(s_{t+1};w) yt=rt+γv(st+1;w)
  3. TD error: δ t = v ( s t ; w ) − y t \delta_t=v(s_t;w)-y_t δt=v(st;w)yt
  4. 更新策略网络: θ ← θ − β ⋅ δ t ⋅ ∂ l n π ( a t ∣ s t ; θ ) ∂ θ \theta \leftarrow \theta - \beta \cdot \delta_t \cdot \frac{\partial ln \pi(a_t|s_t;\theta)}{\partial \theta} θθβδtθl(atst;θ)
  5. 更新价值网络: w ← w − α ⋅ δ t ⋅ ∂ v ( s t ; w ) ∂ w w\leftarrow w-\alpha \cdot \delta_t \cdot \frac{\partial v(s_t;w)}{\partial w} wwαδtwv(st;w)

将 A2C 改为多步 TD Target

  1. m 个连续的 transition: ( s t + i , a t + i , r t + i , s t + i + 1 ) {(s_{t+i},a_{t+i},r_{t+i},s_{t+i+1})} (st+i,at+i,rt+i,st+i+1)
  2. TD target: y t = ∑ i = 0 m − 1 γ i ⋅ r t + i + γ m ⋅ c ( s t + m ; w ) . y_t=\sum_{i=0}^{m-1}\gamma^i \cdot r_{t+i}+\gamma^{m}\cdot c(s_{t+m};w). yt=i=0m1γirt+i+γmc(st+m;w).
  3. 后续步骤和原本的 A2C 一样

REINFORCE with baseline 和 A2C 对比

  1. 神经网络结构完全一样,REINFORCE 是 A2C 的一种特例
  2. A2C 的价值网络用来评价 actor 的表现,REINFORCE 中的价值网络仅仅是 baseline,不会评价动作好坏,降低随机梯度造成的方差
  3. A2C 的 y t y_t yt 是部分基于真实观测,部分基于价值网络的估计,REINFORCE 是完全基于真实观测来计算

14. 连续控制

不能直接将 DQN 用于连续控制问题,连续控制中,有无穷多种动作,而 DQN 的输出是每个动作的打分。DQN 和策略网络都不能直接用于连续控制。

要将DQN 或策略网络用于连续控制,就需要将连续空间离散化,空间维度越高,离散化后的动作就越多,指数增长,会造成维度灾难,动作数量变多之后,导致训练困难,DQN 或策略网络的结果都不会很好,因次离散化只适合自由度很小的问题。

14.1 Deterministic Policy Gradient(DPG,确定策略梯度)

DPG 是一种 Actor-Critic 方法

状态 s
Value Network
Policy Network
得到动作 a
得到价值value

策略网络(Actor)控制 agent 运动,根据状态 s 做出决策 a(输出直接是要执行的动作,故为 Deterministic),价值网络(Critic)基于状态 s 给动作 a 打分,从而指导策略网络改进

  • 策略网络: a = π ( s ; θ ) . a=\pi(s;\theta). a=π(s;θ).

  • 价值网络: q ( s , a ; w ) q(s,a;w) q(s,a;w)

1. TD 算法更新价值网络
  1. transition: ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1)

  2. 价值网络在 t 时刻的预测: q t = q ( s t , a t ; w ) q_t =q(s_t,a_t;w) qt=q(st,at;w)

  3. 价值网络在 t+1 时刻的预测: q t + 1 = q ( s t + 1 , a t + 1 ′ ; w ) , a t + 1 ′ = π ( s t + 1 ; θ ) . q_{t+1} =q(s_{t+1},a_{t+1}^{'};w),\ a^{'}_{t+1}=\pi(s_{t+1};\theta). qt+1=q(st+1,at+1;w), at+1=π(st+1;θ).

    ( a t + 1 ′ 不执行,只是用于更新价值网络 ) (a_{t+1}^{'}不执行,只是用于更新价值网络) (at+1不执行,只是用于更新价值网络)

  4. TD error: δ t = q t − ( r t + γ ⋅ q t + 1 ) . \delta_t=q_t-(r_t+\gamma \cdot q_{t+1}). δt=qt(rt+γqt+1).

  5. 更新参数: w ← w − α ⋅ δ t ⋅ ∂ q ( s t , a t ; w ) ∂ w w\leftarrow w-\alpha \cdot \delta_t \cdot \frac{\partial q(s_t,a_t;w)}{\partial w} wwαδtwq(st,at;w)

2. 用确定策略梯度更新策略网络

和之前的策略梯度有所差异

价值网络评价动作 a 的好坏,从而指导策略网络进行改进,让价值网络的输出越大越好。在输入状态 s 固定且价值网络固定的情况下,影响价值网络的输出 value 的因素就只有策略网络,要更新策略网络,使得 value 变大,故计算 q ( s , a ; w ) q(s,a;w) q(s,a;w) 关于 θ \theta θ 的梯度,梯度上升更新策略网络,使得价值网络 q ( s , a ; w ) q(s,a;w) q(s,a;w) 的输出 value 变大,这个梯度即为 ”确定策略梯度(DPG)“, g = ∂ q ( s , π ( s ; θ ) ; w ) ∂ θ = ∂ a ∂ θ ⋅ ∂ q ( s , a ; w ) ∂ a g=\frac{\partial q(s,\pi(s;\theta);w)}{\partial \theta}=\frac{\partial a}{\partial \theta} \cdot \frac{\partial q(s,a;w)}{\partial a} g=θq(s,π(s;θ);w)=θaaq(s,a;w),梯度上升更新 θ \theta θ θ ← θ + β ⋅ g \theta \leftarrow \theta + \beta \cdot g θθ+βg

3. 用 Target Networks 对价值网络的训练进行改进

在更新价值网络的时候,TD target 一部分是真实观测 r t r_t rt,另一部分是价值网络自己的预测 q t + 1 q_{t+1} qt+1 q t q_t qt 要接近 TD target,存在 Bootstrapping 问题,可能高估也可能低估。

可以用 Target Networks 改进。

  1. 策略网络做出决策: a = π ( s ; θ ) a=\pi(s;\theta) a=π(s;θ)
  2. 用确定策略梯度更新策略网络: θ ← θ + β ⋅ ∂ a ∂ θ ⋅ ∂ q ( s , a ; w ) ∂ a \theta \leftarrow \theta + \beta \cdot \frac{\partial a}{\partial \theta} \cdot \frac{\partial q(s,a;w)}{\partial a} θθ+βθaaq(s,a;w)
  3. 价值网络计算 t 时刻价值: q t = q ( s , a ; w ) . q_t=q(s,a;w). qt=q(s,a;w).
  4. 用 Target Network π ( s ; θ − ) , q ( s , a ; w − ) \pi(s;\theta^-), \ q(s,a;w^-) π(s;θ), q(s,a;w) 计算 t+1 时刻的价值: q t + 1 q_{t+1} qt+1
  5. TD error: δ t = q t − ( r t + γ ⋅ q t + 1 ) . \delta_t=q_t-(r_t+\gamma \cdot q_{t+1}). δt=qt(rt+γqt+1).
  6. 更新价值网络: w ← w − α ⋅ δ t ⋅ ∂ q ( s , a ; w ) ∂ w w\leftarrow w-\alpha \cdot \delta_t \cdot \frac{\partial q(s,a;w)}{\partial w} wwαδtwq(s,a;w)

更新 target networks

  1. 设置超参: τ ∈ ( 0 , 1 ) . \tau\in(0,1). τ(0,1).

  2. 更新参数

    w − ← τ ⋅ w + ( 1 − τ ) ⋅ w − . w^-\leftarrow \tau \cdot w + (1-\tau)\cdot w^ -. wτw+(1τ)w.

    θ − ← τ ⋅ θ + ( 1 − τ ) ⋅ θ − \theta^-\leftarrow \tau \cdot \theta+(1-\tau)\cdot\theta^- θτθ+(1τ)θ

    target networks 的参数依赖于价值网络和策略,不能避免 Bootstrapping,但在一定程度上有所缓解。

其他改进方式

  1. Experience replay
  2. Multi-step TD target

14.2 随机策略和确定策略对比

Stochastic PolicyDeterministic Policy
Policy$\pi(as;\theta)$
Output动作空间的概率分布要执行的动作
Control在动作空间的概率分布中随机抽样得到要执行的动作使用输出的动作
Application主要用于离散控制连续控制

14.3 用随机策略做连续控制

1. 构造策略网络

若动作 a 是 d 维向量,用 μ \mu μ σ \sigma σ 分别表示计算均值和标准差的函数,输入状态 s,输出为 d 维向量, u i u_i ui σ i \sigma_i σi 分别表示 μ ( s ) \mu(s) μ(s) σ ( s ) \sigma(s) σ(s) 输出的第 i 个元素,用正态分布 N ( μ i , σ i 2 ) N(\mu_i,\sigma_i^2) N(μi,σi2) 的概率密度函数作为策略函数。
π ( a ∣ s ) = ∏ i = 1 d 1 6.28 σ i ⋅ e x p ( − ( a i − μ i ) 2 2 σ i 2 ) . \pi(a|s)=\prod_{i=1}^{d}\frac{1}{\sqrt {6.28} \sigma_i} \cdot exp(-\frac{(a_i-\mu_i)^2}{2\sigma_i^2}). π(as)=i=1d6.28 σi1exp(2σi2(aiμi)2).
此时,并不知道 μ \mu μ σ \sigma σ 这两个函数具体形式,故策略函数 π \pi π 还不知道。

用神经网络来做函数近似,用 μ ( s ; θ μ ) \mu(s;\theta^\mu) μ(s;θμ) 近似 μ \mu μ,对于 σ \sigma σ,最好不要直接近似,而是近似方差的对数,用神经网络 ρ ( s ; θ ρ ) \rho(s;\theta^\rho) ρ(s;θρ) 近似 ρ \rho ρ,其中 ρ i = l n σ i 2 , i = 1 , . . . , d . \rho_i=ln\ \sigma_i^2, i=1,...,d. ρi=ln σi2,i=1,...,d.

2. 网络搭建
输入状态s
Conv
Dense1
μ函数
Dense2
ρ函数
  • 用这个网络计算均值和方差的对数

μ ^ = μ ( s ; θ μ ) ρ ^ = ρ ( s ; θ ρ ) . \hat\mu=\mu(s;\theta^\mu)\\ \hat\rho=\rho(s;\theta^\rho). μ^=μ(s;θμ)ρ^=ρ(s;θρ).

  • 计算方差 σ ^ i 2 = e x p ( ρ ^ i ) , i = 1 , . . . , d . \hat\sigma_i^2=exp(\hat\rho_i),i=1,...,d. σ^i2=exp(ρ^i),i=1,...,d.

现在知道了方差和均值,这个正态分布也就知道了, a i ∼ N ( μ ^ i , σ ^ i 2 ) a_i\sim N(\hat\mu_i,\hat\sigma_i^2) aiN(μ^i,σ^i2),即可进行随机抽样。每次观测到状态 s,让神经网络计算均值和方差,随机生成动作 a,让 agent 执行动作,即可控制 agent 运动。

3. 训练

为了计算策略梯度,需要搭建辅助神经网络,然后用策略梯度方法来训练策略网络。

l n π ( a ∣ s ; θ μ , θ ρ ) = ∑ i = 1 d [ − l n σ i − ( a i − μ i ) 2 2 σ i 2 ] + c o n s t = ∑ i = 1 d [ − ρ i 2 − ( a i − μ i ) 2 2 ⋅ e x p ( ρ i ) ] + c o n s t = l n π ( a ∣ s ; θ ) ln \pi(a|s;\theta^\mu,\theta^\rho)=\sum_{i=1}^{d}[-ln\ \sigma_i-\frac{(a_i-\mu_i)^2}{2\sigma_i^2}]+const=\sum_{i=1}^{d}[-\frac{\rho_i}{2}-\frac{(a_i-\mu_i)^2}{2\cdot exp(\rho_i)}]+const=ln\ \pi(a|s;\theta) l(as;θμ,θρ)=i=1d[ln σi2σi2(aiμi)2]+const=i=1d[2ρi2exp(ρi)(aiμi)2]+const=ln π(as;θ)

将辅助神经网络记为: f ( s , a ; θ ) = ∑ i = 1 d [ − ρ i 2 − ( a i − μ i ) 2 2 ⋅ e x p ( ρ i ) ] f(s,a;\theta)=\sum_{i=1}^{d}[-\frac{\rho_i}{2}-\frac{(a_i-\mu_i)^2}{2\cdot exp(\rho_i)}] f(s,a;θ)=i=1d[2ρi2exp(ρi)(aiμi)2],是 μ \mu μ ρ \rho ρ a a a 的函数,将三者映射到一个实数,即为 辅助神经网络的输出,反向传播可以计算梯度 ∂ f ∂ θ \frac{\partial f}{\partial \theta} θf.

网络结构如下

输入状态s
Conv
Dense1
μ函数
辅助网络f的输出
Dense2
ρ函数
动作a

小结:用神经网络来做函数近似,用 μ ( s ; θ μ ) \mu(s;\theta^\mu) μ(s;θμ) 近似 μ \mu μ,对于 σ \sigma σ,知道了方差和均值,也就知道了策略网络,从而控制 agent 运动,辅助神经网络用于训练, ∂ f ∂ θ \frac{\partial f}{\partial \theta} θf 计算策略梯度。

4. 计算策略梯度

随机策略梯度: g ( a ) = ∂ l n π ( a ∣ s ; θ ) ∂ θ ∗ Q π ( s , a ) = ∂ f ( s , a ; θ ) ∂ θ ⋅ Q π ( s , a ) . g(a)=\frac{\partial ln \pi(a|s;\theta)}{\partial \theta}*Q_\pi(s,a)=\frac{\partial f(s,a;\theta)}{\partial \theta} \cdot Q_\pi(s,a). g(a)=θl(as;θ)Qπ(s,a)=θf(s,a;θ)Qπ(s,a). ∂ f ( s , a ; θ ) ∂ θ \frac{\partial f(s,a;\theta)}{\partial \theta} θf(s,a;θ) 这一项可以直接计算梯度, Q π ( s , a ) Q_\pi(s,a) Qπ(s,a) 未知,需要近似。

  • 可以使用 REINFORCE 或 Actor-Critic 方法,用前者的话,使用蒙特卡洛近似,用观测到的 u t u_t ut 来近似。

    更新网络: θ ← θ + β ⋅ ∂ f ( s , a ; θ ) ∂ θ ⋅ u t \theta\leftarrow \theta+\beta \cdot \frac{\partial f(s,a;\theta)}{\partial \theta} \cdot u_t θθ+βθf(s,a;θ)ut

  • 用 Actor-Critic:使用神经网络(价值网络) q ( s , a ; w ) q(s,a;w) q(s,a;w) 近似 Q π Q_\pi Qπ

    更新网络: θ ← θ + β ⋅ ∂ f ( s , a ; θ ) ∂ θ ⋅ q ( s , a ; w ) \theta\leftarrow \theta+\beta \cdot \frac{\partial f(s,a;\theta)}{\partial \theta} \cdot q(s,a;w) θθ+βθf(s,a;θ)q(s,a;w)

    价值网络用 TD 算法来学习

15. Trust Region Policy Optimization(TRPO,置信域策略优化)

和之前的策略梯度相比,计算量更大,但是表现更稳定,收敛更快

15.1 Trust Region(置信域)

  • 问题:寻找一个 θ \theta θ θ ⋆ = a r g m a x θ J ( θ ) \theta^\star=argmax_\theta\ J(\theta) θ=argmaxθ J(θ)

    梯度上升

    1. 计算梯度: g = ∂ J ( θ ) ∂ θ ∣ θ = θ o l d g=\frac{\partial\ J(\theta)}{\partial\ \theta}|_{\theta=\theta_{old}} g= θ J(θ)θ=θold
    2. 梯度上升: θ n e w ← θ o l d + α ⋅ g \theta_{new}\leftarrow \theta_{old}+\alpha \cdot g θnewθold+αg

    随机梯度上升

    有些情况下,梯度算不出来,如 J ( θ ) = E S [ V ( S ; θ ) ] J(\theta)=E_S[V(S;\theta)] J(θ)=ES[V(S;θ)],求期望需要定积分,但积分可能算不出来,可以用随机梯度(期望的蒙特卡洛近似)代替梯度,即随机梯度上升。

    关于 S 做随机抽样,观测到 s,然后求梯度, g = ∂ V ( s ; θ ) ∂ θ ∣ θ = θ o l d g=\frac{\partial\ V(s;\theta)}{\partial\ \theta}|_{\theta=\theta_{old}} g= θ V(s;θ)θ=θold(g 是随机梯度,是对目标函数梯度的蒙特卡洛近似),梯度上升, θ n e w ← θ o l d + α ⋅ g \theta_{new}\leftarrow \theta_{old}+\alpha \cdot g θnewθold+αg

θ o l d \theta_{old} θold 的邻域 N ( θ o l d ) = { θ ∣ ∥ θ − θ o l d ∥ 2 ≤ Δ } N(\theta_{old})=\{\theta|\parallel \theta-\theta_{old}\parallel_2\le\Delta\} N(θold)={θθθold2Δ},若有一个函数 L ( θ ∣ θ o l d ) L(\theta|\theta_{old}) L(θθold) 在该邻域内非常接近目标函数 J ( θ ) J(\theta) J(θ),那么这个邻域就叫做置信域

15.2 Trust region algorithms(置信域算法)

在置信域上人为构造的函数 L 非常接近目标函数 J,因此可以用 L 代替 J,在该置信域上寻找 L 的最大值,最大化 L 的点也可以使得 J 变大

置信域算法核心步骤(重复):

  1. 近似。

    给定旧的变量 θ o l d \theta_{old} θold,构造函数 L,使得 L 可以在 θ o l d \theta_{old} θold 的邻域内近似 J。

    构造 L 的方法:如 J 的二阶泰勒展开,J 的蒙特卡洛近似等。

  2. 最大化。

    在置信域中搜索 L 的最大值,找到一个新的 θ n e w \theta_{new} θnew θ n e w ← a r g m a x θ ∈ N ( θ o l d ) L ( θ ∣ θ o l d ) \theta_{new}\leftarrow argmax_{\theta\in N(\theta_{old})}L(\theta|\theta_{old}) θnewargmaxθN(θold)L(θθold)

通常让置信域的半径逐渐变小

15.3 推导目标函数

状态价值函数
V π ( s ) = ∑ a π ( a ∣ s ; θ ) ⋅ Q π ( s , a ) = ∑ a π ( a ∣ s ; θ o l d ) ⋅ π ( a ∣ s ; θ ) π ( a ∣ s ; θ o l d ) ⋅ Q π ( s , a ) = E A ∼ π ( ⋅ ∣ s ; θ o l d ) [ π ( A ∣ s ; θ ) π ( A ∣ s ; θ o l d ) ⋅ Q π ( s , A ) ] \begin{aligned} V_{\pi}(s) &=\sum_a\pi(a|s;\theta)\cdot Q_\pi(s,a)\\ &=\sum_a\pi(a|s;\theta_{old})\cdot \frac{\pi(a|s;\theta)}{\pi(a|s;\theta_{old})} \cdot Q_\pi(s,a)\\ &=E_{A\sim\pi(\cdot|s;\theta_{old})}[\frac{\pi(A|s;\theta)}{\pi(A|s;\theta_{old})} \cdot Q_\pi(s,A)] \end{aligned} Vπ(s)=aπ(as;θ)Qπ(s,a)=aπ(as;θold)π(as;θold)π(as;θ)Qπ(s,a)=EAπ(s;θold)[π(As;θold)π(As;θ)Qπ(s,A)]
目标函数 J
J ( θ ) = E S [ V π ( S ) ] = E S [ E A [ π ( A ∣ s ; θ ) π ( A ∣ s ; θ o l d ) ⋅ Q π ( s , A ) ] ] = E S , A [ π ( A ∣ s ; θ ) π ( A ∣ s ; θ o l d ) ⋅ Q π ( s , A ) ] \begin{aligned} J(\theta) &=E_S[V_\pi(S)]\\ &=E_S[E_{A}[\frac{\pi(A|s;\theta)}{\pi(A|s;\theta_{old})} \cdot Q_\pi(s,A)]]\\ &=E_{S,A}[\frac{\pi(A|s;\theta)}{\pi(A|s;\theta_{old})} \cdot Q_\pi(s,A)] \end{aligned} J(θ)=ES[Vπ(S)]=ES[EA[π(As;θold)π(As;θ)Qπ(s,A)]]=ES,A[π(As;θold)π(As;θ)Qπ(s,A)]

15.4 TRPO

策略梯度算法快,但表现不稳定。TRPO 稳定,观测到同样数量的奖励,TRPO 可以训练出更好的策略网络,

对超参的设置比较敏感,学习率的设置对结果影响很大

策略梯度算法的随机性很大,算法波动很大

1. Approximation

目标函数 J 中,随机变量状态 S 的随机性来自于状态转移,agent 实际观测到的状态可以看作是从环境中随机抽样得到的。

对 J 做蒙特卡洛近似,从环境抽随机抽样得到状态 s,从策略网络 π \pi π 中随机抽样得到动作 a。让 agent 和环境交互,得到一条轨迹, 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,...,s_n,a_n,r_n. s1,a1,r1,s2,a2,r2,...,sn,an,rn.

则基于 n 个观测值对 J 的蒙特卡洛近似为
L ( θ ∣ θ o l d ) = 1 n ∑ i = 1 n π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ o l d ) ⋅ Q π ( s i , a i ) . L(\theta|\theta_{old})=\frac{1}{n}\sum_{i=1}^{n}\frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})} \cdot Q_\pi(s_i,a_i). L(θθold)=n1i=1nπ(aisi;θold)π(aisi;θ)Qπ(si,ai).
Q π Q_\pi Qπ 做近似,基于观测到的轨迹,计算折扣回报 u i = r i + γ ⋅ r i + 1 + γ 2 ⋅ r i + 2 + . . . + γ n − i ⋅ r n u_i=r_i+\gamma \cdot r_{i+1}+\gamma^2\cdot r_{i+2} + ...+\gamma^{n-i}\cdot r_n ui=ri+γri+1+γ2ri+2+...+γnirn,用其作为 Q π Q_\pi Qπ 的蒙特卡洛近似。则可得:
L ~ ( θ ∣ θ o l d ) = 1 n ∑ i = 1 n π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ o l d ) ⋅ u i \tilde L(\theta|\theta_{old})=\frac{1}{n}\sum_{i=1}^{n}\frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})} \cdot u_i L~(θθold)=n1i=1nπ(aisi;θold)π(aisi;θ)ui

2. Maximization

即时近似做的不好,或者最大化做的不好,新的解 θ n e w \theta_{new} θnew 也不会离 θ o l d \theta_{old} θold 太远。

在置信域 N ( θ o l d ) N(\theta_{old}) N(θold) 中求最大化,找到 θ n e w \theta_{new} θnew
θ n e w ← a r g m a x θ L ~ ( θ ∣ θ o l d ) ; s . t . θ ∈ N ( θ o l d ) . \theta_{new}\leftarrow argmax_{\theta}\tilde L(\theta|\theta_{old});\ s.t.\ \theta\in N(\theta_{old}). θnewargmaxθL~(θθold); s.t. θN(θold).

要让新的解离原本的 θ \theta θ 不要太远,需要衡量两者之间的距离。

  • 方式1: ∥ θ − θ o l d ∥ ≤ Δ . \parallel\theta-\theta_{old}\parallel\le\Delta. θθold∥≤Δ.
  • 方式2: 1 n ∑ i = 1 n K L [ π ( ⋅ ∣ s i ; θ o l d ) ∣ ∣ π ( ⋅ ∣ s i ; θ ) ] < Δ . \frac{1}{n}\sum_{i=1}^{n}KL[\pi(\cdot|s_i;\theta_{old})||\pi(\cdot|s_i;\theta)]\lt\Delta. n1i=1nKL[π(si;θold)∣∣π(si;θ)]<Δ.

16. Multi-Agent Reinforcement Learning(多智能体强化学习)

16.1 Settings(常见设定)

  1. Fully cooperation(完全合作)

    agents 的利益一致,获得的奖励相同,有共同的目标(协同完成某个任务)

  2. Fully competitive(完全竞争)

    一方的收益是另一方的损失(零和博弈、机器人格斗)

  3. Mixed Cooperative & competitive(合作竞争的混合)

    机器人足球中,球队内部合作,球队间竞争

  4. Self-interested(利己主义)

    每个 agent 只想最大化自身利益,至于其他 agent 的利益是否受损或收益,并不心(股票交易系统)

16.2 Terminologies

n 个 agent,S 是状态,Ai 表示第 i 个 agent 的动作。状态转移函数为 p ( s ′ ∣ s , a 1 , . . . a n ) = P ( S ′ = s ′ ∣ S = s , A 1 = a 1 , . . . , A n = a n ) p(s^{'}|s,a^1,...a^n)=P(S^{'}=s^{'}|S=s,A^1=a^1,...,A^n=a^n) p(ss,a1,...an)=P(S=sS=s,A1=a1,...,An=an). 下一个状态 S受所有 agents 的动作的影响,即每个 agents 都会影响下一个状态,从而相互影响。

奖励

Ri 表示第 i 个agent 获得的奖励

合作关系中: R 1 = R 2 = . . . = R n . R^1=R^2=...=R^n. R1=R2=...=Rn.

竞争中: R 1 ∝ − R 2 R^1 \propto -R^2 R1R2

R i R^i Ri 不仅取决于自己的动作,也取决去其他 agents 的动作

R t i R_t^i Rti 是第 i 个 agent 在 t 时刻的奖励,依赖于当前的状态 S t S_t St 和其他 agent 的动作 A t 1 , A t 2 , . . . A t n A_t^1,A_t^2,...A_t^n At1,At2,...Atn

回报

第 i 个 agent 在时间 t 获得的回报,从时间 t 开始第 i 个 agent 在未来获得的奖励总和 U t i = R t i + R t + 1 i + . . . U_t^i=R_t^i+R_{t+1}^i+... Uti=Rti+Rt+1i+...

折扣回报: U t i = R t i + γ ⋅ R t + 1 i + γ 2 ⋅ R t + 2 i + . . . U_t^i=R_t^i+\gamma \cdot R_{t+1}^i+\gamma^2 \cdot R_{t+2}^i+... Uti=Rti+γRt+1i+γ2Rt+2i+...,依赖于未来所有的状态 { S t , S t + 1 , S t + 2 , . . . } \{S_t,S_{t+1},S_{t+2},...\} {St,St+1,St+2,...} 以及未来所有的动作 { A t i , A t + 1 i , A t + 2 i , . . . } \{A_t^i,A_{t+1}^i,A_{t+2}^i,...\} {Ati,At+1i,At+2i,...}

策略网络

每个 agent 都有自己的策略网络 π ( a i ∣ s ; θ i ) \pi(a^i|s;\theta^i) π(ais;θi)

有的场景下,策略网络是可以相同的(可互换),如无人驾驶汽车 θ 1 = θ 2 = θ 3 . . . \theta^1=\theta^2=\theta^3... θ1=θ2=θ3...

足球机器人中策略网络参数不能互换,因为每个 agent 担任的角色可能不同

状态价值函数
V i ( s t ; θ 1 , . . . , θ n ) = E [ U t i ∣ S t = s t ] V^i(s_t;\theta^1,...,\theta^n)=E[U_t^i|S_t=s_t] Vi(st;θ1,...,θn)=E[UtiSt=st]
在当前状态 S t S_t St 已经可以被观测到时,用期望消除掉除 S t S_t St 之外的所有状态和所有 agent 的动作,那么状态价值函数就只与 S t S_t St 有关。

  • 任何一个 agent 的动作 A t j ∼ π ( ⋅ ∣ s t ; θ j ) A_t^j \sim \pi(\cdot|s_t;\theta^j) Atjπ(st;θj) 都会对状态价值函数产生影响。
  • 如果一个 agent 的策略网络发生变化,那么所有 agent 的状态价值函数都会发生变化

16.3 Convergence(收敛问题)

无法通过改进策略来获得更大的期望回报,即所有 agent 都已经找不到更好的策略,已经收敛,可以终止训练。

单个 agent 的情况下,若 J ( θ ) J(\theta) J(θ) 停止增长,则说明网络收敛,多个 agent 的情况下,判断收敛需要用到 Nash Equilibrium。

Nash Equilibrium,当所有 agent 都不改变策略的情况下,任意一个 agent 单独改变策略,不会让自己的回报更高。

multi-agent 的强化学习比较困难,直接用 single-agent 的学习算法来进行学习,效果并不好。

各个 agent 的目标函数都不一样,因为只和自己的策略网络参数有关,自己更新自己的参数,忽略了 agent 之间的关系以及交互,可能不能收敛,一个 agent 策略的更新,会导致所有 agent 的目标函数发生变化,因为有可能一个 agent 策略已经达到最优,但是由于另一个 agent 策略的改变,导致前一个 agent 的目标函数发生变化,那么前一个 agent 也得继续更新。

16.4 agents 之间的通信方式

  1. Fully decentralized(去中心化)

    每个 agent 都是独立的,独立和环境交互,用自己的观测和奖励更新自己的策略(训练和执行都是独立进行的),agents 相互之间没有通信。

  2. Fully centralized(完全中心化)

    所有 agents 都将信息传送给中央控制器,中央控制器知道所有 agents 的观测、动作、奖励,agent 上没有策略网络,自己不做决策,只执行指令,决策都是由中央做的。

  3. Centralized training with decentralized execution(中心化训练 & 去中心化执行)

    每个 agents 有自己的策略网络,训练时有中央控制器,会收集所有 agents 的观测、动作和奖励,中央控制器帮助 agents 训练策略网络,训练结束后,每个 agent 根据自己的策略网络进行决策,不用再和中央控制器通信。

  • Partial observation(不完全观测):每个 agent i 只能观测到局部状态 o i o^i oi,并不能看到全局状态 s,Multi-agent 通常假设是不完全观测。

  • Full observation(完全观测):每个 agent 都能观测到全局状态】

1. 去中心化

请添加图片描述

Actor-Critic: π ( a i ∣ o i ; θ i ) \pi(a^i|o^i;\theta^i) π(aioi;θi) q ( o i , a i ; w i ) q(o^i,a^i;w^i) q(oi,ai;wi)

2. 中心化

不论是训练还是真正执行的时候,策略网络都在中央控制器中。

训练时:每个 agent 将自己的观测和奖励传给中央控制器,中央控制器将决策传递给每个 agent,agent 执行动作和环境交互,中央控制器用所有的观测、奖励、动作来训练策略网络 。

执行时:中央控制上训练出的每个 agent 的策略网络,参数不同,决策只能由中央控制器来做。每个 agent 将自己的观测传递给中央控制器,中央控制器根据全局观测做出决策,传递给每个 agent 应该执行的动作,

优点:知道全局的信息,可以帮助所有 agent 做出更好的决策

缺点:速度慢,无法做到实时决策

Actor-Critic: π ( a i ∣ o ; θ i ) \pi(a^i|o;\theta^i) π(aio;θi) q ( o , a ; w i ) q(o,a;w^i) q(o,a;wi)

3. 中心化训练&去中心化执行

训练时,由中央控制器帮助 agent 训练策略网络,结束训练后由每个 agent 独立和环境交互,用自己的策略网络基于自己的局部观测进行决策。

Actor-Critic

每个 agent 上面都有一个自己的策略网络 π ( a i ∣ o i ; θ i ) \pi(a^i|o^i;\theta^i) π(aioi;θi),中央控制器上有一个价值网络 q ( o , a ; w i ) q(o,a;w^i) q(o,a;wi)

中心化训练:中央控制器知道所有 agent 的观测、奖励、动作,价值网络输入所有的动作和状态

去中心化执行:完成训练后不再需要中央控制器及其上面的价值网络,每个 agent 独立决策。

π ( a i ∣ o i ; θ i ) \pi(a^i|o^i;\theta^i) π(aioi;θi) q ( o , a ; w i ) q(o,a;w^i) q(o,a;wi)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/51509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

angular入门基础教程(一)环境配置与新建项目

ng已经更新到v18了&#xff0c;我对他的印象还停留在v1,v2的版本&#xff0c;最近研究了下&#xff0c;与react和vue是越来越像了&#xff0c;所以准备正式上手了。 新官网地址:https://angular.cn/ 准备条件 nodejs > 18.0vscodeng版本18.x(最新的版本) {"name&qu…

【前端 17】使用Axios发送异步请求

Axios 简介与使用&#xff1a;简化 HTTP 请求 在现代 web 开发中&#xff0c;发送 HTTP 请求是一项常见且核心的任务。Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;适用于 node.js 和浏览器&#xff0c;它提供了一种简单的方法来发送各种 HTTP 请求。本文将介绍 Axio…

【虚拟化】KVM概念和架构

目录 一、什么是KVM&#xff1f; 二、KVM的功能 2.1 主要的功能 2.2 其它功能 三、KVM核心组件及作用 四、KVM与VMware的优势 五、KVM架构 六、qemu介绍 七、创建虚拟机流程 一、什么是KVM&#xff1f; Kernel-based Virtual Machine的简称&#xff0c;KVM 是基于虚拟…

ubuntu部署k8s/microk8s安装部署

资源 节点名称IP配置系统node310.2.20.174核8GUbuntu Server 22.04 LTS 64bitnode210.2.24.44核8GUbuntu Server 22.04 LTS 64bitnode110.2.20.134核8GUbuntu Server 22.04 LTS 64bitmaster10.2.24.104核8GUbuntu Server 22.04 LTS 64bit ps:所有命令尽量使用root账号操作 1…

实体店怎么做会员分析管理,告别“僵尸“会员?

在线上严重蚕食线下的当下&#xff0c;如果实体店不重视会员分析&#xff0c;那它将会错失更多的客户&#xff0c;甚至面临被淘汰的危险。 近年来&#xff0c;越来越多的实体店商家开始重视会员分析管理&#xff0c;但要做好会员分析管理并非易事&#xff0c;需要一整套的工具…

RK平台瑞发科NS6601 MIPI CSI VC虚拟通道支持不同分辨率

需求&#xff1a;两路不同分辨率的摄像头&#xff0c;通过des后输入给一路MIPI CSI。在capture的时候&#xff0c;可以分别支持不同分辨率的capture动作。 设备树 &i2c2 {status "okay";pinctrl-names "default";pinctrl-0 <&i2c2m4_xfer&g…

NLP笔记

文本处理和词嵌入 对于机器来说&#xff0c;不能理解一句话的意思&#xff0c;解决办法就是将一句话分割成多个词&#xff0c;用数字代表一个词&#xff0c;将一句话转化成数字的列表 这个词对应的字典又是怎么训练出来的呢&#xff0c;遍历这个词的列表&#xff0c;如果在字…

ConvGRU原理与开源代码

ConvGRU 1. 算法简介与应用场景2. 算法原理2.1 GRU基础2.2 ConvGRU原理2.2.1 ConvGRU的结构2.2.2 卷积操作的优点 2.3 GRU与ConvGRU的对比分析2.4 ConvGRU的应用 3. PyTorch代码 仅需要网络源码的可以直接跳到末尾即可 需要ConvLSTM的可以参考我的另外一篇博客&#xff1a;小白…

初识HTML文件,创建自己的第一个网页!

本文旨在初步介绍HTML&#xff08;超文本标记语言&#xff09;&#xff0c;帮助读者理解HTML中的相关术语及概念&#xff0c;并使读者在完成本文的阅读后可以快速上手编写一个属于自己的简易网页。 一、HTML介绍 HTML(全称HyperText Markup Language&#xff0c;超文本标记语言…

【C++】位图 + 布隆过滤器

目录 1. 位图1.1. 概念1.2. 实现1.3. 应用 2. 布隆过滤器2.1. 背景2.2. 概念2.3. 实现2.4. 优点2.5. 缺点 3. 海量数据面试题3.1. 哈希切割3.2. 位图应用3.3. 布隆过滤器3.4. 总结 1. 位图 1.1. 概念 位图是一种用于高效地存储和操作集合的数据结构。它的基本思想是使用一个二…

高并发内存池(四)Page Cache的框架及内存申请实现

目录 一、Page Cache的框架梳理 二、Page Cache的实现 2.1PageCache.h 2.2VirtualAlloc 2.3std::unordered_map _idSpanMap,> 2.4Page Cache.cpp 一、Page Cache的框架梳理 申请内存&#xff1a; 1. 当central cache向page cache申请内存时&#xff0c;page cache先检…

Intel 13/14代不稳定 微星率先发声:密切监视、8月中旬更新微码

不久前&#xff0c;Intel针对14/14代酷睿i9 K系列不稳定的问题发布了最新声明&#xff0c;确认问题源于微代码算法缺陷与电压过高&#xff0c;并承诺将在8月中旬完成新版BIOS的验证&#xff0c;随后发放。现在&#xff0c;微星在各家主板厂商中第一个站出来&#xff0c;表明了态…

Java 使用 POI 导出Excel,实现单元格输入内容提示功能

在使用Apache POI的库生成Excel导入模板的时候&#xff0c;有时候需要对单元格能够输入的内容进行一个提示&#xff0c;该如何实现这个特性呢&#xff1f;下面是一个示例代码&#xff0c;演示如何实现单元格输入内容提示功能。 代码 import org.apache.poi.ss.usermodel.*; im…

Frienda 4 件套幽灵狩猎猫球运动发光猫球 LED 运动激活猫球运动点亮猫狗互动玩具宠物发光迷你跑步健身球

来自 美国亚马逊&#xff1a;商品评论: Frienda 4 件套幽灵狩猎猫球运动发光猫球 LED 运动激活猫球运动点亮猫狗互动玩具宠物发光迷你跑步健身球玩具(亮色) (amazon.com) Kim 1.0 颗星&#xff0c;最多 5 颗星 Battery does not last/ cant replace 2024年5月29日 在美国审核…

lora微调Qwen模型全流程

LoRA 微调 Qwen 模型的技术原理概述 LoRA&#xff08;Low-Rank Adaptation&#xff09;是一种用于大模型高效微调的方法。通过对模型参数进行低秩分解和特定层的微调&#xff0c;LoRA 能在保持模型性能的前提下显著减少训练所需的参数量和计算资源。接下来是对 LoRA 微调 Qwen…

鸿蒙开发—黑马云音乐之首页导航栏

目录 1.底部导航 2.点击导航栏的时候点亮 3.新建tabbar对应的页面并加载 1.底部导航 Entry Component struct Index {State message: string 首页BuildertabBuilder(text:string,img:Resource) {// 未选中状态样式处理Column({ space: 5 }) {Image(img).width(25).border…

[C++进阶]抽象类

一、抽象类 1.抽象类的概念 在虚函数的后面写上 0 &#xff0c;则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类&#xff08;也叫接口类&#xff09;&#xff0c;抽象类不能实例化出对象。派生类继承后也不能实例化出对象&#xff0c;只有重写纯虚函数&#xff0c;派生类才…

unity3d:TabView,UGUI多标签页组件,TreeView树状展开菜单

概述 1.最外层DataForm为空壳编辑数据用。可以有多个DataForm&#xff0c;例如福利DataForm&#xff0c;抽奖DataForm 2.Menu层为左边栏层&#xff0c;每个DataForm可以使用不同样式的MenuForm预制体 3.DataForm中使用ReorderList&#xff0c;可排列配置 4.有定位功能&#xf…

Clickhouse 生产集群部署(Centos 环境)

文章目录 机器环境配置安装 JDK 8安装 zookeeperClickhouse 集群安装rpm 包离线安装修改全局配置zookeeper配置Shard和Replica设置image.png添加macros配置启动 clickhouse启动 10.82.46.135 clickhouse server启动 10.82.46.163 clickhouse server启动 10.82.46.218 clickhous…