时序差分方法求解强化学习任务——基于离轨策略的时序差分控制(Q-Learning方法)

时序差分方法求解强化学习任务——基于离轨策略的时序差分控制

目录

本节将介绍基于离轨策略的时序差分控制(Q-Learning算法),从算法执行过程角度对蒙特卡洛方法时序差分方法离轨策略中两者之间的差异。

回顾与归纳

蒙特卡洛方法的离轨策略

基于离轨策略的蒙特卡洛控制一节中,我们介绍了离轨策略求解蒙特卡洛控制过程。蒙特卡洛方法中的离轨策略比较麻烦的。原因在于:

  • 行为策略 b ( a ∣ s ) b(a \mid s) b(as)是专门用于生成样本的 任意软性策略,并且 b ( a ∣ s ) b(a \mid s) b(as)目标策略 π ( a ∣ s ) \pi(a \mid s) π(as)之间没有必然联系;
  • 为了在迭代过程中目标策略 π ( a ∣ s ) \pi(a \mid s) π(as)向正确的方向收敛 → \to 想方设法 π ( a ∣ s ) \pi(a \mid s) π(as) b ( a ∣ s ) b(a \mid s) b(as)建立联系——即重要型采样(Importance Sampling)。
  • 蒙特卡洛方法的离轨策略效率极低:必须保证策略改进后的目标策略 π ( S t ) \pi(S_t) π(St)(贪心算法选择出的动作)必须要和行为策略 b ( a ∣ s ) b(a \mid s) b(as)生成的情节在当前时刻的动作 A t A_t At相同,如果不同,情节遍历停止,情节内剩余的状态、动作信息全部作废——重新选择一条新的情节进行遍历。

综上,蒙特卡洛方法离轨策略的主要特点是:

  • 如果在完美情况下,使用离轨策略完完整整地遍历了一条情节——该情节中任意一个时刻的 π ( S t ) = A t \pi(S_t) = A_t π(St)=At;才能将一整条情节中出现的所有状态-动作二元组被更新一次;
  • 如果没有完整遍历一条情节:只有部分状态-动作二元组被更新了,情节的剩余部分作废了——我们不否认只要存在足够多的情节,必然能够将所有有意义的状态-动作二元组更新至最佳效果。但我们同样也要承认在整个迭代过程中丢失了相当多的情节信息

时序差分方法的特点

注意:这里只是0-步时序差分更新方法
相比于蒙特卡洛方法时序差分最核心的特点:每次迭代过程,它的行为策略 b ( a ∣ s ) b(a \mid s) b(as)产生的样本只有一个步骤样本只有唯一一个动作而不是整个情节
这种操作的优势

  • 我们能够肉眼可见的观察到策略在更新——更新频率明显加快,并且中间过程的存储空间也被释放掉了(这里说的是更新频率而不是更新幅度);
    注意:更新频率和更新速度是不同概念——更新频率快不代表更新速度就快。
  • 产生的这唯一的步骤必然能够使目标策略 π ( S t ) \pi(S_t) π(St)更新(因为在行为策略选择一个动作之后, S t + 1 , R t + 1 S_{t+1},R_{t+1} St+1,Rt+1是系统自动产生的,不受智能体控制——必然可以产生 Q ( S t + 1 , A t + 1 ) Q(S_{t+1},A_{t+1}) Q(St+1,At+1)更新 Q ( S t , A t ) Q(S_t,A_t) Q(St,At))——完全不存在浪费样本的情况。

离轨策略的时序差分控制

由于时序差分方法的特点——离轨策略相比于蒙特卡洛方法要简单得多。
不同于SARSA算法——使用相同的行为策略 b ( a ∣ s ) b(a \mid s) b(as)选择两次动作 A t , A t + 1 A_t,A_{t+1} At,At+1分别构建 Q ( S t , A t ) , Q ( S t + 1 , A t + 1 ) Q(S_t,A_t),Q(S_{t+1},A_{t+1}) Q(St,At),Q(St+1,At+1)来执行策略评估操作
Q ( S t , A t ) ← Q ( S t , A t ) + α ( R t + 1 + γ Q ( S t + 1 , A t + 1 ) − Q ( S t , A t ) ) Q(S_t,A_t) \gets Q(S_t,A_t) + \alpha (R_{t+1} + \gamma Q(S_{t+1},A_{t+1}) - Q(S_t,A_t)) Q(St,At)Q(St,At)+α(Rt+1+γQ(St+1,At+1)Q(St,At))
Q-Learning S t + 1 S_{t+1} St+1状态条件下从 Q − T a b l e Q-Table QTable直接选择状态-动作价值函数最大的结果 max ⁡ a Q ( S t + 1 , a ) \mathop{\max}\limits_{a}Q(S_{t+1},a) amaxQ(St+1,a) Q ( S t , A t ) Q(S_t,A_t) Q(St,At)进行策略评估
a ∗ = π ( S t + 1 ) = arg ⁡ max ⁡ a Q ( S t + 1 , a ) Q ( S t + 1 , a ∗ ) = Q ( S t + 1 , arg ⁡ max ⁡ a Q ( S t + 1 , a ) ) Q ( S t , A t ) ← Q ( S t , A t ) + α ( R t + 1 + γ Q ( S t + 1 , a ∗ ) − Q ( S t , A t ) ) \begin{aligned} a^* & = \pi(S_{t+1}) = \mathop{\arg\max}\limits_{a} Q(S_{t+1},a) \\ Q(S_{t+1},a^*) & = Q(S_{t+1},\mathop{\arg\max}\limits_{a} Q(S_{t+1},a)) \\ Q(S_t,A_t) & \gets Q(S_t,A_t) + \alpha (R_{t+1} + \gamma Q(S_{t+1},a^*) - Q(S_t,A_t)) \end{aligned} aQ(St+1,a)Q(St,At)=π(St+1)=aargmaxQ(St+1,a)=Q(St+1,aargmaxQ(St+1,a))Q(St,At)+α(Rt+1+γQ(St+1,a)Q(St,At))

策略改进部分和同轨策略的时序差分控制完全相同

计算最优策略的Q-Laerning算法表达如下:
这里注意一个新的点:学习率。学习率是‘增量更新过程中的’步长:通过修改学习率从而影响迭代过程中的‘收敛速度’。
学习率本质上是‘增量更新操作’的均值。只不过这里通过自定义的方式定义权重。

基于离轨策略的时序差分控制算法
输入
(Input)

无论是eposilon因子还是学习率,每一次重新执行情节都可以重新生成相应参数;
折扣系数 γ \gamma γ;学习率 α k ( k = 0 , 1 , 2 , . . . ) ; \alpha_k(k=0,1,2,...); αk(k=0,1,2,...); ϵ \epsilon ϵ因子(影响软性策略权重分布的超参数) ϵ k ( k = 0 , 1 , 2 , . . . ) \epsilon_k(k=0,1,2,...) ϵk(k=0,1,2,...)
初始化操作
(Initialization operation)
1. 对 ∀ s ∈ S , a ∈ A ( s ) \forall s \in \mathcal S,a \in \mathcal A(s) sS,aA(s),初始化 Q ( s , a ) ∈ R , Q ( s ⊤ , a ) = 0 Q(s,a) \in\mathbb R,Q(s^\top,a) = 0 Q(s,a)R,Q(s,a)=0
本质上(s,a)和(a,s)表示的信息是完全相同的,因此矩阵Q是一个对称矩阵,通常将上三角/下三角阵置0
2. π ( a ∣ s ) ← \pi(a \mid s) \gets π(as)基于初始化状态-动作价值函数 Q ( s , a ) Q(s,a) Q(s,a) ϵ − \epsilon- ϵ贪心策略。
算法过程
(Algorithmic Process)
1. repeat 对每一个情节: k = 0 , 1 , 2 , . . . k=0,1,2,... k=0,1,2,...
该情节和蒙特卡洛方法中的情节不同,蒙特卡洛方法中的情节指‘已经执行结束的完整情节’,而这里的情节仅是重新随机选择状态s -> 执行马尔可夫决策过程,直到状态达到终结状态结束。
2.    初始化状态 S S S
3.    根据策略 π ( a ∣ s ) \pi(a \mid s) π(as),在 S S S状态下选择动作 A A A
         - 以概率 1 − ϵ k 1 - \epsilon_k 1ϵk,选择动作 a ∈ arg ⁡ max ⁡ a ′ Q ( S , a ′ ) a \in \mathop{\arg\max}\limits_{a'}Q(S,a') aaargmaxQ(S,a)
         - 以概率 ϵ k ∣ A ( S ) ∣ \frac{\epsilon_k}{\mid\mathcal A(S)\mid} A(S)ϵk,在 A ( s ) \mathcal A(s) A(s)中均匀选择动作;
4.    repeat
5.      执行动作 A A A,达到状态 S ′ S' S,并得到奖励 R R R;
6.      根据 π ( a ∣ s ) \pi(a \mid s) π(as),在状态 S ′ S' S状态下选择 A ′ A' A
          - 以概率 1 − ϵ k 1 - \epsilon_k 1ϵk,选择动作 a ∈ arg ⁡ max ⁡ a ′ Q ( S ′ , a ′ ) a \in \mathop{\arg\max}\limits_{a'}Q(S',a') aaargmaxQ(S,a)
          - 以概率 ϵ k ∣ A ( S ′ ) ∣ \frac{\epsilon_k}{\mid\mathcal A(S')\mid} A(S)ϵk,在 A ( S ′ ) \mathcal A(S') A(S)中均匀选择动作;
7.      Q ( S t , A t ) ← Q ( S , A ) + α ( R + γ Q ( S ′ , A ′ ) − Q ( S , A ) ) Q(S_t,A_t) \gets Q(S,A) + \alpha (R + \gamma Q(S',A') - Q(S,A)) Q(St,At)Q(S,A)+α(R+γQ(S,A)Q(S,A))
8.     A ∗ ← arg ⁡ max ⁡ a Q ( S , a ) A^* \gets \mathop{\arg\max}\limits_{a}Q(S,a) AaargmaxQ(S,a)
9.     for a ∈ A ( s ) a \in \mathcal A(s) aA(s)
10.       if a = A ∗ a = A^* a=A
11.           π ( a ∣ S ) = 1 − ϵ k + ϵ k ∣ A ( S ) ∣ \pi(a \mid S) = 1 - \epsilon_k + \frac{\epsilon_k}{\mid\mathcal A(S)\mid} π(aS)=1ϵk+A(S)ϵk
12.       else
13.           π ( a ∣ S ) = ϵ k ∣ A ( S ) ∣ \pi(a \mid S) = \frac{\epsilon_k}{\mid\mathcal A(S)\mid} π(aS)=A(S)ϵk
14.     end for
14.      S ← S ′ , A ← A ′ S \gets S',A \gets A' SS,AA
14.   until S = S T S = S^T S=ST
      至此,一次情节遍历结束,重新执行下一次情节。
输出结果 Q ∗ = Q Q_* = Q Q=Q π ∗ = π \pi_* = \pi π=π

后知后觉

在介绍时序差分方法的特点时,并没有说时序差分方法的离轨策略没有使用重要性采样操作。即便从算法的迭代过程中确实没有发现重要性采样的影子。在介绍这一系列的前提就是基于0-步时序差分更新(每次迭代只执行一步 → \to 每次采样只有唯一一个动作)。但在 n-步时序差分更新存在重要性采样操作。在后续介绍n-步时序差分方法时再详细介绍。

下一节将介绍期望SARSA算法

相关参考:
【强化学习】(Q-Learning) 时序差分-离轨策略TD控制
深度强化学习原理、算法pytorch实战 —— 刘全,黄志刚编著

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
Q-learning和SARSA都属于时序差分强化学习方法,而不是蒙特卡洛强化学习方法时序差分强化学习是一种结合了动态规划和蒙特卡洛方法强化学习方法。它通过使用经验数据进行增量式的更新,同时利用了当前和未来的估计值来逼近最优值函数。 具体来说,Q-learning和SARSA都是基于Q值函数的时序差分强化学习算法。 1. Q-learning:Q-learning是一种基于动态规划的无模型强化学习算法。它使用了时序差分(TD)方法,通过不断迭代更新Q值函数的估计值,使其逼近最优的Q值。Q-learning算法通过将当前状态和动作的估计值与下一个状态和动作的最大估计值相结合,来更新Q值函数的估计值。 2. SARSA:SARSA是一种基于时序差分强化学习算法,也是一种模型-free的强化学习算法。SARSA算法使用了时序差分方法,通过不断迭代更新Q值函数的估计值。与Q-learning不同的是,SARSA算法采用了一个策略(Policy)来决定下一个动作,并在更新Q值时使用下一个动作的估计值。 时序差分强化学习方法与蒙特卡洛强化学习方法相比,具有更高的效率和更好的适应性。它可以在每个时间步骤中进行更新,不需要等到任务结束后才进行更新,从而更快地收敛到最优策略。而蒙特卡洛强化学习方法则需要等到任务结束后才能获取完整的回报信息,进行全局更新。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静静的喝酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值