- 目录
- 回顾:试探性出发假设的缺陷
- 如何避免试探性出发假设
- 试探性出发假设的问题
- 改进思路
上一节介绍了基于试探性出发假设的蒙特卡洛控制,本节将针对试探性出发假设带来的问题,如何绕过该假设的严苛条件,从而达到试探所有可能发生的状态-动作二元组的目标。
回顾:试探性出发假设的缺陷在蒙特卡洛方法求解强化学习任务——蒙特卡洛评估基本介绍一节中提到,试探性出发假设在蒙特卡洛方法近似求解 q π ( s , a ) q_\pi(s,a) qπ(s,a)过程中保证了状态-动作二元组在被采样的情节集合中被访问到(存在非零概率将对应样本采样出来)。 但是,试探性出发假设的缺陷也是非常明显的:假设过强,对样本产生的约束性极高。
- 任意一个状态-动作二元组均以非零概率被采样;
- 被采样的状态-动作二元组作为某情节的起始点;
在真实环境条件下,试探性出发假设可能根本无法实现。
如何避免试探性出发假设我们本质上的需求是任意一个状态-动作二元组能够在采样过程中以非零概率被选中,出现在样本集合内。从而实现对样本的蒙特卡洛操作(蒙特卡洛评估,控制)。
针对试探性出发假设在真实环境中不合理的情况,如何避免试探性出发假设,从而达到我们的需求?换句话说,我们希望智能体能够持续不断的选择所有可能的动作。
试探性出发假设的问题回顾一下基于试探性出发假设的蒙特卡洛控制算法:
- 根据策略 π ( s ) \pi(s) π(s),生成一条情节序列; S 0 , A 0 , R 1 , S 1 , A 1 , R 2 , . . . , S T − 1 , A T − 1 . R T . S T S_0,A_0,R_1,S_1,A_1,R_2,...,S_{T-1},A_{T-1}.R_T.S_T S0,A0,R1,S1,A1,R2,...,ST−1,AT−1.RT.ST
- 遍历该情节序列,并计算回报结果:情节序列的每一步的回报结果(Return)都是一个样本,这些样本在不同的状态-动作二元组 ( s , a ) (s,a) (s,a)中生效; G ← γ G + R t + 1 G \gets \gamma G + R_{t+1} G←γG+Rt+1
- 针对上述样本,使用增量更新方式对各状态-动作二元组 ( s , a ) (s,a) (s,a)的状态-动作价值函数进行更新; Q ( S t , A t ) ← Q ( S t , A t ) + 1 c o u n t ( S t , A t ) ( G − Q ( S t , A t ) ) Q(S_t,A_t) \gets Q(S_t,A_t) + \frac{1}{count(S_t,A_t)}(G - Q(S_t,A_t)) Q(St,At)←Q(St,At)+count(St,At)1(G−Q(St,At))
- 策略改进:得到更新后的新策略 π ( S t ) \pi(S_t) π(St)。 π ( S t ) ← arg max a Q ( S t , a ) \pi(S_t) \gets \mathop{\arg\max}\limits_{a} Q(S_t,a) π(St)←aargmaxQ(St,a)
我们发现,策略改进后的新策略
π
(
S
t
)
\pi(S_t)
π(St)重新作为下一次迭代中情节序列的生成策略。由于该策略都是基于贪心条件得到的策略,它的具体格式如下:
π
(
S
t
)
=
{
1
i
f
a
=
arg
max
a
Q
(
S
t
,
a
)
0
e
l
s
e
\begin{aligned} \pi(S_t) = \left\{ \begin{array}{ll} 1\quad if \quad a= \mathop{\arg\max}\limits_{a}Q(S_t,a)\\ 0\quad else \end{array} \right. \end{aligned}
π(St)={1ifa=aargmaxQ(St,a)0else 使用基于贪心条件得到的策略去生成情节,这样生成的新情节和上一次迭代产生的情节相比差异是有限的。 换句话说,贪心条件产生的策略使智能体对其他可能发生的动作的试探起到了极强的抑制作用。 理解起来也很简单:根据上式,在状态
S
t
S_t
St固定的条件下,贪心策略将所有权重全部放在了状态价值函数最高的动作上; 在情节的生成过程中,每一步你只能唯一选择一个动作,你没得选..
能否使用一些方法,我们在策略改进不动的基础上,使生成情节的策略丰富起来?(这个丰富的意思是指,不否认策略改进的最优策略(动作),但是也需要其他动作存在较小概率被选择到,从而达到智能体对其他动作进行试探的一个效果)
以上述逻辑为目标,我们将蒙特卡洛控制算法中的策略分成两类:
- 行动策略(behaviour policy) → b ( a ∣ s ) \to b(a \mid s) →b(a∣s):用于生成样本的策略;
- 目标策略(target policy) → π ( a ∣ s ) \to \pi(a \mid s) →π(a∣s):蒙特卡洛操作中待改进的策略;
为了能够达到上述生成情节的策略丰富起来的目标,需要对 b ( a ∣ s ) b(a\mid s) b(a∣s)施加一些要求: b ( a ∣ s ) b(a\mid s) b(a∣s) 绝对不能是确定性策略(确定性策略在马尔可夫奖励过程(MRP)中介绍到)。 示例如下: 假设当前状态 s 1 s_1 s1条件下,存在3种动作可以选择: A ( s 1 ) = { a 1 , a 2 , a 3 } \mathcal A(s_1) = \{a_1,a_2,a_3\} A(s1)={a1,a2,a3} 如果 b ( a ∣ s 1 ) b(a \mid s_1) b(a∣s1)是确定性策略 → \to → 设定: b ( a ∣ s 1 ) = ( b ( a 1 ∣ s 1 ) b ( a 2 ∣ s 1 ) b ( a 3 ∣ s 1 ) ) = ( 0 1 0 ) b(a \mid s_1)= \begin{pmatrix} b(a_1 \mid s_1) \\ b(a_2 \mid s_1) \\ b(a_3 \mid s_1)\\ \end{pmatrix}= \begin{pmatrix} 0 \\ 1 \\ 0 \\ \end{pmatrix} b(a∣s1)=⎝⎛b(a1∣s1)b(a2∣s1)b(a3∣s1)⎠⎞=⎝⎛010⎠⎞ 如果出现上述情况 → \to → 只要是状态 s 1 s_1 s1,必然选择动作 a 2 a_2 a2; 关于状态-动作二元组 ( s 1 , a 1 ) , ( s 1 , a 3 ) (s_1,a_1),(s_1,a_3) (s1,a1),(s1,a3)的回报样本: G t ( s 1 , a 1 ) , G t ( s 1 , a 3 ) G_{t(s_1,a_1)},G_{t(s_1,a_3)} Gt(s1,a1),Gt(s1,a3) 无论生成多少个情节,(该样本)永远不会出现在样本集合中,关于 ( s 1 , a 1 ) , ( s 1 , a 3 ) (s_1,a_1),(s_1,a_3) (s1,a1),(s1,a3)的状态-动作价值函数也是不存在的(一直都是初始化状态的状态-动作价值函数结果) → \to → 没有办法去更新它们。
因此,
b
(
a
∣
s
)
b(a \mid s)
b(a∣s)是一个随机策略,并且不是一般的随机策略,它需要是一个软性策略——在状态固定的条件下,对于该状态有意义的所有动作在该状态下 被选择的概率
>
0
> 0
>0恒成立。 一旦某一动作被选择概率=0 -> 和上面的确定性策略一样,该样本永远不会出现在样本集合中,没有办法去更新该动作对应的策略。
∀
s
∈
S
,
a
∈
A
(
s
)
→
b
(
a
∣
s
)
>
0
\forall s \in \mathcal S,a \in \mathcal A(s) \to b(a \mid s)>0
∀s∈S,a∈A(s)→b(a∣s)>0
只要将用于生成样本的行动策略设置为软性策略 → \to → 避免试探性出发假设的条件下,达到试探所有可能动作的效果。
下一节将正式介绍基于非试探性出发假设的两种方法:同轨策略(on-policy)和离轨策略(off-policy),并介绍它们之间的关联关系和差别。
相关参考: 【RL Notes】 离轨策略 【强化学习】蒙特卡洛方法-同轨VS离轨 深度强化学习原理、算法pytorch实战 —— 刘全,黄志刚编著