强化学习入门:从走迷宫开始
从迷宫到AlphaGo:强化学习修炼指南
第 1 章:强化学习入门:从走迷宫开始
走迷宫:一个古老而深刻的智慧游戏
你是否还记得小时候第一次接触迷宫时的情景?那种面对错综复杂的通道、不知该往哪走的困惑?那种碰壁后折返、换个方向再试的挫败感?那种最终找到出口时“原来如此”的兴奋与满足?
迷宫,这个看似简单的游戏,实际上蕴含着人类学习过程最本质的智慧——通过不断尝试、从失败中学习、最终掌握解决问题的最优方法。这种“摸着石头过河”的学习方式,正是强化学习(Reinforcement Learning,简称RL)的核心思想。
在正式开始之前,让我们先看一个经典的迷宫场景:
``` ┌─────────────────────────┐ │ S · · · · · · · · · · · │ │ · █ █ █ █ █ · █ █ █ █ · │ │ · █ · · · · · · · · █ · │ │ · █ · █ █ █ █ █ · █ · · │ │ · · · · · · · · · █ · · │ │ · █ █ █ █ █ █ · █ · █ · │ │ · · · · · · · · · · · E │ └─────────────────────────┘ ```
在这个 11×7 的迷宫中,S 是起点(Start),E 是终点(Exit)。· 代表可以通行的路径,█ 代表墙壁障碍物。智能体需要从起点出发,找到一条到达终点的最短路径。
这看起来是一个再简单不过的问题。但如果我问你:“你是怎么找到这条路径的?”你可能会思考一下,然后给出一个模糊的答案:“试出来的”、“走了几次就记住了”、“感觉是对的”……
正是这种看似本能、模糊的“感觉”,蕴含着强化学习的精髓。
从走迷宫到人工智能:一个关于试错的学习故事
1.1 什么是强化学习?
强化学习是机器学习的一个分支,与监督学习和无监督学习并列,共同构成了现代人工智能的三大基石。与后两者不同,强化学习的学习方式独树一帜:它不依赖于标注好的输入输出对,而是让智能体(Agent)通过与环境的持续交互,自主学习最优策略。
用更通俗的话说,强化学习研究的是这样一个问题:一个能感知环境的智能体,如何通过试错学习,选择能够最大化长期累积奖励的行动策略?
这个定义中有几个关键概念需要理解:
智能体(Agent):指的是能够感知环境并做出决策的实体。在迷宫中,智能体就是那个试图找到出口的“探索者”。在AlphaGo中,智能体就是下棋的程序。在自动驾驶中,智能体就是控制系统。
环境(Environment):智能体所处的外部世界。智能体感知到的所有信息都来自环境,环境会根据智能体的行动给出反馈。在迷宫中,环境就是由墙壁和通道构成的迷宫本身。
动作(Action):智能体在每个时刻可以采取的行动。在迷宫中,动作就是向上、向下、向左、向右移动。在棋类游戏中,动作就是落子的位置。
状态(State):描述智能体在某一时刻所处的情境。状态应该包含智能体做出最优决策所需的所有信息。在迷宫中,状态就是智能体当前所在的单元格位置。
奖励(Reward):环境对智能体动作的即时反馈信号。奖励告诉智能体当前的动作是好是坏,是强化学习的核心信息来源。在迷宫中,通常到达终点获得正奖励(+1),每走一步获得负奖励(-1),撞墙则获得更大的负奖励。
强化学习的目标不是简单地获得最大化的即时奖励,而是最大化长期累积奖励。这引出了另一个核心概念——回报(Return)。从时刻 $t$ 开始的累积奖励定义为:
$$G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1}$$
其中 $\gamma$ 是折扣因子(0 ≤ γ ≤ 1),它衡量了未来奖励的重要性。当 $\gamma = 0$ 时,智能体只关心即时奖励;随着 $\gamma$ 接近 1,智能体越来越重视未来的奖励。
这个折扣回报函数是强化学习最基础也是最重要的数学表达式之一,几乎所有强化学习算法都围绕如何最大化这个值展开。
1.2 强化学习与人类学习的类比
让我们把强化学习放到更宏观的视角来理解。人类是如何学会走路、骑车、下棋这些复杂技能的呢?
回想一下你是如何学会骑自行车的。你不是看了一本《自行车骑行指南》就学会了,也不是有人在你耳边念叨“左脚踩踏板、右脚发力、目视前方”就能掌握。你是跨上车、蹬了几下、摔倒了、爬起来、调整姿势、再试……经过无数次尝试和调整,你终于找到了平衡的感觉,能够自如地骑行了。
这个学习过程有几个关键特征:
第一,没有老师手把手教你每一个动作。你无法获得每一步的“标准答案”——什么时候该往前倾、该倾多少度、用多大的力蹬踏板。你只有通过亲身体验来学习。
第二,你有延迟的反馈。你蹬了一下,车可能没有立刻倒下,也可能立刻倒了。你需要一段时间才能感受到这一蹬是好是坏。短期的好动作(如猛蹬)可能导致长期的不良结果(如失去平衡)。
第三,你会主动探索。你不会永远用同一种方式骑车。当你觉得某个动作不太对时,你会尝试新的方式。探索(Exploration)与利用(Exploitation)的平衡是强化学习的核心难题之一。
第四,你在不断更新自己的认知。每次摔倒后,你学到了什么?踏板踩得太重会导致重心不稳,转弯太急会失去平衡。这些经验逐渐形成你对“如何骑自行车”的理解,指导你未来的行动。
强化学习正是对这种学习方式的数学化和算法化。智能体通过与环境交互获得经验(状态、动作、奖励的序列),从经验中学习如何做出更好的决策。
1.3 强化学习问题形式化:从迷宫到马尔可夫决策过程
现在,让我们更正式地描述强化学习问题。经典的强化学习问题被建模为马尔可夫决策过程(Markov Decision Process,MDP),这是几乎所有强化学习理论的基础。
MDP 由五元组 $(S, A, P, R, \gamma)$ 定义:
- $S$:状态空间,所有可能状态的集合
- $A$:动作空间,所有可能动作的集合
- $P$:状态转移概率函数,$P(s'|s,a)$ 表示在状态 $s$ 下执行动作 $a$ 后转移到状态 $s'$ 的概率
- $R$:奖励函数,$R(s,a,s')$ 或 $R(s,a)$ 表示执行动作后获得的奖励
- $\gamma$:折扣因子
MDP 之所以重要,是因为它满足马尔可夫性质:未来只取决于当前状态和动作,与过去的历史无关。用数学语言说,就是:
$$P(S_{t+1}|S_t, A_t, S_{t-1}, A_{t-1}, \ldots) = P(S_{t+1}|S_t, A_t)$$
这个假设大大简化了问题,使得我们可以专注于“当前状态下应该做什么”,而不必纠结于冗长的历史记录。
以迷宫为例:
状态空间:迷宫中的每一个可通行格子。假设迷宫是 11×7,有 m 个可通行格子,那么 $|S| = m$。
动作空间:四个方向移动,$A = \{上, 下, 左, 右\}$。
状态转移:如果智能体在位置 $(x,y)$ 选择向右移动,且右边不是墙壁,那么下一状态就是 $(x+1, y)$,转移概率为 1;如果右边是墙壁,则状态不变。
奖励函数:一个简单的设计是每走一步获得 -1 的奖励(鼓励走最短路径),到达终点获得 +10 的奖励,其他情况奖励为 0。
在这样的设定下,强化学习的目标就是找到一个策略(Policy) $\pi$,使得从任意初始状态出发,按照策略行动能够获得最大的期望累积奖励。
策略是强化学习的核心输出,它定义了“状态到动作的映射”——给定当前状态,策略告诉我们应该采取什么动作。策略可以是确定性的 $\pi(s) = a$,也可以是概率性的 $\pi(a|s) = P(a|s)$。
强化学习的三大范式对比
1.4 与监督学习的本质区别
为了更深入理解强化学习的独特性,我们需要把它与其他机器学习范式进行对比。
监督学习(Supervised Learning)是最常见的机器学习范式,包括图像分类、语音识别、机器翻译等任务。在监督学习中,我们有一组标注好的训练数据 $(x_i, y_i)$,其中 $x_i$ 是输入,$y_i$ 是对应的标签(正确答案)。模型的任务是学习一个从输入到输出的映射 $f(x) \to y$,使得在新样本上也能给出正确的预测。
监督学习的核心假设是:每个样本都有一个明确的、正确的标签。模型通过比较自己的预测与真实标签的差异(损失函数),不断调整参数来减小这个差异。
这种学习方式有明显的局限性:
第一,它需要“老师”。必须有标注数据,而这些数据往往需要人工标注。在很多实际场景中,获得大量高质量标注数据的成本非常高。
第二,它无法处理序列决策问题。在迷宫问题中,你在第 5 步应该往哪走,取决于你在前 4 步走到了哪里、经过了怎样的路径。这是一个序列决策问题,无法简单地用“输入-输出”对来描述。
第三,它不学习做决策,只学习做预测。即使是自动驾驶的图像分类模型,它也只能“看到”当前画面后判断“这里有行人”,但不能直接告诉你“应该刹车还是绕行”。决策需要考虑当前行动对未来结果的影响,这超出了监督学习的能力范围。
举一个具体的例子来说明这种差异:
假设你训练一个监督学习模型来玩迷宫。你可能会收集大量“截图-最优动作”对:给模型看一个迷宫的截图,标注这时候应该往哪个方向走。如果模型足够强大,它可能学会在某些情况下做出正确的决策。
但这种方法有几个致命问题:首先,迷宫的布局是无穷无尽的,你不可能覆盖所有情况;其次,即使模型在大多数情况下表现良好,它也无法理解“为什么”要往某个方向走——它只是在模仿训练数据中的模式,而不是真正“理解”迷宫的结构;第三,如果迷宫稍微变化(增加一个障碍物),模型很可能完全失效。
强化学习则不同。它不需要“标准答案”,而是让智能体通过与环境的交互,自己发现什么动作是好的、什么动作是坏的。智能体学到的是一种“思维方式”,而不是简单的“状态-动作”映射。
1.5 与无监督学习的本质区别
无监督学习(Unsupervised Learning)的目标是发现数据中的隐藏结构,典型任务包括聚类、降维、异常检测等。在无监督学习中,我们只有无标注的输入数据 $x_i$,没有标签。模型需要自己发现数据中的规律。
无监督学习也不适合解决强化学习问题,因为它根本不涉及“决策”——它不知道什么动作是好的、什么动作是坏的,只是对数据进行统计意义上的分析。
1.6 强化学习的独特优势
正是强化学习的独特之处——通过与环境交互、从奖励信号中学习、做序列决策——使其成为解决复杂决策问题的利器。
强化学习的优势在于:
不需要“老师”。强化学习只需要设计合适的奖励函数,而不需要人工标注每一个状态下应该采取什么动作。奖励函数通常比标注数据更容易设计——在迷宫中,到达终点就是好、撞墙就是坏,这个规则非常自然。
能够处理序贯决策问题。强化学习天然适合处理需要考虑长期后果的决策问题,因为它的目标就是最大化长期累积奖励,而不是即时奖励。
能够发现意想不到的策略。因为智能体是通过试错学习的,它有时会发现人类未曾想到但实际上更优的解决方案。AlphaGo 的“神之一手”就是这样的例子——很多职业棋手认为“不可思议”的棋步,实际上是强化学习算法通过自我对弈发现的更优策略。
下面是一个对比表格,帮助我们更清晰地理解三种范式的区别:
| 维度 | 监督学习 | 无监督学习 | 强化学习 | |------|----------|------------|----------| | 学习信号 | 标签/正确答案 | 无监督(数据内部结构) | 奖励信号 | | 数据形式 | $(x_i, y_i)$ 对 | $x_i$ | 交互经验 $(s,a,r,s')$ | | 学习目标 | 预测准确 | 发现结构 | 最大化累积奖励 | | 典型应用 | 分类、检测、翻译 | 聚类、降维 | 游戏、机器人控制 | | 是否涉及决策 | 否 | 否 | 是 | | 是否考虑长期效果 | 否 | 否 | 是 |
强化学习的基本框架
1.7 智能体-环境交互循环
强化学习的核心是智能体与环境之间的持续交互。这个交互过程可以用以下流程来描述:
```mermaid graph TD A[智能体] -->|动作 A| B[环境] B -->|状态 S| A B -->|奖励 R| A A --> C{策略 π} C --> D[选择动作] D --> A B --> E{状态转移} E --> F[下一状态] F --> B ```
具体而言,智能体与环境的交互遵循以下循环:
1. 感知状态:智能体观察环境的当前状态 $s_t \in S$ 2. 选择动作:智能体根据当前策略 $\pi$ 选择一个动作 $a_t \in A$ 3. 执行动作:环境接收动作,产生新的状态 $s_{t+1}$ 4. 获得奖励:环境给出即时奖励 $r_t$ 5. 更新策略:智能体根据获得的奖励信息更新自己的策略 6. 进入下一轮:回到步骤 1
这个循环不断重复,直到任务完成或达到最大步数限制。
在迷宫问题中,这个循环的具体形式是:
1. 智能体观察自己当前的位置(比如坐标 $(2, 3)$) 2. 智能体根据策略决定往哪个方向走(比如往右) 3. 环境执行这个动作:如果右边是通路,智能体移动到 $(3, 3)$;如果右边是墙,智能体位置不变 4. 环境给出奖励:如果到达终点,奖励 +10;撞墙,奖励 -1;普通移动,奖励 -0.1(鼓励走捷径) 5. 智能体更新策略:如果这次动作导致好的结果,增加选择这个动作的概率;如果结果不好,降低这个概率 6. 继续下一步
1.8 强化学习的核心要素
除了前面提到的智能体、环境、动作、状态、奖励五要素外,强化学习还有几个核心概念需要理解:
价值函数(Value Function):衡量从某个状态出发,按照特定策略行动能够获得的期望累积奖励。价值函数 $V^\pi(s)$ 表示在状态 $s$ 下遵循策略 $\pi$ 获得的期望回报。价值函数回答的问题是:“如果我处于这个状态,情况有多好?”
动作价值函数(Action-Value Function):衡量在某个状态下采取某个动作后,按照特定策略行动能够获得的期望累积奖励。动作价值函数 $Q^\pi(s, a)$ 表示在状态 $s$ 下采取动作 $a$,然后遵循策略 $\pi$ 获得的期望回报。价值函数与动作价值函数的关系是:$V^\pi(s) = \sum_a \pi(a|s) Q^\pi(s, a)$。
最优价值函数与最优策略:强化学习的最终目标是找到最优策略 $\pi^*$,使得在任意状态下获得的期望回报都最大。最优策略对应的价值函数称为最优价值函数 $V^*$ 和最优动作价值函数 $Q^*$。它们满足著名的贝尔曼最优方程:
$$V^*(s) = \max_a \sum_{s'} P(s'|s,a) [R(s,a,s') + \gamma V^*(s')]$$
$$Q^*(s, a) = \sum_{s'} P(s'|s,a) [R(s,a,s') + \gamma \max_{a'} Q^*(s', a')]$$
贝尔曼方程是强化学习算法的基石,它建立了当前价值与未来价值之间的递归关系,使得我们可以通过迭代来计算最优价值函数。
强化学习的分类与方法概览
1.9 基于模型的 vs 无模型的强化学习
根据智能体是否对环境建模,强化学习方法可以分为两大类:
基于模型的方法(Model-Based RL):智能体学习一个环境模型 $P(s'|s,a)$ 和 $R(s,a,s')$,然后基于这个模型进行规划。基于模型的方法样本效率较高,因为它可以利用学习到的模型模拟未来的状态转换,而不需要实际与环境交互。但缺点是需要准确建模,而建模往往很困难。
无模型的方法(Model-Free RL):智能体不显式建模环境,而是直接学习策略或价值函数。无模型方法的代表性算法包括 Q-learning、SARSA、策略梯度(Policy Gradient)等。无模型方法更通用,但通常需要更多的样本。
1.10 基于价值的 vs 基于策略的方法
根据学习目标的不同,无模型方法又可以分为两类:
基于价值的方法(Value-Based):学习价值函数(主要是动作价值函数 $Q(s,a)$),然后根据价值函数间接地得到策略。典型的算法是 Q-learning 和深度 Q 网络(DQN)。在 Q-learning 中,智能体维护一个 $Q$ 表,记录每个状态-动作对的估计价值,然后选择价值最高的动作。
基于策略的方法(Policy-Based):直接学习策略函数 $\pi(a|s)$ 或 $\pi_\theta(a|s)$(参数化为 $\theta$),而不是学习价值函数。策略梯度(Policy Gradient)是典型的基于策略的方法,它通过梯度上升来优化策略参数,使得期望回报最大化。
演员-评论家方法(Actor-Critic):结合了价值函数和策略函数,是当前最主流的强化学习方法之一。演员(Actor)负责更新策略,评论家(Critic)负责估计价值函数,两者相互促进、共同提升。
1.11 强化学习方法全景图
下面是一张展示强化学习方法分类的图示:
```mermaid graph TD RL[强化学习] --> MB[基于模型] RL --> MF[无模型]
MB --> Plan[规划] MB --> Learn[学习模型 + 规划]
MF --> VB[基于价值] MF --> PB[基于策略] MF --> AC[演员-评论家]
VB --> Q[Q-Learning] VB --> DQN[深度Q网络] VB --> DDQN[双DQN] VB --> PER[优先经验回放]
PB --> PG[策略梯度] PB --> TRPO[信任域策略优化] PB --> PPO[近端策略优化]
AC --> A2C[优势演员评论家] AC -