Actor-Critic

前面讲过 Q-Learning算法 是基于值选择动作的,并且是单步更新。而 Policy Gradients算法 是基于概率在连续动作中选择的,并且是回合更新。那么有没有一种算法能够将两者结合呢?Actor-Critic!

1. 什么是Actor-Critic?

1.1 Actor-Critic算法思想

Actor-Critic_第1张图片
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.2 Actor-Critic算法流程

Actor-Critic_第2张图片
可以将流程表述为:
(1)Critic 更新值函数的参数ω,值函数可以为动作-值 Q w ( a ∣ s ) Q_w(a|s) Qw(as)或者状态-值 V w ( s ) V_w(s) Vw(s)
(2)Actor 根据 Critic 建议的方向更新策略 π θ ( a ∣ s ) π_θ(a|s) πθ(as)参数θ。

注意:

  1. 其实就是 Critic 用TD error作为loss去优化值函数,而 Actor 用 Critic 的TD error作为奖励(类似Policy Gradients中的 V t V_t Vt)去优化策略函数。
  2. 其实就是Policy Gradients算法中的奖励在这里是学习而来的,并且具有单步更新的特性。

可以用流程图表示为:
Actor-Critic_第3张图片

1.3 Actor-Critic算法数学推导

这里推荐两篇数学推导讲得比较好的博客

  1. Understanding Actor Critic Methods and A2C
  2. Introduction to Actor Critic in Reinforcement Learning

1.4 Actor-Critic优化版本

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
Actor-Critic_第4张图片

在这里插入图片描述关于 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 的方向修改动作参数了。

你可能感兴趣的:(强化学习)