深度强化学习简介
Hugging Face 深度强化学习课程的第 1 章 🤗
⚠️ **本文的更新版本在此处提供** 👉 https://huggingface.co/deep-rl-course/unit1/introduction
本文是深度强化学习课程的一部分。这是一个从入门到精通的免费课程。请在此处查看课程大纲 here.

⚠️ **本文的更新版本在此处提供** 👉 https://huggingface.co/deep-rl-course/unit1/introduction
本文是深度强化学习课程的一部分。这是一个从入门到精通的免费课程。请在此处查看课程大纲 here.
欢迎来到人工智能最引人入胜的主题:**深度强化学习。**
深度强化学习是一种机器学习类型,其中代理通过**执行动作**并**观察结果**来学习在环境中**如何行动**。
自 2013 年的《深度 Q-学习》论文以来,我们已经看到了许多突破。从 OpenAI 在 Dota2 中击败世界上一些最佳玩家的 Five,到 灵巧项目,我们**正处于深度强化学习研究的激动人心的时刻。**

此外,自 2018 年以来,**你现在可以访问如此多出色的环境和库来构建你的代理。**
这就是现在是开始学习的最佳时机的原因,通过本课程,**你来对了地方。**
是的,因为本文是深度强化学习课程的第一单元,这是一个**从初学者到专家免费的课程**,你将学习理论并使用著名的深度强化学习库,如 Stable Baselines3、RL Baselines3 Zoo 和 RLlib。
在这门免费课程中,你将:
- 📖 **理论与实践**地学习深度强化学习。
- 🧑💻 学习**使用著名的深度强化学习库**,如 Stable Baselines3、RL Baselines3 Zoo 和 RLlib。
- 🤖 在**独特环境**中训练代理,如 SnowballFight、Huggy the Doggo 🐶,以及经典环境,如 Space Invaders 和 PyBullet。
- 💾 **一行代码**将训练好的代理发布到 Hub。也可以从社区下载强大的代理。
- 🏆 **参与挑战**,你将在其中评估你的代理与其他团队的表现。
- 🖌️🎨 学习**分享你使用 Unity 和 Godot 制作的环境**。
所以在这个第一单元中,**你将学习深度强化学习的基础知识。**然后,你将训练你的第一个着陆器代理**正确地降落在月球🌕并将其上传到 Hugging Face Hub,这是一个免费的开放平台,人们可以在其中共享机器学习模型、数据集和演示。**
在深入实施深度强化学习代理之前,**掌握这些要素**至关重要。本章的目标是为你打下坚实的基础。
如果你愿意,可以观看本章的 📹 视频版本
那么,我们开始吧!🚀
**什么是强化学习?**
要理解强化学习,我们先从大局着眼。
**概述**
强化学习的思想是,**代理(AI)将通过与环境交互(通过试错)并接收奖励(负面或正面)作为执行动作的反馈来学习。**
通过与环境互动学习**源于我们的自然经验。**
例如,想象一下,把你的小弟弟放在一个他从未玩过的视频游戏面前,手里拿着控制器,然后让他一个人玩。

你的弟弟将通过按下正确的按钮(动作)与环境(视频游戏)交互。他得到一个硬币,那是 +1 奖励。这是积极的,他刚刚明白在这个游戏中**他必须获得硬币。**

但接着,**他又按下了右键**,他碰到了一个敌人,他刚死了 -1 奖励。

通过与环境的试错互动,你的小弟弟明白**他需要在这个环境中获取硬币,但要避开敌人。**
**在没有任何监督的情况下**,这个孩子会越来越擅长玩这个游戏。
这就是人类和动物的学习方式,**通过互动。**强化学习只是一种**通过行动学习的计算方法。**
**正式定义**
现在我们来看一个正式定义
强化学习是一种解决控制任务(也称为决策问题)的框架,通过构建代理,使其通过试错与环境互动并接收奖励(正面或负面)作为唯一反馈来学习。
⇒ 那么强化学习是如何工作的呢?
**强化学习框架**
**强化学习过程**

为了理解强化学习过程,让我们想象一个代理正在学习玩一个平台游戏

- 我们的代理从**环境**中接收到**状态 **——我们收到游戏(环境)的第一帧。
- 根据该**状态 ,**代理执行**动作 **——我们的代理将向右移动。
- 环境进入一个**新的状态 **——新的一帧。
- 环境给代理一些**奖励 **——我们没有死(*正面奖励 +1*)。
这个强化学习循环输出一个**状态、动作、奖励和下一个状态**的序列。

代理的目标是最大化其累积奖励,**称为预期回报。**
**奖励假设:强化学习的核心思想**
⇒ 为什么代理的目标是最大化预期回报?
因为强化学习基于**奖励假设**,即所有目标都可以描述为**最大化预期回报**(预期累积奖励)。
这就是为什么在强化学习中,**为了获得最佳行为,**我们需要**最大化预期累积奖励。**
**马尔可夫性质**
在论文中,你会看到强化学习过程被称为**马尔可夫决策过程**(MDP)。
我们将在后续单元中再次讨论马尔可夫性质。但如果你今天需要记住一些关于它的东西,马尔可夫性质意味着我们的代理**只需要当前状态来决定**采取什么动作,而**不需要之前的所有状态和动作的历史记录**。
**观测/状态空间**
观测/状态是**代理从环境中获取的信息**。在视频游戏的情况下,它可以是一帧(截图)。在交易代理的情况下,它可以是某种股票的价值等。
观察和状态之间有一个区别
- 状态 s:是对**世界状态的完整描述**(没有隐藏信息)。在完全可观测的环境中。

在国际象棋游戏中,我们从环境中接收到一个状态,因为我们可以访问整个棋盘信息。
在国际象棋游戏中,我们处于一个完全可观测的环境中,因为我们可以访问整个棋盘信息。
- 观测 o:是**状态的部分描述**。在部分可观测的环境中。

在《超级马里奥兄弟》中,我们只能看到靠近玩家的部分关卡,所以我们收到一个观测。
在《超级马里奥兄弟》中,我们处于一个部分可观测的环境中。我们收到一个观测,**因为我们只能看到关卡的一部分。**
实际上,在本课程中我们使用“状态”一词,但在实现中我们将进行区分。
总结一下

动作空间
动作空间是**环境中所有可能动作的集合。**
动作可以来自*离散*或*连续空间*
- 离散空间:可能的动作数量是**有限的**。

在《超级马里奥兄弟》中,我们的动作集是有限的,因为我们只有 4 个方向和跳跃。
- 连续空间:可能的动作数量是**无限的**。
自动驾驶汽车代理有无限多的可能动作,因为它可以左转 20°、21.1°、21.2°、按喇叭、右转 20°……
总结一下

考虑这些信息至关重要,因为它将在**将来选择强化学习算法时具有重要意义。**
**奖励与折扣**
奖励在强化学习中至关重要,因为它是代理的**唯一反馈**。多亏了它,我们的代理才知道**所采取的行动是否正确。**
每个时间步 t 的累积奖励可以写成

这相当于

然而,实际上,**我们不能就这样把它们加起来。**较早(游戏开始时)的奖励**更有可能发生**,因为它们比长期未来的奖励更可预测。
假设你的代理是这只小老鼠,它每个时间步可以移动一格,你的对手是猫(它也可以移动)。你的目标是**在被猫吃掉之前吃到最大量的奶酪。**

正如我们在图中所见,**吃到我们附近的奶酪比吃到靠近猫的奶酪更有可能**(我们离猫越近,就越危险)。
因此,**靠近猫的奖励,即使它更大(更多的奶酪),也会被更多地折扣**,因为我们不确定能否吃到它。
要**折扣奖励**,我们这样做
- 我们定义一个称为伽马的折扣率。**它必须在 0 到 1 之间。**大多数情况下在 **0.99 和 0.95** 之间。
伽马值越大,折扣越小。这意味着我们的代理**更关心长期奖励。**
另一方面,伽马值越小,折扣越大。这意味着我们的代理**更关心短期奖励(最近的奶酪)。**
2. 然后,每个奖励将以时间步数的指数对伽马进行折扣。随着时间步的增加,猫离我们越来越近,**所以未来的奖励发生的可能性越来越小。**
我们**折扣后的累积预期奖励**是

任务类型
任务是强化学习问题的**一个实例**。我们可以有两种类型的任务:情节性和连续性。
情节性任务
在这种情况下,我们有一个起点和终点(**一个终点状态**)。**这构成一个回合**:一个由状态、动作、奖励和新状态组成的列表。
例如,想想《超级马里奥兄弟》:一个回合从启动一个新的马里奥关卡开始,并**在你被杀死或到达关卡末尾时结束。**

连续性任务
这些任务将永远持续下去(没有终止状态)。在这种情况下,代理必须**学习如何选择最佳动作并同时与环境交互。**
例如,一个进行自动化股票交易的代理。对于这个任务,没有起点和终点状态。**代理将一直运行,直到我们决定停止它们。**


**探索/利用权衡**
最后,在研究解决强化学习问题的不同方法之前,我们必须涵盖一个非常重要的话题:*探索/利用权衡。*
探索是指通过尝试随机动作来探索环境,以**发现更多关于环境的信息。**
利用是指**利用已知信息来最大化奖励。**
请记住,我们强化学习代理的目标是最大化预期累积奖励。然而,**我们可能会陷入一个常见的陷阱。**
举个例子

在这个游戏中,我们的老鼠可以吃到**无限量的小块奶酪**(每块+1)。但在迷宫的顶部,有巨量的奶酪(+1000)。
然而,如果我们只关注利用,我们的代理将永远无法达到巨量的奶酪。相反,它只会利用**最近的奖励来源**,即使这个来源很小(利用)。
但是如果我们的代理进行一些探索,它就可以**发现巨大的奖励**(那堆大奶酪)。
这就是我们所说的**探索/利用权衡**。我们需要平衡**探索环境**的程度和**利用我们所了解的环境**的程度。
因此,我们必须**定义一个规则来处理这种权衡**。我们将在未来的章节中看到不同的处理方法。
如果仍然感到困惑,**请思考一个实际问题:选择一家餐厅:**

- 利用:你每天都去你熟悉的同一家餐厅,**承担错过另一家更好餐厅的风险。**
- 探索:尝试你从未去过的餐厅,有不好的体验的风险,**但有极好体验的可能机会。**
总结一下

**解决强化学习问题的两种主要方法**
⇒ 现在我们了解了强化学习框架,如何解决强化学习问题呢?
换句话说,如何构建一个能**选择能最大化其预期累积奖励的动作**的强化学习代理?
**策略 π:代理的大脑**
策略**π**是**代理的大脑**,它是一个函数,告诉我们**在给定当前状态下应该采取什么行动。**因此,它**定义了代理在给定时间点的行为**。

将策略视为我们代理的大脑,该函数会告诉我们给定状态下要采取的动作
此策略**是我们想要学习的函数**,我们的目标是找到最优策略**π**,即当代理根据该策略行动时,**能最大化预期回报的策略。我们通过训练找到这个**π**。
训练我们的代理找到这个最优策略 π* 有两种方法
- **直接**教代理学习在给定状态下**采取什么动作**:**基于策略的方法。**
- **间接**地教代理学习**哪些状态更有价值**,然后采取**导致更有价值状态的动作**:基于价值的方法。
**基于策略的方法**
在基于策略的方法中,**我们直接学习一个策略函数。**
此函数将每个状态映射到该状态下最佳的相应动作。**或者在该状态下可能动作集上的概率分布。**

我们有两种策略类型
- 确定性:给定状态下的策略**总是返回相同的动作。**


- 随机性:输出**动作上的概率分布。**


总结一下


**基于价值的方法**
在基于价值的方法中,我们不是训练一个策略函数,而是**训练一个价值函数**,该函数将状态映射到**处于该状态的预期价值。**
一个状态的价值是代理在**从该状态开始并按照我们的策略行动**时可以获得的**预期折扣回报**。
“根据我们的策略行动”只是指我们的策略是“**走向价值最高的州**”。

这里我们看到我们的价值函数**为每个可能的状态定义了价值。**

多亏了我们的价值函数,我们的策略每一步都会选择价值函数定义的价值最大的状态:-7,然后是-6,然后是-5(依此类推),以达到目标。
总结一下


**强化学习中的“深度”**
⇒ 到目前为止我们谈论的是强化学习。但“深度”又从何而来呢?
深度强化学习引入了**深度神经网络来解决强化学习问题**——因此得名“深度”。
例如,在下一篇文章中,我们将研究 Q-学习(经典强化学习),然后是深度 Q-学习,两者都是基于价值的强化学习算法。
你会发现不同之处在于,第一种方法中,**我们使用传统算法**来创建一个 Q 表,帮助我们找到每个状态下要采取的动作。
在第二种方法中,**我们将使用神经网络**(来近似 q 值)。

如果你不熟悉深度学习,你绝对应该观看 fastai 的面向程序员的实用深度学习课程(免费)
信息量很大,我们来总结一下
强化学习是一种通过行动学习的计算方法。我们构建一个代理,通过**试错**与环境交互并接收奖励(负面或正面)作为反馈来学习。
任何强化学习代理的目标都是最大化其预期累积奖励(也称为预期回报),因为强化学习基于**奖励假设**,即**所有目标都可以描述为最大化预期累积奖励。**
强化学习过程是一个循环,输出一系列**状态、动作、奖励和下一个状态。**
为了计算预期累积奖励(预期回报),我们对奖励进行折扣:较早(游戏开始时)的奖励**更有可能发生,因为它们比长期未来的奖励更可预测。**
为了解决强化学习问题,你需要**找到一个最优策略**,策略是人工智能的“大脑”,它会告诉我们**在给定状态下应该采取什么行动。**最优策略是**能够最大化预期回报的策略。**
有两种方法可以找到你的最优策略
- 通过直接训练策略:**基于策略的方法。**
- 通过训练一个价值函数,告诉我们代理在每个状态下将获得的预期回报,并使用该函数来定义我们的策略:**基于价值的方法。**
最后,我们谈论深度强化学习,因为我们引入了**深度神经网络来估计要采取的动作(基于策略)或估计状态的价值(基于价值)**,因此得名“深度”。
现在你已经学习了强化学习的基础知识,你已经准备好训练你的第一个着陆器代理,使其**正确地降落在月球🌕并将其通过 Hub 🔥 分享给社区**
点击这里开始教程 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit1/unit1.ipynb
由于学习和避免能力错觉的最佳方法是**自我测试**。我们编写了一个测验来帮助你找出**你需要加强学习的地方**。在此处检查你的知识 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit1/quiz.md
恭喜你完成了本章!**这是最长的一章**,信息量很大。也恭喜你完成了教程。你刚刚训练了你的第一个深度强化学习代理并将其分享到 Hub 🥳。
如果所有这些元素让你**仍然感到困惑**,那是**正常现象**。**我和所有学习强化学习的人都经历过同样的感觉。**
花些时间真正理解这些材料再继续。掌握这些元素并打下坚实的基础,才能进入**有趣的部分。**
如果你想深入了解,我们在教学大纲中发布了额外的阅读材料 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit1/README.md
当然,在课程中,**我们将再次使用和解释这些术语**,但最好在深入下一章之前理解它们。
在下一章中,我们将学习 Q-学习并更深入地了解**基于价值的方法。**
别忘了分享给你想学习的朋友 🤗!
最后,我们希望**根据你的反馈不断改进和更新课程**。如果你有任何反馈,请填写此表格 👉 https://forms.gle/3HgA7bEHwAmmLfwh9