第 10 章 Actor-Critic 算法
10.1简介
本书之前的章节讲解了基于值函数的方法(DQN)和基于策略的方法(REINFORCE),其中基于值函数的学习方法只学习一个价值函数,而基于策略的方法只学习一个策略函数。那么,一个很自然的问题是,有没有什么方法既学习价值函数,又学习策略函数呢?答案是Actor-Critic是囊括一系列算法的整体架构,目前很多高效的前沿算法都属于Actor-Critic算法,本章接下来将会介绍一种最简单的Actor-Critic算法。需要明确的是,Actor-Critic算法本质上是基于策略的算法,因为这一系列算法的目标都是优化一个带参数的策略,只是会额外学习价值函数,从而帮助策略函数更好地学习。
10.2 Actor-Critic
回顾一下,再REINFORCE算法中,目标函数的梯度中有一项轨迹回报,用于指导策略的更新。REINFORCE算法用蒙特卡洛方法来估计Q(s,a)Q(s,a)Q(s,a),能不能考虑拟合一个值函数来指导策略进行学习呢?这是Actor-Critic算法所做的。在策略梯度中,可以把梯度写成下面这个更加一般的形式:
g=E[ΣtTψt∇θlogπθ(at∣st)]g=\mathbb{E}[\varSigma _{t}^{T}\psi _t\nabla _{\theta}\log \pi _{\theta}(a_t|s_t)]g=E[ΣtTψt∇θlogπθ(at∣st)]
其中,ψt\psi _tψt可以有很多种形式:
- ΣTt′=0γt′rt′\underset{t'=0}{\overset{T}{\varSigma }} \gamma ^{t'}r_{t'}t′=0ΣTγt′rt′:轨迹的总回报
- ΣTt′=tγt′−trt′\underset{t'=t}{\overset{T}{\varSigma }} \gamma ^{t'-t}r_{t'}t′=tΣTγt′−trt′:动作ata_tat之后的回报
- ΣTt′=tγt′−trt′−b(st)\underset{t'=t}{\overset{T}{\varSigma }} \gamma ^{t'-t}r_{t'}-b(s_t)t′=tΣTγt′−trt′−b(st

本文详细介绍了Actor-Critic算法,一种结合了策略和值函数学习的强化学习方法。它通过策略梯度和时序差分残差来优化策略,并利用价值网络降低方差。文中还提供了Python代码实例,展示了如何在CartPole-v0环境中应用Actor-Critic算法。
最低0.47元/天 解锁文章
922

被折叠的 条评论
为什么被折叠?



