DDPG:深度确定性策略梯度

基本概念

离散动作&连续动作

离散动作指可以被分类的动作,比如上、下、左、右、跳跃等动作,一般用多分类激活函数softmax去表示这些动作。如果只有两个动作,则可以使用sigmoid激活函数来表示。

连续动作就是一个连续的值,比如速度、角度、力度等表示确切的值。连续动作不可分类,一般使用返回值类型的激活函数去表示它们,比如tanh函数。

DDPG:深度确定性策略梯度_第1张图片
如图,假如我们想用强化学习训练一个策略来控制机械手臂,上面的轴可以在[0, 2 π \pi π]之间转动,下面的轴可以在[0, π \pi π] 之间转动,那么它的动作空间将会是一个多维的连续空间。

DDPG

DQN算法使用神经网络来近似的表示Q-函数,成功的解决了高维状态空间的问题。但是DQN只能处理离散、低维动作空间,对于生活中的许多具有连续、高维动作空间的控制任务,DQN无法处理。

DDPG算法的提出正是为了解决这样的一个问题,可以算是DQN算法的改进版。在DQN中,采用 ϵ − g r e e d y \epsilon-greedy ϵgreedy策略或者Boltzamann分布策略来选择动作a;而DDPG使用一个神经网络来拟合策略函数,直接输出动作a,可以应对连续动作的输出和高维动作空间。因此,DDPG可以看成是连续动作空间下的DQN。
DDPG:深度确定性策略梯度_第2张图片
DDPG训练流程如下所示,类似于DQN,DDPG增加了策略网络(Actor)。DDPG包含两部分,一个策略网络(Actor),一个价值网络(Critic)。策略网络输出动作,价值网络评判动作。两者都有自己的更新信息的方式。策略网络通过梯度计算公式进行更新,而价值网络根据目标值进行更新。DDPG价值网络的更新与DQN类似,这里详细说一下策略网络的更新。
DDPG:深度确定性策略梯度_第3张图片
策略梯度公式:
在这里插入图片描述
这个公式理解起来很简单,比如对同一个状态,我们输出了两个不同的动作a1和a2,从状态估计网络得到了两个反馈的Q值,分别是Q1和Q2,假设Q1>Q2,即采取动作a1可以得到更多的奖励。那么策略梯度的思想是什么呢?就是增加a1的概率,降低a2的概率,也就是说,Actor想要尽可能的得到更大的Q值。所以我们的Actor的损失可以简单的理解为得到的反馈Q值越大损失越小,得到的反馈Q值越小损失越大。

DDPG算法如下所示:
DDPG:深度确定性策略梯度_第4张图片

你可能感兴趣的:(强化学习,python)