策略梯度:Policy Gradient

为什么需要策略?
环境中存在大量的动作,甚至具有连续的动作空间。如果用 Q ( s , a ) Q(s,a) Q(s,a)来寻找最佳的动作,需要解决一个最优化的问题,即寻找使 Q ( s , a ) Q(s,a) Q(s,a)最大的a。这个问题在非离散集合中会变得非常难,在这种情况下直接使用策略更为可行。另外,它是环境具有随机性的体现,和Categorical DQN方法具有相同的思想。

1 Reinforce方法

请添加图片描述

1.1存在的问题

  1. 需要完整的片段:在开始训练之前,需要等待完整的episode完成。需要与环境进行大量的交互才能执行单个训练步骤。克服的方法有要求网络估计 V ( s ) V(s) V(s)并用估计值来获得 Q Q Q值,即actor-critic方法。也可以在Bellman方程中提前展开N步。
  2. 高梯度方差。在策略梯度中,有一个与给定状态的折扣奖励成比例的梯度。如果失败情况和成功情况价值相差很大,则两者梯度缩放的差异会很大。即策略梯度具有很大的方差,因此需要在复杂的环境中对此进行一些处理。否则,训练过程可能会变得不稳定。解决此问题的方法是减去一个成为基线的值。
  3. 探索。即使策略表示为概率分布,智能体也有可能会收敛到某些局部最优策略并停止搜索环境。可以使用熵奖励的方法来解决。在损失函数中减去熵,以惩罚智能体过于确定要采取的动作。
  4. 样本相关性。单个片段中训练样本通常是高度相关的,这对随机梯度下降不利。为了解决该问题,可以使用并行环境,不止同一个环境交互,而是同多个环境交互并将其状态转移用作训练数据。
DDPG(Deep Deterministic Policy Gradient)是一种用于连续动作空间的强化学习算法,可以用于解决许多控制问题。在DDPG算法中,策略网络的参数更新需要计算policy gradient梯度。 在MATLAB中,我们可以利用深度学习工具箱来实现DDPG算法。下面是计算DDPG策略网络的policy gradient的步骤: 1. 首先,定义和初始化DDPG的网络架构,包括策略网络和值函数网络。策略网络参数化了一个确定性策略π,输入为状态s,输出为动作a。值函数网络是为了辅助策略网络的训练,输入为状态s和动作a,输出为对应的Q值。 2. 使用现有的经验回放缓冲池,从中随机选择一定数量的样本。每个样本包含当前状态s,选定的动作a,奖励r,下一状态s'以及一个指示终止状态的标志位done。 3. 对于选定的每个样本,使用策略网络计算当前状态s下的动作a,并计算其对应的Q值。 4. 将计算得到的动作a和Q值作为目标,使用值函数网络对当前状态s和动作a进行预测得到Q值的估计。 5. 利用目标Q值和估计Q值的差异,计算出policy gradient梯度。 6. 利用计算得到的梯度来更新策略网络的参数,使得策略网络的输出更适应目标Q值。 7. 重复以上步骤,直至达到收敛条件或指定的训练轮数。 以上是MATLAB中计算DDPG策略网络的policy gradient的一般步骤。具体实现还需要根据具体的问题和网络架构进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值