机器学习周志华学习笔记-第16章<强化学习>
卷王,请看目录
16 强化学习
强化学习(Reinforcement Learning,简称RL)是机器学习的一个重要分支。在强化学习中,包含两种基本的元素:状态与动作,在某个状态下执行某种动作,这便是一种策略,学习器要做的就是通过不断地探索学习,从而获得一个好的策略。例如:在围棋中,一种落棋的局面就是一种状态,若能知道每种局面下的最优落子动作,那就攻无不克/百战不殆了。
若将状态看作为属性,动作看作为标记,易知:监督学习和强化学习都是在试图寻找一个映射,从已知属性/状态推断出标记/动作,这样强化学习中的策略相当于监督学习中的分类/回归器。但在实际问题中,强化学习并没有监督学习那样的标记信息,通常都是在尝试动作后才能获得结果,因此强化学习是通过反馈的结果信息不断调整之前的策略,从而算法能够学习到:在什么样的状态下选择什么样的动作可以获得最好的结果。
16.1 基本要素
强化学习任务通常使用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述,具体而言:机器处在一个环境中,每个状态为机器对当前环境的感知;机器只能通过动作来影响环境
,当机器执行一个动作后,会使得环境按某种概率转移到另一个状态;同时,环境会根据潜在的奖赏函数反馈给机器一个奖赏
。综合而言,强化学习主要包含四个要素:状态、动作、转移概率以及奖赏函数。
- 状态(X):机器对环境的感知,所有可能的状态称为状态空间;
- 动作(A):机器所采取的动作,所有能采取的动作构成动作空间;
- 转移概率§:当执行某个动作后,当前状态会以某种概率转移到另一个状态;
- 奖赏函数®:在状态转移的同时,环境给反馈给机器一个奖赏。
因此,强化学习的主要任务就是通过在环境中不断地尝试,根据尝试获得的反馈信息调整策略,最终生成一个较好的策略π,机器根据这个策略便能知道在什么状态下应该执行什么动作。常见的策略表示方法有以下两种:
- 确定性策略:π(x)=a,即在状态x下执行a动作;
- 随机性策略:P=π(x,a),即在状态x下执行a动作的概率。
一个策略的优劣取决于长期执行这一策略后的累积奖赏,换句话说:可以使用累积奖赏来评估策略的好坏,最优策略则表示在初始状态下一直执行该策略后,最后的累积奖赏值最高。长期累积奖赏通常使用下述两种计算方法:
- T步累积奖赏: E [ 1 T ∑ t = 1 T r t ] \mathbb{E}\left[\frac{1}{T} \sum_{t=1}^{T} r_{t}\right] E[T1∑t=1Trt] ,即执行该策略T步的平均奖赏的期望值。
- r 折扣累积奖赏: E [ ∑ t = 0 + ∞ γ t r t + 1 ] \mathbb{E}\left[\sum_{t=0}^{+\infty} \gamma^{t} r_{t+1}\right] E[∑t=0+∞γtrt+1] , 一直执行到最后,同时越往后的奖赏权重越低。
16.2 K摇摆赌博机
首先我们考虑强化学习最简单的情形:仅考虑一步操作,即在状态 x x x下只需执行一次动作 a a a便能观察到奖赏结果。易知:欲最大化单步奖赏,我们需要知道每个动作带来的期望奖赏值,这样便能选择奖赏值最大的动作来执行。若每个动作的奖赏值为确定值,则只需要将每个动作尝试一遍即可,但大多数情形下,一个动作的奖赏值来源于一个概率分布,因此需要进行多次的尝试。
单步强化学习实质上是K-摇臂赌博机(K-armed bandit)的原型,一般我们尝试动作的次数是有限的,那如何利用有限的次数进行有效地探索呢?这里有两种基本的想法:
- 仅探索法:将尝试的机会平均分给每一个动作,即轮流执行,最终将每个动作的平均奖赏作为期望奖赏的近似值。
- 仅利用法:将尝试的机会分给当前平均奖赏值最大的动作,隐含着让一部分人先富起来的思想。
可以看出:上述两种方法是相互矛盾的,仅探索法能较好地估算每个动作的期望奖赏,但是没能根据当前的反馈结果调整尝试策略;仅利用法在每次尝试之后都更新尝试策略,符合强化学习的思(tao)维(lu),但容易找不到最优动作。因此需要在这两者之间进行折中。
16.2.1 ε-贪心
ε-贪心法基于一个概率
来对探索和利用进行折中,具体而言:在每次尝试时,以ε的概率进行探索,即以均匀概率随机选择一个动作;以1-ε的概率进行利用,即选择当前最优的动作。ε-贪心法只需记录每个动作的当前平均奖赏值与被选中的次数,便可以增量式更新。
16.2.2 Softmax
Softmax算法则基于当前每个动作的平均奖赏值来对探索和利用进行折中,Softmax函数将一组值转化为一组概率,值越大对应的概率也越高,因此当前平均奖赏值越高的动作被选中的几率也越大。Softmax函数如下所示:
16.3 有模型学习
若学习任务中的四个要素都已知,即状态空间、动作空间、转移概率以及奖赏函数都已经给出,这样的情形称为“有模型学习”。假设状态空间和动作空间均为有限,即均为离散值,这样我们不用通过尝试便可以对某个策略进行评估。
16.3.1 策略评估
前面提到:在模型已知的前提下,我们可以对任意策略的进行评估(后续会给出演算过程)。一般常使用以下两种值函数来评估某个策略的优劣:
- 状态值函数(V):V(x),即从状态x出发,使用π策略所带来的累积奖赏;
- 状态-动作值函数(Q):Q(x,a),即从状态x出发,执行动作a后再使用π策略所带来的累积奖赏。
根据累积奖赏的定义,我们可以引入T步累积奖赏与r折扣累积奖赏:
由于MDP具有马尔可夫性,即现在决定未来,将来和过去无关,我们很容易找到值函数的递归关系:
易知:当模型已知时,策略的评估问题转化为一种动态规划问题,即以填表格的形式自底向上,先求解每个状态的单步累积奖赏,再求解每个状态的两步累积奖赏,一直迭代逐步求解出每个状态的T步累积奖赏。算法流程如下所示:
对于状态-动作值函数,只需通过简单的转化便可得到:
16.3.2 策略改进
理想的策略应能使得每个状态的累积奖赏之和最大,简单来理解就是:不管处于什么状态,只要通过该策略执行动作,总能得到较好的结果。因此对于给定的某个策略,我们需要对其进行改进,从而得到最优的值函数。
最优Bellman等式改进策略的方式为:将策略选择的动作改为当前最优的动作,而不是像之前那样对每种可能的动作进行求和。易知:选择当前最优动作相当于将所有的概率都赋给累积奖赏值最大的动作,因此每次改进都会使得值函数单调递增。
将策略评估与策略改进结合起来,我们便得到了生成最优策略的方法:先给定一个随机策略,现对该策略进行评估,然后再改进,接着再评估/改进一直到策略收敛、不再发生改变。这便是策略迭代算法,算法流程如下所示:
可以看出:策略迭代法在每次改进策略后都要对策略进行重新评估,因此比较耗时。若从最优化值函数的角度出发,即先迭代得到最优的值函数,再来计算如何改变策略,这便是值迭代算法,算法流程如下所示:
16.4 免模型学习
16.4.1蒙特卡罗强化学习
在现实的强化学习任务中,环境的转移函数与奖赏函数往往很难得知,因此我们需要考虑在不依赖于环境参数的条件下建立强化学习模型,这便是免模型学习。蒙特卡罗强化学习便是其中的一种经典方法。
由于模型参数未知,状态值函数不能像之前那样进行全概率展开,从而运用动态规划法求解。一种直接的方法便是通过采样来对策略进行评估/估算其值函数,蒙特卡罗强化学习正是基于采样来估计状态-动作值函数:
对采样轨迹中的每一对状态-动作,记录其后的奖赏值之和,作为该状态-动作的一次累积奖赏,通过多次采样后,使用累积奖赏的平均作为状态-动作值的估计****,并引入ε-贪心策略保证采样的多样性。
在上面的算法流程中,被评估和被改进的都是同一个策略,因此称为同策略蒙特卡罗强化学习算法。引入ε-贪心仅是为了便于采样评估,而在使用策略时并不需要ε-贪心,那能否仅在评估时使用ε-贪心策略,而在改进时使用原始策略呢?这便是异策略蒙特卡罗强化学习算法。
16.4.1时序差分学习
蒙特卡罗强化学习算法通过考虑采样轨迹,克服了模型未知给策略估计造成的困难,此类算法需在完成一个采样轨迹后再更新策略的值估计,而前面介绍的基于动态规划的策略迭代和值迭代算法。在每执行一步策略后就进行值函数更新。两者相比,蒙特卡罗强化学习算法的效率低得多,这里的主要问题是蒙特卡罗强化学习算法没有充分利用强化学习任务的MDP结构:时序差分Temporal Diference,简称TD)学习则结合了动态规划与蒙特卡罗方法的思想,能做到更高效的免模型学习。
时序差分学习(Temporal-Difference Learning,简称TD学习)是一种强化学习算法,它不需要环境的模型,可以直接从交互经验中学习。TD学习结合了动态规划和蒙特卡洛方法的优点,能够在不完全了解环境模型的情况下进行学习。
TD学习的基本概念:
- 状态值函数 ( V(s) ):在某一状态下,遵循某一策略所能获得的期望回报。
- 动作值函数 ( Q(s, a) ):在某一状态下采取某一动作,遵循某一策略所能获得的期望回报。
- 回报 ( R ):在某一状态下采取某一动作后立即获得的奖励。
- 折扣因子 ( \gamma ):未来的回报相对于当前回报的重要性。
TD学习的核心思想:
- TD学习的核心思想是通过时序差分来更新价值函数。与蒙特卡洛方法不同,TD学习不需要等到整个episode结束再更新价值函数,而是可以基于当前时间步的观测来更新。TD(0)是最基本的TD学习方法,它基于以下更新公式:
V ( S t ) ← V ( S t ) + α [ R t + 1 + γ V ( S t + 1 ) − V ( S t ) ] V(S_t) \leftarrow V(S_t) + \alpha [R_{t+1} + \gamma V(S_{t+1}) - V(S_t)] V(St)←V(St)+α[Rt+1+γV(St+1)−V(St)]
其中: - S t S_t St是当前状态。
- R t + 1 R_{t+1} Rt+1是在状态 S t S_t St采取动作后获得的即时奖励。
- V ( S t + 1 ) V(S_{t+1}) V(St+1)是下一个状态的价值估计。
- α \alpha α是学习率。
- γ \gamma γ是折扣因子。
TD学习的步骤:
- 初始化状态值函数 V ( s ) V(s) V(s)对于所有状态 s s s。
- 观察当前状态 S t S_t St。
- 根据某种策略选择动作 A t A_t At。
- 执行动作 A t A_t At,观察奖励 R t + 1 R_{t+1} Rt+1和下一个状态 S t + 1 S_{t+1} St+1。
- 使用上述更新公式更新 V ( S t ) V(S_t) V(St)。
- S t + 1 S_{t+1} St+1成为新的 S t S_t St,重复步骤2到步骤5。
TD学习的变体:
- SARSA:状态-动作-奖励-状态-动作(State-Action-Reward-State-Action),是一种基于TD的Q学习算法。Q学习是一种无模型的强化学习算法,它直接学习动作值函数 Q ( s , a ) Q(s, a) Q(s,a)。
- TD ( λ ) (\lambda) (λ):是一种更加通用的TD学习方法,它考虑了所有时间步的回报,而不仅仅是最近的一步。
TD学习不需要环境模型,可以直接从经验中学习。可以在线学习,不需要等到episode结束。相比蒙特卡洛方法,TD学习通常更加稳定和收敛更快。在强化学习领域有着广泛的应用,特别是在那些无法获得完整环境模型的场景中。
16.5 值函数近似
在许多实际问题中,状态空间或动作空间可能非常大,以至于无法使用表格形式来存储每个状态或状态-动作对的价值(即值函数)。值函数近似(Value Function Approximation)是强化学习中用来处理大规模或连续状态空间问题的一种方法。值函数近似通过使用函数逼近器(如神经网络、决策树、支持向量机等)来估计值函数,从而克服了这一限制。
基本概念:
- 值函数:预测从特定状态或状态-动作对开始的期望回报的函数。
- 函数逼近器:用于近似值函数的数学工具,可以是线性的或非线性的。
近似方法
- 线性函数近似:
- 使用特征向量 ( \mathbf{x}(s) ) 来表示状态 ( s )。
- 线性近似形式:( \hat{V}(s, \mathbf{w}) = \mathbf{w}^\top \mathbf{x}(s) )。
- 非线性函数近似:
- 使用神经网络、核方法等非线性函数逼近器。
- 非线性近似形式:( \hat{V}(s, \mathbf{w}) ) 或 ( \hat{Q}(s, a, \mathbf{w}) ) 可以是复杂的非线性函数。
16.6 模仿学习
在强化学习的经典任务设置中,机器所能获得的反馈信息仅有多步决策后的累积奖赏,但在现实任务中,往往能得到人类专家的决策过程范例,例如在种瓜任务上能得到农业专家的种植过程范例。从这样的范例中学习,称为“模仿学习"。
16.6.1直接模仿学习
强化学习任务中多步决策的搜索空间巨大,基于累积奖赏来学习很多步之前的合适决策非常困难,而直接模仿人类专家的“状态-动作对”可显著缓解这一困难,我们称其为“直接模仿学习”。
16.6.2逆强化学习
在很多任务中,设计奖赏函数往往相当困难,从人类专家提供的范例数据中反推出奖赏函数有助于解决该问题,这就是逆强化学习。
显然,我们难以获得所有策略,一个较好的办法是从随机策略开始,迭代地求解更好的奖赏函数,基于奖赏函数获得更好的策略,直至最终获得最符合范例轨迹数据集的奖赏函数和策略。在求解更好的奖赏函数时,对所有策略求最小改为对之前学得的策略求最小。