策略梯度方法求解强化学习任务——策略梯度方法介绍
目录
从本节开始,将介绍策略梯度方法求解强化学习任务。
回顾:基于价值函数(Value-Based)的强化学习方法
Value-Based强化学习方法介绍
从前面介绍的各种求解强化学习任务的方法中,总共介绍了3大类求解 马尔可夫决策过程(Markov Decision Process,MDP)问题的方法,它们分别是:
- 动态规划方法(Dynamic Programming,DP);
- 蒙特卡洛方法(Monte Carlo,MC);
- 时序差分方法(Temporal-Difference,TD)
这三种方法存在共同特点:
- 在求解强化学习任务时,最终目标是求解满足规则的最优策略 π \pi π。
但以上三种方法并没有 直接求解 策略 π \pi π这个变量,而是先计算 状态价值函数 V π ( s ) V_\pi(s) Vπ(s) / 状态-动作价值函数 q π ( s , a ) q_\pi(s,a) qπ(s,a);然后再基于价值函数结果改进 策略 π \pi π,从而实现策略 π \pi π的迭代更新。
- 无论是动态规划方法的策略迭代,还是蒙特卡洛控制、时序差分控制,它们呈现的共同点都是在策略改进过程中,均选择最优价值函数对应的动作作为新的策略。
(即便在同轨策略方法中存在使用 ϵ − \epsilon- ϵ−贪心策略修正的情况,但并不影响 选择“最优动作”作为新的策略 的本质)
a ∗ = π ′ ( s ) = arg max a q π ( s , a ) a^* = \pi'(s) = \mathop{\arg\max}\limits_{a}q_\pi(s,a) a∗=π′(s)=aargmaxqπ(s,a) - 这三种方法都是 表格式强化学习 的代表方法,其主要思想是:
- 在算法开始前,初始化一个存储价值函数的空间 Q − T a b l e Q-Table Q−Table;
- 在迭代过程中,每次迭代更新对应位置 ( s t a t e , a c t i o n ) (state,action) (state,action)的价值函数信息;
- 并不是从迭代开始就会将正确的信息加入到 Q − T a b l e Q-Table Q−Table中(Q-Learning中产生的就最大化偏差是个很好的例子),而是通过不断试错——与环境不断交互并从环境的反馈信息中进行学习。
Value-Based强化学习方法的缺陷
什么样的情况是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强化学习方法并不能有效解决上述问题。
基于策略(Policy-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 π不再是上述概率集合的形式,而是可微函数的形式——动作发生的概率受到某个概率密度函数的控制。
根据上述思路,进行如下分析:
- 根据实际情况,假设动作 a a a服从某一概率密度函数 P ( a ∣ s ; θ ) P(a\mid s;\theta) P(a∣s;θ)(换种思路理解——将动作 a a a理解成从概率模型 P ( a ∣ s ; θ ) P(a\mid s;\theta) P(a∣s;θ)产生的样本)
其中s表示给定的状态,theta表示概率密度函数的参数信息。
- 最终目标从求解 π ( a ∣ s ) \pi(a \mid s) π(a∣s)转换成求解策略中的参数 θ \theta θ。
因此,将含参数 θ \theta θ的策略称为策略函数。记作 π ( a ∣ s ; θ ) \pi(a \mid s;\theta) π(a∣s;θ),通常情况下可简写成 π θ \pi_{\theta} πθ。
π ( a ∣ s ; θ ) = P ( A t = a ∣ S t = s , θ t = θ ) \pi(a \mid s;\theta) = P(A_t = a \mid S_t = s,\theta_t = \theta) π(a∣s;θ)=P(At=a∣St</