• 蒙特卡洛树搜索方法介绍——算力聚焦方法(一) Dyna-Q+


    引言

    上一节基于规划学习的差异性介绍了 D y n a − Q Dyna-Q DynaQ架构的具体算法过程。但从真实环境的角度观察, D y n a − Q Dyna-Q DynaQ架构同样存在各种问题,本节从 D y n a − Q Dyna-Q DynaQ架构的问题出发,介绍算力聚焦的本质具体的算力聚焦方法

    回顾:Dyna-Q角度观察规划与学习的结合过程

    D y n a − Q Dyna-Q DynaQ角度观察规划与学习的结合过程:

    • 学习过程 中,结合非终结状态 S t S_t St和对应在 Q − T a b l e Q-Table QTable中的 Q ( S t , a ) ( a ∈ A ( S t ) ) Q(S_t,a)(a \in \mathcal A(S_t)) Q(St,a)(aA(St)),构建一个基于 ϵ − \epsilon- ϵ贪心方法的策略 π \pi π
    • 从策略 π \pi π中选择一个动作—— A t A_t At
    • 执行动作 A t A_t At,通过状态转移过程,得到一组真实样本—— S t + 1 , R t + 1 S_{t+1},R_{t+1} St+1,Rt+1;

    将上述过程称为 产生真实经验(Real Experience)。其原因在于 S t + 1 , R t + 1 S_{t+1},R_{t+1} St+1,Rt+1真实样本,生成该样本的模型是 真实的环境模型——这个模型我们是未知的。

    • 使用 Q − L e a r n i n g Q-Learning QLearning方法对 Q − T a b l e Q-Table QTable进行更新:
      Q ( S t , A t ) ← Q ( S t , A t ) + α [ R t + 1 + γ max ⁡ a Q ( S t + 1 , a ) − Q ( S t , A t ) ] Q(S_t,A_t) \gets Q(S_t,A_t) + \alpha [R_{t+1} + \gamma \mathop{\max}\limits_{a} Q(S_{t+1},a) - Q(S_t,A_t)] Q(St,At)Q(St,At)+α[Rt+1+γamaxQ(St+1,a)Q(St,At)]

    我们可以理解成当前时刻状态-动作对 ( S t , A t ) (S_t,A_t) (St,At)真实环境之间的一次交互,并将交互产生的经验 Q − T a b l e Q-Table QTable对应 ( S t , A t ) (S_t,A_t) (St,At)位置进行一次常规更新。称该步骤为 直接强化学习(Direct Reinforcement Learning)。

    • 将本次产生的真实样本存储到模拟环境对应位置 M o d e l ( S t , A t ) Model(S_t,A_t) Model(St,At)中。
      M o d e l ( S t , A t ) ← S t + 1 , R t + 1 Model(S_t,A_t) \gets S_{t+1},R_{t+1} Model(St,At)St+1,Rt+1
      这里为了简化运算,不考虑任何‘模型偏差’,但模型学习本身目的是‘近似真实环境’,因此理想状态下的 M o d e l ( S t , A t ) Model(S_t,A_t) Model(St,At)是一个概率分布,而不是确定性的样本结果。

    对真实样本中的信息进行 学习,并归纳成模型。称为 模型学习(Model Learning)。

    • 规划规程 中,从观测过的状态组成的状态集合中,随机选择一个状态 s s s
    • 基于已选择的动作 s s s,从 s s s状态下 采取过的动作 中(由于该动作必然是发生过的,因此该动作是有意义的)随机选择一个动作 a a a
    • 执行动作 a a a,根据 M o d e l Model Model模型的状态转移过程,得到一组模拟样本 ( s ′ , r ) (s',r) (s,r)

    将上述过程称为 产生模拟经验(Simulated Experience) ,区别于真实经验 s , r s,r s,r模拟样本,它并没有真实发生过,产生它的模型是 M o d e l Model Model

    • 使用 Q − L e a r n i n g Q-Learning QLearning方法对 Q − T a b l e Q-Table QTable进行更新:
      Q ( s , a ) ← Q ( s , a ) + α [ r + γ max ⁡ a Q ( s ′ , a ) − Q ( s , a ] Q(s,a) \gets Q(s,a) + \alpha [r + \gamma \mathop{\max}\limits_{a} Q(s',a) - Q(s,a] Q(s,a)Q(s,a)+α[r+γamaxQ(s,a)Q(s,a]

    区别于学习过程中的直接强化学习,由于 ( s , r ) (s,r) (s,r)是模拟样本,因此称该步骤为 间接强化学习(Indirect Reinforcement Learning)。

    Dyna-Q算法中的缺陷

    求解强化学习任务的核心矛盾

    核心矛盾可以理解为:有限的算力资源 V S \mathcal V\mathcal S VS 无限的状态动作空间(State-Action Space)。

    • 算力资源的有限性:

      • 时间维度:算法的计算过程是有穷的,它不能无限期地计算下去——计算机的CPU的计算资源有限的;
      • 空间维度:即内存、存储空间。同理,有于内存的有限性,不可能将算法产生的中间步骤无限地存储在内存当中。

      D y n a − Q Dyna-Q DynaQ算法的角度观察

      • D y n a − Q Dyna-Q DynaQ算法中的循环,无论是遍历情节的主循环,还是学习过程、规划过程嵌套循环——构成消耗CPU计算资源的主要因素
      • 无论是学习过程还是规划过程,都要对 Q − T a b l e Q-Table QTable中的元素进行更新。以及 M o d e l Model Model各状态-动作对的元素进行更新,这些步骤都需要存储在内存(Memory)中。
    • 状态-动作空间的无限性:
      如果强化学习任务足够复杂——复杂到状态-动作对趋近于无限(可以将状态、动作看作连续型随机变量),至此,我们同样需要 趋近于无限的时间 去求解这个任务,这样自然和算法的有穷性相矛盾。

    如何缓和矛盾——算力聚焦

    回顾 D y n a − Q Dyna-Q DynaQ算法过程,算力消耗主要集中在规划过程中的 n n n次规划

    • 状态 s s s的选择只是从访问过的状态组成的集合中随机选择的一个结果;
    • 动作 a a a的选择是从状态 s s s采取过的动作组成的集合中随机选择的一个结果;

    由于是随机选择——各元素被选择的概率相同,这将导致一个问题:这种纯随机的方式导致后续的 Q − t a b l e Q-table Qtable更新效率非常低。
    这里的‘元素’是指能够被采样出来的状态和动作,简写为元素。后面同理

    我们希望被选择的状态-动作对 ( s , a ) (s,a) (s,a) 有意义——将各状态-动作对通过权重的方式进行区分——使用 算力聚焦思想 区分状态-动作对,使集合中的某些元素获取更高的算力等级;反之,对应某些元素获取较低的算力等级

    算力聚焦自身的矛盾

    区分状态-动作对 这件事情本身就是一个难点:

    • 确实想要使用算力聚焦思想使规划过程效率提升,即 算力总量不变的情况下,能够学习出更加优秀的 Q − T a b l e Q-Table QTable
    • 于此同时,我们并不想通过算力聚焦思想将集合中各元素之间的权重差距相差的太厉害——可能存在算力只聚焦在若干个权重较高的元素中,而导致某些元素被采样的概率更低——甚至低于均匀分布的概率
      这种情况可能会导致:被忽略的元素(状态-动作对)中可能存在比较重要的信息

    这可以理解为对算力聚焦 的考量:

    • 确实需要算力聚焦思想去处理随机选择出现的问题;
      这个概念被称为'利用'(Exploitation)。
    • 算力聚焦不要太强——同样可能存在存在重要信息的状态-动作对,但因算力聚焦的影响,被选择的概率较低的情况。
      这个概念被称为'探索'(Exploration)。

    上述两种情况之间是 存在矛盾的,但我们同样希望 两种情况都能兼顾

    探索(Exploration)与利用(Exploitation)

    以状态 s s s的采样过程为例,重点观察 D y n a − Q Dyna-Q DynaQ规划过程中状态 s s s的采样过程:

    • 状态 s s s的选择只是从访问过的状态组成的集合中随机选择的一个结果;

    分析:上述过程中主要包含两个重点缺陷:

    • 随机选择
      利用 (Exploitation)做得不足、实现的不好,各状态间没有区分性,需要使用算力聚焦思想

    • 访问过的状态中选择:
      假设出现一种情况:在 学习过程 中,由于学习的都是真实经验,可能存在某些状态-动作对学习过程中从未发生过

      从而导致构建的 样本模型 M o d e l Model Model中对应的状态-动作对的结果(转移后的状态、对应的奖励)从未更新过

      这种情况下,在规划过程中,被访问的(状态、动作)集合 中自然也不会出现随机出这种组合

      但这种组合 并不意味着不重要——核心原因只是因为真实的环境模型针对某个状态-动作对出现的概率确实低;
      上述例子虽然是‘真实环境模型’导致的结果,并不是‘算力聚焦’的干预,但造成的结果是相同的。

      如果使用 D y n a − Q Dyna-Q DynaQ中的随机选择方法——如果 学习过程中 真实环境模型没有访问到的状态-动作对,那么 规划过程中必然不会访问到,这导致 探索(Exploration)同样做的不足、实现的不好

    至此, D y n a − Q Dyna-Q DynaQ算法的缺陷被指出,归结核心就是探索与利用问题

    Dyna-Q+算法

    由于 探索和利用之间的矛盾性,暂时不存在完全解决探索与利用问题的完美算法——但也衍生了各种各样的算法。这里不同的算法对于求解问题存在不同偏好(bias),不同偏好从而影响 算力聚焦的方向。这里将介绍基于 D y n a − Q Dyna-Q DynaQ的第一种改进方法 D y n a − Q + Dyna-Q+ DynaQ+

    假设构建

    D y n a − Q + Dyna-Q+ DynaQ+基于的假设:对于某一个状态-动作对,如果在真实环境中从未访问过或者曾经访问过但很有没有再次访问过了,那么该状态-动作对的不确定性增加了,具体是满足上述条件的状态的环境模型发生变化的概率增大了

    对假设的解析

    在解析这句话之前,需要重申一次核心思路:动态特性函数 P ( s ′ , r ∣ s , a ) P(s',r \mid s,a) P(s,rs,a)不受智能体主观意志的变化而变化。因此,增大的不是环境模型的概率 P ( s ′ , r ∣ s , a ) P(s',r \mid s,a) P(s,rs,a),而是环境模型发生变化的概率

    采用什么方法能够达到该效果?——具体思路:增加转移至该状态对应的奖励结果,具体方式是构建一个关于时间( τ \tau τ)与奖励结果 r r r的函数:
    r ← r + κ τ r \gets r + \kappa \sqrt \tau rr+κτ

    其中 τ \tau τ表示当前时刻距离上次访问该状态之间的时间间隔 τ \tau τ越大,状态被冷落(未被访问) 的时间越长,对应的奖励结果 r r r越大,从而使该状态被访问的 频率 增加。

    核心解释
    为什么增大了奖励结果 → \to 该状态被访问的 频率会增加

    虽然没有办法控制动态特性函数 P ( s ′ , r ∣ s , a ) P(s',r \mid s,a) P(s,rs,a),但是我们可以修改策略,影响当前状态选择的动作。我们选择动作的基准是策略改进的贪心算法
    a ∗ = arg ⁡ max ⁡ a Q π ( s , a ) Q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] a^* = \mathop{\arg\max}\limits_{a} Q_{\pi}(s,a) \\ Q_{\pi}(s,a) = \mathbb E_{\pi}[G_t \mid S_t = s,A_t = a] a=aargmaxQπ(s,a)Qπ(s,a)=Eπ[GtSt=s,At=a]

    如果增大了某状态的奖励结果上一状态转移至该状态的回报也会增加,从而使上一状态的状态价值函数 V π ( s ) V_{\pi}(s) Vπ(s)也会增大
    G t = R t + 1 + γ R t + 2 + . . . V π ( s ) = E π [ G t ∣ S t = s ] G_t = R_{t+1} + \gamma R_{t+2} + ...\\ V_\pi(s) = \mathbb E_{\pi}[G_t \mid S_t = s] Gt=Rt+1+γRt+2+...Vπ(s)=Eπ[GtSt=s]

    上一状态价值函数继续影响上上个状态状态-动作价值函数 Q ( s , a ) Q(s,a) Q(s,a)。以此类推,由于选择的动作满足贪心策略,一定会朝着 Q ( s , a ) Q(s,a) Q(s,a)增大的方向进行状态转移,并且随着奖励增大,选择状态转移的频率越来越高
    通俗理解:只要存在动作能够转移到那个状态,随着状态奖励的增加,后续可能会‘毫不犹豫地选择Q(s,a)大的动作’,选择并执行该动作后,必然要执行状态转移。虽然动态特性函数没有变化过,但抵不过状态转移的次数多,总会有一次状态转移过程中‘动态特性函数选择该状态’, τ \tau τ置零,并重新开始计时。

    下一节将介绍其他的算力聚焦方法。

    相关参考:
    8.3 当模型错了
    【强化学习】规划与学习-算力聚焦

  • 相关阅读:
    [附源码]Python计算机毕业设计Django基于web的建设科技项目申报管理系统
    字节跳动后端面经(19)
    JAVA计算机毕业设计-物流管理系统-(附源码、数据库)
    sqoop笔记(安装、配置及使用)
    c# 4.8 实现Windows 定时任务计划(Task Scheduler)
    【Leetcode】758. Bold Words in String
    tail命令应用
    iPortal如何灵活设置用户名及密码的安全规则
    C语言编译原理
    中国信息通信研究院发布《中国金融科技生态白皮书》(2023)
  • 原文地址:https://blog.csdn.net/qq_34758157/article/details/126156191