赞
踩
前面讲过 Q-Learning算法 是基于值选择动作的,并且是单步更新。而 Policy Gradients算法 是基于概率在连续动作中选择的,并且是回合更新。那么有没有一种算法能够将两者结合呢?Actor-Critic!
Actor-Critic算法分为两部分,Actor 的前身是 Policy Gradients算法,用于在连续动作空间内选择合适的动作,Value-based的 Q-Learning算法 做这件事就会因为空间过大而爆炸,但是又因为 Actor 是基于回合更新的,学习效率比较慢,所以可以使用一个Value-based的算法作为 Critic 就可以实现单步更新。这样两种算法相互补充就形成了 Actor-Critic算法。
Actor-Critic算法思想可以概括为:Actor 基于概率选择行为,Critic 基于 Actor 的行为评判行为的得分,Actor 再根据 Critic 的评分修改选择行为的概率。(如上图所示)
Actor Critic优点:可以进行单步更新,相较于传统Policy Gradients算法的回合更新要快。
Actor Critic缺点:Actor 的行为取决于 Critic 的Value,所以在连续动作中的这种交互(选择动作–打分)使得算法难以收敛,另外参数更新前后具有相关性。(为了解决收敛问题,Deepmind利用 DQN 的优势提出了 Actor Critic 升级版 Deep Deterministic Policy Gradient)
可以将流程表述为:
(1)Critic 更新值函数的参数ω,值函数可以为动作-值
Q
w
(
a
∣
s
)
Q_w(a|s)
Qw(a∣s)或者状态-值
V
w
(
s
)
V_w(s)
Vw(s)。
(2)Actor 根据 Critic 建议的方向更新策略
π
θ
(
a
∣
s
)
π_θ(a|s)
πθ(a∣s)参数θ。
注意:
可以用流程图表示为:
这里推荐两篇数学推导讲得比较好的博客
Actor-Critic的两个优化版本:DDPG与A3C。
DDPG:它吸收了 Actor-Critic 让 Policy gradient 单步更新的精华,而且还吸收让计算机学会玩游戏的 DQN 的精华。Deep是指使用了DQN的思想。Policy gradient 相比其他的强化学习方法,它能被用来在连续动作上进行动作的筛选,而且筛选的时候是根据所学习到的动作分布随机进行筛选。而 Deterministic 就改变了输出动作的过程,斩钉截铁地只在连续动作上输出一个动作值,将不确定性变为确定性。
A3C:A3C 其实只是平行方式(多个副本与一个中央控制大脑)的一种而已,它采用的仍是之前提到的 Actor-Critic 的形式。
重点讲一下 DDPG算法(其实DDPG就是对 Actor 与 Critic 分别用两个神经网络学习参数)的参数更新,这篇博客会以DDPG算法进行实战。
论文:https://arxiv.org/pdf/1509.02971.pdf
关于 Critic 的更新,它借鉴了 DQN 和 Double Q learning 的方式,有两个计算 Q 的神经网络, Q_target( Q ′ Q' Q′) 中依据下一状态,用 Actor 来选择动作( u ′ u' u′),而这时的 Actor 也是一个 Actor_target (有着 Actor 很久之前的参数)。 使用这种方法获得的 Q_target 能像 DQN 那样切断相关性,提高收敛性。
关于 Actor 部分,他的参数更新同样会涉及到 Critic,上面是关于 Actor 参数的更新,它的前半部分是从 Critic 来的(这次 Actor 的动作要怎么移动,才能获得更大的 Q,即 Critic 给的奖励),而后半部分是从 Actor 来的( Actor 要怎么样修改自身参数,使得 Actor 更有可能做这个动作)。所以两者合起来就是在说:Actor 要朝着更有可能获取大 Q 的方向修改动作参数了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。