Actor-Critic,演员评论家算法是强化学习中的一种很实用的方法。
比较详细的推导可以看:https://datawhalechina.github.io/easy-rl/#/chapter9/chapter9?id=actor-critic-1
文章目录
1. 简介
演员-评论家算法(Actor-Critic Algorithm) 是一种结合 policy base 和 value base 思想的算法,Actor是利用策略梯度算法实现,Critic使用时序差分实现。
- Actor(演员)是策略函数 π θ ( s ) \pi_\theta(s) πθ(s),一般用神经网络实现,输入是当前状态,输出是一个动作。该网络的训练目标是最大化累计回报的期望。
- Critic(评论家)是值函数 V π ( s ) V^\pi(s) Vπ(s),该网络可以对当前策略的值函数进行估计,也就是可以评价Actor(策略函数)的好坏。
- 原始的Actor(策略梯度法)是使用累计回报的期望作为训练依据,这样做 只有等到回合结束才能更新 π θ ( s ) \pi_\theta(s) πθ(s)的参数。
在 Actor-Critic 算法 里面,最知名的方法就是 A3C(Asynchronous Advantage Actor-Critic)。
- 如果去掉 Asynchronous,只有 Advantage Actor-Critic,就叫做 A2C。
- 如果加了 Asynchronous,变成 Asynchronous Advantage Actor-Critic,就变成 A3C。
2. Review: Policy Gradient
策略梯度法(Policy Gradient)可以参考:https://blog.csdn.net/qq_33302004/article/details/115495686
我们回顾一下policy gradient,其主要过程就是:
- 先初始化一个策略网络 θ \theta θ
- 用这个策略网络进行 N N N次游戏,产生 N N N个 τ \tau τ(游戏记录):
τ 1 : { s 1 1 , a 1 1 , s 2 1 , a 2 1 , . . . } , R ( τ 1 ) τ 2 : { s 1 2 , a 1 2 , s 2 2 , a 2 2 , . . . } , R ( τ 2 ) . . . τ N : { s 1 N , a 1 N , s 2 N , a 2 N , . . . } , R ( τ N ) \tau^1: \{s_1^1, a_1^1, s_2^1, a_2^1, ... \}, R(\tau^1) \\ \tau^2: \{s_1^2, a_1^2, s_2^2, a_2^2, ... \}, R(\tau^2) \\ ... \\ \tau^N: \{s_1^N, a_1^N, s_2^N, a_2^N, ... \}, R(\tau^N) \\ τ1:{ s11,a11,s21,a21,...},R(τ1)τ2:{ s12,a12,s22,a22,...},R(τ2)...τN:{ s1N,a1N,s2N,a2N,...},R(τN) - 我们利用这 N N N个 τ \tau τ进行梯度上升,调整策略网络的参数:
∇ R ˉ ( τ ) = 1 N ∑ n = 1 N ∑ t = 1 T n ( ∑ t ′ = t T r t ′ n γ t ′ − t − b ) ∇ l o g p θ ( a t n ∣ s t n ) , γ ∈ [ 0 , 1 ] \nabla\bar{R}(\tau) = \frac1N \sum_{n=1}^N \sum_{t=1}^{T_n} (\sum_{t'=t}^T r_{t'}^n \gamma^{t'-t} - b) \nabla log p_\theta(a_t^n|s_t^n) , \gamma \in[0,1] ∇Rˉ(τ)=N1n=1∑Nt=1∑Tn(t′=t∑Trt′nγt′−t−b)∇logpθ(atn∣stn),γ∈[0,1] - 再如此重复2、3步。
3. Review: Q-Learning
Q-Learning可以参考:https://blog.csdn.net/qq_33302004/article/details/114871232
简而言之,Q-Learning就是一种 value base 的方法,该方法会建立一个Q表,里面存储了每一对 ( s , a ) (s,a) (s,a)对应的value值,agent会根据Q表中的值决定在状态 s s s下采用哪种动作。以上面的方法,agent不断与环境进行互动,并更新Q表,最终Q表不断收敛,机器人也取得了比较好的效果。
大致过程如下:
- 初始化Q表
- Repeat (for each episode):
- 初始化状态s;
- Repeat (for each step of episode):
- 依据某种策略,从Q表中根据当前状态s,选择一个动作a;
- 执行动作a,进入状态s’,获得环境反馈r;
- Q