目录
深度强化学习目录
简介
之前讲了Policy-based方法,讲了Value-based方法,现在来讲一下结合两种方法的Actor-Critic。
符号
-
rt:t时刻的即时奖赏。
-
Rθ:使用参数θ时,某轮游戏的累积奖赏。
-
Gt:时间从t到结束的累积奖赏,由于t时刻的奖励是采取行动后t+1时刻才拥有的,所以Gt满足:Gt=rt+1+rt+2+…
-
Vπ(s):策略为π的状态-值函数,即状态s下预计累计回报的期望值,满足:Vπ(s)=E[Gt∣St=s]
-
Qπ(s,a):策略为π的状态-动作值函数,即状态s下采取行动a预计累计回报的期望值,满足:Qπ(s,a)=E[Gt∣St=s,At=a]
根据定义可以得到公式:Qπ(st,at)=E[rt+1+Vπ(st+1)]
即t时刻在状态s下采取行动a得到的累积奖赏等于t+1时刻的即时奖赏加上下一个状态的值函数的期望值。
此外,如果在上标出现符号n,则代表第n轮游戏,如stn代表第n轮游戏在时刻t时的状态。
Advantage Actor-Critic(A2C)
回顾Policy Gradient那一章,我们得到了公式2.3:
∇Rˉθ=N1n=1∑Nt=1∑TnAθ(st,at)∇logp(atn∣stn,θ)
其中A是优势函数,Aθ(st,at)=∑t′=tTnγt′−trt′n−b。
上式在理论推导上无误,但是在实际操作中存在一个问题,即作为累积奖赏的Gtn=∑t′=tTnγt′−trt′n会有较大误差。这是因为Gtn是由agent于环境互动得到的奖赏,而奖赏本身是有随机性的,Gtn方差极大,因此只有当采样次数充足时才能保证结果正确。遗憾的是,“充足”的采样次数太过庞大,大部分时候我们都无法达到这个采样次数。于是,我们就想通过估计Gtn的期望值来代替采样值,即满足如下公式:∇Rˉθ=N1n=1∑Nt=1∑Tn(E[Gtn]−b)∇logp(atn∣stn,θ)
如何计算期望值?这就需要Value-based的方法,利用Q和V值来代替G。在上式中我们看到已经给出了行为a和状态s,所以可以用Q来代替E(G),即E[Gtn]=Qπθ(stn,atn),其中πθ是以θ为参数的策略π。
而公式里的baseline,b则可以用value函数来代替,即b=Vπθ(stn),这是因为Vπθ(stn)=E[Qπθ(stn,atn)],这样的baseline能保证优势函数有正有负。
所以公式变成这样:∇Rˉθ=N1n=1∑Nt=1∑Tn(Qπθ(stn,atn)−Vπθ(stn))∇logp(atn∣stn,θ)(8.1)
公式到了这一步,已经可以直接开始训练了,只需要两个网络,一个训练Q,一个训练V。但实际上还可以优化。因为有公式Qπ(st,at)=E[rt+1+Vπ(st+1)],我们不妨去掉期望值,直接假设Qπ(st,at)=rt+1+Vπ(st+1),那样公式就变成了:
∇Rˉθ=N1n=1∑Nt=1∑Tn(rt+1n+Vπθ(st+1n)−Vπθ(stn))∇logp(atn∣stn,θ)(8.2)
为什么可以直接去掉期望值?不知道,但是实验结果测试下来,替代掉之后的公式8.2效果比需要训练两个网络的公式8.1要好,这就是原论文中的结论。
如此一来,我们只需要训练一个网络V,而使用r代替G也能使得方差变小,这就是A2C(Advantage Actor-Critic)。
Asynchronous Advantage Actor-Critic(A3C)
A3C比起A2C,多出了一个异步(Asynchronous)。什么意思呢?其实就是同时训练多个worker与环境交互,然后集中所有的经验来训练。

具体步骤如下:
- worker 1从全局复制参数θ1。
- 使用参数θ1与环境进行互动。
- 计算出梯度∇θ
- 更新全局参数θ2←θ1+η∇θ,其中η是学习率。
以上步骤为所有worker并行的,因此可能出现写覆盖的情况,但实际操作下来问题不大。
总结
Actor-Critic算法在Policy-based的基础上加入了Value-based方法,用QV函数对累积奖赏作出估计,减少了采样数量,提高了训练效果和效率。