从本节开始,将介绍策略梯度方法求解强化学习任务。
从前面介绍的各种求解强化学习任务的方法中,总共介绍了3大类求解 马尔可夫决策过程(Markov Decision Process,MDP)问题的方法,它们分别是:
这三种方法存在共同特点:
什么样的情况是Value-Based强化学习方法 无法解决/解决不好 的呢?
根据上面的特点介绍,我们发现,每次策略改进得到的最优策略 π ∗ \pi^* π∗一定是 确定性策略/基于 ϵ − \epsilon- ϵ−贪心策略修正后的 软性策略。
但ϵ-贪心策略仍然改变不了‘最优动作占据新策略最多权重,并且远超其他动作权重’的本质。因此,该策略主体仍然是某一确定性动作,即价值函数最高结果对应的动作。
但是每次迭代产生的这种确定性动作反而限制了迭代过程(这样会导致每次迭代更新的 方向性极强)。在真实环境中,我们更想要一个随机性策略而不是确定性动作。
这里说的‘随机性策略’和‘软性策略’截然不同,因为‘软性策略中的随机性’是人为定的超参数(ϵ),而不是机器生成的;
Value-Based强化学习方法面对的问题一般情况下状态(State)、动作(Action) 等变量是 可数的、有穷的 :前面介绍具体强化学习方法时,经常对 状态集合 S \mathcal S S,动作集合 A \mathcal A A,奖励集合 R \mathcal R R进行 逻辑场景构建:传送门
S = { s 1 , s 2 , ⋯ , s m } A = { a 1 , a 2 , ⋯ , a n } R = { r 1 , r 2 , ⋯ , r k } \mathcal S = \{s_1,s_2,\cdots,s_m\} \\ \mathcal A = \{a_1,a_2,\cdots,a_n\} \\ \mathcal R = \{r_1,r_2,\cdots,r_k\} S={s1,s2,⋯,sm}A={a1,a2,⋯,an}R={r1,r2,⋯,rk}
并且在构建时声明它们是 离散型随机变量。但是在真实环境中,我们遇到的动作(Action) 不一定是离散的:
示例:二维平面内智能体运动方向 a a a的选择
如果使用角度来描述它的运动方向(智能体选择的运动方向 与 当前状态智能体运动方向 之间的夹角):那么有效的运动方向范围表示如下:
a ∈ [ 0 , 2 π ] a \in [0,2\pi] a∈[0,2π]
如果将运动方向的选择看成智能体选择的动作,即动作的选择结果在 [ 0 , 2 π ] [0,2\pi] [0,2π]内均有效——该场景中的动作明显是一个连续型随机变量,没有办法将 [ 0 , 2 π ] [0,2\pi] [0,2π]内 所有动作 全部列举出来。
针对步骤2若后退一步——假设我们动作的选择是可数的、有穷的,但是动作的数量 极多,使用价值函数强化学习方法进行求解时,我们需要建立一个超级大的 Q − T a b l e → Q-Table \to Q−Table→ 用于迭代过程中价值函数的更新。但这种操作内存占用情况是非常严重的。
综上,Value-Based强化学习方法并不能有效解决上述问题。
相比于Value-Based强化学习方法,Policy-Based强化学习方法不再利用价值函数,而是利用 策略函数 直接选择动作。
对比Value-Based强化学习方法的缺陷,我们介绍Policy-Based强化学习方法适用的场景:
这相比仅仅是针对确定性策略、动作是离散型随机变量的Value-Based强化学习方法,Policy-Based强化学习方法能够解决问题的范围 更加广泛——使用Policy-Based强化学习方法同样可以求解Value-Based强化学习方法的场景。
在Value-Based强化学习方法中,策略 π ( a ∣ s ) \pi(a \mid s) π(a∣s)指的是给定状态 s s s条件下,有意义的动作 a a a的概率分布,其数学符号表示如下:
π ( a ∣ s ) = ( π ( a 1 ∣ s ) π ( a 2 ∣ s ) ⋮ π ( a N ∣ s ) ) ( a 1 , a 2 , ⋯ , a N ∈ A ( s ) ) \begin{aligned} \pi(a \mid s) = \begin{pmatrix} \pi(a_1 \mid s) \\ \pi(a_2 \mid s) \\ \vdots \\ \pi(a_N \mid s) \\ \end{pmatrix}(a_1,a_2,\cdots,a_N \in \mathcal A(s)) \end{aligned} π(a∣s)=⎝ ⎛π(a1∣s)π(a2∣s)⋮π(aN∣s)⎠ ⎞(a1,a2,⋯,aN∈A(s))
但Policy-Based强化学习方法中的动作 a a a是连续性随机变量,因此此时的策略 π \pi π不再是上述概率集合的形式,而是可微函数的形式——动作发生的概率受到某个概率密度函数的控制。
根据上述思路,进行如下分析:
其中s表示给定的状态,theta表示概率密度函数的参数信息。
这里并不是一定要使用softmax函数进行映射 -> 只要能够映射为‘指数族分布’即可。
将
h ( s , a ; θ ) h(s,a;\theta) h(s,a;θ)函数定义为‘动作偏好值’ -> 将离散型的策略
π ( a ∣ s ) \pi(a \mid s) π(a∣s)视为关于
θ \theta θ的一个函数,仅此而已;
s是状态,s是给定的。
'目标函数'并不是Policy-Based强化学习方法的特有概念,在Value-Based强化学习方法中也存在‘目标函数’的说法:
V π ( s ) , q π ( s , a ) V_\pi(s),q_\pi(s,a) Vπ(s),qπ(s,a)都是目标函数;
之所以选择‘初始状态’回报的期望 -> 极大限度地将
R 1 , R 2 , ⋯ , R T R_1,R_2,\cdots,R_T R1,R2,⋯,RT利用上。
至此,我们推演一下策略梯度方法的求解过程:
该步骤在后续进行讲解。
但上述推演过程中我们漏掉了一个问题:如何求解梯度 ∇ J ( θ i n i t ) \nabla\mathcal J(\theta_{init}) ∇J(θinit)?
基于上一节的思路继续思考:到底是哪些要素影响梯度 ∇ J ( θ ) \nabla\mathcal J(\theta) ∇J(θ)的变化?
首先观察 ∇ J ( θ ) \nabla\mathcal J(\theta) ∇J(θ)和 θ \theta θ之间的关联关系。
为了简化计算:
→ \to → 不妨假定动作 a a a服从1维随机变量的某种分布;
→ \to → 此时参数 θ \theta θ同样也是1维随机变量;
→ \to → 导致求解梯度 ∇ J ( θ ) \nabla\mathcal J(\theta) ∇J(θ)退化成对 J ( θ ) \mathcal J(\theta) J(θ)的导数计算 J ′ ( θ ) \mathcal J'(\theta) J′(θ);
从导数定义角度观察 J ′ ( θ ) \mathcal J'(\theta) J′(θ):
J ′ ( θ ) = lim Δ θ → 0 Δ J ( θ ) Δ θ \mathcal J'(\theta) = \mathop{\lim}\limits_{\Delta\theta\to 0}\frac{\Delta \mathcal J(\theta)}{\Delta \theta} J′(θ)=Δθ→0limΔθΔJ(θ)
继续观察:如果参数 θ \theta θ发生变化( Δ θ \Delta \theta Δθ),到底如何影响 J ( θ ) \mathcal J(\theta) J(θ)跟着发生变化( Δ J ( θ ) \Delta \mathcal J(\theta) ΔJ(θ))?
(必然发生的情况)首先,由于 θ \theta θ是策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(a∣s;θ)的参数,因此 θ \theta θ的变化必然引起策略参数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(a∣s;θ)的变化;
策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(a∣s;θ)的变化,自然会引发 J ( θ ) \mathcal J(\theta) J(θ)的变化;
J ( θ ) = E π ( a ∣ s ; θ ) [ R 1 + γ R 2 + ⋯ + γ T − 1 R T ] \mathcal J(\theta) = \mathbb E_{\pi(a \mid s;\theta)}[R_1 + \gamma R_2 + \cdots + \gamma^{T-1}R_T] J(θ)=Eπ(a∣s;θ)[R1+γR2+⋯+γT−1RT]
(状态分布产生的核心思路)基于策略函数产生的一条完整情节,那么该情节中 状态出现的概率分布和策略函数之间存在直接联系。具体描述如下:
基于参数 θ \theta θ产生的策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(a∣s;θ),并使用该策略执行了一个完整情节。该情节中的状态部分表示如下:
{ s 0 , s 1 , s 2 , ⋯ , s T } \{s_0,s_1,s_2,\cdots,s_T\} {s0,s1,s2,⋯,sT}
其中 s T s_T sT表示终结状态。如果状态(State)自身是离散型随机变量,状态集合 S \mathcal S S表示如下:
S = { s ( 0 ) , s ( 1 ) , ⋯ , s ( N ) } \mathcal S = \{s^{(0)},s^{(1)},\cdots,s^{(N)}\} S={s(0),s(1),⋯,s(N)}
在完整情节中,各随机变量在情节种出现的次数(频率)和概率表示如下:
s ( 0 ) s^{(0)} s(0) | s ( 1 ) s^{(1)} s(1) | s ( 2 ) s^{(2)} s(2) | ⋯ \cdots ⋯ | s ( N ) s^{(N)} s(N) | |
---|---|---|---|---|---|
出现次数 | k 0 k_0 k0 | k 1 k_1 k1 | k 2 k_2 k2 | ⋯ \cdots ⋯ | k N k_N kN |
出现概率 | k 0 T \frac{k_0}{T} Tk0 | k 1 T \frac{k_1}{T} Tk1 | k 2 T \frac{k_2}{T} Tk2 | ⋯ \cdots ⋯ | k N T \frac{k_N}{T} TkN |
∑ i = 1 N k i = T \sum_{i=1}^N k_i = T i=1∑Nki=T
至此,我们得到了一组关于状态的概率分布:
p ( s ) = [ k 0 T , k 1 T , ⋯ , k N T ] p(s) = [\frac{k_0}{T},\frac{k_1}{T},\cdots,\frac{k_N}{T}] p(s)=[Tk0,Tk1,⋯,TkN]
我们在机器学习笔记——极大似然估计与最大后验概率估计介绍过 频率学派角度看待机器学习问题,并引用了黑格尔的一句名言:存在即合理。
虽然产生的状态分布 p ( s ) p(s) p(s)和策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(a∣s;θ)之间 不是映射关系:
但是根据频率学派角度的观点: p ( s ) p(s) p(s)是通过策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(a∣s;θ)产生出来的【真实存在】的样本,既然能够产生,自然存在它的合理性。
因此,状态分布指向的结果即:情节中 策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(a∣s;θ)的变化会影响 状态分布的变化 ,而状态分布的变化会影响目标函数 J ( θ ) \mathcal J(\theta) J(θ)的变化。
上面介绍了相同的策略函数 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(a∣s;θ)可能得到各种各样状态分布样本(非映射关系);但是我们需要对这些样本的特征进行归纳——归纳后的结果与策略函数之间存在具体关系。
这里引入两个新的概念:
如何求解 η ( s ) \eta(s) η(s)?我们将 η ( s ) \eta(s) η(s)的求解过程分为两个部分:
状态 s s s是初始状态 → \to → 状态 s s s没有前继状态;
根据概率的频率定义,状态 s s s在初始状态出现的平均次数即 重复大量试验后,状态 s s s是初始状态的频率,即 s s s被选择的概率。
→ \to → 使用 h ( s ) h(s) h(s)表示 s s s被选择的概率。
状态 s s s是非初始状态 → \to → 状态 s s s在情节中必然存在一个前继状态通过状态转移的方式 得到状态 s s s。令前继状态为 s ˉ \bar s sˉ;
根据该思路继续思考:
那么可以求解期望的方式求解状态 s s s的平均次数:
∑ s ˉ η ( s ˉ ) ∑ a ∈ A ( s ˉ ) π ( a ∣ s ˉ ) P ( s ∣ s ˉ , a ) \sum_{\bar s}\eta(\bar s)\sum_{a \in \mathcal A(\bar s)} \pi(a \mid \bar s)P(s \mid \bar s,a) sˉ∑η(sˉ)a∈A(sˉ)∑π(a∣sˉ)P(s∣sˉ,a)
将上述两种状态(初始状态\非初始状态)结果相加,则有:
η ( s ) = h ( s ) + ∑ s ˉ η ( s ˉ ) ∑ a ∈ A ( s ˉ ) π ( a ∣ s ˉ ) P ( s ∣ s ˉ , a ) \eta(s) = h(s) + \sum_{\bar s}\eta(\bar s)\sum_{a \in \mathcal A(\bar s)} \pi(a \mid \bar s)P(s \mid \bar s,a) η(s)=h(s)+sˉ∑η(sˉ)a∈A(sˉ)∑π(a∣sˉ)P(s∣sˉ,a)
我们发现,上述式子是个迭代式子——它描述了状态 s s s的平均次数 η ( s ) \eta(s) η(s)与它前继状态的平均次数 η ( s ˉ ) \eta(\bar s) η(sˉ)的 关联关系。
在求解 η ( s ˉ ) \eta(\bar s) η(sˉ)时,也会使用上式与 s ˉ \bar s sˉ的前继构建关联关系。
以此类推,必然会递推到初始状态;
因此,构建新的数学符号对上式进行修改,修改结果如下:
η ( s ) = ∑ k = 0 T − 1 P r { s 0 → s , k , π } \begin{aligned} \eta(s) & = \sum_{k=0}^{T-1}P_r\{s_0 \to s,k,\pi\} \end{aligned} η(s)=k=0∑T−1Pr{s0→s,k,π}
该式可以理解为:
出现概率 μ ( s ) \mu(s) μ(s)根据概念描述即:某一状态的平均次数占所有状态平均次数的比重。
μ ( s ) = η ( s ) ∑ s ′ η ( s ′ ) \mu(s) = \frac{\eta(s)}{\sum_{s'}\eta(s')} μ(s)=∑s′η(s′)η(s)
状态分布的求解全部结束,下一节将介绍策略梯度定理。
相关参考:
【强化学习】策略梯度方法-策略近似
深度强化学习原理、算法pytorch实战 —— 刘全,黄志刚编著