强化学习笔记:带基线的策略梯度

Posted UQI-LIUWJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了强化学习笔记:带基线的策略梯度相关的知识,希望对你有一定的参考价值。

强化学习笔记:policy learning_UQI-LIUWJ的博客-CSDN博客中,我们通过

对策略网络的参数进行更新。

REINFORCE和Actor-Critic分别通过不同的方式近似来实现之 

1 baseline

基于8.1得出的REINFORCE和Actor-Critic通常效果并不好。但是做一个小改动之后,就可以大幅提升表现:

把b作为动作价值函数的基线(baseline),用-b代替

这里b可以是任意的不依赖于动作action的函数

 这里成立的原因在于,可以证明

        定理中的策略梯度是期望的形式。我们对期望进行蒙特卡洛近似。从环境中观测一个状态s,根据策略网络抽样得到一个动作a。

        于是策略梯度可以近似为:

1.1 证明定理1正确性

 

 

 

2 带baseline的REINFORCE算法

我们这里使用状态价值作为基线b,得到策略梯度的一个无偏估计 

 

2.1 策略网络和价值网络

 带基线的 REINFORCE 需要两个神经网络:策略网络 π(a|s; θ) 和价值网络 v(s; w)

 

        虽然带基线的 REINFORCE 有一个策略网络和一个价值网络, 但是这种方法不是Actor-Critic 价值网络没有起到“评委”的作用,只是作为基线而已,目的在于降低方差, 加速收敛 。真正帮助策略网络改进参数 θ 的不是价值网络,而是实际观测到的回报 u

2.2 训练策略网络

2.3 训练价值网络

注:此时不是用TD了,而是直接回归

训练价值网络的目的是让去拟合,也就是拟合ut的期望

于是我们定义损失函数 

 

用它来进行梯度下降更新 

 2.4 整体训练流程

设当前策略网络参数是,价值网络参数是

 

 

 3 带baseline的Actor-Critic (A2C)

 优势函数一词在强化学习笔记:对决网略(dueling network)_UQI-LIUWJ的博客-CSDN博客中出现过

因而带Baseline 的Actor-Critic 又被称作Advantaged Actor-Critic,缩写为A2C

3.1 训练价值网络

这里就得用TD了

 TD损失函数:

 

 3.2 训练策略网络

 我们先回忆一下贝尔曼公式:

 

对上式进行蒙特卡洛近似,有:

 进一步把替换成价值网络v(s;w),有:

 沿用3.1对TD目标和TD误差的定义

所以这里可以写成 

于是用梯度上升更新策略网络参数 

 3.3 整体流程

 

 和无baseline的actor-critic一样

 无baseline的actor-critic算的是Q(s,a),这里算的是V(s)

 

 和无baseline的actor-critic一样

  无baseline的actor-critic第二项是加号,这边是减号

 此处训练策略网络和价值网络的方法属于同策略 (On-policy),要求行为策略 (Behavior Policy) 与目标策略 (Target Policy) 相同,所以不能使用经验回放

3 关于经验回放的一个疑问(欢迎讨论)

在学习了DPG确定策略梯度后,有一个小问题想和大家探讨一下:就是像SARSA这样的同策略,就算是用了经验回放,会有很大的影响嘛?

因为我更新sarsa的五元组里面,受到策略影响的就是是已知,是和环境交互的结果,与策略关系不大。

策略输出的是基于的action的一个概率分布。换句话说,不管 策略 的参数是什么,某一个动作a都能取到,只不过是取到的概率的不同。

那么这样的话,我agent实时交互得到动作和使用过去的经验,有什么区别嘛?(因为  策略 参数的变动,影响的也只是取到 动作 的概率,不代表  参数更新后,取不到啊。。。)

那这样的话,我像SARSA这样的同策略模型,也不是不可以使用经验回放?

以上是关于强化学习笔记:带基线的策略梯度的主要内容,如果未能解决你的问题,请参考以下文章

强化学习笔记:置信域策略优化 TRPO

强化学习—— 离散与连续动作空间(随机策略梯度与确定策略梯度)

强化学习(十三) 策略梯度(Policy Gradient)

深度强化学习-策略梯度算法深入理解

(十三)从零开始学人工智能-强化学习:值函数近似和策略梯度

强化学习_PolicyGradient(策略梯度)_代码解析