Deep reinforcement learning(2): Actor-Critic
1. 从策略梯度到Actor-Critic
上一章介绍了策略梯度的基本思想,最后得到的更新梯度的步骤可以写成如下形式:
为了解决这个问题,在Actor-Critic算法中,我们用Q函数来代替
这里我们还没有讨论具体该如何训练Critic网络。事实上在之后的推导中我们将会用监督学习来训练Critic网络,具体如何实现以及监督学习的训练集如何生成会在下一节里提到。
2. 从AC到A2C
基本的AC算法中我们在Critic网络中需要以state和action作为输入,输出Q函数。这样会带来两个问题:1.方差仍然很大;2.输入维度大(包括状态输入
2.1 引入基线
首先和Policy
gradient里一样,我们同样可以通过引入基线的办法来减小方差。这里的基线可以直接定义为给定状态情况下的价值函数
其中
事实上,这里的基线我们只需要选择一个与当前动作无关的函数,我们就能证明这里的梯度仍然是无偏估计。证明之后有空补上!
2.2 自助法采样(Bootstrapping)
这里改进的基本思想是:如果我们需要采样一条轨迹来拟合优势函数,那采样的方差会特别大。然而如果我们只采样下一步的状态,方差相比采样整条轨迹就会大幅减小。
在这样近似之后,由于reward函数已知,我们只需要对价值函数进行拟合就能推算出优势函数。这样输入维度就只有状态变量了,大大节省了训练难度。
2.3 生成训练集
到此为止我们确定了我们需要拟合的函数就是价值函数
2.3.1 蒙特卡罗方法生成训练集
最直观的方法就是我们直接通过采样一整条轨迹作为训练集。这里假设我们是通过与实际环境进行交互得到的轨迹,在这种情况下我们通常无法“重置”一个状态,这就意味着我们将会只有单样本的训练集(对于一个状态
利用蒙特卡罗方法得到的训练集可以写成:
2.3.2 自助法估计训练集
和之前一样,我们可以用自助法估计
这里的问题是即使我们拓展成这种形式,最根本的问题还是没有解决,我们不知道
目前为止我们讨论的都是有限时间序列的情况,并且我们认为时间