优势演员-评论家算法 A2C
- 优势演员-评论家算法 A2C
- 主要思想
- 目标函数
优势演员-评论家算法 A2C
前置知识:演员-评论家算法:多智能体强化学习核心框架
主要思想
AC 网络结构:
-
策略网络 - 演员: 这个网络负责根据当前的状态选择动作。它输出的是给定状态下每个动作的概率。
-
价值网络 - 评论家: 用于估计当前策略下,一个状态或状态-动作对的期望回报。
- Q 网络: 估计在给定状态和动作下的期望回报。
- V 网络: 估计在给定状态下的期望回报。
演员-评论家算法有 3 个网络(策略网络、价值函数-Q网络和V网络),我们最终目的不是计算 Q网络和V网络 的具体数值,而是差异(也就是优势网络A)。
因为演员-评论家算法用俩个不同的网络(Q网络和V网络)去,估计价值函数,反而会增大误差。
优势函数作用:
- 优势函数 A(s, a) = Q(s, a) - V(s): 这个函数衡量的是在给定状态下,选择某个特定动作相对于平均动作的相对优势。
优势函数的目的并不是要精确计算 Q 和 V 的具体值,而是要找出哪些动作比平均动作好,哪些比平均动作差。
- 当使用两个独立的网络来估计 Q 值和 V 值时,确实可能会增加估计的不确定性或误差,因为每个网络都有其独立的误差。
- 然而,计算优势函数的关键在于找出相对优势。即使 Q 和 V 的绝对估计值不是完美准确的,它们的差值(即 A(s, a))仍然可以有效地指导策略网络进行更好的动作选择。
- 优势函数的使用有助于减少方差,并且能够更加明确地指示策略网络应该如何改进,从而提高学习的效率和稳定性。
优势演员-评论家算法 通过分离策略和价值估计,并引入优势函数,提供更精细的价值估计,以及减少学习过程中的不稳定性。
就像练习投篮,你只能觉知到自己的投篮是偏左还是偏右了。
但那些高手的觉知更精细,他们会觉知到自己的手指(尤其是食指)的状态。
更别提膝盖、腰、肩膀、手肘等一系列对投篮都有影响的部位了。
你投篮几年了还是很低的命中率,因为你缺乏觉知的意识。
你偶尔怀疑自己为什么偷懒不准也找不到原因,只能感叹手感不好。
其实就是想要觉知而无法施展出来;即使你花时间去练习自己的投篮也往往效果不佳,因为你的觉知不精细。
而那些投篮高手,因为更精细,他们的刻意练习会让他们突飞猛进。
目标函数
- 演员-评论家算法AC 的目标函数基于价值函数(比如状态价值函数 V)来评估动作。
- A2C 改进了这个目标函数,引入了优势函数 A ( s , a ) = Q ( s , a ) − V ( s ) A(s, a) = Q(s, a) - V(s) A(s,a)=Q(s,a)−V(s),其中 Q 是动作价值函数,V 是状态价值函数。这样的改变减少了方差,提高了学习稳定性。
数学表达:
- ∇ R θ ˉ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( Q π θ ( s t n , a t n ) − V π θ ( s t n ) ) ⏟ A τ θ ( s t n , a t n ) ⋅ ∇ log p θ ( a t n ∣ s t n ) \nabla\bar{R_{\theta}}\approx\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_{n}}\underbrace{(Q_{\pi_{\theta}}(s_{t}^{n},a_{t}^{n})-V_{\pi_{\theta}}(s_{t}^{n}))}_{A_{\tau_{\theta}}(s_{t}^{n},a_{t}^{n})}\cdot\nabla\log p_{\theta}\left(a_{t}^{n}\mid s_{t}^{n}\right) ∇Rθˉ≈N1∑n=1N∑t=1TnAτθ(stn,atn) (Qπθ(stn,atn)−Vπθ(stn))⋅∇logpθ(atn∣stn)
作者把 Q 变成了 当前的即时奖励 r t n r_{t}^{n} rtn 加上在下一个状态 s t + 1 n s_{t+1}^{n} st+1n 下的预期总奖励。
- Q π θ ( s t n , a t n ) = r t n + V π θ ( s t + 1 n ) Q_{\pi_{\theta}}(s_{t}^{n},a_{t}^{n})=r_{t}^{n}+V_{\pi_{\theta}}(s_{t+1}^{n}) Qπθ(stn,atn)=rtn+Vπθ(st+1n)
把 2 式代入 1 式:
- ∇ R θ ˉ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( r t n + V π θ ( s t + 1 n ) − V π θ ( s t n ) ) ⏟ A π θ ( s t n , a t n ) ⋅ ∇ log p θ ( a t n ∣ s t n ) \nabla\bar{R_\theta}\approx\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}\underbrace{\left(r_t^n+V_{\pi_\theta}(s_{t+1}^n)-V_{\pi_\theta}(s_t^n)\right)}_{A_{\pi_\theta}(s_t^n,a_t^n)}\cdot\nabla\log p_\theta\left(a_t^n\mid s_t^n\right) ∇Rθˉ≈N1∑n=1N∑t=1TnAπθ(stn,atn) (rtn+Vπθ(st+1n)−Vπθ(stn))⋅∇logpθ(atn∣stn)
A2C 这个公式突出优势函数的形式,演员的更新不是基于动作价值( Q Q Q),只使用 V 网络,解决了 AC 算法的问题。