强化学习笔记:带基线的策略梯度
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,得到策略梯度的一个无偏估计
- 然后REINFORCE强化学习笔记:policy learning_UQI-LIUWJ的博客-CSDN博客是用实际观测的回报u来近似 动作价值函数
- 这里我们同样用u代替
- 此外,我们用一个神经网络v(s;w)来近似
- 于是g(s,a;θ)就被近似成:
2.1 策略网络和价值网络
虽然带基线的 REINFORCE 有一个策略网络和一个价值网络, 但是这种方法不是Actor-Critic 。 价值网络没有起到“评委”的作用,只是作为基线而已,目的在于降低方差, 加速收敛 。真正帮助策略网络改进参数 θ 的不是价值网络,而是实际观测到的回报 u 。带基线的 REINFORCE 需要两个神经网络:策略网络 π(a|s; θ) 和价值网络 v(s; w);
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这样的同策略模型,也不是不可以使用经验回放?
以上是关于强化学习笔记:带基线的策略梯度的主要内容,如果未能解决你的问题,请参考以下文章
强化学习—— 离散与连续动作空间(随机策略梯度与确定策略梯度)