强化学习中的Policy-gradient算法详解

释放双眼,带上耳机,听听看~!
本文详细介绍了强化学习中的Policy-gradient算法,包括策略函数近似、状态价值函数的近似以及神经网络的应用。通过对策略梯度的数学推导,帮助读者深入理解该算法的原理和应用。

本文正在参加「金石计划」

导语

本系列笔记为b站Shusen Wang老师的强化学习课程笔记,整体按照老师讲课的思路来记录。本节课主要介绍Policy-gradient算法。

Policy Function的近似

策略函数πpi的输入是状态s,输出是所有动作的概率分布。在执行动作时,Agent采用随机抽样的方式选择下一步要执行的动作。

强化学习中的Policy-gradient算法详解

假如我们有一张表,可以记录所有状态,那么我们只需要填满这个表格就可以了,但实际上,像超级玛丽这样的游戏有着无数种状态,这样的形式是完全不现实的。

强化学习中的Policy-gradient算法详解

因此,我们需要使用函数近似的方式。函数近似有多种方式,如线性函数近似、神经网络近似、kernel近似等。如果使用神经网络,那么就叫这个网络为Policy Network,记为π(a∣s;θ)pi(a|s;theta),这里的θtheta是神经网络的参数。

如果是超级玛丽这个游戏,我们可以把策略函数设计成这个样子:输入是状态s,也就是当前屏幕的画面,也可以是最近几帧的画面。然后通过一个卷积层得到特征向量,之后通过一个MLP映射为3维的向量,对应于三个动作。最后,连接一个softmax层,得到每个动作的概率值。

强化学习中的Policy-gradient算法详解

由于策略函数是概率密度函数,所以它的积分或求和为1.这就是使用softmax的原因。

强化学习中的Policy-gradient算法详解

State-value Function的近似

状态价值函数Vπ(st)V_{pi}(s_t)是动作价值函数Qπ(st,at)Q_{pi}(s_t, a_t)对A求期望得到的,他只跟策略πpi和当前状态sts_t有关。给定策略πpiVπ(st)V_{pi}(s_t)可以评价当前状态的好坏,Vπ(st)V_{pi}(s_t)越大,表示当前的胜算越大,给定状态s,Vπ(st)V_{pi}(s_t)可以评价策略πpi的好坏。如果πpi很好,Vπ(st)V_{pi}(s_t)就会比较大,说明胜算大。

如果A是离散变量,那么对a求和就可以消掉A,同样的,对于连续变量则可以使用积分。

强化学习中的Policy-gradient算法详解

接下来,我们介绍策略价值函数的近似,同样使用一个神经网络。我们已经把Policy函数用一个Policy Network π(a∣s;θ)pi(a|s;theta)来近似

强化学习中的Policy-gradient算法详解

所以,整体的策略函数也变成了V(s;θ)V(s;theta),它可以评价状态s和策略πpi的好坏,给定状态s,策略越好,V(s;θ)V(s;theta)的值就越大,那么该怎样使策略变得越来越好呢?

强化学习中的Policy-gradient算法详解

我们可以学习参数θtheta,让J(θ)J(theta)的数值越大越好。那么如何改进J(θ)J(theta)呢?这里用到了Policy gradient算法,我们让Agent玩游戏,每一步都会观察到一个不同的状态s,这个s就相当于从s的概率分布中随机抽样而来的,观测到s,把V(s;θ)V(s;theta)关于θtheta求一个梯度,然后用梯度上升来更新θtheta,这里的βbeta是学习率。

Policy Gradient

刚才我们介绍了状态价值函数的近似V(s;θ)V(s;theta),这里的π(a∣s;θ)pi(a|s;theta)是策略网络,策略梯度就是V(s;θ)V(s;theta)θtheta的导数,其数学推导如下:

强化学习中的Policy-gradient算法详解

这里做了一步简化假设,即Qπ(s,a)Q_{pi}(s,a)θtheta无关,实际上并不是这样,这里是为了方便推导和理解的简化

强化学习中的Policy-gradient算法详解

强化学习中的Policy-gradient算法详解

强化学习中的Policy-gradient算法详解

我们已经推导出了策略梯度的两种等价形式,

强化学习中的Policy-gradient算法详解

有了这两种公式后,我们就可以计算策略梯度了,如果动作是离散的,那么可以使用第一种形式,即

强化学习中的Policy-gradient算法详解

对于连续变量使用第二种形式,但对一个神经网络求积分是不可行的,所以这里采用蒙特卡洛方法进行近似,具体做法如下:

强化学习中的Policy-gradient算法详解

蒙特卡洛就是随机抽一个多多个样本,用他们来近似期望。更新参数θtheta时,使用g(a^,θ)g(hat{a}, theta)就可以了。其实这种方法对于离散的动作也是适用的。

强化学习中的Policy-gradient算法详解

策略梯度算法的更新流程

策略梯度算法的整体流程如下:

  1. 在第t个时间点观测到了状态sts_t;(接下来使用蒙特卡洛近似来计算策略梯度)
  2. 将策略网络π(⋅∣st;θt)pi(cdot|s_t;theta_t)作为策略密度函数,用它随机抽样得到一个动作ata_t
  3. 计算动作价值函数的值qtq_t
  4. 对策略网络πpi进行求导,算出log⁡πlogpi关于θtheta的导数;
  5. 近似的算策略梯度g(at,θt)=qt⋅d theta,tg(a_t,theta_t)=q_tcdot d_{ theta,t}
  6. 更新策略网络。

策略梯度算法在每一轮都会执行以上6步。

强化学习中的Policy-gradient算法详解

但是这里话有一个问题没有解决,即我们不知道Qπ(st,at)Q_{pi}(s_t,a_t),那该如何计算qtq_t呢?有两个办法计算:

  1. Reinforce算法:用策略网络πpi来控制Agent运动,从一开始一直玩到游戏结束,把整个游戏轨迹都记录下来。观测到所有的奖励r后可以计算出utu_t。由于Qπ(st,at)Q_{pi}(s_t,a_t)UtU_t的数学期望,我们就可以使用utu_t来近似Qπ(st,at)Q_{pi}(s_t,a_t),所以Reinforce算法就是用utu_t来代替qtq_t.

强化学习中的Policy-gradient算法详解

  1. 用另一个神经网络来近似,这样就有了两个神经网络,这也就是后续的AC算法,将在后续的课程中进行讲解。

总结

这节课讲了Policy-based method,我们希望得到一个好的策略函数πpi,让它自动控制Agent运动,每当Agent观测到状态sts_t,Agent就用πpi函数得到动作的分布并进行随机抽样选择动作执行。

直接求策略函数比较困难,所以使用神经网络来近似策略函数,这个神经网络被称为Policy Network,通过Policy gradient进行学习。

强化学习中的Policy-gradient算法详解

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

OCR技术测试与优化

2023-12-14 17:33:14

AI教程

图像分类、目标检测和分割数据集汇总

2023-12-14 17:43:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索