概述
Actor-Critic核心在Actor
以下分三个部分介绍Actor-Critic方法,分别为(1)基本的Actor算法(2)减小Actor的方差 (3)Actor-Critic。仅需要强化学习的基本理论和一点点数学知识。
基本的Actor算法
Actor基于策略梯度,策略被参数化为神经网络,用
表示。
迭代的方向是最大化周期奖励的期望,目标函数表示为:
其中
代表一个采样周期,
代表序列出现的概率。求
的梯度可得:
其实仅是将
写成了
而已,目的是期望仍然为对采样序列的期望。
表示序列的奖励和。
那么关键的地方来了。
代表整个序列出现的概率,整个序列的出现包括两个影响因素:策略
和由环境决定的状态转移
。
写成下式:
很好理解,”初始状态的概率“乘以很多次(”动作选择概率“乘以”由环境决定的状态转移概率“),后两项需要连乘,直到周期结束。根据上面的式子,就可以求
中出现的梯度项
的值。在求
时,上式中的
和
由环境决定,与我们关注的策略变量
无关(就是不管你采用什么策略,环境照样那么转移),因此在计算中被略去(如果这几项无法略去,那么在无环境(model-free)的情形下,将无法计算关于策略的梯度)。推导可得策略的梯度,如下:
虽然式子看起来比较复杂,其实很好理解。(1)期望仍是对整个序列出现的期望,在强化学习中通过采样进行估计即可,例如Monte Carlo采样。(2)期望中第一项是
取对数再求导后的结果,有关环境因素
被消去,仅剩与策略
相关的因素。(3)期望第二项是
的展开,此处为了书写方便,仅使用所有奖励的和,在实际问题中可以使用average reward、discount reward等。
以上公式与Monte Carlo算法结合起来便构成了”REINFORCE策略梯度“算法。该算法分为三个步骤:
(1)采样
个序列
(只有采样才能估计梯度的期望,采样多了就估计准了)
(2)计算策略梯度:
。就是对每一个采样序列分别计算梯度随后取平均。
(3)更新策略的参数:
。
是学习率,由于是最大化
,因此是梯度上升。
重复(1)(2)(3)三个步骤,直到收敛。可以看出,该算法是on-policy的。
以上,便构造了一个基本的策略梯度算法。
在实现中,需要根据实际情况设计策略网络来表示
,在给定状态下,输出动作选择的概率。分别讨论离散动作空间和连续动作空间下的网络设计。
(1)在离散动作空间中,输入为状态的表示,输出节点与动作个数相等,后接Softmax层。
(2)在连续动作空间中,输入为状态的表示,输出的设计方式有多种。一般假设每个动作的输出服从高斯分布,因此可以输出每个动作的均值。动作之间可以共用方差或各自分别学习方差。近期也有研究指出输出使用Beta分布比Gussian分布要好。
减小Actor的方差
Causality方法
策略梯度的公式变为
即后一项关于的奖励的累加只累加当前时间步
之后的奖励,直观的理解是
时刻策略的改变不会影响到
之前时间步的奖励。在上式中,对
使用的是Monte Carlo估计方法,这种方法方差大。将该项可以写成
,Q值代表未来的累计奖励的期望,可以使用值函数近似的方法来估计
,从而进一步减少方差。这是Actor-Critic的一种。此时策略梯度的公式变为:
Baseline方法
如果希望在上式的基础上,进一步减少方差,那么可以为
添加baseline,将baseline记为
,则策略梯度的公式变为:
可以证明,只有在
与动作
无关的情况下,上述改进才与之前的策略梯度公式等价。
一般选择为状态
的值函数,即
。
Off-policy
REINFORCE算法是一个on-policy算法,每次改变策略时都需要重新采集样本,因此样本利用效率低。使用importance Sampling方法可以将其转变为off-policy,这里不再赘述,转变后策略梯度的公式变为:
其中,
是采样策略的参数。importance sampling项的连乘范围从周期的开始一直到当前时间步
。
Actor-Critic
我们在baseline的基础上继续进行分析。当baseline是状态值函数时,策略梯度可以写成
其中,
称为Advantage Function。而
如果不考虑状态转移概率,用采样的方式来估计状态转移,则在当前策略参数下,
因此策略梯度公式可以进一步写成
在上式中,我们需要估计状态值函数
的值。用于估计
的部分被称为Critic.
熟悉Q学习的童鞋应该知道,估计状态值函数的方法有很多种,在此不再赘述。
Actor-Critic的基本流程为:
采样
更新Critic参数
根据Critic计算Advantage Function
更新Actor参数
Actor-Critic方法也存在问题。虽然减少了Actor在计算策略梯度中的方差,但是由于Critic开始时对V函数估计不准,会导致Actor对策略梯度的估计存在偏差。特别是在On-line更新中,仅通过单个样本来估计状态值函数是不现实的,因此有人提出了改进,用多个并行的Actor-Critic进行学习,就是大名鼎鼎的A3C算法。另外还有人对baseline进行研究,提出动作状态值函数也可以直接作为baseline,不过需要添加补偿项(Q-prop)。DDPG也是一种Actor-Critic算法,其特点为策略参数的更新的目标不是
,而是最大化
值,使Q值最大化的策略可以使用确定性的策略,因此成为确定性策略梯度。
在网络设计方面,Actor和Critic可以使用不同的网络,这样学习稳定。也可以使用同一个网络,共享底层的特征。
以上。
如有疏漏之处,欢迎指正。
最后
以上就是漂亮大门为你收集整理的critic法计算_强化学习(Reinforcement learning)中Actor-Critic算法该如何深入理解?...的全部内容,希望文章能够帮你解决critic法计算_强化学习(Reinforcement learning)中Actor-Critic算法该如何深入理解?...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复