【强化学习】策略梯度算法(Policy Gradient)

策略梯度(Policy Gradient)

Value Based & Policy Based

在DQN算法中,主要对价值函数进行了近似表示,基于价值来学习。但基于价值的强化学习方法存在一些局限性:

  • 对连续动作的处理能力不足。(例如经典的PuckWord问题,大圆可操作的行为是在水平垂直共四个方向施加一个大小固定的力,借此来改变大圆的速度。假如此时该力的大小和方向是可灵活选择的,力在水平和垂直方向分解,即由两个连续变量组成,这个策略使用离散的方式是不好表达的,但Policy Based方法却容易建模)
  • 对受限状态下的问题处理能力不足。 使用特征描述状态空间的某个状态时,有可能因为个体观测的限制或建模的局限,导致真是环境下本来不同的两个状态却在建模后有相同的特征描述,进而可能导致Value Based方法无法找到最优解。
  • 无法解决随机策略问题。 Value Based方法对应的最优策略通常是确定性策略,因为它是从众多行为价值中选择一个最大价值的行为,而有些问题的最优策略为随机策略(比如“剪刀石头布”游戏),这种情况下无法通过基于Value的学习来求解。这是可考虑使用Policy Based强化学习方法。

What is Policy Gradient?

基于价值的强化学习算法是根据当前的状态,计算采取每个动作的价值,然后根据价值贪心的选择动作。强化学习中另一个很重要的算法——Policy Gradient则省略中间的步骤,即直接根据当前的状态来输出动作或动作的概率。
回想在Value Based方法中,对价值函数进行了近似表示; q ^ ( s , a , w ) ≈ q π ( s , a ) \hat{q}\left( s,a,w\right)\approx q_\pi \left( s,a\right) q^(s,a,w)qπ(s,a)而在Policy Based方法中,我们采用类似的思路,对策略 进行近似表示
π θ ( s , a ) = P ( a ∣ s , θ ) ≈ π ( a ∣ s ) \pi_\theta\left( s,a\right)=P\left( a\mid s,\theta\right)\approx \pi\left(a\mid s\right) πθ(s,a)=P(as,θ)π(as)

之前在训练神经网络时,使用最多的就是反向传播法,我们需要一个误差函数,通过梯度下降来使损失最小。但对于强化学习来说,我们不知道动作的正确与否,只能通过奖励值来判断这个动作的相对好坏。

  • 如果一个动作得到的reward多,那么我们使其出现的概率增加,如果一个动作得到的reward少,我们使其出现的概率减小。

根据这个思想,构造如下的损失函数: l o s s = − log ⁡ ( p r o b ) × v t loss=-\log(prob) \times v_t loss=log(prob)×vt

  • 上式 log ⁡ ( p r o b ) \log(prob) log(prob)表示如果概率越小,反向的 log ⁡ ( p r o b ) \log(prob) log(prob)反而越大。 v t v_t vt表示当前状态s下采取动作a所能得到的奖励,是当前的奖励和未来奖励的贴现值的求和(也就是说策略梯度算法必须完成一个完整的episode才可以进行参数更新,而不是像Value Based方法那样,每一个 ( s , a , r , s ′ ) \left( s,a,r,s^{\prime}\right) (s,a,r,s)都可以进行参数更新)。如果prob很小的情况下,得到了一个大的reward,也就是大的 v t v_t vt,那么 l o s s loss loss就更大(我选了一个不常选的动作,却发现它能得到一个好的reward,那我就对这次的参数进行一个大幅修改)。

蒙特卡罗策略梯度过程

这里我们讨论最简单的策略梯度算法, 使用价值函数 v ( s ) v(s) v(s)来近似代替策略梯度公式里面的 Q π ( s , a ) Q_\pi (s,a) Qπ(s,a)。算法的流程很简单,如下所示:
输入:N个蒙特卡罗完整序列,训练步长 α \alpha α
输出:策略函数的参数 θ \theta θ

  1. for 每个蒙特卡罗序列:
    a. 用蒙特卡罗法计算序列每个时间位置t的状态价值 v t v_t vt
    b. 对序列每个时间位置t,使用梯度上升法,更新策略函数的参数θ:
    θ = θ + α ▽ θ log ⁡ π θ ( s t , a t ) v t \theta = \theta + \alpha\bigtriangledown_\theta\log\pi_\theta\left(s_t,a_t\right)v_t θ=θ+αθlogπθ(st,at)vt
  2. 返回策略函数的参数 θ \theta θ

策略梯度小结

  • 算法输出的是动作概率 ,而不是Q值
  • 需要一次完整的episode才可进行参数的更新

相关内容参考刘建平Pinard博客

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
答案: 强化学习中的策略梯度算法是一种基于策略函数建模的方法,通过最大化累计奖励的期望值来优化策略。与基于价值的方法不同,策略梯度算法没有实际的损失函数,而是使用梯度上升算法来计算累计奖励的期望值。这种算法的优势在于它的简易性,它可以直接处理问题,而不需要存储额外的动作值数据。此外,策略梯度方法非常适合处理连续动作空间的问题。在策略梯度方法中,可以使用REINFORCE算法来进行训练,它是一种蒙特卡洛策略梯度算法。该算法通过采样轨迹并使用梯度上升来更新策略参数,从而最大化累计奖励的期望值。可以通过添加基线来改进REINFORCE算法的性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [强化学习(九)- 策略梯度方法 - 梯度上升,黑箱优化,REINFORCE算法及CartPole实例](https://blog.csdn.net/qq_37266917/article/details/109855244)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【强化学习策略梯度Policy Gradient)](https://blog.csdn.net/Judy18/article/details/121343200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值