强化学习笔记(四):AC方法(Actor-Critic Methods)

1,600 阅读4分钟

本文正在参加「金石计划」

导语

本系列笔记为b站Shusen Wang老师的强化学习课程笔记,整体按照老师讲课的思路来记录。本节课主要介绍AC算法。

Actor-Critic方法

Actor是策略网络,用来控制Agent运动,可以把它看做是运动员;Critic是价值网络,用来给动作打分,可以把它看做是裁判。这节课的内容是构造这两个神经网络,然后通过环境给出的奖励来学习这两个网络。AC方法实际上就是前两节所讲的方法的结合。

1_Basics_4-02.png

首先来看一下如何构造Value Network和Policy Network。

我们先来回顾一下State-value Function的近似,由于π(as),Qπ(s,a)\pi(a|s), Q_{\pi}(s,a)这两个函数我们都不知道,所以我们可以使用两个神经网络来近似这两个函数,然后用AC方法同时学习这两个神经网络。

可以这样理解:Actor是一个运动员,可以做动作;如果他想让自己做的更好,就需要不断改进自己的技术。可是,它并不知道如何改进自己。这就需要裁判Critic来给运动员打分,这样运动员就知道什么样的动作得分高。

使用策略网络和价值网络分别近似π(as),Qπ(s,a)\pi(a|s), Q_{\pi}(s,a)1_Basics_4-07.png

我们来搭建这两个网络,首先是策略网络Actor,结构与之前类似:

1_Basics_4-08.png

然后是价值网络,它的输入由两部分:一部分是当前的状态s,由卷积层进行特征提取;另一部分是当前的动作a(比如为一个One-hot embedding),由一个MLP来进行特征提取。然后将两个特征向量进行拼接,送个一个MLP,输出一个实数,即裁判打的分数。这个分数说明处在状态s的情况下,做出动作a是好是坏。价值网络和策略网络可以共享卷积层的参数,也可以独立。

1_Basics_4-09.png

同时训练策略网络和价值网络,就被称为Actor-Critic算法。

训练神经网络

经过我们之前的近似,整体的V(s;θ,w)V(s;\theta,w)函数就可以用两组神经网络的参数来表示,训练时需要同时更新这两组参数。但是两组参数的更新目标是不同的:

  • 更新策略网络π(as;θ)\pi(a|s;\theta)的参数θ\theta,是为了让V函数的值增加;
  • 更新价值网络q(s,a;w)q(s,a;w)的参数ww是为了更好,更精准的估计回报;

1_Basics_4-14.png

我们可以做这5个步骤来对网络进行更新:

  1. 观测到状态sts_t;
  2. sts_t作为输入,用策略网络π(st;θ)\pi(\cdot | s_t;\theta)来计算动作的概率分布,然后进行动作抽样;
  3. Agent执行动作ata_t,这时候环境会得到新的状态st+1s_{t+1}和奖励rtr_t;
  4. 有了奖励rtr_t,就可以根据TD算法更新价值网络的参数w(也就是让裁判变得更准确);
  5. 最后,使用Policy gradient来更新策略网络的参数θ\theta

1_Basics_4-15.png

下面介绍具体更新的过程。首先是使用TD算法来更新价值网络。

1_Basics_4-17.png

然后是使用Policy gradient来更新策略网络。

1_Basics_4-19.png

AC方法的整体流程如下:

1_Basics_4-21.png

1_Basics_4-22.png

1_Basics_4-23.png

1_Basics_4-24.png

AC算法流程概览

最后,我们来总结一下AC算法:

  1. 观测到状态sts_t并根据π(st;θ)\pi(\cdot|s_t;\theta)随机抽样一个ata_t;
  2. 执行ata_t,然后环境给出新的状态st+1s_{t+1}和奖励rtr_t;
  3. 用新的状态st+1s_{t+1}输入π(st+1;θ)\pi(\cdot|s_{t+1};\theta)随机抽样一个a^t+1\hat{a}_{t+1}(并不执行)
  4. 评估价值网络,计算qt,qt+1q_t, q_{t+1};
  5. 计算TD Error;
  6. 对价值网络求导,
  7. 使用TD算法更新价值网络;
  8. 对策略网络求导;
  9. 使用Policy Gradient更新策略网络。

1_Basics_4-28.png

需要注意的是,在第9步中,一些书和论文中使用的是δt\delta_t,而不是qtq_t,但两种方式都是正确的,证明过程略。

image.png

总结

AC算法需要使用两个神经网络来分别近似策略函数和价值函数。这两个网络在训练时分别使用TD算法和Policy Gradient算法进行更新。

在完成训练后,Agent可以根据策略函数来随机抽样动作,而价值函数则不再被使用。

1_Basics_4-30.png

1_Basics_4-32.png

1_Basics_4-34.png