Ylisar 发表于 2021-12-16 08:53

【深度强化学习】初学者入门介绍(通俗易懂)

如果觉得有用的话请多多点赞!如果需要转载或者引用的话请注明出处!谢谢大家!

这是给组里老师同学做的强化学习介绍PPT,想着既然做了,就放上来吧,让更多人看到,或许能够让我这两天的工作显得更有意义。内容总体来说应该是很通俗的,基本上没有讲十分复杂的原理,力求让完全不懂强化学习的人也能看明白,如果大家有什么建议或者疑问的话也请多多提出来!(导师总说我的汇报不够生动有趣,我每次都得提前准备好才不至于临场紧张,可能真不是当老师的料,哭了.....)
另外,我的其他论文笔记汇总:
强化学习 VS 监督学习



大家都知道,强化学习和监督学习分别属于机器学习的两个重要分支,关于机器学习的概念,我想大家都已经很熟悉了,我就不再细讲了,总而言之,机器学习就是让机器在无需任何确定性规则的情况下像人类一样自主学习某项技能,而监督学习与强化学习则分别属于两种不同的学习方式。
其中,监督学习通常用于处理分类与回归问题,这类问题的任务是对输入X与输入Y之间的映射关系进行拟合,从而对不同X对应的Y进行预测,通常情况下,不同数据之间是相互独立的,监督学习通过获取大量同时包含X与Y的样本对机器进行训练,使得机器能够从数据中学习到X与Y之间的关系,最终目标是使得机器预测值与真实值之间的误差尽可能的小。举例来说,在图像分类任务中,我们能够通过爬虫这一技术获取大量图片以及它们所对应的类别标签,利用这些图片数据对机器进行训练,就能够使得机器成功拥有对图像进行分类的能力。
与监督学习不同,强化学习通常用于求解序列决策问题,这一类问题的任务是求解一个策略用于指导机器在不同状态下选择最佳动作。由于序列决策问题存在复杂的时序关系,即当前行为影响后续的接收数据,数据之间存在关联性,这导致我们难以获得包含状态与最优动作的样本作为训练样本来拟合状态与动作之间的映射关系作为最优策略。此时,强化学习的做法是让机器自行对动作进行探索,然后根据环境的反馈,不断地对策略进行调整,最终目标是使得环境收益尽可能地大。以下围棋为例,在强化学习中,没有任何专家或数据告诉机器该如何落子,机器将会通过对动作的自行探索以及环境对输赢的反馈累积经验,然后以赢棋为目标自行学习出下棋的技巧。
可以看出,强化学习与监督学习在适用场景、学习任务、学习目标等方面都有着很大的区别,因此,我们没有办法直接说这两种方法哪一种更好,而是要根据我们具体的任务从中进行合理地选择。
什么是强化学习?

我将主要为大家介绍强化学习。
马尔科夫决策过程



首先我将为大家介绍强化学习的基本框架——马尔科夫决策过程,这是所有强化学习算法的基础,可以说,没有马尔科夫决策过程,也就没有强化学习。
在马尔科夫过程中,学习与决策者被称为智能体,与智能体交互的部分则称为环境。智能体与环境不断进行交互,具体而言,这一交互的过程可以看做是多个时刻,每一时刻,智能体根据环境的状态,依据一定的策略选择一个动作(这里的策略指的是从环境状态到智能体动作或者动作概率之间的映射),然后环境依据一定的状态转移概率转移到下一个状态,与此同时根据此时状态的好坏反馈给智能体一个奖励。智能体可以根据环境的反馈调整其策略,然后继续在环境中探索,最终学习到一个能够获得最多奖励的最优策略。完整的马尔科夫决策过程可以用一个由每时刻的状态、动作以及奖励组成的序列来表示,这一序列的核心特点是环境下一时刻的状态与奖励均只取决于当前时刻的状态与智能体的动作,也就是说,环境的状态转移概率是不变的,这一特性被称为马尔科夫特性。
为什么我们需要要求强化学习的任务符合马尔科夫特性呢,因为在实际场景中,环境状态概率通常是未知的,只有符合马尔科夫特性,智能体才有可能通过与环境的不断交互,学习到环境的变化规律,这样才能根据当前的状态,以及要采取的动作,推理出下一步的状态,从而方便智能体在训练过程中清晰地推理出每一步的状态变化,这是强化学习能够学习出来的关键所在,如果在训练过程中我们连每一步的状态变化都推理不出来,那么也无从训练。
以上就是马尔科夫决策过程的完整概念,而强化学习的目标就是在环境的变化规律未知的情况下对智能体的最佳策略进行学习。
收益与价值函数



那么什么是最佳策略呢?在上一张PPT中我们提到的奖励表示了智能体在某状态下采取某动作的好坏,这是智能体在环境中获得的短期利益,这一评价指标只考虑了动作对当前状态的影响。但由于马尔科夫决策过程是一个序列决策过程,每一时刻的动作不仅会影响当前状态,还会对后续的环境状态产生影响。也就是说,当前时刻能够获得较多奖励的动作从长远来看也许并不是最佳的,而短期来看不太好的动作却也许能在未来带给智能体更多的奖励。因此智能体在决策时不能单单考虑这一时刻的奖励,而应该考虑到动作对未来的长期影响。为此,我们需要在奖励的基础上定义另一个评价指标来度量智能体所能获得的长远利益。
在强化学习中,这一评价指标被称为收益,它的定义为未来时刻里智能体所能获得的折扣奖励之和。在求和公式中,我们需要对未来每一时刻的奖励乘上一个折扣因子,并且越往后,衰减越大。为什么要这样做呢?直觉上来看,时间上越远,存在的不确定越多,对当前时刻的贡献也就越小,因此需要用一个折扣因子来描述不同时刻奖励对当前时刻的贡献程度。
在收益的基础上,我们可以为每一个状态-动作对定义一个价值,这个价值表示了在给定状态-动作对的条件下未来依据某策略做决策所能获得的平均收益,因此,它依据未来能获得的平均收益大小对某一策略下,给定状态-动作对的好坏进行了评价。这里的价值实际上也就对应着强化学习中经常提到的Q值。
最终智能体的目标就是学习到一个最优策略,使得智能体在任意状态下的价值最优,定义最佳策略下的动作价值函数为最优价值函数,也就是最优Q值。很显然,当我们已知了最优Q值时,每一状态下对应Q值最大的动作就是最佳动作。
因此,我们可以得出这样一个结论:求解最优策略也就等价于求解最优Q值。
强化学习算法分类

基于这样一个结论,最终,在强化学习中,求解最优策略的算法可以分为三大类。
基于价值估计的强化学习算法



第一类算法被称为基于价值估计的算法,刚刚我们提到求解最优策略等价于求解最优Q值,因此这一类算法的目标就是对所有状态-动作对下的最优Q值进行估计,最终任意状态下令最优Q值最大的动作即为最优动作。
Q-learning算法是最经典的强化学习算法,它针对的是离散状态、离散动作的情况,这里的离散指的是马尔科夫决策过程中状态和动作的数量都是有限的,在这种情况下,Q-learning直接用一个表格来描述所有的最优Q值。这里最优Q值的估计方法主要基于强化学习中一个重要的理论公式——贝尔曼方程,这个方程描述了不同状态-动作对的Q值之间的确定性等式关系。具体这个公式是怎么推导得到的,我就不细说了,总之根据这个公式,我们可以在智能体与环境交互的过程中,不断对表格中的值进行迭代更新,最终达到收敛状态。最后,针对每一个状态,我们只需要选择每一行最大Q值对应的动作就可以了。这种方法的局限性在于状态空间和动作空间都必须是离散的,当状态和动作数量变多时,表格会越来越大,最终导致Q值难以学习出来。
Deep-Q learning在Q-learning的基础上用一个神经网络来拟合状态到Q值之间的映射关系,此时,状态作为神经网络的输入,可以在连续范围内取值,最终输出得到的是该状态下对应每个动作的Q值,然后我们可以在其中选择一个令Q值最大的作为最优动作。在Deep Q-learning中,我们不需要像Q-learning一样把所有的Q值学习出来,而只需要学习一个神经网络,解决了Q-learning中状态必须连续且表格随状态数量增大这一问题。但是在deep Q-learning算法中,动作依然要求是离散的,并且当动作维度增大时,神经网络的规模会指数增加,这是基于价值估计算法的主要缺陷。
基于策略优化的强化学习算法



第二类算法被称为基于策略优化的强化学习算法,基于价值估计的算法是对最优Q值进行估计,而策略优化算法则直接对最优策略进行估计。
在强化学习中,策略分为两种,一种是随机性策略,此时我们需要对状态到最优动作概率分布之间的映射进行估计,然后从该概率分布中进行采样得到输出动作。
第二种策略为确定性策略,此时我们直接对状态到最优动作之间的映射进行估计。为了对策略进行优化,我们需要定义一个策略的性能函数作为优化目标,在强化学习中,这个性能函数通常被定义为一定策略下的平均收益。然后我们只需要依据优化目标对策略函数进行梯度上升,最终就可以得到最优策略。策略优化算法的特点是,神经网络的输出即为最优动作,因此这里的动作空间既可以是离散的也可以是连续的。在优化过程中,这里的性能函数通常通过一定的估计方法得到。
基于演员-评论家的强化学习算法



第三类算法被称为基于演员-评论家的强化学习算法,这一类算法结合了价值估计方法与策略优化方法的特点,同时对最优Q值以及最优策略进行学习,最终策略网络的输出即为最优动作。
在这一类算法中存在两个网络,第一个网络被称为Actor网络,该网络对智能体的策略,也也就是状态到最优动作之间的映射关系进行学习,因此也被称为策略网络,Actor网络的输出即为智能体的动作。第二个网络被称为Critic网络,这个网络的作用是对智能体的策略进行评价,它的网络输出为任意状态-动作对的Q值。
可以看出,Actor网络就像是一个执行者,用来输出动作,而Critic网络则对Actor输出的动作进行评价,然后Actor再根据Critic的评价不断地修正自己的策略,Critic则通过贝尔曼方程对自身网络进行迭代更新,最终我们就可以得到一个较好的Actor网络作为智能体最终的策略。
与策略优化方法一样,该类方法中包含一个策略网络,因此可以直接输出最优动作,动作空间既可以是离散的,也可以是连续的。
其他分类方法



刚刚我提到的三类算法是按照智能体的学习内容而划分的,实际上,强化学习算法还有许多种分类方法,例如按照策略类型可以分为随机策略算法和确定性策略算法,而按照训练样本的产生方式又可以分为同策略算法和离策略算法,按照网络的更新频率还可以分为蒙特卡洛方法和时间差分方法。我这里列举了几种比较常见的强化学习算法,每一种都同时属于多种类别,这些不同类别的区别在于训练方式的不同,但是他们的目标和希望得到的结果都是一样的,我们一般无法直接说哪一种类别的算法更好,如果我们只在乎训练结束后的策略,那么理论上这些算法都是可以用的,但是由于每种算法还包含了许多其他训练或者网络设计上的技巧,所以不同算法的性能有所区别。那么在实际应用时,我们要怎么从几十上百种算法中进行选择呢。我个人的理解是,在刚入门的时候,我们可以先用最基础的算法,例如DQN或者DDPG,来搭起自己的任务框架,同时加深对强化学习的理解。但两种算法比较简单,可能无法完成较复杂的任务,所以当我们真正需要解决一个任务时,我们就需要根据自身任务的特点,结合主流讨论中性能较好并且调参难度低的算法作为我们主要使用的算法进行学习。
多智能体强化学习

刚刚我们已经了解了单智能体强化学习的一些基础知识,那么当一个系统中存在多个需要决策者时,是否可以把单智能体强化学习算法扩展到多智能体系统中呢?答案是肯定的,但是这其中存在着一些需要解决的问题。
多智能体系统面临的困难



首先,之前我们提到马尔科夫决策过程最重要的特征就是环境下一时刻的状态只取决于当前时刻的状态和动作,也就是说环境的状态转移概率是一个确定的值,它保证了环境的平稳变化,使得智能体能够学习出环境的变化规律,从而推理出状态的变化过程。而在多智能体系统中,每个智能体所对应的环境包含了其他智能体的策略,此时智能体状态的改变不再只取决于自身的动作和状态,还会取决于其他智能体的策略,而这些策略在智能体学习的过程中会不断地发生变化,这也就导致了每个智能体的状态转移概率随着时间发生变化,使得环境非平稳变化,马尔科夫特性不再满足,给智能体策略的学习带来了困难。
而在更加实际的情况中,每个智能体只能观测到部分环境状态信息,进一步恶化智能体的学习性能。
一种最直接的解决环境非平稳性和局部可观性的方法就是对所有的智能体采取集中式学习的方法,将它们当做是一个智能体,直接学习所有智能体状态到所有智能体动作之间的映射,但是一方面这种方法需要一个集中式控制中心与智能体之间进行大量的信息交互,另一方面神经网络的输入输出维度会随智能体数目指数增大,难以收敛。
多智能体强化学习算法分类



在这样的情况下,人们开始思考如何设计多智能体强化学习算法,来解决这些问题。目前的多智能体强化学习算法主要分为三大类。第一类算法最为简单,直接让各个智能体独立学习自己的策略,由于多智能体系统存在环境非平稳性与局部可观性等问题,这一类论文通常会在独立学习的基础上通过一些训练技巧来环节非平稳性,例如在智能体之间共享同一套策略参数,这类算法操作简单,可扩展性强,通常也能获得还不错的效果。
第二类算法被称为基于协作的学习,这一类算法利用每个智能体与环境交互所获得的经验对所有智能体的策略进行集中训练,训练结束后的智能体可拥有分布式决策的能力。一方面,训练过程中全局环境信息的利用可以极大地缓解非平稳性带来的影响,另一方面,训练结束后每个智能体所得到的策略是相互独立的,使得执行过程中,智能体可以分布式地进行决策。因此,这种集中训练、分布式执行的方案几乎已经成了多智能体训练的标准方案。但是,由于这个方案中存在集中式训练的过程,因此它同样存在一定程度上的扩展性问题,当智能体数目较多时,可能会面临学不出来的风险。
第三类算法主要通过在智能体之间增加信息的传递来进一步缓解环境非平稳性与局部可观性带来的影响,这一部分工作在独立学习或者协作学习的基础上研究智能体之间如何进行自主通信来进一步提升系统性能,研究内容包括智能体之间的通信内容以及通信范围。


我这里分别列举了三类多智能体强化学习方法中较为经典的一些工作,这些算法或多或少地解决了多智能体系统中所存在的一些问题,一定程度上提升了强化学习的性能。目前多智能体强化学习依然是强化学习领域一个较为热门的研究方向,想要应用多智能体强化学习算法的同学,我认为一方面可以直接学习目前公认性能比较好的算法,另一方面也可以多多关注目前多智能体强化领域的一些最新发展,思考有什么可以借鉴到我们课题中的地方。
强化学习的难点



最后,强化学习的应用存在着诸多难点,大家还需要多多学习呀~

JamesB 发表于 2021-12-16 08:59

写的真不错,拿去给师弟师妹们看了
页: [1]
查看完整版本: 【深度强化学习】初学者入门介绍(通俗易懂)