【强化学习】强化学习问题的数学模型与三种求解方法

强化学习笔记,内容来自刘建平老师的博客

强化学习

  • 强化学习在机器学习中的位置

    ​ 强化学习是和监督学习,非监督学习并列的第三种机器学习方法。

    ​ 强化学习来和监督学习最大的区别是它没有监督学习已经准备好的训练数据输出值。强化学习只有奖励值,但是这个奖励值和监督学习的输出值不一样,它不是事先给出的,而是延后给出的。同时,强化学习的每一步与时间顺序前后关系紧密。而监督学习的训练数据之间一般都是独立的,没有这种前后的依赖关系。

    ​ 强化学习和非监督学习的区别。也还是在奖励值这个地方。非监督学习是没有输出值也没有奖励值的,它只有数据特征。同时和监督学习一样,数据之间也都是独立的,没有强化学习这样的前后依赖关系。

  • 强化学习的建模

    ​ 两个主体: Agent、Environment

    ​ 状态、行动和策略: Agent依据策略Policy做出在当前状态State下采取的行动Action,环境Environment给出相应的新状态State ‘

    ​ 状态转化模型: 相当于一个概率状态机、一个概率模型,即在状态s下采取动作a,转到下一个状态s′的概率,表示为Pss′a

    ​ 两种奖励: 行动价值Action_Value(当前奖励+衰减折算后的后续奖励,有远见性)、行动奖励Reward(仅当前的奖励)

    ​ 衰减因子与探索率: 衰减因子决定Action_Value的远见性,探索率决定Agent采取Action时的创新性(ε-greedy)

 
 
 
 

数学模型:马尔可夫决策过程MDP

  • 引入MDP的原因

    ​ 假设强化学习模型各个变量具有马尔可夫性(无后效性),使状态转化模型成为马尔可夫过程,从而简化模型的优化。

    ​ 状态转移: Pass′ = E(St+1=s′|St=s,At=a)

    ​ Policy: π(a|s) = P(At=a|St=s)

    ​ 价值函数: vπ(s) = Eπ(Gt|St=s) ,其中Gt代表收获, 是从某一个状态St开始采样直到终止状态时所有奖励的有衰减的之和。

  • 价值函数与贝尔曼方程
    状态价值函数

    image-20210716131510603
    ​ 可以得到在t时刻状态St和t+1时刻状态St+1之间的递推关系:
    image-20210716131641656 (贝尔曼方程)

    动作价值函数

    image-20210716131541968
    ​ 可以得到在t时刻动作At和t+1时刻动作At+1之间的递推关系:
    image-20210716131658393 (贝尔曼方程)

    状态价值与动作价值的递推关系

    ​ 状态价值函数是所有动作价值函数基于策略π的期望:
    image-20210716131353857
    ​ 利用上贝尔曼方程,也很容易从状态价值函数vπ(s)vπ(s)表示动作价值函数qπ(s,a)qπ(s,a),即:
    image-20210716131408130
    ​ 总而言之,状态 / 动作价值有两部分相加组成,第一部分是即时奖励,第二部分是环境所有可能出现的下一个状态的概率乘以该下一状态的状态价值,最后求和,并加上衰减。两式联立得:
    image-20210716131312245

  • 最优价值函数

    ​ 解决强化学习问题意味着要寻找一个最优的策略让个体在与环境交互过程中获得始终比其它策略都要多的收获,这个最优策略我们可以用 π∗表示。一旦找到这个最优策略π∗,那么我们就解决了这个强化学习问题。一般来说,比较难去找到一个最优策略,但是可以通过比较若干不同策略的优劣来确定一个较好的策略,也就是局部最优解。

    ​ 而策略的优劣可由价值函数反映,因此最优策略——>最优价值函数:

    ​ 1. 定义最优状态价值函数是所有策略下产生的众多状态价值函数中的最大者:
    image-20210716132150428
    ​ 2. 定义最优动作价值函数是所有策略下产生的众多动作状态价值函数中的最大者:
    image-20210716132204639
    ​ 3. 定义最优的策略函数:

    image-20210716132433456

 
 
 
 

解法一:动态规划DP求解(Model-based)

  • 强化学习两个基本问题与动态规划
    预测问题

    ​ 给定:状态集S, 动作集A, 模型状态转化概率矩阵P, 即时奖励R,衰减因子γ, 策略π, 求解该策略的状态价值函数v(π)

    控制问题

    ​ 给定:状态集S, 动作集A, 模型状态转化概率矩阵P, 即时奖励R,衰减因子γ, 求解最优策略π和最优状态价值函数v(π)

    动态规划

    ​ 问题的最优解可以由若干小问题的最优解构成,即通过寻找子问题的最优解来得到问题的最优解。

    ​ 可以找到子问题状态之间的递推关系,通过较小的子问题状态递推出较大的子问题的状态。

贝尔曼期望方程

image-20210716134405776

  • 策略评估求解预测问题(基于策略)

    ​ 从任意一个状态价值函数开始,依据给定的策略,结合贝尔曼期望方程、状态转移概率和奖励同步迭代更新状态价值函数,直至其收敛,得到该策略下最终的状态价值函数。(反复迭代至平稳分布)

  • 策略迭代求解控制问题(基于策略)

    ​ 根据之前基于任意一个给定策略评估得到的状态价值来及时调整动作策略,这个方法叫做策略迭代(Policy Iteration)。最简单的调整方法就是贪婪法:个体在某个状态下选择的行为是其能够到达后续所有可能的状态中状态价值最大的那个状态。

    ​ 在策略迭代过程中,循环进行两部分工作,第一步是使用当前策略π∗评估计算当前策略的最终状态价值v∗,第二步是根据状态价值v∗根据一定的方法(比如贪婪法)更新策略π∗,接着回到第一步,一直迭代下去,最终得到收敛的策略π∗和状态价值v∗。

  • 价值迭代求解控制问题(基于价值)

    ​ 相比策略迭代,不需要等到状态价值收敛才调整策略,而是随着状态价值的迭代及时调整策略, 这样可以大大减少迭代次数。此时的状态价值的更新方法也和策略迭代不同,此时贝尔曼方程迭代式子如下:
    image-20210716135302344
    ​ 可见由于策略调整,现在价值每次更新倾向于贪婪法选择的最优策略对应的后续状态价值,这样收敛更快。

  • 异步动态规划算法

    ​ 上面几个都是同步动态规划算法,即每轮迭代我会计算出所有的状态价值并保存起来,在下一轮中使用这些保存起来的状态价值来计算新一轮的状态价值。另一种动态规划求解是异步动态规划算法,在这些算法里,每一次迭代并不对所有状态的价值进行更新,而是依据一定的原则有选择性的更新部分状态的价值,这类算法有自己的一些独特优势,当然有额会有一些额外的代价。

  1. 原位动态规划 (in-place dynamic programming):

    ​ 此时我们不会另外保存一份上一轮计算出的状态价值。而是即时计算即时更新。这样可以减少保存的状态价值的数量,节约内存。代价是收敛速度可能稍慢。

  2. 优先级动态规划 (prioritized sweeping):

    ​ 该算法对每一个状态进行优先级分级,优先级越高的状态其状态价值优先得到更新。通常使用贝尔曼误差来评估状态的优先级,贝尔曼误差即新状态价值与前次计算得到的状态价值差的绝对值。这样可以加快收敛速度,代价是需要维护一个优先级队列。

  3. 实时动态规划 (real-time dynamic programming):

    ​ 实时动态规划直接使用个体与环境交互产生的实际经历来更新状态价值,对于那些个体实际经历过的状态进行价值更新。这样个体经常访问过的状态将得到较高频次的价值更新,而与个体关系不密切、个体较少访问到的状态其价值得到更新的机会就较少。收敛速度可能稍慢。

小结

​ 动态规划算法主要就是利用贝尔曼方程来迭代更新状态价值,用贪婪法之类的方法迭代更新最优策略。使用全宽度(full-width)的回溯机制来进行状态价值的更新,也就是说,无论是同步还是异步动态规划,在每一次回溯更新某一个状态的价值时,都要回溯到该状态的所有可能的后续状态,并利用贝尔曼方程更新该状态的价值。这种全宽度的价值更新方式对于状态数较少的强化学习问题还是比较有效的,但是当问题规模很大的时候,动态规划算法将会因贝尔曼维度灾难而无法使用。因此我们还需要寻找其他的针对复杂问题的强化学习问题求解方法。

 
 
 
 

解法二:蒙特卡罗法MC求解(Model-free)

  • Model-free的强化学习问题定义

    ​ 在动态规划法中,模型状态转化概率矩阵PP始终是已知的,即MDP已知,一般称这样的强化学习问题为Model-based的强化学习问题。有很多强化学习问题,我们没有办法事先得到模型状态转化概率矩阵P,这时如果仍然需要我们求解强化学习问题,那么这就是不基于模型的强化学习问题了。它的两个问题一般的定义是:

    预测问题

    ​ 给定强化学习的5个要素:状态集S, 动作集A, 即时奖励R,衰减因子γ, 给定策略π, 求解该策略的状态价值函数v(π)

    控制问题

    ​ 给定强化学习的5个要素:状态集S, 动作集A, 即时奖励R,衰减因子γ, 探索率ϵ,求解最优的动作价值函数q∗和最优策略π∗

  • 蒙特卡罗法求解特点

    ​ 蒙特卡罗法通过采样若干经历完整的状态序列(episode)来估计状态的真实价值。所谓的经历完整,就是这个序列必须是达到终点的。比如下棋问题分出输赢,驾车问题成功到达终点或者失败。有了很多组这样经历完整的状态序列,我们就可以来近似的估计状态价值,进而求解预测和控制问题了。

    ​ 采样得到的完整序列示例如下:
    image-20210716143009904
      蒙特卡罗法一是和动态规划比,它不需要依赖于模型状态转化概率。二是它从经历过的完整序列学习,完整的经历越多,学习效果越好。

  • 蒙特卡罗法求解预测问题(基于价值)

    ​ 对于蒙特卡罗法来说,如果要求某一个状态的状态价值,只需要求出所有的完整序列(采到的样本)中该状态出现时候的收获再取平均值即可近似求解:

image-20210716141439457

​ 动作价值求解方法同上。

算法优化

​ 1. 同样一个状态可能在一个完整的状态序列中重复出现,第一种应对方法是仅把状态序列中第一次出现该状态时的收获值 纳入到收获平均值的计算中;另一种是针对一个状态序列中每次出现的该状态,都计算对应的收获值并纳入到收获平均值的计算 中。两种方法对应的蒙特卡罗法分别称为:首次访问(first visit) 和每次访问(every visit) 蒙特卡罗法。第二种方法比第一种的计 算量要大一些,但是在完整的经历样本序列少的场景下会比第一种方法适用。

​ 2. 累进更新平均值(incremental mean)。在上面预测问题的求解公式里,有一个average的公式,意味着要保存所有该状 态的收获值之和最后取平均,这样浪费了太多的存储空间。一个较好的方法是在迭代计算收获均值,即每次保存上一轮迭代得到 的收获均值与次数,当计算得到当前轮的收获时,即可计算当前轮收获均值和次数。

  • 蒙特卡罗法求解控制问题(基于价值)

    ​ 蒙特卡罗法求解控制问题的思路和动态规划价值迭代的的思路类似。每轮迭代先做策略评估,计算出价值vk(s),然后基于据一定的方法(比如贪婪法)更新当前策略π。最后得到最优价值函数v∗和最优策略π∗。和动态规划比,蒙特卡罗法不同之处体现在三点:

    ​ 1. 预测问题策略评估的方法不同,动态规划用贝尔曼方程迭代,蒙特卡罗法用采样数据求平均

    ​ 2. 是蒙特卡罗法一般是优化最优动作价值函数q∗,而不是状态价值函数v∗

    ​ 3. 是动态规划一般基于贪婪法更新策略。而蒙特卡罗法一般采用ϵ−greedy法更新
    image-20210716142331216
    ​ (在实际求解控制问题时,为了使算法可以收敛,一般ϵϵ会随着算法的迭代过程逐渐减小,并趋于0。这样在迭代前 期,我们鼓励探索,而在后期,由于我们有了足够的探索量,开始趋于保守,以贪婪为主,使算法可以稳定收敛。)

    算法流程:(以在线学习on-policy的every-visit蒙特卡罗法为例)

    输入:状态集S、动作集A、即时奖励R、衰减因子γ、探索率ϵ

    输出:最有动作价值函数q∗、最优策略π∗

    ​ 1. 初始化所有的动作价值Q(s, a)=0,状态次数N(s, a) = 0,采样次数k = 0,随机初始化一个策略π

    ​ 2. k=k+1,基于策略π进行第k次蒙特卡罗采样,得到一个完整的状态序列:
    image-20210716142849288
    ​ 3. 对于该状态序列里出现的每一状态行为对(St,At),计算其收获Gt, 更新其计数N(s,a)和行为价值函数Q(s,a):
    image-20210716143225409
    ​ 4. 基于新计算出的动作价值,更新当前的ϵ−greedy策略:
    image-20210716143501792,m是可选行动的个数

    ​ 5. 若所有的Q(s,a)收敛,则对应的所有Q(s,a)即为最优的动作价值函数q∗,对应的策略π(a|s)即为最优策略π∗,否则转到第二步。

小结

​ 蒙特卡罗法是不基于模型的强化问题求解方法,它可以避免动态规划求解过于复杂,同时还可以不事先知道环境转化模型,因此可以用于海量数据和复杂模型。但是它每次采样都需要一个完整的状态序列,如果没有完整的状态序列,或者很难拿到较多的完整的状态序列,蒙特卡罗法就不好用了,所以还需要寻找其他的更灵活的不基于模型的强化问题求解方法。

 
 
 
 

解法三:时序差分法TD求解(Model-free)

  • 时序差分法

    ​ 时序差分法和蒙特卡罗法类似,都是不基于模型的强化学习问题求解方法。蒙特卡罗法中Gt的计算需要完整序列,而时序差分法没有完整的状态序列,只有部分的状态序列,由贝尔曼方程:
    image-20210716150336908
    可知,可以用Rt+1+γv(St+1)来近似的代替收获Gt, 一般我们把Rt+1+γV(St+1)称为目标值。Rt+1+γV(St+1)−V(St)称为误差,将用目标值近似代替收获G(t)的过程称为引导(bootstrapping)。这样只需要两个连续的状态与对应的奖励,就有了近似收获Gt的表达式,可以去求解时序差分的预测问题和控制问题了。

时序差分法求解预测问题(基于价值)

​ 时序差分的预测问题求解和蒙特卡罗法类似,但是主要有两个不同点:

​ 1. 收获Gt的表达式不同,时序差分G(t)的表达式为:
image-20210716150911812
​ 2. 迭代式子的系数不同,时序差分没有完整的序列,也就没有对应的次数N(St, At),一般用一个[0,1]的系数α代替:
image-20210716151043051
​ (并且蒙特卡罗法一般只优化动作价值函数Q,时序差分状态价值、动作价值函数都会优化)

对比蒙特卡罗法

​ 1. 时序差分法在知道结果之前就可以学习,也可以在没有结果时学习,还可以在持续进行的环境中学习,而蒙特卡罗法则要 等到最后结果才能学习,时序差分法可以更快速灵活的更新状态的价值估计,这在某些情况下有着非常重要的实际意义。

2. 时序差分法在更新状态价值时使用的是TD 目标值,即基于即时奖励和下一状态的预估价值来替代当前状态在状态序列结束时 可能得到的收获,是当前状态价值的有偏估计,而蒙特卡罗法则使用实际的收获来更新状态价值,是某一策略下状态价值的无偏估 计,这一点蒙特卡罗法占优。

3. 虽然时序差分法得到的价值是有偏估计,但是其方差却比蒙特卡罗法得到的方差要低,且对初始值敏感,通常比蒙特卡罗法更 加高效。

n步时序差分

​ 上面用目标值代替收获Gt的公式中,St只向前一步到St+1,若向前2步、n步来近似代替Gt,则为n步时序差分:
image-20210716152826164
image-20210716152843267
​ 当n越来越大,趋于无穷,或者说趋于使用完整的状态序列时,n步时序差分就等价于蒙特卡罗法了。

TD(λ):

​ n步时序差分选择多少步数是一个超参数调优问题。为了能在不增加计算复杂度的情况下综合考虑所有步数的预测,引入一个新 [0,1]的参数λ,定义 λ−收获 是n从1到∞所有步的收获乘以权重的和。每一步的权重是(1−λ)λ^(n−1):
image-20210716153937541
​ 进而有价值函数:
image-20210716154445315
​ 从前向来看, 一个状态的价值V(St)由Gt得到,而Gt又间接由所有后续状态价值计算得到,因此可以认为更新一个状态的价值需 要知道所有后续状态的价值。也就是说,必须要经历完整的状态序列获得包括终止状态的每一个状态的即时奖励才能更新当前状态的 价值。这和蒙特卡罗法的要求一样,因此TD(λ)有着和蒙特卡罗法一样的劣势。当λ=0 时,就是第二节讲到的普通的时序分法,当λ=1 时,就是蒙特卡罗法。

从反向来看,它可以分析我们状态对后续状态的影响。比如老鼠在依次连续接受了3 次响铃和1 次亮灯信号后遭到了电击,那么 在分析遭电击的原因时,到底是响铃的因素较重要还是亮灯的因素更重要呢?如果把老鼠遭到电击的原因认为是之前接受了较多次数 的响铃,则称这种归因为频率启发(frequency heuristic) 式;而把电击归因于最近少数几次状态的影响,则称为就近启发(recency heuristic) 式。

效用迹E:

​ 给每一个状态引入一个数值:效用迹(eligibility, E) 来表示该状态对后续状态的影响,就可以同时利用到上述两个启发。而 所有状态的效用值总称为效用迹(eligibility traces,ES)。定义为:

image-20210716155043716

​ 此时价值函数为:
image-20210716155233221

  • 时序差分法求解控制问题(基于价值)

    ​ 蒙特卡罗法在线控制的方法使用的是ϵ−greedy法来做价值迭代。时序差分也可以用ϵ−greedy法来价值迭代,和蒙特卡罗法在线控制的区别主要只是在于收获的计算方式不同。时序差分的在线控制(on-policy)算法最常见的是Sarsa算法。

    除了在线控制,还可以做离线控制(off-policy),离线控制和在线控制的区别主要在于在线控制一般只有一个策略(最常见的是ϵ−greedy法)。而离线控制一般有两个策略,其中一个策略(最常见的是ϵ−greedy法)用于选择新的动作,另一个策略(最常见的是贪婪法)用于更新价值函数。时序差分的离线控制算法最常见的是Q-Learning算法。

小结

​ 时序差分和蒙特卡罗法比它更加灵活,学习能力更强,因此是目前主流的强化学习求解问题的方法,现在绝大部分强化学习乃至深度强化学习的求解都是以时序差分的思想为基础的。

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值