策略梯度方法Policy Function Approximation
从本文开始,将从value-based methods转向到policy-based methods,从value function approximation到policy function approximation。
Basic idea of policy gradient
到目前,我们的policies都是用tables表示的。如下是所有state的action probabilities,存储在一个table π ( a ∣ s ) \pi(a|s) π(a∣s),表格中的每个实体由一个state和一个action表示。

我们可以直接访问或改变表格中的一个值。
现在,我们可以把表格改成函数。policies用参数化的函数表示。 π ( a ∣ s , θ ) \pi(a|s,\theta) π(a∣s,θ)其中 θ ∈ R m \theta\in \mathbb{R}^m θ∈Rm是一个参数向量。
- 例如,这个函数可以是一个神经网络,它的输入是 s s s,输出是采取每个action的概率,参数是 θ \theta θ。
- 优势:当state space比较大时,表格化的表示是低效的,尤其是针对存储和泛化能力。
- 函数形式的表示有时也写为 π ( a , s , θ ) , π θ ( a ∣ s ) , π θ ( a , s ) \pi(a,s,\theta), \pi_\theta(a|s), \pi_\theta(a,s) π(a,s,θ),πθ(a∣s),πθ(a,s)
表格形式和函数形式表示的区别:
- 第一,如何定义最优策略?
- 当使用表格表示时,一个策略 π \pi π是最优的,如果它能够使得每个state value最大化。
- 当使用函数表示时,一个策略 π \pi π是最优的,如果它能够使得某个scalar metric最大化。
- 第二,如何获取一个action的概率?
- 当使用表格表示时,在状态 s s s采取 a a a的概率可以直接通过查表的形式得到
- 当使用函数表示时,我们需要在给定函数结构和参数的条件下计算 π ( a ∣ s , θ ) \pi(a|s, \theta) π(a∣s,θ)的值
- 第三,如何更新策略?
- 当使用表格表示时,可以直接在表格中更新策略 π \pi π
- 当使用函数表示时,可以通过改变参数 θ \theta θ的方式更新策略 π \pi π
Policy gradient的基本思路:
- 第一,需要有一个目标函数(metrics or objective functions)去定义最优策略是什么, J ( θ ) J(\theta) J(θ)定义最优策略。
- 第二,基于梯度的方法(gradient-based optimization algorithm)去寻找最优策略: θ t + 1 = θ t + α ∇ θ J ( θ t ) \theta_{t+1}=\theta_t+\alpha \nabla_\theta J(\theta_t) θt+1=θt+α∇θJ(θt)
尽管思路非常简单, 但是当我们回答下面问题的时候,会有一些复杂的地方:
- 第一,怎么选取目标函数?
- 第二,怎么求解目标函数对应的gradients?
Metrics to define optimal policies
有两大类的metrics:
第一大类是the average state value,或者简单地称为average value。具体地,这个metric定义如下 v ˉ π = ∑ s ∈ S d ( s ) v π ( s ) \bar{v}_\pi=\sum_{s\in \mathcal{S}}d(s)v_\pi(s) vˉπ=s∈S∑d(s)vπ(s)
- 其中 v ˉ π \bar{v}_\pi vˉπ是state values的加权平均
- d ( s ) > 0 d(s)>0 d(s)>0是对于状态 s s s的权重
- 因为 ∑ s ∈ S d ( s ) = 1 \sum_{s\in \mathcal{S}} d(s)=1 ∑s∈Sd(s)=1,我们可以将 d ( s ) d(s) d(s)解释为一个概率分布。然后,这个metric可以被写为 v ˉ π = E [ v π ( S ) ] \bar{v}_\pi=\mathbb{E}[v_\pi (S)] vˉπ=E[vπ(S)],其中 S ∼ d S\sim d S∼d。
Vector-product(向量内积)的形式: v ˉ π = ∑ s ∈ S d ( s ) v π ( s ) = d T v π \bar{v}_\pi = \sum_{s\in \mathcal{S}}d(s)v_\pi(s)=d^Tv_\pi vˉπ=s∈S∑d(s)vπ(s)=dTvπ其中 v π = [ . . . , v π ( s ) , . . . ] T ∈ R ∣ S ∣ v_\pi=[...,v_\pi (s),...]^T\in \mathbb{R}^{|\mathcal{S} |} vπ=[...,vπ(s),...]T∈R∣S∣ d = [ . . . , d ( s ) , . . . ] T ∈ R ∣ S ∣ d=[...,d(s),...]^T\in \mathbb{R}^{|\mathcal{S} |} d=[...,d(s),...]T∈R∣S∣
这种形式对于后面分析它的梯度是非常有帮助的。
如何选择分布 d d d?这里有两种情况:
第一种情况是 d d d和策略 π \pi π没什么关系。
- 这种情况相对简单,因为metric的gradient是容易计算的
- 这种情况下,将 d d d写为 d 0 d_0 d0, v ˉ π \bar{v}_\pi vˉπ写为 v ˉ π 0 \bar{v}_\pi^0 vˉπ0
- 如何选择 d 0 d_0 d0?
- 一个简单的方式是平等地对待所有的states,即选择 d 0 ( s ) = 1 / ∣ S ∣ d_0(s)=1/|\mathcal{S}| d0(s)=1/∣S∣
- 另一个重要的情况是我们只对一个特定的state s 0 s_0 s0感兴趣。例如,episodes在某些任务中总是从相同的state s 0 s_0 s0开始,然后,我们仅仅关注从 s 0 s_0 s

本文介绍了策略梯度方法,将策略从表格形式转换为参数化的函数表示,如神经网络。文章讨论了如何定义最优策略,以及如何通过梯度上升算法(如REINFORCE)来优化策略。重点讲述了平均状态价值和平均即时奖励作为指标,并解析了它们的梯度计算。最后,提到了REINFORCE算法的实现和其在探索与利用之间的平衡作用。
最低0.47元/天 解锁文章
408





