学习目标
- 理解Prediction和Control的差别;
- 理解什么是first-visit和every-visit;
- 理解什么是on-policy和off-policy;
- 理解蒙特卡洛方法的Prediction和Control问题;
Prediction和Control
其实这两个名词在总结动态规划方法的文章中也提到过了,但是没有细说,这里再简单的说明一下。预测(Prediction)和控制(Control)是MDP中的两类问题:
预测问题
- 输入:MDP ⟨ S , A , P , R , γ ⟩ \langle\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma\rangle ⟨S,A,P,R,γ⟩ 和策略 π \pi π
- 输出:状态值函数 v π v_{\pi} vπ 或者状态动作值函数 q π q_{\pi} qπ
控制问题
输入:MDP ⟨ S , A , P , R , γ ⟩ \langle\mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma\rangle ⟨S,A,P,R,γ⟩
输出:最优状态值函数 v ∗ v_{*} v∗ 或者最优状态动作值函数 q ∗ q_{*} q∗,和最优策略 π ∗ \pi_{*} π∗
比如上一节的动态规划方法,两者的对应关系如下图:
蒙特卡洛方法简述
动态规划方法是建立在模型已知的情况下,但是往往大多数情况下模型是未知的,实际应用中我们不可能完全了解一个环境的所有知识,比如说得出它的状态转移矩阵。这个时候蒙特卡洛算法就派上用场了,它只需要从经验(experience)中去学习,这个经验包括样本序列的状态(state)、动作(action)和奖励(reward)。得到若干样本的经验后,通过**平均所有样本的回报(return)**来解决强化学习的任务。
类似于DP方法,MC求解也可以看作是一种广义的策略迭代过程,即先计算当前策略所对应的值函数,再利用值函数来改进当前策略,不断循环这两个步骤,从而得到最优值函数和最优策略。两个步骤细节上与DP不同,下面就慢慢道来。
蒙特卡洛方法的预测问题——策略评估
回想一下值函数的求解公式,即回报的期望:
v π ( s ) = E π [ G t ∣ S t = s ] v_{\pi}(s)=\mathbb{E}_{\pi}\left[G_{t} | S_{t}=s\right] vπ(s)=Eπ[Gt∣St=s]
但是蒙特卡洛方法在策略评估时不是求的回报的期望,而是使用经验平均回报(empirical mean return)。随着我们的样本越来越多,这个平均值是会收敛于期望的。
一个episode就可以看作是一个样本,假设对于状态 s s s ,给定策略 π \pi π ,要计算其值函数 v π ( s ) v_{\pi}(s) vπ(s) 。在一个episode中,每次状态 出现都称为一次visit,当然在一个episode中, s s s 可能出现多次。我们称第一次出现该状态为first-visit,因此first-visit蒙特卡洛方法(first-visit MC method)就是将所有第一次访问到 s s s 得到的回报求均值。根据大数定理,当样本足够大的时候,该均值就趋近于 v π ( s ) v_{\pi}(s) vπ(s)。顾名思义,every-visit蒙特卡洛方法(first-visit MC method)就是将所有访问到 s s s 得到的回报求均值。下面的算法就是估计 v π v_{\pi} vπ的first-visit MC方法:
说了这么多,估计状态值函数对于我们有用吗?回想一下DP方法中我们是怎么计算 v π ( s ) v_{\pi}(s) vπ(s) 的:
v k + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a v k ( s ′ ) ) v_{k+1}(s)=\sum_{a \in \mathcal{A}} \pi(a | s)\left(\mathcal{R}_{s}^{a}+\gamma \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}}^{a} v_{k}\left(s^{\prime}\right)\right) vk+1(s)=a∈A∑π(a∣s)(Rsa+γs′∈S∑Pss′av