简介
欢迎来到人工智能中最迷人的领域:深度强化学习。
深度强化学习是机器学习的一种,智能体通过执行动作并观察结果来学习如何在环境中行动。
在第一单元中,你将学习深度强化学习的基础知识。
接着,你将使用深度强化学习库 Stable-Baselines3 ,训练你的深度强化学习智能体——一个月球着陆器,使其能在月球上正确着陆。
最后,你将把这个训练好的智能体上传至 Hugging Face Hub 🤗,这是一个免费开放的平台,人们可以在此分享机器学习模型、数据集和演示。
在开始实现深度强化学习智能体之前,掌握这些基础知识至关重要。本章的目标是为您奠定坚实的理论基础。
完成本单元后,在附加单元中,您将能够训练小狗 Huggy 🐶 学会接飞盘并与它互动玩耍 🤗。
什么是强化学习?
要理解强化学习,让我们先从宏观视角入手。
宏观视角
强化学习的核心理念在于:智能体(AI)通过与环境的互动(试错过程),并根据执行动作获得的奖励(正向或负向)作为反馈,从而进行学习。
这种从环境互动中学习的方式,源自我们与生俱来的经验积累。
比如想象一下,让你从未玩过电子游戏的弟弟坐在游戏机前,给他一个手柄然后离开。
你弟弟会通过按下正确按键(动作)与环境(电子游戏)互动。他获得了一枚金币,这就是+1 奖励。这是正向反馈,他立即明白在这个游戏里必须收集金币。
但接着他再次按下右键时碰到了敌人。角色死亡了,这就产生了-1 惩罚。
通过不断试错与环境互动,你弟弟逐渐理解在这个游戏世界里既要收集金币又必须避开敌人。
在没有指导的情况下,孩子会玩得越来越好。
这正是人类和动物通过互动学习的方式。强化学习只是一种从行动中学习的计算方法。
正式定义
我们现在可以给出一个正式定义:
强化学习是一种通过构建智能体来解决控制任务(也称为决策问题)的框架,该智能体通过与环境互动进行试错学习,并以获得奖励(正向或负向)作为唯一反馈来从环境中学习。
但强化学习是如何运作的呢?
强化学习框架
强化学习过程
为了理解强化学习过程,让我们想象一个正在学习玩平台游戏的智能体:
- 智能体从环境中接收到状态 S 0 S_0 S0 — 我们获取了游戏环境的第一帧画面。
- 基于该状态 S 0 S_0 S0 ,智能体采取动作 A 0 A_0 A0 — 我们的智能体将向右移动。
- 环境转入新状态 S 1 S_1 S1 — 即新的一帧画面。
- 环境向智能体提供奖励
R
1
R1
R1 — 表示我们尚未死亡(正向奖励+1)。
这个强化学习循环输出状态、动作、奖励和下一状态的序列。
智能体的目标是最大化其累积奖励,即期望回报。
奖励假说:强化学习的核心思想
⇒ 为什么智能体的目标是最大化期望回报?
因为强化学习建立在奖励假设之上,该假设认为所有目标都可以表述为期望回报(预期累积奖励)的最大化。
这就是为什么在强化学习中,为了获得最佳行为,我们的目标是学会采取能够最大化预期累积奖励的动作。
马尔可夫性质
在论文中,你会看到强化学习过程被称为马尔可夫决策过程(MDP)。
我们将在后续单元中再次讨论马尔可夫性质。但若今天你需要记住关于它的要点,那就是:马尔可夫性质意味着智能体仅需当前状态即可决定采取何种行动,而不需要依赖之前所有状态和行动的历史记录。
观测/状态空间
观测/状态是智能体从环境中获取的信息。以电子游戏为例,它可以是一帧画面(屏幕截图);对交易智能体而言,则可能是某只股票的价值数据等。
然而需要区分观测与状态:
- 状态 s:是对世界状态的完整描述(不存在隐藏信息)。在完全可观测的环境中。
在国际象棋游戏中,我们能够获取整个棋盘的信息,因此我们从环境中接收一个状态。换句话说,这个环境是完全可观测的。 - 观测 o:是对状态的部分描述。在部分可观测的环境中。
在《超级马里奥兄弟》中,我们只能看到关卡中靠近玩家的部分,因此获得的是观察结果。
在《超级马里奥兄弟》中,我们处于部分可观测环境。由于只能看到关卡的一部分,因此获得的是观察结果。
本课程中,我们使用"状态"一词同时指代状态和观察结果,但在具体实现时会加以区分。
简要回顾:
动作空间
动作空间是指环境中所有可能动作的集合。
这些动作可以来自离散或连续的空间:
- 离散空间:可能的行动数量是有限的。
同样,在《超级马里奥兄弟》中,由于仅有四个移动方向,我们面对的是有限的动作集合。 - 连续空间:可能的动作数量是无限的。
自动驾驶汽车代理拥有无限可能的动作选择,因为它可以左转 20°、21.1°、21.2°,鸣笛,右转 20°……
简要回顾:
将这些信息纳入考量至关重要,因为它将影响未来强化学习算法的选择决策。
奖励与折扣机制
奖励在强化学习中至关重要,因为这是智能体获得的唯一反馈信号。正是通过奖励,我们的智能体才能判断所采取的行动是否恰当。
每个时间步 t 的累积奖励可表示为:
等价于:
然而现实中,我们并不能简单地将它们相加。那些更早出现的奖励(在游戏初期阶段)往往更可能实现,因为它们比远期回报更具可预测性。
假设你的智能体是这只每次只能移动一格的小老鼠,而对手是同样会移动的猫。老鼠的目标是在被猫吃掉前获取尽可能多的奶酪。
如图所示,比起靠近猫的奶酪,我们更可能吃到身边的奶酪(离猫越近,危险系数越高)。
因此,靠近猫的奖励即使更大(更多奶酪),也会被打更多折扣,因为我们并不确定能否真正吃到它。
为了对奖励进行折现,我们采取如下步骤:
- 我们定义了一个名为 gamma 的折扣率。其取值必须在 0 到 1 之间,大多数情况下介于 0.95 至 0.99。
- gamma 值越大,折扣越小。这意味着我们的智能体更关注长期奖励。
- 另一方面,gamma 值越小,折扣力度越大。这意味着我们的智能体更关注短期奖励(最近的奶酪)。
- 随后,每个奖励都会乘以伽马系数的时间步幂次方。随着时间步的增加,猫咪离我们越来越近,因此未来奖励发生的可能性越来越小。
我们折现后的期望累积奖励为:
任务类型
任务是指强化学习问题的一个实例。我们可以将其划分为两种类型:分幕式任务与连续性任务。
分幕式任务
这类任务具有明确的起点和终点(终止状态)。由此形成一个幕(episode):包含状态、动作、奖励和新状态的序列。这类任务具有明确的起点和终点(终止状态)。由此形成一个幕(episode):包含状态、动作、奖励和新状态的序列。
以《超级马里奥兄弟》为例:每个幕开始于新关卡的启动,结束于马里奥死亡或玩家通关该关卡。

持续性任务
这些任务会无限延续(无终止状态)。在此情况下,智能体必须学会如何选择最佳动作,同时与环境持续交互。
例如自动化股票交易的智能体。此类任务既无起点也无终点,智能体会持续运行直至我们决定停止。

简要回顾:

探索与利用的权衡
最后,在研究解决强化学习问题的不同方法之前,我们必须讨论另一个非常重要的主题:探索与利用的权衡。
- 探索是指通过尝试随机动作来了解环境,从而获取更多关于环境的信息。
- 利用(Exploitation)是指利用已知信息来最大化收益。
记住,我们强化学习智能体的目标是最大化预期累积收益。但这里存在一个常见陷阱。
举个例子:

在这个游戏中,我们的老鼠可以无限获取小块奶酪(每次+1)。但在迷宫顶端,有一大堆巨型奶酪(+1000)。
然而,如果只专注于利用现有资源,我们的智能体永远无法获得那堆巨型奶酪。相反,它只会利用最近的奖励来源,即便这个来源很微小(利用行为)。
但如果智能体进行少量探索,就能发现更大的奖励(那堆巨型奶酪)。
这就是我们所说的探索与利用权衡问题。我们需要在探索环境和利用已知环境信息之间找到平衡点。
因此,我们必须制定一个规则来处理这种权衡关系。在后续单元中,我们将了解不同的处理方法。
如果还是难以理解,不妨想象一个现实场景:选择餐厅的难题:
- 利用策略:每天去同一家你知道不错的餐厅,但可能因此错过更好的选择。
- 探索:尝试从未去过的餐厅,虽可能遭遇不佳体验,但也可能收获美妙惊喜。
简要回顾:
解决强化学习问题的两大主要方法
既然我们已经了解了强化学习的框架,那么该如何解决强化学习问题呢?
换句话说,如何构建一个能选择使其预期累积奖励最大化的行动的强化学习智能体?
策略π:智能体的大脑
策略
π
\pi
π是我们智能体的大脑,这个函数会根据当前状态告诉我们该采取什么行动。因此它定义了智能体在特定时刻的行为模式。
这个策略函数正是我们需要学习的目标,我们的目的是找到最优策略π* — 当智能体遵循该策略时能够最大化预期回报的策略。我们通过训练来寻找这个π*
训练智能体寻找最优策略π*有两种方法:
- 直接法:教导智能体学习在当前状态下应采取什么行动,即基于策略的方法。
- 间接地教导智能体学习哪些状态更有价值,然后采取导向更有价值状态的动作:基于价值的方法。
基于策略的方法
在基于策略的方法中,我们直接学习策略函数。
该函数将定义从每个状态到最佳对应动作的映射。或者,它可以定义在该状态下所有可能动作集合上的概率分布。
我们有两种类型的策略:
- 确定性策略:在给定状态下,策略总是返回相同的动作。
- 随机性:输出动作上的概率分布。
回顾一下:
基于价值的方法
在基于价值的方法中,我们不学习策略函数,而是学习一个价值函数,该函数将状态映射到处于该状态的期望价值。
状态的价值是指智能体从该状态开始,并按照我们的策略行动时,所能获得的预期折现回报。
“按照我们的策略行动"意味着我们的策略是"前往具有最高价值的状态”。
此处可见,我们的价值函数为每个可能状态定义了相应价值。
得益于价值函数,策略在每一步都会选择由价值函数定义的最大价值状态:先是-7,接着-6,然后-5(依此类推)以实现目标。
总结来说:
强化学习中的"深度"要素
我们目前讨论的都是强化学习。那么"深度"从何体现呢?
深度强化学习通过引入深度神经网络来解决强化学习问题——"深度"之名由此而来。
例如,在下一个单元中,我们将学习两种基于价值的算法:Q 学习(经典强化学习)和深度 Q 学习。
你会看到两者的区别在于,第一种方法使用传统算法创建 Q 表,帮助我们确定每个状态下应采取的动作。
而第二种方法则使用神经网络(来近似估算 Q 值)。
如果你还不熟悉深度学习,强烈推荐观看 FastAI 的《程序员实用深度学习课程》(免费)。
总结
- 强化学习是一种通过行为进行学习的计算方法。我们构建一个智能体,它通过试错与环境互动,并以奖励(正向或负向)作为反馈来从环境中学习。
- 任何强化学习智能体的目标都是最大化其预期累积奖励(也称为预期回报),因为强化学习基于奖励假说 — 即所有目标都可以描述为预期累积奖励的最大化。
- 强化学习过程是一个循环,会输出状态、动作、奖励和下一状态的序列。
- 为了计算预期累积奖励(预期回报),我们对奖励进行折现处理:较早获得的奖励(游戏初期阶段)由于比远期未来奖励更具可预测性,其实现概率更高。
- 解决强化学习问题的核心在于寻找最优策略。策略是智能体的"大脑",它能根据当前状态告诉我们应采取何种行动。最优策略是指能带来预期回报最大化的行动方案。
- 寻找最优策略有两种途径:
- 直接训练策略:基于策略的方法。
- 通过训练一个价值函数来告知智能体在每种状态下能获得的预期回报,并利用该函数定义我们的策略:这类方法称为基于价值的方法。
- 我们之所以称之为"深度"强化学习,是因为引入了深度神经网络来预估应采取的行动(基于策略的方法)或评估状态价值(基于价值的方法),"深度"二字由此得名。
术语表
智能体
智能体通过试错学习决策,并从周围环境中获得奖励与惩罚。
环境
环境是一个模拟世界,智能体可通过与其互动进行学习。
马尔可夫性质
这意味着我们智能体采取的行动仅取决于当前状态,而与过去的状态和行动无关。
观察/状态
- 状态:对世界状态的完整描述。
- 观测:对环境/世界状态的部分描述。
动作
- 离散动作:有限数量的动作,例如左、右、上、下。
- 连续动作:动作具有无限可能性;例如在自动驾驶汽车案例中,驾驶场景会出现无限可能的动作组合。
奖励与折扣
- 奖励:强化学习中的核心要素,用于向智能体反馈所采取行为的优劣。
- 强化学习算法的核心目标是最大化累积奖励。
- 奖励假说:强化学习问题可被建模为(累积)回报的最大化过程。
- 实施折扣是因为早期获得的奖励更可能实现,相比长期奖励更具可预测性。
任务
- 回合制:具有明确的起始点和终止点。
- 连续制:具有起始点但没有终止点。
探索与利用的权衡
- 探索:指通过尝试随机动作并从环境中获取反馈/回报/奖励来了解环境的过程。
- 利用:指运用我们对环境的已知信息来获取最大回报的行为。
- 探索-利用权衡:指在探索环境与利用已知环境信息之间取得平衡的决策考量。
策略
- 策略:它是智能体的"大脑"。在给定状态下,它会告诉我们应采取什么行动。
- 最优策略:当智能体遵循该策略时,能最大化预期回报的策略。通过训练习得。
基于策略的方法:
- 一种解决强化学习问题的方法论。
- 该方法直接学习策略。
- 将每个状态映射到该状态下最佳对应动作,或映射到该状态下可能动作集的概率分布。
基于价值的方法:
- 解决强化学习问题的另一种途径。
- 在这里,我们不训练策略,而是训练一个价值函数,该函数将每个状态映射到处于该状态的期望值。