AC

Actor-Critic框架

从策略梯度中可以看出,累积回报就像一个评价器(Critic),该评价器评价参数更新后,该轨迹出现的概率应该变大还是变小,如果变大,应该变大多少;如果变小,应该变小多少

在保持策略梯度不变的情况下,策略梯度可以写成: 其中为Actor,为Critic,此式即为一个广义的AC框架,的取值可以做如下选取:

  1. ,即轨迹的总回报,此时就是一个普通的PG算法
  2. ,采取动作后的回报
  3. ,加入基线的形式
  4. ,状态-行为值函数
  5. ,优势函数
  6. ,TD-error

前三个直接应用轨迹的回报累计回报,由此计算出来的策略梯度不存在偏差,但是由于需要累计多步的回报,因此方差会很大;后三个利用动作值函数,优势函数和TD偏差替代累计回报,其优点是方差小,但是这三种方法都用到了逼近方法,因此计算出来的策略梯度都存在偏差,这三种方法以牺牲偏差来换取小的方差

Actor

Actor的前身是PG,它可以方便地在连续空间中选择合适的动作,但是Actor是基于一个episode的return来进行更新的,所以学习效率比较慢

Critic

不使用以及各种魔改版本当作评价器,而使用一种value-based的算法作为评价器,就可以使用TD方法进行单步更新

AC

Actor基于概率分布选择行为,Critic基于Actor生成的行为评判得分,Actor再根据Critic的评分修改选行为的概率

  • 优点:可以进行单步更新,不需要跑完一个episode再更新网络参数,相较于传统的PG算法更新更快。传统的PG对价值的估计虽然是无偏的,但是方差较大,AC方法牺牲了一点偏差,但能有效降低方差
  • 缺点:Actor的行为取决于Critic的value,但是因为Critic本身就很难收敛,和Actor一起联动起来的话,就更难收敛了

在这里插入图片描述

AC算法与PG算法的主要区别在于:尝试去拟合一个值函数(都行),以期望得到一个更好的梯度估计,我们真正从PG的“估计收益”变成了“拟合模型”

拟合值函数

函数取决于状态和行为两个维度,因此输入是对应两个空间的笛卡尔积,但是维度越大,同样的样本数估计的方差越大,所以我们考虑如何降低输入维度,给定当前的状态和行为,当前的收益就确定了,可以把当前的收益提取出来: 而后边那块求和就是值函数的期望: 如果我们做一点近似,用轨迹样本来估计这个期望(此时不是用整条轨迹,而仅仅是看一步以后的状态),那么我们的函数可以近似为: 与此同时,优势函数也可以被近似为: 这么一来,其实我们只需要去拟合函数就行了,其他的都能被近似表示出来,这样拟合神经网络的维度的输入空间就只需要是状态空间

因为实用性和便利性,绝大多数的AC算法都是仅训练一个Critic神经网络,而非,使得输入状态为,输出给定策略下值函数的估计量

Critic网络

一条训练数据格式如下: 其中输入是,输出是

损失如下: