我是靠谱客的博主 漂亮大门,最近开发中收集的这篇文章主要介绍critic法计算_强化学习(Reinforcement learning)中Actor-Critic算法该如何深入理解?...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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算法该如何深入理解?...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部