参考视频:📺王树森教授深度强化学习
前言:
最近在学习深度强化学习,学的一知半解😢😢😢,这是我的笔记,欢迎和我一起学习交流~
这篇博客目前还相对比较乱,后面有时间会整理一次~
由于 CSDN 目前有单篇博客字数限制,故分成两篇博客来展示 😁,这是第二篇
第一篇在这里:深度强化学习 ①(DRL)
文章目录
- 9. 高估问题
- 9.1 Bootstrapping
- 9.2 高估问题
- 9.2.1 高估原因
- 9.2.2 高估的解决方案
- 9.2.3 Target Network
- 1. 过程
- 2. 更新 w − w^- w−
- 9.2.4 Double DQN
- 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 高估真实的动作价值。
-
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 也会高估
-
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 高估的解决方案
- 避免 Bootstrapping:不要用 DQN 自己算出来的 TD target 来更新 DQN,而是用另一个神经网络来计算 TD tartget(target network)
- 用 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
-
计算 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−)
-
计算 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
-
更新参数: 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} w←w−α∗δt∗∂w∂Q(st,at;w)
2. 更新 w − w^- w−
- 方式1: w − ← w . w^- \leftarrow w. w−←w.
- 方式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,可以大幅提高性能,缓解高估问题。
可以一定程度缓解高估问题的原因
-
计算最优动作使用的是 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)
-
计算 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−)
-
从该不等式便能看出原因: 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)(输出一个向量)
网络结构
用另一个神经网络 V ( s ; w V ) V(s;w^V) V(s;wV) 来近似最优状态价值函数 V ⋆ ( s ) V^\star(s) V⋆(s),输出对状态 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 完全一样,功能也一样)
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⋅∂θ∂lnπ(A∣s;θ)]=b⋅EA∼π[∂θ∂lnπ(A∣s;θ)]=b⋅a∑π(a∣s;θ)⋅[π(a∣s;θ)1⋅∂θ∂π(a∣s;θ)]=b⋅a∑∂θ∂π(a∣s;θ)=b⋅∂θ∂∑aπ(a∣s;θ)=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∼π[∂θ∂lnπ(A∣s;θ)∗Qπ(s,A)]=EA∼π[∂θ∂lnπ(A∣s;θ)∗Qπ(s,A)]−EA∼π[b⋅∂θ∂lnπ(A∣s;θ)]=EA∼π[∂θ∂lnπ(A∣s;θ)∗(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∼π[∂θ∂lnπ(A∣s;θ)∗(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 的选择
- b = 0 b=0 b=0 得到标准的策略梯度
- 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)=∂θ∂lnπ(at∣st;θ)∗(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[Ut∣st,at],用观测到的 u t u_t ut 近似 Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at)(REINFORCE 算法)
- 从 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
- 从 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γi−t⋅ri,即为动作价值 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)≈∂θ∂lnπ(at∣st;θ)⋅(ut−v(st;w))].
共三次近似
- 用蒙特卡洛近似期望,将策略梯度近似为随机梯度 g ( a t ) g(a_t) g(at)
- 将动作价值 Q π ( s t , a t ) Q_\pi(s_t,a_t) Qπ(st,at) 用回报 u t u_t ut 近似
- 将状态价值函数 V π V_\pi Vπ 用神经网络 v ( s ; w ) v(s;w) v(s;w) 近似
策略网络用来控制 agent,价值网络起辅助作用,作为 baseline,帮助训练策略网络
12.2 网络搭建
1. 策略网络
2. 状态价值网络
3. 参数共享
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}\\ θ←θ+β⋅∂θ∂lnπ(at∣st;θ)⋅(ut−v(st;w))θ←θ+β⋅δt⋅∂θ∂lnπ(at∣st;θ)
将价值网络的预测与真实观测 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[Ut∣st].
- 预测误差: δ t = v ( s t ; w ) − u t \delta_t=v(s_t;w)-u_t δt=v(st;w)−ut
- 梯度: ∂ δ 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=δt⋅∂w∂v(st;w)
- 梯度下降: w ← w − α ⋅ δ t ⋅ ∂ v ( s t ; w ) ∂ w w\leftarrow w-\alpha \cdot \delta_t \cdot \frac{\partial v(s_t;w)}{\partial w} w←w−α⋅δt⋅∂w∂v(st;w)
6.总览
- 从开始到一直到结束的所有 transition
- 用所有观测到的奖励计算回报 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γi−t⋅ri.
- Error: δ t = v ( s t ; w ) − u t . \delta_t=v(s_t;w)-u_t. δt=v(st;w)−ut.
- 用策略梯度更新策略网络: θ ← θ + β ⋅ δ 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⋅∂θ∂lnπ(at∣st;θ).
- 更新价值网络: w ← w − α ⋅ δ t ⋅ ∂ v ( s t ; w ) ∂ w w\leftarrow w-\alpha \cdot \delta_t \cdot \frac{\partial v(s_t;w)}{\partial w} w←w−α⋅δt⋅∂w∂v(st;w)
13. Advantage Actor-Critic(A2C)
将 baseline 应用在 Actor-Critic 中
Actor
策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(a∣s;θ) 近似策略函数 π ( a ∣ s ) \pi(a|s) π(a∣s),控制 agent 运动
Critic
价值网络 v ( s ; w ) v(s;w) v(s;w) 近似状态价值函数 V π ( s ) V_\pi(s) Vπ(s),评价状态 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)≈∂θ∂lnπ(at∣st;θ)⋅(rt+γ⋅v(st+1;w)−v(st;w)).
右边括号内的值即为优势(advantage),即价值网络对动作 at 的评价,若 at 很好,那么左边比右边大,两者之差是正值,若 at 不好,两者之差就是负的,两者之差可以反映出来 at 带来的优势。
13.1 训练
训练策略网络需要用到状态 s、动作 a、价值网络提供的优势,训练价值网络需要状态 s 和奖励 r
- 观测到一个 transiton s t , a t , r t , s t + 1 s_t,a_t,r_t,s_{t+1} st,at,rt,st+1
- 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)
- TD error: δ t = v ( s t ; w ) − y t \delta_t=v(s_t;w)-y_t δt=v(st;w)−yt
- 更新策略网络: θ ← θ − β ⋅ δ 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⋅∂θ∂lnπ(at∣st;θ)
- 更新价值网络: w ← w − α ⋅ δ t ⋅ ∂ v ( s t ; w ) ∂ w w\leftarrow w-\alpha \cdot \delta_t \cdot \frac{\partial v(s_t;w)}{\partial w} w←w−α⋅δt⋅∂w∂v(st;w)
将 A2C 改为多步 TD Target
- 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)
- 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=0m−1γi⋅rt+i+γm⋅c(st+m;w).
- 后续步骤和原本的 A2C 一样
REINFORCE with baseline 和 A2C 对比
- 神经网络结构完全一样,REINFORCE 是 A2C 的一种特例
- A2C 的价值网络用来评价 actor 的表现,REINFORCE 中的价值网络仅仅是 baseline,不会评价动作好坏,降低随机梯度造成的方差
- A2C 的 y t y_t yt 是部分基于真实观测,部分基于价值网络的估计,REINFORCE 是完全基于真实观测来计算
14. 连续控制
不能直接将 DQN 用于连续控制问题,连续控制中,有无穷多种动作,而 DQN 的输出是每个动作的打分。DQN 和策略网络都不能直接用于连续控制。
要将DQN 或策略网络用于连续控制,就需要将连续空间离散化,空间维度越高,离散化后的动作就越多,指数增长,会造成维度灾难,动作数量变多之后,导致训练困难,DQN 或策略网络的结果都不会很好,因次离散化只适合自由度很小的问题。
14.1 Deterministic Policy Gradient(DPG,确定策略梯度)
DPG 是一种 Actor-Critic 方法
策略网络(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 算法更新价值网络
-
transition: ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1)
-
价值网络在 t 时刻的预测: q t = q ( s t , a t ; w ) q_t =q(s_t,a_t;w) qt=q(st,at;w)
-
价值网络在 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′不执行,只是用于更新价值网络)
-
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).
-
更新参数: 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} w←w−α⋅δt⋅∂w∂q(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)=∂θ∂a⋅∂a∂q(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 改进。
- 策略网络做出决策: a = π ( s ; θ ) a=\pi(s;\theta) a=π(s;θ)
- 用确定策略梯度更新策略网络: θ ← θ + β ⋅ ∂ 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} θ←θ+β⋅∂θ∂a⋅∂a∂q(s,a;w)
- 价值网络计算 t 时刻价值: q t = q ( s , a ; w ) . q_t=q(s,a;w). qt=q(s,a;w).
- 用 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
- 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).
- 更新价值网络: w ← w − α ⋅ δ t ⋅ ∂ q ( s , a ; w ) ∂ w w\leftarrow w-\alpha \cdot \delta_t \cdot \frac{\partial q(s,a;w)}{\partial w} w←w−α⋅δt⋅∂w∂q(s,a;w)
更新 target networks
-
设置超参: τ ∈ ( 0 , 1 ) . \tau\in(0,1). τ∈(0,1).
-
更新参数
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,但在一定程度上有所缓解。
其他改进方式
- Experience replay
- Multi-step TD target
14.2 随机策略和确定策略对比
Stochastic Policy | Deterministic Policy | |
---|---|---|
Policy | $\pi(a | s;\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}). π(a∣s)=i=1∏d6.28σi1⋅exp(−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 ; θ μ ) ρ ^ = ρ ( 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) ai∼N(μ^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) lnπ(a∣s;θμ,θρ)=∑i=1d[−ln σi−2σi2(ai−μi)2]+const=∑i=1d[−2ρi−2⋅exp(ρi)(ai−μi)2]+const=ln π(a∣s;θ)
将辅助神经网络记为: 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ρi−2⋅exp(ρi)(ai−μi)2],是 μ \mu μ、 ρ \rho ρ、 a a a 的函数,将三者映射到一个实数,即为 辅助神经网络的输出,反向传播可以计算梯度 ∂ f ∂ θ \frac{\partial f}{\partial \theta} ∂θ∂f.
网络结构如下
小结:用神经网络来做函数近似,用 μ ( 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)=∂θ∂lnπ(a∣s;θ)∗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(θ)
梯度上升
- 计算梯度: g = ∂ J ( θ ) ∂ θ ∣ θ = θ o l d g=\frac{\partial\ J(\theta)}{\partial\ \theta}|_{\theta=\theta_{old}} g=∂ θ∂ J(θ)∣θ=θold
- 梯度上升: θ 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)={θ∣∥θ−θold∥2≤Δ},若有一个函数 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 变大
置信域算法核心步骤(重复):
-
近似。
给定旧的变量 θ o l d \theta_{old} θold,构造函数 L,使得 L 可以在 θ o l d \theta_{old} θold 的邻域内近似 J。
构造 L 的方法:如 J 的二阶泰勒展开,J 的蒙特卡洛近似等。
-
最大化。
在置信域中搜索 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}) θnew←argmaxθ∈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∑π(a∣s;θ)⋅Qπ(s,a)=a∑π(a∣s;θold)⋅π(a∣s;θold)π(a∣s;θ)⋅Qπ(s,a)=EA∼π(⋅∣s;θold)[π(A∣s;θold)π(A∣s;θ)⋅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[π(A∣s;θold)π(A∣s;θ)⋅Qπ(s,A)]]=ES,A[π(A∣s;θold)π(A∣s;θ)⋅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=1∑nπ(ai∣si;θold)π(ai∣si;θ)⋅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+γ2⋅ri+2+...+γn−i⋅rn,用其作为 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=1∑nπ(ai∣si;θold)π(ai∣si;θ)⋅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}). θnew←argmaxθ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. n1∑i=1nKL[π(⋅∣si;θold)∣∣π(⋅∣si;θ)]<Δ.
16. Multi-Agent Reinforcement Learning(多智能体强化学习)
16.1 Settings(常见设定)
-
Fully cooperation(完全合作)
agents 的利益一致,获得的奖励相同,有共同的目标(协同完成某个任务)
-
Fully competitive(完全竞争)
一方的收益是另一方的损失(零和博弈、机器人格斗)
-
Mixed Cooperative & competitive(合作竞争的混合)
机器人足球中,球队内部合作,球队间竞争
-
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(s′∣s,a1,...an)=P(S′=s′∣S=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 R1∝−R2
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+γ2⋅Rt+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) π(ai∣s;θ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[Uti∣St=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 之间的通信方式
-
Fully decentralized(去中心化)
每个 agent 都是独立的,独立和环境交互,用自己的观测和奖励更新自己的策略(训练和执行都是独立进行的),agents 相互之间没有通信。
-
Fully centralized(完全中心化)
所有 agents 都将信息传送给中央控制器,中央控制器知道所有 agents 的观测、动作、奖励,agent 上没有策略网络,自己不做决策,只执行指令,决策都是由中央做的。
-
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) π(ai∣oi;θ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) π(ai∣o;θ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) π(ai∣oi;θ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) π(ai∣oi;θi), q ( o , a ; w i ) q(o,a;w^i) q(o,a;wi)