写在前面
大家好,好久不见,这里是立志于在有生之年看到并参与通用人工智能开发工作的Nobody,最近工作有点忙,导致拖更了好久,而且接下来强化学习的部分可能会更新地更慢了,会先着重去更新学习大数据工具这一部分了。这一部分是一起入门强化学习的第三部分,这一部分通过最简单的表格型方法来讲解如何求解强化学习过程,希望大家关注点赞收藏,谢谢大家!
大家也可以先看一下前面的内容
一、马尔可夫决策过程
先简单复习一下马尔可夫决策过程。马尔可夫决策过程是强化学习中一个非常基本的学习框架。状态、动作、状态转移概率和奖励(S、A、P、R),这4个的合集就构成了强化学习马尔可夫决策过程的四元组,再加上折扣因子γ就可以构成五元组。
1.1 有模型
如果知道环境的状态转移概率和奖励函数,就可以认为这个环节是已知的,因为我们用这两个函数来描述环境。如果环境是已知的,我们其实可以用动态规划算法去计算能够逃脱的概率最大的最佳策略,也就是在有模型的情况下的求解方法。
状态转移概率(probability function):概率函数就是状态转移的概率,它反映了环境的随机性。
1.2 免模型
很多强化学习的经典算法都是免模型的,也就是环境是未知的。我们通常处在未知的环境里,也就是这一系列的决策的概率函数和奖励函数是未知的,这就是有模型和免模型最大的区别。
强化学习用价值函数 V(s) 来表示状态是好的还是坏的,用Q函数来判断在什么状态下采取什么动作能够取得最大奖励,即用Q函数来表示状态-动作值。
1.3 有模型与免模型的区别
二、Q表格
假设Q表格是一张训练好的表格,我们可以通过查看表格来知道我们在当前状态采用什么动作得到的总奖励更多。如果可以预估未来的总奖励大小,我们就知道在当前的状态下选择哪个动作价值更高,我们选择某个动作是因为这样未来可以获得的价值会更高。
可以看出来,强化学习的目标导向性很强,环境给出的奖励是非常重要的反馈,它根据环境的奖励进行选择。
因此,我们要求解的就是一张Q表格。最开始的时候,Q表格会全部初始化为0,智能体会不断和环境交互得到不同的轨迹,当交互的次数足够多的时候,我们就可以估算出每一个状态下,每个动作的平均总奖励,进而更新Q表格,Q表格的更新就是接下来要引入的强化概念。
强化是指用下一状态的价值来更新当前状态的价值。在强化学习中,可以每走一步更新一次Q表格,用下一个状态的Q值来更新当前状态的Q值,这种单步更新的方法被称为时序差分方法。
三、免模型预测
在无法获取马尔可夫决策过程的模型情况下,可以通过蒙特卡洛方法和时序差分方法来估计某个给定策略的价值。
3.1 蒙特卡洛方法
蒙特卡洛方法是基于采样的方法,给定一个策略,让智能体与环境进行交互,可以获得很多轨迹,每个轨迹都有对应的回报。
而我们求出所有轨迹的回报的平均值,就可以知道某一个策略对应状态的价值。
蒙特卡洛仿真是指我们可以采样大量的轨迹,计算所有轨迹的真实回报,求和后计算平均值。蒙特卡洛方法使用经验平均回报的方法来估计,它不需要已知马尔可夫决策过程的状态转移函数和奖励函数,并且不需要向动态规划那样用自举的方法。
蒙特卡洛方法的步骤
- 在每个回合中,如果在时间步 t 状态 s 被访问了,那么:
- 状态s的访问数N(s)增加1
- 状态s的总回报S(S)增加Gt
- 状态s的价值可以通过回报的平均来进行估计
根据大数定律,只要我们得到足够多的轨迹,就可以趋近这个策略对应的价值函数。
假设现在有样本x1, x2,...., xt,我们可以把经验均值转换成增量均值的形式:
其中 xt - ut-1 是残差,1/t是学习率,当我们得到 xt 时,就可以用上一时刻的值来更新现在的值。
我们可以把蒙特卡洛方法更新的方法写成增量式蒙特卡洛方法。我们采集到数据,得到一条新的轨迹(s1,a1,r1,...,st)。对于这条轨迹,我们采用增量的方法进行更新。
其中,α代表更新的速率。
再来看一下动态规划方法,动态规划方法也是常用的估计价值函数的方法,在动态规划方法中,我们使用了自举的思想。自举就是基于之前估计的量来估计一个量。此外,动态规划方法使用贝尔曼期望备份,通过上一时刻的值来更新当前时刻的值,即
将其不断迭代,最后就可以收敛了。
如图所示,贝尔曼期望备份有两层加和,即内部加和与外部加和,计算两次期望,得到一个更新。
蒙特卡洛方法通过一个回合的经验平均回报(实际得到的奖励)来进行更新。
如图所示,我们使用蒙特卡洛方法得到的轨迹对应树上蓝色的轨迹,轨迹上的状态已经是决定的,采取的动作也是已经决定的。现在只更新这条轨迹的所有状态,与这条轨迹没有关系的状态都不进行更新。
蒙特卡洛方法相比于动态规划的优势:
- 蒙特卡洛方法可以应付环境未知的情况,而动态规划方法是有模型的。
- 蒙特卡洛方法只需要更新一条轨迹的状态,而动态规划方法需要更新所有的状态。
3.2 时序差分方法
时序差分方法介于蒙特卡洛方法和动态规划方法之间,它是免模型的,不需要马尔可夫决策过程的转移矩阵和奖励函数。
时序差分方法的目的是对于某个给定的策略,在线地算出它的价值函数,即一步一步地算,最简单的方法是一步时序差分,
时序差分目标是带衰减的未来奖励的总和。时序差分目标由两部分组成:
- 我们走了某一步后得到的实际奖励rt+1
- 我们利用了自举的方法,通过之前的估计来估计V(st+1),并且加了折扣因子。
时序差分目标是估计有两个原因:
- 时序差分方法对期望值进行采样
- 时序差分方法使用当前估计的V而不是真实的V
进一步比较时序差分方法和蒙特卡洛方法:
- 时序差分方法可以在线学习,每走一步就可以更新,效率高。蒙特卡洛必须等游戏结束时才可以学习
- 时序差分方法可以从不完整序列上进行学习,蒙特卡洛方法只能从完整的序列上进行学习
- 时序差分方法可以在连续的环境下进行学习。蒙特卡洛只能在有终止的情况下学习
- 时序差分方法利用了马尔可夫性质。蒙特卡洛方法没有假设环境具有马尔可夫性质。
四、免模型控制
4.1 Sarsa:同策略时序差分控制
Sarsa算法:用时序差分方法来估计Q函数。
Sarsa算法将原本时序差分方法更新V的过程,变成了更新Q
可以理解为智能体每与环境交互一次之后,就可以学习一次,向环境输出动作,从环境当中获取状态与奖励。智能体主要实现两个方法:
- 根据Q表格选择动作,输出动作
- 获取(st,at,rt+1,st+1,at+1)这几个值更新Q表格
4.2 Q学习:异策略时序差分控制
Sarsa是一种同策略算法,它优化的是它实际执行的策略,它直接用下一步会执行的动作去优化Q表格。
Q学习是一种异策略算法。异策略在学习过程中,有两种不同的策略:目标策略和行为策略。目标策略是我们需要去学习的策略,行为策略是探索环境的策略。
目标策略直接在Q表格上使用贪心策略,取它下一步能得到的所有状态,即
行为策略可以是一个随机的策略,但我们采取贪心策略,让行为策略不至于是完全随机的,它是基于Q表格逐渐改进的,于是我们可以得到
4.3 同策略和异策略的区别
总结一下同策略和异策略的区别
- 同策略只用了一个策略,它不仅使用该策略学习,还使用该策略与环境进行交互产生经验,如果策略采用贪心算法,它需要兼顾探索,为了兼顾探索和利用,它训练的时候会显得有点“胆小”
- 异策略有两种策略——目标策略和行为策略,它分离了目标策略与行为策略,它可以大胆地用行为策略探索得到的经验轨迹来优化目标策略,从而更有可能探索到最佳策略。