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

策略梯度(Policy Gradient)

我们之前学习Q-learning算法以及DQN算法都是通过拟合价值函数进行学习的,虽然他在很多领域都有了不错的表现,但是它也存在着很多缺点。例如: 
(1)基于价值的强化学习对连续动作以及高维度的离散动作处理能力不足。因为通过价值更新策略时,是需要对每个动作下的价值函数的大小进行比较计算的,维度一旦上来就会浪费大量的计算机资源。 
(2)在基于价值的强化学习中可能会将实际状态并不相同的两个状态描述为同一状态,进而导致value Based方法无法得到最优解。(比如下面这个环境中,两个灰色位置状态明显不同,但他们在值函数中的特征是一样的)
在这里插入图片描述
(3)基于价值的强化学习在策略选择上没有那么强的随机性,虽然说有那么多种动作选择策略,但随机性并不强。

而Policy Gradient简单来说就是省去了基于价值强化学习的计算每个动作价值的部分,直接根据当前的状态输出动作或者动作的概率,这样Agent就可以在一个连续空间内选取动作。
Policy Gradient算法就是对策略函数进行近似表示:
π θ ( s , a ) = P ( a ∣ s , θ ) ≈ π ( a ∣ s ) \begin{align} π_\theta(s,a)=P(a|s,\theta)\approxπ(a|s) \end{align} πθ(s,a)=P(as,θ)π(as)
由于我们取消了根据Q值来选择动作的这个机制,所以我们现在的机制变为了**如果一个动作得到的reward多,那么我们使其出现的概率增加,如果一个动作得到的reward少,我们使其出现的概率减小。**根据这个思想我们可以构造出损失函数:
l o s s = − E [ l o g [ π ( a , s ) ] ⋅ Q ( s , a ) ] \begin{align} loss=-E[log[π(a,s)]\cdot Q(s,a)] \end{align} loss=E[log[π(a,s)]Q(s,a)]
其中由于策略π不好求,可以替换为:
l o s s = − E [ l o g [ p θ ( τ ) ) ] ⋅ R ( τ ) ] \begin{align} loss=-E[log[p_\theta(\tau))]\cdot R(\tau)] \end{align} loss=E[log[pθ(τ))]R(τ)]
其中 τ \tau τ为轨迹,定义是 τ = \tau= τ={ s 1 , a 1 , s 2 , a 2 , ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ , s t , a t s_1,a_1,s_2,a_2,······,s_t,a_t s1,a1,s2,a2,⋅⋅⋅⋅⋅⋅,st,at}, p θ ( τ ) p_\theta(\tau) pθ(τ)是轨迹 τ \tau τ出现的概率,这里的 θ \theta θ代表的是神经网络参数,因为在给定状态s下要选择什么动作需要神经网络来完成, R ( τ ) R(\tau) R(τ)是轨迹 τ \tau τ的总将奖励值。
之所以取对数操作是因为,取对数后不会影响函数的单调性,同时可以避免指数操作,乘法也可变为加法,降低了计算的复杂度,还避免了多个小于一的数相乘导致下溢出的情况。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我将为您介绍一个简单的强化学习 policy gradient 的实例。 假设我们有一个小车在一条直线上移动,小车只能向左或向右移动一格,并且每次移动会消耗一定的能量。我们的目标是让小车尽可能快地到达终点,同时尽量少地消耗能量。 为了解决这个问题,我们可以使用 policy gradient 方法。具体来说,我们可以定义一个策略网络,它的输入是当前小车所处的位置,输出是一个概率分布,表示小车向左或向右移动的概率。我们使用该策略网络来生成小车的移动轨迹,并计算每个轨迹的总能量消耗和到达终点所需的步数。然后,使用 policy gradient 方法来更新策略网络的参数,使得总能量消耗最小化。 下面是具体的步骤: 1. 定义策略网络。假设我们使用一个简单的全连接神经网络,它的输入是当前小车所处的位置,输出是一个两维向量,表示小车向左或向右移动的概率。 2. 定义损失函数。我们使用交叉熵作为损失函数,即将策略网络的输出与实际移动方向的 one-hot 向量进行比较,并计算交叉熵损失。 3. 生成轨迹。使用当前的策略网络生成小车的移动轨迹,并计算每个轨迹的总能量消耗和到达终点所需的步数。 4. 计算梯度。使用 policy gradient 方法计算梯度。具体来说,对于每个轨迹,我们计算其总能量消耗和到达终点所需的步数与所有轨迹中的平均值的差异,并将该差异乘以该轨迹的梯度。最终,将所有轨迹的梯度进行平均,得到策略网络的梯度。 5. 更新策略网络参数。使用梯度下降或其他优化算法来更新策略网络的参数,使得总能量消耗最小化。 6. 重复步骤 3-5,直到策略网络收敛。 以上就是一个简单的强化学习 policy gradient 的实例。当然,在实际应用中,还需要考虑许多细节和优化,如使用基线来减小方差、使用函数逼近器来处理高维状态空间等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值