010 《深度强化学习:原理、算法与实践 (Deep Reinforcement Learning: Principles, Algorithms, and Practice)》
🌟🌟🌟本文由Gemini 2.5 Flash Preview 04-17生成,用来辅助学习。🌟🌟🌟
书籍大纲
▮▮ 1. 绪论:迈入深度强化学习的世界 (Introduction: Stepping into the World of Deep Reinforcement Learning)
▮▮▮▮ 1.1 什么是人工智能、机器学习与强化学习? (What is AI, ML, and RL?)
▮▮▮▮ 1.2 强化学习的基本概念与挑战 (Basic Concepts and Challenges of Reinforcement Learning)
▮▮▮▮ 1.3 深度学习的兴起与能力 (The Rise and Power of Deep Learning)
▮▮▮▮ 1.4 深度强化学习的诞生与意义 (The Birth and Significance of Deep Reinforcement Learning)
▮▮▮▮ 1.5 本书的结构与目标读者 (Structure of the Book and Target Audience)
▮▮ 2. 强化学习基础:马尔可夫决策过程与动态规划 (RL Fundamentals: MDP and Dynamic Programming)
▮▮▮▮ 2.1 马尔可夫性质与马尔可夫链 (Markov Property and Markov Chain)
▮▮▮▮ 2.2 马尔可夫奖励过程 (Markov Reward Process, MRP)
▮▮▮▮▮▮ 2.2.1 回报与折扣因子 (Return and Discount Factor)
▮▮▮▮▮▮ 2.2.2 价值函数 (Value Function)
▮▮▮▮▮▮ 2.2.3 贝尔曼方程 (Bellman Equation for MRP)
▮▮▮▮ 2.3 马尔可夫决策过程 (Markov Decision Process, MDP)
▮▮▮▮▮▮ 2.3.1 MDP的定义与组成 (Definition and Components of MDP)
▮▮▮▮▮▮ 2.3.2 策略 (Policy)
▮▮▮▮▮▮ 2.3.3 状态价值函数 v_π(s) 与动作价值函数 q_π(s, a) (State-Value Function v_π(s) and Action-Value Function q_π(s, a))
▮▮▮▮▮▮ 2.3.4 贝尔曼期望方程 (Bellman Expectation Equation)
▮▮▮▮▮▮ 2.3.5 最优价值函数 v_(s) 与 q_(s, a) (Optimal Value Functions v_(s) and q_(s, a))
▮▮▮▮▮▮ 2.3.6 贝尔曼最优方程 (Bellman Optimality Equation)
▮▮▮▮ 2.4 动态规划求解MDP (Solving MDPs with Dynamic Programming)
▮▮▮▮▮▮ 2.4.1 策略评估 (Policy Evaluation)
▮▮▮▮▮▮ 2.4.2 策略改进 (Policy Improvement)
▮▮▮▮▮▮ 2.4.3 策略迭代 (Policy Iteration)
▮▮▮▮▮▮ 2.4.4 价值迭代 (Value Iteration)
▮▮▮▮▮▮ 2.4.5 动态规划的局限性 (Limitations of Dynamic Programming)
▮▮ 3. 深度学习基础回顾 (Deep Learning Fundamentals Review)
▮▮▮▮ 3.1 神经网络基础 (Neural Network Basics)
▮▮▮▮ 3.2 常用的神经网络架构 (Common Neural Network Architectures)
▮▮▮▮ 3.3 损失函数与优化器 (Loss Functions and Optimizers)
▮▮▮▮ 3.4 深度学习训练技巧 (Deep Learning Training Techniques)
▮▮▮▮ 3.5 深度学习框架简介 (Introduction to Deep Learning Frameworks)
▮▮ 4. 连接深度学习与强化学习:函数逼近 (Connecting DL and RL: Function Approximation)
▮▮▮▮ 4.1 为什么需要函数逼近? (Why Function Approximation?)
▮▮▮▮ 4.2 使用神经网络逼近价值函数或策略 (Using Neural Networks to Approximate Value Functions or Policies)
▮▮▮▮ 4.3 深度强化学习的挑战 (Challenges of Deep Reinforcement Learning)
▮▮ 5. 基于值的深度强化学习方法 (Value-Based Deep Reinforcement Learning Methods)
▮▮▮▮ 5.1 Q-学习基础 (Foundation of Q-Learning)
▮▮▮▮ 5.2 深度Q网络 (Deep Q-Network, DQN)
▮▮▮▮ 5.3 DQN的改进算法 (Improvements on DQN)
▮▮▮▮ 5.4 基于值的连续动作空间方法 (Value-Based Methods for Continuous Action Spaces)
▮▮ 6. 基于策略的深度强化学习方法 (Policy-Based Deep Reinforcement Learning Methods)
▮▮▮▮ 6.1 策略梯度定理 (Policy Gradient Theorem)
▮▮▮▮ 6.2 REINFORCE算法 (REINFORCE Algorithm)
▮▮▮▮ 6.3 基线 (Baseline) 的引入 (Introducing Baselines)
▮▮▮▮ 6.4 策略梯度方法的优缺点 (Pros and Cons of Policy Gradient Methods)
▮▮ 7. Actor-Critic 深度强化学习方法 (Actor-Critic Deep Reinforcement Learning Methods)
▮▮▮▮ 7.1 Actor-Critic 框架 (The Actor-Critic Framework)
▮▮▮▮ 7.2 A2C 与 A3C (Asynchronous Advantage Actor-Critic, A3C / Advantage Actor-Critic, A2C)
▮▮▮▮ 7.3 确定性策略梯度 (Deterministic Policy Gradient, DPG)
▮▮▮▮ 7.4 深度确定性策略梯度 (Deep Deterministic Policy Gradient, DDPG)
▮▮▮▮ 7.5 TD3 (Twin Delayed Deep Deterministic Policy Gradient)
▮▮▮▮ 7.6 SAC (Soft Actor-Critic)
▮▮ 8. 高级主题一:探索策略与内在激励 (Advanced Topic I: Exploration Strategies and Intrinsic Motivation)
▮▮▮▮ 8.1 探索的重要性与挑战 (Importance and Challenges of Exploration)
▮▮▮▮ 8.2 基于不确定性的探索 (Uncertainty-Based Exploration)
▮▮▮▮ 8.3 基于内在激励的探索 (Intrinsic Motivation-Based Exploration)
▮▮▮▮ 8.4 基于进化的探索 (Evolutionary-Based Exploration)
▮▮ 9. 高级主题二:多智能体深度强化学习 (Advanced Topic II: Multi-Agent Deep Reinforcement Learning, MARL)
▮▮▮▮ 9.1 多智能体RL的问题设置 (Problem Settings in MARL)
▮▮▮▮ 9.2 MARL的挑战 (Challenges in MARL)
▮▮▮▮ 9.3 中心化训练分布式执行 (Centralized Training Decentralized Execution, CTDE)
▮▮▮▮ 9.4 基于值分解的MARL算法 (Value Decomposition Based MARL Algorithms)
▮▮▮▮ 9.5 多智能体Actor-Critic算法 (Multi-Agent Actor-Critic Algorithms)
▮▮▮▮ 9.6 其他MARL方法与应用 (Other MARL Methods and Applications)
▮▮ 10. 高级主题三:分层与模型基础的深度强化学习 (Advanced Topic III: Hierarchical and Model-Based Deep RL)
▮▮▮▮ 10.1 分层强化学习 (Hierarchical Reinforcement Learning, HRL)
▮▮▮▮ 10.2 模型基础的强化学习 (Model-Based Reinforcement Learning)
▮▮▮▮ 10.3 深度学习在模型学习中的应用 (Applying Deep Learning in Model Learning)
▮▮▮▮ 10.4 基于模型预测控制的DRL (Model Predictive Control based DRL)
▮▮▮▮ 10.5 梦境学习 (Dreamer) 等模型基础DRL算法 (Model-Based DRL Algorithms like Dreamer)
▮▮ 11. 高级主题四:离线强化学习与模仿学习 (Advanced Topic IV: Offline RL and Imitation Learning)
▮▮▮▮ 11.1 离线强化学习 (Offline Reinforcement Learning)
▮▮▮▮ 11.2 解决分布偏移的方法 (Methods to Address Distribution Shift)
▮▮▮▮ 11.3 主要的离线RL算法 (Major Offline RL Algorithms)
▮▮▮▮ 11.4 模仿学习 (Imitation Learning)
▮▮▮▮ 11.5 行为克隆 (Behavioral Cloning)
▮▮▮▮ 11.6 数据集聚合 (Dataset Aggregation, DAgger)
▮▮▮▮ 11.7 生成对抗模仿学习 (Generative Adversarial Imitation Learning, GAIL)
▮▮ 12. 深度强化学习的应用案例分析 (Case Studies of Deep Reinforcement Learning Applications)
▮▮▮▮ 12.1 游戏领域 (Gaming Domain)
▮▮▮▮ 12.2 机器人控制 (Robotics Control)
▮▮▮▮ 12.3 自动驾驶与智能交通 (Autonomous Driving and Intelligent Transportation)
▮▮▮▮ 12.4 推荐系统与智能决策 (Recommendation Systems and Intelligent Decision Making)
▮▮▮▮ 12.5 其他前沿应用 (Other Frontier Applications)
▮▮ 13. 深度强化学习的实践:框架与技巧 (Deep Reinforcement Learning Practice: Frameworks and Tips)
▮▮▮▮ 13.1 主流DRL框架介绍 (Introduction to Mainstream DRL Frameworks)
▮▮▮▮ 13.2 构建DRL系统的基本流程 (Basic Workflow for Building a DRL System)
▮▮▮▮ 13.3 环境构建与接口 (Environment Construction and Interfaces)
▮▮▮▮ 13.4 超参数调优技巧 (Hyperparameter Tuning Techniques)
▮▮▮▮ 13.5 训练稳定性与调试 (Training Stability and Debugging)
▮▮▮▮ 13.6 评估指标与方法 (Evaluation Metrics and Methods)
▮▮ 14. 深度强化学习的未来与挑战 (Future and Challenges of Deep Reinforcement Learning)
▮▮▮▮ 14.1 当前面临的关键挑战 (Key Current Challenges)
▮▮▮▮ 14.2 前沿研究方向 (Frontier Research Directions)
▮▮▮▮ 14.3 DRL的伦理和社会影响 (Ethical and Social Implications of DRL)
▮▮▮▮ 14.4 总结与展望 (Summary and Outlook)
▮▮ 附录A: 数学基础回顾 (Mathematical Background Review)
▮▮ 附录B: 术语对照与词汇表 (Glossary of Terms)
▮▮ 附录C: DRL研究资源与学习路径 (DRL Resources and Learning Paths)
▮▮ 附录D: 部分代码示例 (Selected Code Examples)
1. 绪论:迈入深度强化学习的世界 (Introduction: Stepping into the World of Deep Reinforcement Learning)
欢迎来到深度强化学习 (Deep Reinforcement Learning, DRL) 的精彩世界!📘 本书旨在为您系统性地介绍这一人工智能 (Artificial Intelligence, AI) 领域中最具活力和前景的方向之一。在本章中,我们将首先对人工智能、机器学习 (Machine Learning, ML) 和强化学习 (Reinforcement Learning, RL) 进行一个宏观的梳理,明确它们之间的关系与区别。接着,我们将深入了解强化学习的核心概念、组成要素以及其面临的基本挑战。随后,我们将回顾深度学习 (Deep Learning, DL) 的发展及其强大的能力,为理解 DRL 奠定基础。最后,我们将探讨将深度学习与强化学习结合的必然性与重要意义,并概述本书的结构,帮助不同背景的读者找到适合自己的学习路径。无论您是初次接触这个领域,还是希望深入理解前沿算法和实践应用,本书都将为您提供一份全面且深入的指南。
1.1 什么是人工智能、机器学习与强化学习? (What is AI, ML, and RL?)
在讨论深度强化学习之前,我们需要先理解构成它的基础概念。人工智能、机器学习和强化学习是三个密切相关但又有所区别的概念,它们代表了人类对创造智能机器的不同探索阶段和方法。
⚝ 人工智能 (Artificial Intelligence, AI): 这是一个最广泛的概念,其目标是创造能够模拟或甚至超越人类智能的机器。AI 的范畴非常广泛,包括感知、推理、规划、学习、自然语言处理等等。它可以是基于规则的专家系统,也可以是基于数据学习的现代方法。可以把 AI 看作是最终的宏伟目标。
⚝ 机器学习 (Machine Learning, ML): ML 是实现 AI 的一种重要方法,其核心思想是让计算机系统通过学习数据,而不是通过明确的编程指令来完成特定任务。简单来说,机器学习的模型能够从数据中识别模式,并利用这些模式对新数据做出预测或决策。机器学习又可以细分为不同的范例:
▮▮▮▮⚝ 监督学习 (Supervised Learning): 从带有标签的输入-输出对数据中学习一个函数,以便根据新的输入预测输出。例如,图像分类、房价预测。
▮▮▮▮⚝ 无监督学习 (Unsupervised Learning): 从不带标签的数据中发现隐藏的结构或模式。例如,聚类、降维。
▮▮▮▮⚝ 强化学习 (Reinforcement Learning): 通过与环境的交互学习,目标是最大化长期累积奖励。这是本书的重点之一。
▮▮▮▮⚝ 半监督学习 (Semi-Supervised Learning): 结合了监督学习和无监督学习,使用少量标记数据和大量未标记数据进行学习。
⚝ 深度学习 (Deep Learning, DL): DL 是机器学习的一个子领域,它主要使用深层神经网络 (Deep Neural Networks) 作为模型。深度神经网络包含多个隐藏层,能够自动从原始数据中学习层次化的特征表示。深度学习在图像识别、语音识别、自然语言处理等领域取得了巨大的成功,其强大的特征提取能力是 DRL 得以实现的关键。
所以,我们可以理解为:AI 是目标,ML 是实现目标的方法之一,而 DL 是 ML 中一种强大的技术,RL 则是 ML 中一个独特的范例。深度强化学习 (DRL) 则是将 DL 的强大表示学习能力与 RL 的决策能力相结合,旨在解决具有高维状态或动作空间、需要复杂决策的强化学习问题。
图1.1 概念关系示意图(脑海中构建一个维恩图:最外面是AI,里面是ML,ML里面包含SL, UL, RL等,DL是ML的一个子集,与RL有交集,交集部分就是DRL)
1.2 强化学习的基本概念与挑战 (Basic Concepts and Challenges of Reinforcement Learning)
强化学习与其他机器学习范例最大的不同在于其学习方式:智能体 (Agent) 通过试错 (Trial and Error) 与环境 (Environment) 进行交互,并根据获得的奖励信号来调整自己的行为策略,以期获得最大的长期累积奖励。
强化学习的核心要素包括:
⚝ 智能体 (Agent): 进行学习和决策的实体。它观察环境,选择并执行动作。🤖
⚝ 环境 (Environment): 智能体之外的一切,智能体通过与环境交互来感知状态变化和接收奖励。🌍
⚝ 状态 (State): 对环境当前情况的描述。智能体根据当前状态来决定采取何种动作。可以是离散的(如下棋的棋盘格局)或连续的(如机器人的关节角度)。\(s \in \mathcal{S}\)
⚝ 动作 (Action): 智能体可以执行的行动。执行动作会改变环境的状态,并可能获得奖励。可以是离散的(如游戏中的上下左右)或连续的(如控制机械臂的力矩)。\(a \in \mathcal{A}\)
⚝ 奖励 (Reward): 环境在智能体执行某个动作后给予的即时反馈信号。奖励可以是正的(表示好的行为)或负的(表示不好的行为,也称为惩罚)。智能体的目标是最大化长期累积奖励。\(r \in \mathbb{R}\)
⚝ 策略 (Policy): 智能体的行为规则,描述了在给定状态下,智能体选择执行哪个动作的倾向性或概率。策略可以是确定性的 (\(a = \pi(s)\)) 或随机性的 (\(\pi(a|s) = P(A=a|S=s)\))。策略是RL学习的最终目标之一。
⚝ 价值函数 (Value Function): 评估一个状态或一个状态-动作对的长期价值。它表示从当前状态或状态-动作对开始,遵循某个策略长期可以获得的累积奖励的期望。
▮▮▮▮⚝ 状态价值函数 (State-Value Function): \(v_\pi(s)\),表示从状态 \(s\) 开始,遵循策略 \(\pi\) 所能获得的期望累积奖励。
▮▮▮▮⚝ 动作价值函数 (Action-Value Function): \(q_\pi(s, a)\),表示在状态 \(s\) 下执行动作 \(a\),然后遵循策略 \(\pi\) 所能获得的期望累积奖励。
强化学习面临的关键挑战包括:
⚝ 延迟奖励 (Delayed Reward): 智能体执行的动作可能不会立即产生明显的奖励信号,而奖励可能会在很久之后的未来出现。这使得将最终的奖励分配给之前的一系列动作(即信用分配问题 (Credit Assignment Problem))变得困难。例如,在围棋中,只有在游戏结束时才知道最终的输赢,而决定胜负的关键可能在于几十步甚至上百步之前的某个子。
⚝ 探索与利用 (Exploration vs. Exploitation): 智能体需要在已经知道的有利行为(利用,Exploitation)和尝试新的、可能带来更高奖励但结果不确定的行为(探索,Exploration)之间取得平衡。过度利用可能导致陷入局部最优,而过度探索可能效率低下。🤔
⚝ 高维状态空间和动作空间 (High-Dimensional State and Action Spaces): 在许多实际问题中,状态或动作的数量可能是巨大甚至是无限的(连续空间)。传统的表格型强化学习方法无法处理这种情况。例如,一个高分辨率图像作为状态,或者机器人关节的连续角度作为动作。
⚝ 环境的非平稳性 (Non-stationarity of the Environment): 在多智能体系统中,每个智能体的学习过程都会改变环境,这使得其他智能体面临一个不断变化的环境。
⚝ 部分可观测性 (Partial Observability): 智能体可能无法完全感知环境的真实状态,只能获得部分观测信息。这需要智能体具备记忆能力或状态估计能力。
1.3 深度学习的兴起与能力 (The Rise and Power of Deep Learning)
深度学习在21世纪初开始崭露头角,并在2010年后取得了爆发式的发展,成为了推动人工智能进步的核心驱动力之一。其成功的关键在于:
⚝ 大数据 (Big Data): 互联网和传感器技术的发展产生了海量的数据,为深度学习模型的训练提供了充足的燃料。📊
⚝ 计算能力的提升 (Increased Computing Power): 图形处理器 (Graphics Processing Unit, GPU) 等并行计算硬件的发展,使得训练包含数百万甚至数十亿参数的深层神经网络成为可能。🚀
⚝ 算法的进步 (Algorithmic Advances): 激活函数(如 ReLU)、优化器(如 Adam)、正则化技术(如 Dropout)、批量归一化 (Batch Normalization) 等方法的提出,有效解决了深层网络训练中的梯度消失/爆炸、过拟合等问题。
⚝ 开源框架 (Open-Source Frameworks): TensorFlow, PyTorch 等易于使用的深度学习框架的出现,极大地降低了深度学习的开发门槛。🛠️
深度学习最突出的能力在于其强大的表示学习 (Representation Learning) 能力。通过端到端的训练,深层神经网络能够自动从原始输入数据中学习到越来越抽象和高层次的特征表示,而无需人工进行复杂的特征工程。例如,在图像识别中,CNN (Convolutional Neural Network) 的浅层可能学习到边缘和纹理等低级特征,而深层则能学习到物体部位甚至完整的物体概念。在自然语言处理中,RNN (Recurrent Neural Network) 和 Transformer 能够捕捉文本的序列依赖和语义信息。
这种从高维原始数据中提取有效特征的能力,对于处理强化学习中复杂的感知输入(如游戏画面、机器人传感器数据)至关重要,弥补了传统RL方法在处理大规模和连续状态空间时的不足。
1.4 深度强化学习的诞生与意义 (The Birth and Significance of Deep Reinforcement Learning)
正如前面提到的,传统的强化学习方法(如表格型Q-学习、Sarsa、甚至早期的函数逼近方法)在状态或动作空间较大时面临挑战。它们要么需要巨大的内存来存储价值或策略信息(表格法),要么使用简单的线性函数逼近器难以捕捉复杂的函数关系。
深度学习的出现为解决这些问题提供了强大的工具。通过将深度神经网络用作函数逼近器 (Function Approximator),DRL 能够在高维甚至连续的状态和动作空间中有效地表示价值函数或策略函数。
深度强化学习 (Deep Reinforcement Learning, DRL) 正是深度学习的表示学习能力与强化学习的决策能力相结合的产物。其基本思想是:
⚝ 使用深度神经网络来逼近强化学习中的关键组成部分,例如:
▮▮▮▮⚝ 价值函数(如 Q 网络 \(Q(s, a; \theta)\) 或 V 网络 \(V(s; \theta)\))
▮▮▮▮⚝ 策略函数(如策略网络 \(\pi(a|s; \theta)\))
▮▮▮▮⚝ 环境模型(如预测下一状态或奖励的网络)
DRL 的诞生解决了传统RL方法在高维复杂环境中的“维度灾难 (Curse of Dimensionality)” 问题,使得RL能够处理视觉输入、音频输入等复杂的感知数据,并生成复杂的控制输出。
DRL 最具里程碑意义的成就之一是 DeepMind 开发的 AlphaGo。🌍碁 AlphaGo 使用了深度神经网络和蒙特卡洛树搜索 (Monte Carlo Tree Search, MCTS) 相结合的方法,在围棋这一复杂博弈中击败了人类世界冠军。围棋的状态空间巨大 (\(\approx 10^{170}\)),传统的搜索或表格方法难以奏效。AlphaGo 的成功证明了 DRL 解决复杂决策问题的巨大潜力,并引发了学术界和工业界对 DRL 的广泛关注和深入研究。
除了AlphaGo,DRL 还在许多其他领域取得了令人瞩目的成就:
⚝ 在 Atari 游戏上达到甚至超越人类水平(Nature 2015, DQN)🎮
⚝ 控制机器人进行复杂的抓取、行走和操作任务 🤖
⚝ 优化数据中心的能耗 💡
⚝ 在复杂多人电子竞技游戏(如 Dota 2, StarCraft II)中击败职业玩家 🏆
⚝ 用于推荐系统、金融交易、医疗诊断等领域 🏥💰
这些成功案例充分展示了 DRL 解决实际复杂问题的能力,并预示着其在未来人工智能发展中的重要地位。
1.5 本书的结构与目标读者 (Structure of the Book and Target Audience)
本书旨在为不同背景的读者提供一个全面、系统且深入的深度强化学习知识体系。全书结构如下:
⚝ 第一部分:基础篇 (Chapters 1-4)
▮▮▮▮本部分将为您建立坚实的理论基础。
① 第1章:绪论,概述DRL及其背景。
② 第2章:强化学习基础,详细讲解马尔可夫决策过程(MDP)和动态规划。
③ 第3章:深度学习基础回顾,复习神经网络和训练技巧。
④ 第4章:连接DL与RL:函数逼近,探讨为何以及如何结合两者,并指出DRL面临的挑战。
⚝ 第二部分:核心算法篇 (Chapters 5-7)
▮▮▮▮本部分是DRL的核心,详细介绍主流的算法族谱。
⑤ 第5章:基于值的DRL方法,重点讲解DQN及其改进算法。
⑥ 第6章:基于策略的DRL方法,讲解策略梯度定理和REINFORCE算法。
⑦ 第7章:Actor-Critic DRL方法,介绍AC框架以及A2C/A3C, DDPG, TD3, SAC等算法。
⚝ 第三部分:高级主题篇 (Chapters 8-11)
▮▮▮▮本部分深入探讨DRL的进阶概念和前沿方向。
⑧ 第8章:探索策略与内在激励,讨论如何解决RL中的探索难题。
⑨ 第9章:多智能体DRL (MARL),介绍多智能体系统中的RL问题和算法。
⑩ 第10章:分层与模型基础的DRL,讲解如何处理长期信用分配和如何利用环境模型。
⑪ 第11章:离线强化学习与模仿学习,介绍如何在无环境交互或从专家数据中学习。
⚝ 第四部分:实践与未来篇 (Chapters 12-14)
▮▮本部分将理论与实践相结合,并展望未来。
⑫ 第12章:DRL的应用案例分析,通过丰富的案例展示DRL在各领域的应用。
⑬ 第13章:DRL的实践:框架与技巧,提供实用的开发、调优和调试指导。
⑭ 第14章:DRL的未来与挑战,讨论当前问题、前沿研究方向和伦理影响。
⚝ 附录 (Appendices A-D)
▮提供必要的数学基础回顾、术语对照、学习资源推荐和代码示例。
目标读者 (Target Audience):
⚝ 初学者 (Beginners): 如果您对人工智能、机器学习有基本了解,但对强化学习或深度学习不太熟悉,可以从第一部分开始,逐步深入。书中的概念解释力求清晰易懂,并配有示例。建议重点关注第1-7章,并可以参考附录A和B。
⚝ 进阶者 (Intermediate): 如果您已经熟悉传统的机器学习和深度学习,并对强化学习有一定了解,您可以快速阅读第一部分,重点深入学习第二部分和第三部分的算法细节、理论推导和高级概念。第8-11章将带您了解更前沿的研究方向。
⚝ 专家 (Experts): 如果您是已经在DRL领域工作的研究人员或工程师,本书可以作为一本全面的参考手册。您可以有选择地阅读感兴趣的章节,特别是第三部分的高级主题和第四部分的最新应用及未来挑战,从中获取新的灵感和视角。附录C和D也提供了宝贵的研究资源。
无论您属于哪个类别,本书都希望能为您提供宝贵的知识和启发,助您在深度强化学习的旅程中稳步前行。📖
2. 强化学习基础:马尔可夫决策过程与动态规划 (RL Fundamentals: MDP and Dynamic Programming)
本章将带领读者深入理解强化学习问题的数学骨架——马尔可夫决策过程 (Markov Decision Process, MDP)。我们将从基础的马尔可夫性质出发,逐步构建马尔可夫奖励过程 (Markov Reward Process, MRP) 和完整的MDP模型。随后,我们将详细介绍如何在已知环境模型的情况下,利用动态规划 (Dynamic Programming, DP) 方法来求解MDP,即找到最优策略。通过本章的学习,读者将建立起对强化学习理论基础的坚实认知,为后续学习基于模型和无模型的深度强化学习算法打下坚实基础。
2.1 马尔可夫性质与马尔可夫链 (Markov Property and Markov Chain)
强化学习智能体 (Agent) 在环境中学习和决策的过程,通常被建模为一个序贯决策问题。在许多序贯决策问题中,未来的状态只依赖于当前的状态,而与过去的历史状态无关。这种性质被称为马尔可夫性质 (Markov Property)。
① 马尔可夫性质 (Markov Property)
一个状态 \(S_t\) 具有马尔可夫性质,如果且仅如果给定当前状态 \(S_t\),未来的状态 \(S_{t+1}\) 的条件概率分布与过去的所有状态 \(S_{t-1}, S_{t-2}, \dots, S_0\) 无关。数学上表示为:
\[ P(S_{t+1} | S_t) = P(S_{t+1} | S_t, S_{t-1}, \dots, S_0) \]
在强化学习中,状态通常是指环境的完整描述,包含了做出最优决策所需的所有信息。如果环境的状态满足马尔可夫性质,我们称之为马尔可夫环境 (Markov Environment)。大多数强化学习问题都被假设为在马尔可夫环境中进行。
② 马尔可夫链 (Markov Chain)
一个马尔可夫链 (Markov Chain),或称为马尔可夫过程 (Markov Process),是一个具有马尔可夫性质的随机过程。它由一个有限的状态集合 \(S\) 和一个状态转移概率矩阵 \(P\) 组成。状态转移概率 \(P_{ss'}\) 定义为从状态 \(s\) 转移到状态 \(s'\) 的概率:
\[ P_{ss'} = P(S_{t+1} = s' | S_t = s) \]
对于所有状态 \(s, s' \in S\),并且满足 \( \sum_{s' \in S} P_{ss'} = 1 \)。
马尔可夫链描述了系统状态随时间演变的一种随机过程,其中每一步的转移只取决于当前状态。
例子 🎲:想象一个简单的天气模型,只有两种状态:晴天 (Sunny) 和雨天 (Rainy)。如果明天的天气只取决于今天的天气,那么这是一个马尔可夫链。假设转移概率如下:
⚝ 今天晴天,明天晴天的概率是 0.9
⚝ 今天晴天,明天雨天的概率是 0.1
⚝ 今天雨天,明天晴天的概率是 0.3
⚝ 今天雨天,明天雨天的概率是 0.7
状态集合 \(S = \{\text{Sunny, Rainy}\}\)。转移概率矩阵 \(P\) 可以表示为:
\[ P = \begin{pmatrix} 0.9 & 0.1 \\ 0.3 & 0.7 \end{pmatrix} \]
其中第一行是今天晴天时转移到晴天和雨天的概率,第二行是今天雨天时转移到晴天和雨天的概率。这是一个简单的马尔可夫链。
2.2 马尔可夫奖励过程 (Markov Reward Process, MRP)
在马尔可夫链的基础上,如果我们为每个状态转移或状态赋予一个数值奖励 (Reward),就构成了马尔可夫奖励过程 (Markov Reward Process, MRP)。MRP 是一个带奖励的马尔可夫链。
MRP 由一个四元组定义:\((S, P, R, \gamma)\),其中:
⚝ \(S\): 有限的状态集合 (Finite set of states)。
⚝ \(P\): 状态转移概率矩阵 \(P_{ss'}\)。
⚝ \(R\): 奖励函数 (Reward Function)。在最简单的形式下,\(R_s\) 是从状态 \(s\) 离开时获得的即时奖励。更一般地,\(R_{ss'}\) 可以是从状态 \(s\) 转移到状态 \(s'\) 时获得的即时奖励,或者 \(R_s\) 是进入状态 \(s\) 时获得的奖励。本书中,我们主要使用 \(R_s\) 表示从状态 \(s\) 离开时或进入 \(s\) 后立即获得的期望奖励,即 \(R_s = E[R_{t+1} | S_t = s]\)。
⚝ \(\gamma\): 折扣因子 (Discount Factor),\(\gamma \in [0, 1]\)。
2.2.1 回报与折扣因子 (Return and Discount Factor)
在MRP或RL中,我们的目标不是最大化即时奖励,而是最大化长期累积的奖励。我们将从某个时间步 \(t\) 开始的未来所有奖励的总和称为回报 (Return),通常用 \(G_t\) 表示。
① 非折扣回报 (Undiscounted Return)
最直接的累积奖励是未来所有奖励的简单求和:
\[ G_t = R_{t+1} + R_{t+2} + R_{t+3} + \dots \]
这种形式的回报在某些情况下有用(如有限时域任务),但对于无限时域任务,如果奖励一直是正的,回报可能会趋于无穷大,这使得比较不同策略变得困难。
② 折扣回报 (Discounted Return)
为了解决无限时域问题和体现“及时奖励比延迟奖励更有价值”的直觉,我们引入折扣因子 \(\gamma\)。未来的奖励将被按照其发生的延迟程度进行折扣。折扣回报定义为:
\[ G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \dots = \sum_{k=0}^\infty \gamma^k R_{t+k+1} \]
其中 \(\gamma \in [0, 1]\)。
⚝ 当 \(\gamma = 0\) 时,智能体只关心即时奖励 \(G_t = R_{t+1}\)。
⚝ 当 \(\gamma\) 接近 1 时,智能体考虑未来更长远的奖励。
⚝ 折扣因子 \(\gamma\) 也可以解释为在每一步都有 \(1-\gamma\) 的概率终止。
折扣回报具有一个很好的递归性质:
\[ G_t = R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3} + \dots) = R_{t+1} + \gamma G_{t+1} \]
这个递归关系在推导贝尔曼方程时非常有用。
2.2.2 价值函数 (Value Function)
在MRP中,我们想知道一个状态对智能体来说有多“好”,即从这个状态开始,智能体在未来能期望获得多少累积奖励。这个量被称为状态价值函数 (State Value Function)。
① 状态价值函数 v(s)
对于一个MRP,状态 \(s\) 的价值函数 \(v(s)\) 定义为从状态 \(s\) 开始的期望折扣回报:
\[ v(s) = E[G_t | S_t = s] = E \left[ \sum_{k=0}^\infty \gamma^k R_{t+k+1} \Big| S_t = s \right] \]
价值函数衡量了从某个状态开始,遵循MRP的动力学过程(即随机转移),期望获得的未来总奖励。
2.2.3 贝尔曼方程 (Bellman Equation for MRP)
利用回报的递归性质 \(G_t = R_{t+1} + \gamma G_{t+1}\) 和价值函数的定义,我们可以推导出MRP的贝尔曼方程 (Bellman Equation)。贝尔曼方程描述了当前状态的价值与未来状态价值之间的关系。
\[ \begin{aligned} v(s) &= E[G_t | S_t = s] \\ &= E[R_{t+1} + \gamma G_{t+1} | S_t = s] \\ &= E[R_{t+1} | S_t = s] + E[\gamma G_{t+1} | S_t = s] \\ &= R_s + \gamma E[G_{t+1} | S_t = s] \end{aligned} \]
这里的 \(E[R_{t+1} | S_t = s]\) 就是我们前面定义的 \(R_s\)。
\(E[G_{t+1} | S_t = s]\) 表示从状态 \(s\) 出发,转移到下一个状态 \(S_{t+1}\) 后,从 \(S_{t+1}\) 开始的期望回报的期望。由于 \(S_{t+1}\) 的分布由 \(P_{ss'}\) 给出,且 \(G_{t+1}\) 的期望是 \(v(S_{t+1})\),所以:
\[ E[G_{t+1} | S_t = s] = \sum_{s' \in S} P(S_{t+1} = s' | S_t = s) E[G_{t+1} | S_{t+1} = s', S_t = s] \]
由于马尔可夫性质,\(E[G_{t+1} | S_{t+1} = s', S_t = s] = E[G_{t+1} | S_{t+1} = s'] = v(s')\)。
因此,
\[ E[G_{t+1} | S_t = s] = \sum_{s' \in S} P_{ss'} v(s') \]
将此代入上面的方程,我们就得到了MRP的贝尔曼方程:
\[ v(s) = R_s + \gamma \sum_{s' \in S} P_{ss'} v(s') \]
这个方程表明,当前状态 \(s\) 的价值等于从状态 \(s\) 获得的即时奖励 \(R_s\),加上所有可能的下一个状态 \(s'\) 的价值 \(v(s')\) 按其发生概率 \(P_{ss'}\) 加权,并乘以折扣因子 \(\gamma\) 的总和。
贝尔曼方程可以写成矩阵形式。设 \(v\) 是一个列向量,其每个元素是对应状态的价值 \(v(s)\)。设 \(r\) 是一个列向量,其每个元素是对应状态的即时奖励 \(R_s\)。设 \(P\) 是状态转移概率矩阵。则贝尔曼方程可以写为:
\[ v = r + \gamma P v \]
这是一个线性方程组。如果 \( \gamma < 1 \) 或者 MDP 是有限时域的,矩阵 \( (I - \gamma P) \) 是可逆的,方程有唯一解:
\[ v = (I - \gamma P)^{-1} r \]
这说明MRP的价值函数 \(v\) 可以通过解一个线性方程组来精确计算(前提是知道完整的模型 \(P\) 和 \(R\))。
2.3 马尔可夫决策过程 (Markov Decision Process, MDP)
马尔可夫决策过程 (Markov Decision Process, MDP) 是强化学习问题的核心数学框架。它在MRP的基础上引入了“动作”和“策略”,描述了一个智能体如何在马尔可夫环境中根据当前状态选择动作,并因此获得奖励和转移到下一个状态的过程。
MDP 是一个五元组 \((S, A, P, R, \gamma)\),其中:
⚝ \(S\): 有限的状态集合 (Finite set of states)。
⚝ \(A\): 有限的动作集合 (Finite set of actions)。
⚝ \(P\): 状态转移概率函数 (State Transition Probability Function)。\(P_{ss'}^a = P(S_{t+1} = s' | S_t = s, A_t = a)\) 是在状态 \(s\) 执行动作 \(a\) 后转移到状态 \(s'\) 的概率。
⚝ \(R\): 奖励函数 (Reward Function)。\(R_s^a = E[R_{t+1} | S_t = s, A_t = a]\) 是在状态 \(s\) 执行动作 \(a\) 后获得的期望即时奖励。有时也用 \(R_{ss'}^a = E[R_{t+1} | S_t = s, A_t = a, S_{t+1} = s']\) 表示转移到 \(s'\) 获得的奖励。本书主要采用 \(R_s^a\) 形式。
⚝ \(\gamma\): 折扣因子 (Discount Factor),\(\gamma \in [0, 1]\)。
在MDP中,智能体不再是被动的观察者,而是主动的决策者。在每个时间步 \(t\),智能体观察环境的状态 \(S_t\),选择一个动作 \(A_t \in A\),环境根据 \(P_{ss'}^{A_t}\) 转移到下一个状态 \(S_{t+1}\),同时智能体获得奖励 \(R_{t+1}\)。这个过程不断重复。
2.3.1 MDP的定义与组成 (Definition and Components of MDP)
见上一段对五元组 \((S, A, P, R, \gamma)\) 的定义。这是描述一个标准的强化学习任务所需要的全部信息(如果环境模型是已知的)。
2.3.2 策略 (Policy)
策略 (Policy) 是智能体的行为准则,它定义了智能体在给定状态下选择哪个动作。策略通常用 \(\pi\) 表示。
① 确定性策略 (Deterministic Policy)
确定性策略 \(\pi\) 是一个函数,它将每个状态 \(s\) 映射到一个确定的动作 \(a\),即 \(\pi(s) = a\)。
② 随机性策略 (Stochastic Policy)
随机性策略 \(\pi\) 是一个函数,它给出了在每个状态 \(s\) 下选择每个动作 \(a\) 的概率分布,即 \(\pi(a|s) = P(A_t = a | S_t = s)\)。对于所有 \(s \in S\),\(\sum_{a \in A} \pi(a|s) = 1\)。
在大多数强化学习问题中,我们通常考虑随机性策略,因为它有助于探索未知环境。确定性策略可以看作是随机性策略的一种特殊情况,即对于某个状态 \(s\),某个动作 \(a\) 的概率是 1,其他动作的概率是 0。
在MDP中,给定一个策略 \(\pi\),智能体和环境的交互过程就形成了一个马尔可夫链(加上奖励),因为下一步的状态和奖励只依赖于当前状态和根据策略选择的动作,而动作的选择只依赖于当前状态(满足马尔可夫性质)。
2.3.3 状态价值函数 \(v_\pi(s)\) 与动作价值函数 \(q_\pi(s, a)\) (State-Value Function \(v_\pi(s)\) and Action-Value Function \(q_\pi(s, a)\))
在MDP中,一个策略 \(\pi\) 的好坏由其期望回报衡量。我们定义两种价值函数来评估一个策略:状态价值函数和动作价值函数。
① 状态价值函数 \(v_\pi(s)\)
状态价值函数 \(v_\pi(s)\) 定义为从状态 \(s\) 开始,并根据策略 \(\pi\) 进行决策所能获得的期望折扣回报:
\[ v_\pi(s) = E_\pi[G_t | S_t = s] = E_\pi \left[ \sum_{k=0}^\infty \gamma^k R_{t+k+1} \Big| S_t = s \right] \]
其中 \(E_\pi[\cdot]\) 表示在策略 \(\pi\) 下的期望。
② 动作价值函数 \(q_\pi(s, a)\)
动作价值函数 \(q_\pi(s, a)\) 定义为在状态 \(s\) 下,执行动作 \(a\),然后根据策略 \(\pi\) 进行决策所能获得的期望折扣回报:
\[ q_\pi(s, a) = E_\pi[G_t | S_t = s, A_t = a] = E_\pi \left[ \sum_{k=0}^\infty \gamma^k R_{t+k+1} \Big| S_t = s, A_t = a \right] \]
动作价值函数有时也称为 Q 函数 (Q-function)。它衡量了在特定状态下采取特定动作的价值。
价值函数是评估策略和寻找最优策略的关键。
2.3.4 贝尔曼期望方程 (Bellman Expectation Equation)
与MRP类似,我们可以推导出MDP中策略 \(\pi\) 的价值函数满足的贝尔曼期望方程。这些方程描述了在遵循给定策略 \(\pi\) 时,状态价值或动作价值与其可能的后续状态和动作价值之间的关系。
① 状态价值函数 \(v_\pi(s)\) 的贝尔曼期望方程
一个状态 \(s\) 的价值 \(v_\pi(s)\) 可以分解为即时期望奖励和下一个状态的期望价值之和。
\[ v_\pi(s) = E_\pi[R_{t+1} + \gamma v_\pi(S_{t+1}) | S_t = s] \]
在状态 \(s\) 下,智能体根据策略 \(\pi(a|s)\) 选择动作 \(a\),然后环境以概率 \(P_{ss'}^a\) 转移到状态 \(s'\),并获得期望奖励 \(R_s^a\)。因此,对所有可能的动作求期望,对所有可能的下一个状态求期望:
\[ v_\pi(s) = \sum_{a \in A} \pi(a|s) \left( R_s^a + \gamma \sum_{s' \in S} P_{ss'}^a v_\pi(s') \right) \]
这个方程称为 \(v_\pi\) 的贝尔曼期望方程。它表示状态 \(s\) 的价值是,在该状态下根据策略 \(\pi\) 选择所有可能动作 \(a\) 的概率 \( \pi(a|s) \) 加权平均,其中每个动作 \(a\) 带来的价值是执行该动作的即时期望奖励 \( R_s^a \) 加上转移到下一个状态 \( s' \) 的价值 \( v_\pi(s') \) 的折扣期望(按转移概率 \( P_{ss'}^a \) 加权)。
② 动作价值函数 \(q_\pi(s, a)\) 的贝尔曼期望方程
动作价值函数 \(q_\pi(s, a)\) 同样可以分解。在状态 \(s\) 执行动作 \(a\) 后,获得的即时期望奖励是 \(R_s^a\),然后环境会转移到下一个状态 \(s'\) 并进入该状态下的决策过程。在状态 \(s'\) 下,智能体将根据策略 \(\pi\) 选择动作,其期望累积回报就是 \(v_\pi(s')\)。```xml
1
## 3. 深度学习基础回顾 (Deep Learning Fundamentals Review)
2
3
本章旨在为不熟悉或需要复习深度学习基础知识的读者提供必要的背景。我们将回顾人工神经网络的核心概念、常用的网络结构、训练过程中涉及的损失函数与优化器,以及一些提升训练效果的实用技巧。这些基础知识对于理解如何将深度学习的能力应用于强化学习至关重要。
4
5
### 3.1 神经网络基础 (Neural Network Basics)
6
7
人工神经网络 (Artificial Neural Network, ANN) 是一种模拟生物神经网络结构的计算模型,它由大量相互连接的“神经元”组成。这些神经元通过连接传递信号,信号经过加权、求和以及非线性变换后,输出到下一层神经元。
8
9
#### 3.1.1 神经元模型 (Neuron Model)
10
11
最基本的人工神经元模型接收多个输入信号,每个信号都通过一个连接权重进行加权,然后所有加权输入信号和偏置项 (bias) 被送入一个激活函数 (activation function) 进行非线性变换,最终产生输出信号。
12
13
一个神经元的计算过程可以表示为:
14
LaTex→→→5c,5b,20,7a,20,3d,20,5c,73,75,6d,5f,7b,69,3d,31,7d,5e,6e,20,77,5f,69,20,78,5f,69,20,2b,20,62,20,5c,5d←←←LaTex
15
LaTex→→→5c,5b,20,79,20,3d,20,66,28,7a,29,20,5c,5d←←←LaTex
16
其中 LaTex→→→5c,28,20,78,5f,31,2c,20,78,5f,32,2c,20,5c,64,6f,74,73,2c,20,78,5f,6e,20,5c,29←←←LaTex 是输入信号,LaTex→→→5c,28,20,77,5f,31,2c,20,77,5f,32,2c,20,5c,64,6f,74,73,2c,20,77,5f,6e,20,5c,29←←←LaTex 是对应的连接权重,LaTex→→→5c,28,20,62,20,5c,29←←←LaTex 是偏置项,LaTex→→→5c,28,20,7a,20,5c,29←←←LaTex 是加权和,LaTex→→→5c,28,20,66,20,5c,29←←←LaTex 是激活函数,LaTex→→→5c,28,20,79,20,5c,29←←←LaTex 是神经元的输出。
17
18
#### 3.1.2 激活函数 (Activation Function)
19
20
激活函数为神经网络引入非线性能力,使得网络能够学习和逼近复杂的函数关系。如果没有激活函数(或者使用线性激活函数),无论网络有多少层,其整体功能都等价于一个单层线性模型,这极大地限制了网络的表达能力。
21
22
常用的激活函数包括:
23
① Sigmoid 函数: LaTex→→→5c,28,20,66,28,78,29,20,3d,20,5c,66,72,61,63,7b,31,7d,7b,31,20,2b,20,65,5e,7b,2d,78,7d,7d,20,5c,29←←←LaTex。输出范围在 (0, 1) 之间,常用于输出层需要表示概率的情况。存在梯度消失问题。
24
② Tanh 函数 (Hyperbolic Tangent): LaTex→→→5c,28,20,66,28,78,29,20,3d,20,5c,66,72,61,63,7b,65,5e,78,20,2d,20,65,5e,7b,2d,78,7d,7d,7b,65,5e,78,20,2b,20,65,5e,7b,2d,78,7d,7d,20,5c,29←←←LaTex。输出范围在 (-1, 1) 之间,收敛速度通常比 Sigmoid 快,但仍存在梯度消失问题。
25
③ ReLU 函数 (Rectified Linear Unit): LaTex→→→5c,28,20,66,28,78,29,20,3d,20,5c,6d,61,78,28,30,2c,20,78,29,20,5c,29←←←LaTex。计算简单,缓解了梯度消失问题,是目前隐藏层中最常用的激活函数。存在“死亡ReLU”问题。
26
④ Leaky ReLU 函数: LaTex→→→5c,28,20,66,28,78,29,20,3d,20,5c,6d,61,78,28,5c,61,6c,70,68,61,20,78,2c,20,78,29,20,5c,29←←←LaTex,其中 LaTex→→→5c,28,20,5c,61,6c,70,68,61,20,5c,29←←←LaTex 是一个很小的正数 (如 0.01)。用于解决 ReLU 的死亡神经元问题。
27
28
#### 3.1.3 前向传播 (Forward Propagation)
29
30
前向传播是神经网络接收输入数据并产生输出的过程。输入数据从网络的输入层进入,依次经过隐藏层的处理,最终到达输出层。每一层神经元根据其连接权重、偏置项和激活函数计算其输出,并将输出作为下一层的输入。这个过程是单向的,从输入到输出。
31
32
#### 3.1.4 反向传播算法 (Backpropagation Algorithm)
33
34
反向传播 (Backpropagation) 是训练神经网络的核心算法,用于计算损失函数关于网络权重的梯度。其基本思想是利用链式法则 (chain rule) 从输出层开始,逐层向前计算梯度,直到输入层。
35
36
训练过程通常如下:
37
① **前向传播**: 将训练数据输入网络,计算得到输出,并根据设定的损失函数计算损失值。
38
② **反向传播**: 根据损失值,利用反向传播算法计算损失函数对网络中每个权重和偏置项的梯度。
39
③ **参数更新**: 使用计算出的梯度,通过优化器(如梯度下降)更新网络的权重和偏置项,以减小损失。
40
41
这个过程通常在大量训练数据上重复进行,每次使用一个批次 (batch) 的数据来计算平均梯度并更新参数,直到损失函数收敛或达到预设的训练轮次 (epoch)。
42
43
### 3.2 常用的神经网络架构 (Common Neural Network Architectures)
44
45
根据输入数据的类型和任务需求,研究者们设计了多种神经网络架构。与强化学习结合时,最常见的是全连接网络、卷积神经网络和循环神经网络。
46
47
#### 3.2.1 全连接网络 (Fully Connected Network, FCN)
48
49
全连接网络,也称为多层感知机 (Multi-Layer Perceptron, MLP),是最基础的神经网络结构。在FCN中,前一层的所有神经元都与后一层的所有神经元相连接。
50
51
⚝ **结构**: 由输入层、若干隐藏层和输出层组成。层与层之间全连接。
52
⚝ **特点**: 结构简单,理论上可以逼近任何连续函数。
53
⚝ **优点**: 适用于处理低维、结构化的数据。
54
⚝ **缺点**: 对于高维输入(如图像),参数量巨大,容易过拟合,且无法有效地捕捉空间或时间上的局部相关性。
55
56
在DRL中,FCN常用于处理低维状态空间(如机器人关节角度、速度)或作为其他复杂网络架构的最后几层。
57
58
#### 3.2.2 卷积神经网络 (Convolutional Neural Network, CNN)
59
60
卷积神经网络是一种专门用于处理具有网格状拓扑结构数据(如图像、视频、音频波形)的神经网络。其核心思想是利用卷积操作提取局部特征,并通过权值共享减少参数量。
61
62
⚝ **核心层**:
63
▮▮▮▮⚝ **卷积层 (Convolutional Layer)**: 使用一系列卷积核 (filter) 对输入数据进行滑动窗口式的卷积操作,提取局部特征图 (feature map)。卷积核的权值在整个输入数据区域共享。
64
▮▮▮▮⚝ **池化层 (Pooling Layer)**: 对特征图进行下采样,减少空间尺寸,降低计算量,同时提供一定程度的平移不变性。常用的有最大池化 (Max Pooling) 和平均池化 (Average Pooling)。
65
▮▮▮▮⚝ **全连接层 (Fully Connected Layer)**: 在经过若干卷积层和池化层提取高级特征后,通常会连接一或多个全连接层,将特征映射到最终的输出(如分类概率或回归值)。
66
67
⚝ **特点**: 能够有效地从高维原始数据中学习层级化的特征表示。权值共享和池化操作显著减少了参数数量。
68
⚝ **优点**: 在图像识别、目标检测等视觉任务中表现出色。
69
⚝ **缺点**: 主要针对网格数据设计,难以直接处理序列数据或复杂的图结构数据。
70
71
在DRL中,CNN被广泛应用于处理图像作为状态输入的环境,例如Atari游戏、机器人视觉感知等任务。DQN算法中使用CNN处理游戏画面就取得了巨大成功。
72
73
#### 3.2.3 循环神经网络 (Recurrent Neural Network, RNN)
74
75
循环神经网络是一种为处理序列数据而设计的神经网络。它引入了隐藏状态 (hidden state) 或内存,可以将之前时间步的信息传递到当前时间步的处理中,从而捕捉序列中的时间依赖关系。
76
77
⚝ **核心思想**: 在序列的每个时间步,RNN单元接收当前输入和上一时间步的隐藏状态,计算当前输出和更新后的隐藏状态。隐藏状态可以看作是对历史信息的总结。
78
⚝ **结构**: 包含循环连接,允许信息在时间维度上传播。
79
⚝ **优点**: 擅长处理可变长度的序列数据,如文本、语音、时间序列。
80
⚝ **缺点**: 存在长期依赖问题(梯度消失或爆炸),难以学习长距离依赖关系。训练也相对困难。
81
82
⚝ **改进结构**: 为了解决长期依赖问题,出现了长短期记忆网络 (Long Short-Term Memory, LSTM) 和门控循环单元 (Gated Recurrent Unit, GRU) 等变体,它们通过引入门控机制来更有效地控制信息的流动和遗忘。
83
84
在DRL中,RNN(特别是LSTM和GRU)常用于处理部分可观测环境 (Partially Observable Markov Decision Process, POMDP),其中智能体需要记住过去的状态或动作才能做出最优决策。
85
86
### 3.3 损失函数与优化器 (Loss Functions and Optimizers)
87
88
训练神经网络需要定义一个损失函数来衡量模型预测与真实目标之间的差异,并使用优化器来调整模型参数以最小化这个损失。
89
90
#### 3.3.1 损失函数 (Loss Functions)
91
92
损失函数(也称目标函数或成本函数)是一个标量值,它量化了模型输出与期望输出之间的“错误”程度。在训练过程中,我们希望通过调整模型参数来最小化这个损失值。
93
94
⚝ **均方误差 (Mean Squared Error, MSE)**:
95
LaTex→→→5c,5b,20,4c,28,5c,68,61,74,7b,79,7d,2c,20,79,29,20,3d,20,5c,66,72,61,63,7b,31,7d,7b,6e,7d,20,5c,73,75,6d,5f,7b,69,3d,31,7d,5e,6e,20,28,5c,68,61,74,7b,79,7d,5f,69,20,2d,20,79,5f,69,29,5e,32,20,5c,5d←←←LaTex
96
常用于回归问题,或在DRL中用于逼近价值函数(如Q值、V值),其中 LaTex→→→5c,28,20,5c,68,61,74,7b,79,7d,5f,69,20,5c,29←←←LaTex 是模型的预测输出,LaTex→→→5c,28,20,79,5f,69,20,5c,29←←←LaTex 是目标值。
97
98
⚝ **交叉熵 (Cross-Entropy)**:
99
LaTex→→→5c,5b,20,4c,28,5c,68,61,74,7b,79,7d,2c,20,79,29,20,3d,20,2d,20,5c,73,75,6d,5f,7b,69,3d,31,7d,5e,43,20,79,5f,69,20,5c,6c,6f,67,28,5c,68,61,74,7b,79,7d,5f,69,29,20,5c,5d←←←LaTex
100
常用于分类问题,其中 LaTex→→→5c,28,20,43,20,5c,29←←←LaTex 是类别数,LaTex→→→5c,28,20,79,5f,69,20,5c,29←←←LaTex 是真实标签(通常是one-hot编码),LaTex→→→5c,28,20,5c,68,61,74,7b,79,7d,5f,69,20,5c,29←←←LaTex 是模型预测的属于类别 LaTex→→→5c,28,20,69,20,5c,29←←←LaTex 的概率。在DRL中,策略网络输出动作的概率分布时,可以使用交叉熵作为损失函数。
101
102
#### 3.3.2 优化器 (Optimizers)
103
104
优化器的作用是根据损失函数计算出的梯度,决定如何更新网络参数(权重和偏置项),以便沿着减小损失的方向前进。
105
106
⚝ **梯度下降 (Gradient Descent, GD)**:
107
这是最基本的优化算法。参数更新规则为:
108
LaTex→→→5c,5b,20,5c,74,68,65,74,61,20,5c,6c,65,66,74,61,72,72,6f,77,20,5c,74,68,65,74,61,20,2d,20,5c,61,6c,70,68,61,20,5c,6e,61,62,6c,61,20,4c,28,5c,74,68,65,74,61,29,20,5c,5d←←←LaTex
109
其中 LaTex→→→5c,28,20,5c,74,68,65,74,61,20,5c,29←←←LaTex 代表模型的参数,LaTex→→→5c,28,20,5c,61,6c,70,68,61,20,5c,29←←←LaTex 是学习率 (learning rate),LaTex→→→5c,28,20,5c,6e,61,62,6c,61,20,4c,28,5c,74,68,65,74,61,29,20,5c,29←←←LaTex 是损失函数关于参数 LaTex→→→5c,28,20,5c,74,68,65,74,61,20,5c,29←←←LaTex 的梯度。
110
▮▮▮▮⚝ **批量梯度下降 (Batch Gradient Descent)**: 使用整个训练数据集计算梯度,计算量大,收敛慢。
111
▮▮▮▮⚝ **随机梯度下降 (Stochastic Gradient Descent, SGD)**: 每次只使用一个样本计算梯度,更新频繁,可能收敛到局部最优,但速度快,且有助于跳出局部最优。
112
▮▮▮▮⚝ **小批量梯度下降 (Mini-batch Gradient Descent)**: 结合了前两者的优点,每次使用一个小批量 (mini-batch) 的数据计算梯度,是实践中最常用的方式。
113
114
⚝ **动量 (Momentum)**:
115
引入动量项,使参数更新不仅仅取决于当前的梯度,还考虑之前积累的梯度方向,有助于加速收敛并抑制震荡。更新规则包含一个动量变量 LaTex→→→5c,28,20,76,20,5c,29←←←LaTex:
116
LaTex→→→5c,5b,20,76,20,5c,6c,65,66,74,61,72,72,6f,77,20,5c,62,65,74,61,20,76,20,2b,20,28,31,2d,5c,62,65,74,61,29,20,5c,6e,61,62,6c,61,20,4c,28,5c,74,68,65,74,61,29,20,5c,5d←←←LaTex
117
LaTex→→→5c,5b,20,5c,74,68,65,74,61,20,5c,6c,65,66,74,61,72,72,6f,77,20,5c,74,68,65,74,61,20,2d,20,5c,61,6c,70,68,61,20,76,20,5c,5d←←←LaTex
118
其中 LaTex→→→5c,28,20,5c,62,65,74,61,20,5c,29←←←LaTex 是动量系数,通常设为0.9。
119
120
⚝ **Adam (Adaptive Moment Estimation)**:
121
Adam 是一种自适应学习率的优化算法,它结合了动量和RMSprop的思想。它不仅考虑梯度的指数衰减平均(一阶矩),还考虑梯度平方的指数衰减平均(二阶矩),并对它们进行偏差修正。Adam 是目前深度学习中最常用的优化器之一,因为它通常具有较好的收敛速度和性能。
122
123
### 3.4 深度学习训练技巧 (Deep Learning Training Techniques)
124
125
训练深度神经网络往往面临过拟合、训练不稳定等问题。以下是一些常用的技巧来提高模型的性能和训练的稳定性。
126
127
#### 3.4.1 正则化 (Regularization)
128
129
正则化的目的是防止模型过拟合训练数据,提高模型的泛化能力。
130
131
⚝ **L1 正则化**: 在损失函数中添加权值绝对值之和的惩罚项:LaTex→→→5c,28,20,4c,5f,7b,74,6f,74,61,6c,7d,20,3d,20,4c,5f,7b,64,61,74,61,7d,20,2b,20,5c,6c,61,6d,62,64,61,20,5c,73,75,6d,20,7c,5c,74,68,65,74,61,5f,69,7c,20,5c,29←←←LaTex。有助于产生稀疏模型。
132
⚝ **L2 正则化 (权重衰减, Weight Decay)**: 在损失函数中添加权值平方和的惩罚项:LaTex→→→5c,28,20,4c,5f,7b,74,6f,74,61,6c,7d,20,3d,20,4c,5f,7b,64,61,74,61,7d,20,2b,20,5c,6c,61,6d,62,64,61,20,5c,73,75,6d,20,5c,74,68,65,74,61,5f,69,5e,32,20,5c,29←←←LaTex。有助于使权值更小,分布更平滑。
133
134
#### 3.4.2 批量归一化 (Batch Normalization, BN)
135
136
批量归一化是一种在网络层之间插入的标准化操作。它在每个小批次的维度上对输入进行归一化,使其均值为 0,方差为 1。
137
138
⚝ **作用**: 解决内部协变量偏移 (Internal Covariate Shift) 问题,即网络训练过程中,前一层参数更新导致后一层输入分布发生变化的问题。BN 使每层输入的分布更加稳定。
139
⚝ **优点**: 加速收敛;允许使用更大的学习率;对参数初始化的依赖性降低;在一定程度上起到正则化作用,可以减少对 Dropout 的依赖。
140
141
#### 3.4.3 Dropout
142
143
Dropout 是一种简单而有效的正则化技术。在训练过程中,以一定的概率随机地“丢弃”(即将输出设置为零)一部分神经元。
144
145
⚝ **作用**: 强制网络学习更加鲁棒的特征,减少神经元之间的共适应性。
146
⚝ **注意**: Dropout 只在训练时使用,测试时所有神经元都参与计算,但输出需要根据 Dropout 概率进行缩放。
147
148
#### 3.4.4 学习率调度 (Learning Rate Scheduling)
149
150
在训练过程中动态调整学习率通常能带来更好的效果。常见策略包括:
151
⚝ 步长衰减 (Step Decay): 每隔一定数量的 epoch 或 iteration,将学习率乘以一个衰减因子。
152
⚝ 指数衰减 (Exponential Decay): 学习率随着训练步骤呈指数级衰减。
153
⚝ 余弦退火 (Cosine Annealing): 学习率按照余弦函数的形状周期性或非周期性地衰减和回升。
154
155
### 3.5 深度学习框架简介 (Introduction to Deep Learning Frameworks)
156
157
深度学习框架是提供构建、训练和部署神经网络所需工具和库的软件平台。它们简化了复杂的数学计算(如自动求导)和底层硬件交互,使得研究人员和开发者可以更专注于模型的设计和实验。
158
159
目前主流的深度学习框架包括:
160
161
⚝ **TensorFlow**: 由 Google 开发,是一个端到端的开源机器学习平台。早期版本基于静态计算图,现在也支持动态图 (Eager Execution)。拥有强大的生产部署能力,以及庞大的生态系统。
162
163
⚝ **PyTorch**: 由 Facebook 的人工智能研究院开发,是一个基于 Python 的科学计算包,以其灵活性和动态计算图 (Eager Execution) 受到研究人员的青睐。它提供了类似 NumPy 的易用接口,并与硬件加速(GPU)无缝集成。
164
165
在深度强化学习领域,PyTorch 和 TensorFlow 都被广泛使用。许多 DRL 算法的实现都基于这两个框架。本书后续章节的代码示例可能会倾向于其中一个或两者都提供简化版本。
166
167
<END_OF_CHAPTER/>
168
169
170
171
## 4. 连接深度学习与强化学习:函数逼近 (Connecting DL and RL: Function Approximation)
172
173
本章探讨如何使用深度学习模型作为函数逼近器来处理高维或连续的状态空间和动作空间,以及由此带来的挑战。我们将理解为什么传统的表格方法不再适用,以及神经网络如何被用来近似价值函数和策略,最后深入分析将深度学习应用于强化学习时面临的核心难题。
174
175
### 4.1 为什么需要函数逼近? (Why Function Approximation?)
176
177
在前面章节介绍的马尔可夫决策过程(MDP)和动态规划(Dynamic Programming)方法中,我们通常假设环境的状态空间(State Space)和动作空间(Action Space)是有限且相对较小的。在这种情况下,我们可以使用表格来存储每个状态的价值 LaTex→→→5c,28,76,28,73,29,5c,29←←←LaTex 或每个状态-动作对的价值 LaTex→→→5c,28,71,28,73,2c,20,61,29,5c,29←←←LaTex,或者存储策略 LaTex→→→5c,28,5c,70,69,28,61,7c,73,29,5c,29←←←LaTex。这种方法被称为表格型强化学习(Tabular Reinforcement Learning)。
178
179
表格型方法在处理简单的、离散的环境时非常有效,例如棋盘游戏(如井字棋、简单的迷宫问题)。然而,当状态空间或动作空间变得非常大,甚至连续时,表格型方法会遇到严重的问题:
180
181
① **维度灾难(Curse of Dimensionality):** 状态空间的规模随着描述状态的变量数量呈指数级增长。例如,一个包含 LaTex→→→5c,28,4e,5c,29←←←LaTex 个二值变量的状态,其状态空间大小为 LaTex→→→5c,28,32,5e,4e,5c,29←←←LaTex。考虑一个简单的机器人手臂,其状态可能由多个关节的角度、角速度等连续变量组成。要覆盖所有可能的组合,表格的大小将是天文数字,无法存储在内存中。
182
▮▮▮▮⚝ 例如,一个图像就是一个高维状态。一个 LaTex→→→5c,28,31,30,30,20,5c,74,69,6d,65,73,20,31,30,30,5c,29←←←LaTex 像素的灰度图像的状态空间大小是 LaTex→→→5c,28,32,35,36,5e,7b,31,30,30,30,30,7d,5c,29←←←LaTex,远超任何表格的存储能力。
183
▮▮▮▮⚝ 一个连续的控制任务,比如平衡杆(CartPole)或机器人行走,状态通常是关节角度、角速度、位置、速度等连续数值,这些状态无法简单地离散化为有限的表格索引。
184
185
② **泛化能力弱(Lack of Generalization):** 表格型方法只能学习和存储在训练过程中实际访问过的状态或状态-动作对的价值或策略。对于未曾访问过的状态,它无法提供任何信息。这导致:
186
▮▮▮▮⚝ 学习效率低下:智能体必须访问并学习每一个可能的状态,这在大型环境中几乎不可能。
187
▮▮▮▮⚝ 无法处理连续空间:连续状态空间有无限个状态,无法全部访问。
188
189
为了克服这些问题,我们需要一种方法来对价值函数 LaTex→→→5c,28,76,5f,5c,70,69,28,73,29,5c,29←←←LaTex、 LaTex→→→5c,28,71,5f,5c,70,69,28,73,2c,20,61,29,5c,29←←←LaTex 或策略 LaTex→→→5c,28,5c,70,69,28,61,7c,73,29,5c,29←←←LaTex 进行近似(Approximate),而不是精确地存储。这意味着我们希望找到一个函数 LaTex→→→5c,28,66,5c,29←←←LaTex(由一组参数 LaTex→→→5c,28,77,5c,29←←←LaTex 参数化),使得 LaTex→→→5c,28,66,28,73,3b,20,77,29,20,5c,61,70,70,72,6f,78,20,76,5f,5c,70,69,28,73,29,5c,29←←←LaTex 或 LaTex→→→5c,28,66,28,73,2c,20,61,3b,20,77,29,20,5c,61,70,70,72,6f,78,20,71,5f,5c,70,69,28,73,2c,20,61,29,5c,29←←←LaTex 或 LaTex→→→5c,28,66,28,73,3b,20,77,29,20,5c,61,70,70,72,6f,78,20,5c,70,69,28,61,7c,73,29,5c,29←←←LaTex。这种使用参数化函数来逼近真实函数的方法,就是函数逼近(Function Approximation)。
190
191
函数逼近的核心思想是,通过学习少量参数 LaTex→→→5c,28,77,5c,29←←←LaTex,我们可以估计大量未见状态的价值或策略。这不仅节省了存储空间,更重要的是,它赋予了智能体从已学习的状态泛化到相似但未曾见过的状态的能力。
192
193
### 4.2 使用神经网络逼近价值函数或策略 (Using Neural Networks to Approximate Value Functions or Policies)
194
195
在函数逼近的早期研究中,人们尝试了各种参数化模型,如线性函数、多项式基函数、径向基函数等。然而,对于复杂的高维数据(如图像、原始传感器数据),这些模型的表达能力有限。
196
197
随着深度学习(Deep Learning)技术的兴起,特别是深度神经网络(Deep Neural Networks, DNNs)在图像识别、语音识别等领域的巨大成功,研究者们发现DNNs具有强大的特征提取和函数逼近能力。这使得使用DNNs来逼近强化学习中的价值函数或策略成为可能,这正是深度强化学习(Deep Reinforcement Learning, DRL)的核心思想之一。
198
199
使用神经网络进行函数逼近的基本思路是:将状态 LaTex→→→5c,28,73,5c,29←←←LaTex 或状态-动作对 LaTex→→→5c,28,28,73,2c,20,61,29,5c,29←←←LaTex 作为神经网络的输入,网络的输出则用来近似价值函数或策略。神经网络的权重(Weights)和偏置(Biases)构成了需要学习的参数 LaTex→→→5c,28,77,5c,29←←←LaTex。通过与环境交互收集数据,并利用强化学习算法(如TD学习、策略梯度)产生的误差信号来更新网络的参数,使得网络的输出逐渐接近真实的价值或最优策略。
200
201
具体来说,神经网络可以用于逼近以下函数:
202
203
① **状态价值函数 LaTex→→→5c,28,76,28,73,29,5c,29←←←LaTex 的逼近:**
204
▮▮▮▮⚝ 输入:状态 LaTex→→→5c,28,73,5c,29←←←LaTex
205
▮▮▮▮⚝ 输出:该状态的价值 LaTex→→→5c,28,76,28,73,29,5c,29←←←LaTex 的估计值 LaTex→→→5c,28,5c,68,61,74,7b,76,7d,28,73,3b,20,77,29,5c,29←←←LaTex
206
▮▮▮▮⚝ 结构:对于图像状态,可以使用卷积神经网络(CNN)作为特征提取器,然后接全连接层(FCN)输出价值。对于向量状态,可以直接使用全连接网络。
207
▮▮▮▮⚝ 训练:通过最小化估计价值与目标价值(如TD目标)之间的误差来更新网络参数 LaTex→→→5c,28,77,5c,29←←←LaTex。
208
209
② **动作价值函数 LaTex→→→5c,28,71,28,73,2c,20,61,29,5c,29←←←LaTex 的逼近:**
210
▮▮▮▮⚝ 这是在基于值的DRL方法(如DQN)中最常用的方式。
211
▮▮▮▮⚝ 有两种常见的输入/输出设计:
212
▮▮▮▮▮▮▮▮❶ **输入 LaTex→→→5c,28,28,73,2c,20,61,29,5c,29←←←LaTex,输出 LaTex→→→5c,28,71,28,73,2c,20,61,29,5c,29←←←LaTex:** 网络接收状态 LaTex→→→5c,28,73,5c,29←←←LaTex 和动作 LaTex→→→5c,28,61,5c,29←←←LaTex 作为输入,输出该状态-动作对的Q值估计 LaTex→→→5c,28,5c,68,61,74,7b,71,7d,28,73,2c,20,61,3b,20,77,29,5c,29←←←LaTex。这在动作空间连续时比较常见。
213
▮▮▮▮▮▮▮▮❷ **输入 LaTex→→→5c,28,73,5c,29←←←LaTex,输出所有可能动作的 LaTex→→→5c,28,71,28,73,2c,20,5c,63,64,6f,74,29,5c,29←←←LaTex:** 网络接收状态 LaTex→→→5c,28,73,5c,29←←←LaTex 作为输入,输出一个向量,向量的每个元素对应于在该状态下采取某个离散动作的Q值估计 LaTex→→→5c,28,5c,68,61,74,7b,71,7d,28,73,2c,20,61,5f,69,3b,20,77,29,5c,29←←←LaTex。这在离散动作空间时非常高效,因为一次前向传播就可以获得所有动作的Q值,便于选择具有最大Q值的动作。
214
▮▮▮▮⚝ 训练:通过最小化估计Q值与目标Q值(如TD目标)之间的误差来更新网络参数 LaTex→→→5c,28,77,5c,29←←←LaTex。
215
216
③ **策略函数 LaTex→→→5c,28,5c,70,69,28,61,7c,73,29,5c,29←←←LaTex 的逼近:**
217
▮▮▮▮⚝ 这是在基于策略的DRL方法(如REINFORCE、Actor-Critic)中最常用的方式。
218
▮▮▮▮⚝ 输入:状态 LaTex→→→5c,28,73,5c,29←←←LaTex
219
▮▮▮▮⚝ 输出:
220
▮▮▮▮▮▮▮▮❶ **离散动作空间:** 网络输出一个概率分布向量,表示在状态 LaTex→→→5c,28,73,5c,29←←←LaTex 下采取每个离散动作的概率 LaTex→→→5c,28,5c,68,61,74,7b,5c,70,69,7d,28,61,5f,69,7c,73,3b,20,77,29,5c,29←←←LaTex。
221
▮▮▮▮▮▮▮▮❷ **连续动作空间:** 网络输出一个连续概率分布的参数(如均值和方差),智能体可以根据这个分布采样动作 LaTex→→→5c,28,61,20,5c,73,69,6d,20,5c,68,61,74,7b,5c,70,69,7d,28,5c,63,64,6f,74,7c,73,3b,20,77,29,5c,29←←←LaTex,或者直接输出确定的动作值 LaTex→→→5c,28,61,20,3d,20,5c,6d,75,28,73,3b,20,77,29,5c,29←←←LaTex(确定性策略)。
222
▮▮▮▮⚝ 训练:通过策略梯度算法,利用奖励信号来更新网络参数 LaTex→→→5c,28,77,5c,29←←←LaTex,使得能获得更高回报的动作的概率增加。
223
224
④ **环境模型(Environment Model)的逼近(在基于模型的RL中):**
225
▮▮▮▮⚝ 输入:状态 LaTex→→→5c,28,73,5f,74,5c,29←←←LaTex 和动作 LaTex→→→5c,28,61,5f,74,5c,29←←←LaTex
226
▮▮▮▮⚝ 输出:预测的下一个状态 LaTex→→→5c,28,5c,68,61,74,7b,73,7d,5f,7b,74,2b,31,7d,5c,29←←←LaTex 和预测的奖励 LaTex→→→5c,28,5c,68,61,74,7b,72,7d,5f,7b,74,2b,31,7d,5c,29←←←LaTex。
227
▮▮▮▮⚝ 结构:可以使用各种序列模型,如循环神经网络(RNN)或Transformer等。
228
▮▮▮▮⚝ 训练:通过最小化预测值与实际观测值之间的误差来更新网络参数。学习到的模型可以用于规划(Planning)或生成模拟数据来训练无模型方法。
229
230
通过使用神经网络作为强大的函数逼近器,深度强化学习得以处理大规模、高维甚至连续的状态和动作空间,并在许多复杂任务中取得了前所未有的成功。然而,将深度学习与强化学习结合并非一帆风顺,它引入了新的挑战。
231
232
### 4.3 深度强化学习的挑战 (Challenges of Deep Reinforcement Learning)
233
234
将强大的非线性函数逼近器(如深度神经网络)引入到强化学习的在线学习过程中,虽然带来了处理复杂环境的能力,但也引入了一些新的挑战,使得训练过程可能不稳定且难以收敛。这些挑战主要包括:
235
236
① **数据相关性(Data Correlation):**
237
▮▮▮▮⚝ 传统的深度学习(如监督学习)通常假设训练数据是独立同分布(Independent and Identically Distributed, i.i.d.)的。优化算法(如随机梯度下降SGD)也是基于这一假设设计的。
238
▮▮▮▮⚝ 然而,在强化学习中,智能体通过与环境进行顺序交互来收集数据(轨迹 LaTex→→→5c,28,73,5f,30,2c,20,61,5f,30,2c,20,72,5f,31,2c,20,73,5f,31,2c,20,61,5f,31,2c,20,72,5f,32,2c,20,73,5f,32,2c,20,5c,64,6f,74,73,5c,29←←←LaTex)。连续的状态、动作和奖励之间存在明显的时间相关性。
239
▮▮▮▮⚝ 使用这些高度相关的数据直接训练神经网络函数逼近器会导致:
240
▮▮▮▮▮▮▮▮❶ 训练不稳定:网络参数的更新方向受到当前少数相关样本的主导,可能导致训练过程中的震荡甚至发散。
241
▮▮▮▮▮▮▮▮❷ 学习效率低:网络难以从相关数据中学习到通用的特征和关系。
242
▮▮▮▮⚝ **应对方法:** 经验回放(Experience Replay)是解决数据相关性的主要技术。它将智能体与环境交互收集到的经验(LaTex→→→5c,28,28,73,5f,74,2c,20,61,5f,74,2c,20,72,5f,7b,74,2b,31,7d,2c,20,73,5f,7b,74,2b,31,7d,29,5c,29←←←LaTex 四元组)存储在一个回放缓冲区(Replay Buffer)中,训练时从缓冲区中随机采样批量数据进行学习。这打破了数据的时间相关性,使得训练更接近i.i.d.数据的假设。
243
244
② **非平稳目标(Non-Stationary Targets):**
245
▮▮▮▮⚝ 在监督学习中,目标标签是固定的或由独立过程生成的,是相对稳定的。
246
▮▮▮▮⚝ 在强化学习(特别是基于值的TD学习)中,用于更新价值函数或策略的“目标”(Target)本身是动态变化的。例如,TD目标 LaTex→→→5c,28,52,5f,7b,74,2b,31,7d,20,2b,20,5c,67,61,6d,6d,61,20,5c,68,61,74,7b,76,7d,28,53,5f,7b,74,2b,31,7d,3b,20,77,29,5c,29←←←LaTex 或 LaTex→→→5c,28,52,5f,7b,74,2b,31,7d,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,5c,68,61,74,7b,71,7d,28,53,5f,7b,74,2b,31,7d,2c,20,61,27,3b,20,77,29,5c,29←←←LaTex 依赖于当前学习到的价值函数 LaTex→→→5c,28,5c,68,61,74,7b,76,7d,5c,29←←←LaTex 或 LaTex→→→5c,28,5c,68,61,74,7b,71,7d,5c,29←←←LaTex,而这些函数由参数 LaTex→→→5c,28,77,5c,29←←←LaTex 参数化,参数 LaTex→→→5c,28,77,5c,29←←←LaTex 又在不断更新。
247
▮▮▮▮⚝ 目标会随着智能体策略和价值函数的改变而改变,这使得学习目标一直在“移动”,造成训练的不稳定性。想象一下,你试图追逐一个不断移动的目标,很难精确瞄准。
248
▮▮▮▮⚝ **应对方法:** 目标网络(Target Network)是解决非平稳目标问题的常用方法。使用两个具有相同结构的神经网络:一个是在线网络(Online Network),其参数 LaTex→→→5c,28,77,5c,29←←←LaTex 实时更新;另一个是目标网络,其参数 LaTex→→→5c,28,77,5e,2d,5c,29←←←LaTex 是在线网络参数的旧版本,或者以较慢的速度(例如,每隔N步或通过软更新)从在线网络复制而来。计算TD目标时使用目标网络的输出来代替在线网络的输出,从而提供一个相对稳定的目标,减少振荡。
249
250
③ **信用分配问题(Credit Assignment Problem):**
251
▮▮▮▮⚝ 这是强化学习固有的挑战。智能体的行为和最终获得的奖励之间可能存在长时间的延迟。智能体很难确定哪一个或哪一系列历史动作对最终的奖励(或惩罚)负有责任。
252
▮▮▮▮⚝ 例如,在玩围棋时,一步棋的好坏可能要到几十步甚至上百步之后才能显现出来。
253
▮▮▮▮⚝ 虽然这不是深度学习引入的新问题,但在结合深度学习时,函数逼近器需要在高维输入空间中同时解决信用分配问题和泛化问题,这使得训练变得更加困难。网络需要学习将遥远的奖励信号反向传播到导致该奖励的早期决策上。
254
▮▮▮▮⚝ **应对方法:**
255
▮▮▮▮▮▮▮▮❶ **时序差分学习(Temporal-Difference Learning):** TD学习通过引导(Bootstrapping)的方式,利用对未来奖励的当前估计来更新价值,这有助于在奖励出现之前就进行价值更新,缓解延迟奖励问题。
256
▮▮▮▮▮▮▮▮❷ **Eligibility Traces (λ-Return):** 结合蒙特卡洛方法和TD方法,LaTex→→→5c,28,54,44,28,5c,6c,61,6d,62,64,61,29,5c,29←←←LaTex 方法可以更有效地将奖励分配给路径上的相关状态-动作对。
257
▮▮▮▮▮▮▮▮❸ **策略梯度方法(Policy Gradient):** 直接学习策略,通过试验不同的动作并观察结果来学习哪些动作序列能够带来高奖励。基线(Baseline)等技术可以帮助降低方差,提高学习效率。
258
▮▮▮▮▮▮▮▮❹ **分层强化学习(Hierarchical RL):** 将复杂任务分解为子任务,通过不同层次的智能体来解决不同时间尺度的决策问题,从而处理长期的信用分配。
259
260
④ **探索与利用的困境(Exploration-Exploitation Dilemma):**
261
▮▮▮▮⚝ 智能体需要在已知的高价值行为(利用 Exploitation)和尝试未知但可能带来更高回报的行为(探索 Exploration)之间进行权衡。
262
▮▮▮▮⚝ 在高维连续空间中使用函数逼近时,有效地探索庞大的状态空间变得更加困难。简单地依赖 LaTex→→→5c,28,5c,65,70,73,69,6c,6f,6e,5c,29←←←LaTex-greedy 等策略可能效率低下,特别是在奖励稀疏的环境中。智能体可能被困在局部最优(Local Optima)。
263
▮▮▮▮⚝ **应对方法:** 需要更复杂的探索策略,例如基于不确定性的探索(如添加噪声到策略或网络权重)、基于计数的探索、基于内在激励的探索(如好奇心 Curiosity)。
264
265
⑤ **高方差(High Variance):**
266
▮▮▮▮⚝ 尤其是在策略梯度方法中,从单条轨迹获得的梯度估计可能具有很高的方差,导致训练不稳定。
267
▮▮▮▮⚝ **应对方法:** 引入基线(Baseline)(如使用价值函数减去估计值)是降低方差的有效方法。Actor-Critic 框架结合了基于值和基于策略方法的优点,Actor 使用 Critic 提供的价值估计作为基线来更新策略,通常能获得更稳定的训练。
268
269
理解这些挑战对于设计和实现稳定的深度强化学习算法至关重要。后续章节将详细介绍各种主流的DRL算法,它们正是为了解决或缓解这些挑战而设计的。
270
271
<END_OF_CHAPTER/>
272
273
274
275
## 5. 基于值的深度强化学习方法 (Value-Based Deep Reinforcement Learning Methods)
276
277
欢迎来到本书的第五章!在前面的章节中,我们回顾了强化学习的基础概念、数学模型(马尔可夫决策过程)以及如何使用动态规划在已知模型的情况下求解最优策略。我们还简单回顾了深度学习的基础知识,并讨论了当状态空间或动作空间非常大甚至是连续时,表格型方法(如动态规划或简单的Q-学习)变得不可行,此时需要引入函数逼近器。深度学习因其强大的非线性函数逼近能力,成为了强化学习处理复杂环境的首选工具。本章将深入探讨深度强化学习中最基础且影响深远的算法族谱——基于值的深度强化学习方法。
278
279
基于值的强化学习方法的核心思想是学习一个最优的价值函数,通常是动作价值函数 LaTex→→→5c,28,20,71,5f,2a,28,73,2c,20,61,29,20,5c,29←←←LaTex,然后根据这个价值函数选择最优动作(例如,选择使 LaTex→→→5c,28,20,71,5f,2a,28,73,2c,20,61,29,20,5c,29←←←LaTex 最大的动作 LaTex→→→5c,28,20,61,20,3d,20,5c,61,72,67,5c,6d,61,78,5f,61,20,71,5f,2a,28,73,2c,20,61,29,20,5c,29←←←LaTex)。当我们将深度神经网络用作价值函数的逼近器时,就诞生了基于值的深度强化学习方法。
280
281
本章,我们将从传统的无模型强化学习方法 Q-学习回顾开始,引出深度Q网络(DQN)的诞生背景和核心思想。随后,我们将详细剖析DQN的两大关键技术:经验回放和目标网络,并深入探讨它们如何缓解深度学习与强化学习结合时遇到的挑战。接着,我们将介绍一系列对DQN进行的改进算法,它们进一步提升了算法的性能和稳定性。最后,我们将简要讨论基于值的方法在连续动作空间中的应用尝试。
282
283
### 5.1 Q-学习基础 (Foundation of Q-Learning)
284
285
在深入深度强化学习之前,我们先回顾一下传统的 Q-学习 (Q-Learning) 算法。Q-学习是一种无模型 (Model-Free) 的时序差分 (Temporal-Difference, TD) 学习方法。它不需要知道环境的转移概率 LaTex→→→5c,28,50,28,73,27,20,7c,20,73,2c,20,61,29,5c,29←←←LaTex 或奖励函数 LaTex→→→5c,28,52,28,73,2c,20,61,2c,20,73,27,29,5c,29←←←LaTex,而是通过与环境的交互来直接学习最优的动作价值函数 LaTex→→→5c,28,20,71,5f,2a,28,73,2c,20,61,29,20,5c,29←←←LaTex。
286
287
▶️ **无模型 (Model-Free) 方法**: 这类方法不学习或不依赖于环境的模型(即转移概率和奖励函数),直接从经验中学习价值函数或策略。
288
▶️ **时序差分 (Temporal-Difference, TD) 学习**: TD学习是一种结合了蒙特卡洛 (Monte Carlo) 方法和动态规划 (Dynamic Programming) 的无模型学习方法。它不像蒙特卡洛方法那样需要等到一个完整的 эпизод (episode) 结束后才更新价值,而是利用从环境获得的下一个状态的价值估计来更新当前状态的价值估计,即利用“现有估计的引导 (bootstrapping)”。
289
290
Q-学习的目标是学习最优的动作价值函数 LaTex→→→5c,28,20,71,5f,2a,28,73,2c,20,61,29,20,5c,29←←←LaTex,它表示在状态 LaTex→→→5c,28,20,73,20,5c,29←←←LaTex 执行动作 LaTex→→→5c,28,20,61,20,5c,29←←←LaTex 后,遵循最优策略能够获得的期望累积折扣奖励。经典的 Q-学习算法使用一个表格 (Q-table) 来存储每个状态-动作对 LaTex→→→5c,28,28,73,2c,20,61,29,5c,29←←←LaTex 的 Q 值 LaTex→→→5c,28,20,51,28,73,2c,20,61,29,20,5c,29←←←LaTex。其核心更新规则基于贝尔曼最优方程 (Bellman Optimality Equation):
291
292
LaTex→→→5c,5b,20,71,5f,2a,28,73,2c,20,61,29,20,3d,20,5c,6d,61,74,68,62,62,7b,45,7d,5f,7b,73,27,20,5c,73,69,6d,20,50,28,5c,63,64,6f,74,20,7c,20,73,2c,20,61,29,7d,20,5c,6c,65,66,74,5b,20,52,28,73,2c,20,61,2c,20,73,27,29,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,71,5f,2a,28,73,27,2c,20,61,27,29,20,5c,72,69,67,68,74,5d,20,5c,5d←←←LaTex
293
294
Q-学习的更新规则是:智能体在状态 LaTex→→→5c,28,20,73,20,5c,29←←←LaTex 执行动作 LaTex→→→5c,28,20,61,20,5c,29←←←LaTex,观察到奖励 LaTex→→→5c,28,20,72,20,5c,29←←←LaTex 和下一个状态 LaTex→→→5c,28,20,73,27,20,5c,29←←←LaTex。然后,它使用以下公式更新 LaTex→→→5c,28,20,51,28,73,2c,20,61,29,20,5c,29←←←LaTex:
295
296
LaTex→→→5c,5b,20,51,28,73,2c,20,61,29,20,5c,6c,65,66,74,61,72,72,6f,77,20,51,28,73,2c,20,61,29,20,2b,20,5c,61,6c,70,68,61,20,5c,6c,65,66,74,5b,20,72,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,2d,20,51,28,73,2c,20,61,29,20,5c,72,69,67,68,74,5d,20,5c,5d←←←LaTex
297
298
其中:
299
⚝ LaTex→→→5c,28,20,5c,61,6c,70,68,61,20,5c,29←←←LaTex 是学习率 (Learning Rate),控制每次更新的步长。
300
⚝ LaTex→→→5c,28,20,5c,67,61,6d,6d,61,20,5c,29←←←LaTex 是折扣因子 (Discount Factor),用于衡量未来奖励的重要性。
301
⚝ LaTex→→→5c,28,20,72,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex 是目标 Q 值 (Target Q-Value),也称为 TD 目标 (TD Target) 或贝尔曼目标 (Bellman Target)。它结合了当前的即时奖励 LaTex→→→5c,28,20,72,20,5c,29←←←LaTex 和对下一个状态 LaTex→→→5c,28,20,73,27,20,5c,29←←←LaTex 最优未来价值的估计 LaTex→→→5c,28,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex。
302
⚝ LaTex→→→5c,28,20,72,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,2d,20,51,28,73,2c,20,61,29,20,5c,29←←←LaTex 是 TD 误差 (TD Error)。
303
304
如果满足一些条件(例如,每个状态-动作对都被无限次访问,学习率逐渐衰减),表格型 Q-学习可以收敛到最优的动作价值函数 LaTex→→→5c,28,20,71,5f,2a,28,73,2c,20,61,29,20,5c,29←←←LaTex。
305
306
然而,表格型 Q-学习的一个主要限制是它需要显式地存储所有状态-动作对的 Q 值。当状态空间 LaTex→→→5c,28,20,53,20,5c,29←←←LaTex 或动作空间 LaTex→→→5c,28,20,41,20,5c,29←←←LaTex 非常大或连续时,构建和存储 Q-table 是不可能的。例如,处理图像输入的环境,状态空间是所有可能的像素组合,这是一个天文数字。这时,我们就需要函数逼近器来估计 Q 值,而不是存储它们。
307
308
### 5.2 深度Q网络 (Deep Q-Network, DQN)
309
310
深度 Q 网络 (Deep Q-Network, DQN) 是 DeepMind 在 2013 年提出(发表于 2015 年 Science 杂志)的一项突破性工作,它成功地将深度学习与 Q-学习结合,使得强化学习能够处理高维的感知输入,并在 Atari 游戏等复杂任务上取得了超人类的表现。
311
312
DQN的核心思想是使用一个深度神经网络来逼近动作价值函数 LaTex→→→5c,28,20,51,28,73,2c,20,61,29,20,5c,29←←←LaTex。网络的输入通常是状态 LaTex→→→5c,28,20,73,20,5c,29←←←LaTex,输出是该状态下所有可能动作的 Q 值 LaTex→→→5c,28,20,51,28,73,2c,20,5c,63,64,6f,74,29,20,5c,29←←←LaTex。对于像 Atari 游戏这样的图像输入,通常使用卷积神经网络 (Convolutional Neural Network, CNN) 作为函数逼近器来提取图像特征。
313
314
▶️ **为何使用深度神经网络?**
315
▮▮▮▮⚝ 处理高维状态空间(如图像像素)。
316
▮▮▮▮⚝ 泛化能力,可以在未见过的状态下估计价值。
317
▮▮▮▮⚝ 能够从原始输入(如像素)中自动学习有用的特征。
318
319
DQN 的训练过程遵循 Q-学习的思想,即最小化预测的 Q 值与目标 Q 值之间的 TD 误差。损失函数通常使用均方误差 (Mean Squared Error, MSE):
320
321
LaTex→→→5c,5b,20,4c,28,5c,74,68,65,74,61,29,20,3d,20,5c,6d,61,74,68,62,62,7b,45,7d,5f,7b,28,73,2c,20,61,2c,20,72,2c,20,73,27,29,20,5c,73,69,6d,20,55,28,44,29,7d,20,5c,6c,65,66,74,5b,20,5c,6c,65,66,74,28,20,5c,74,65,78,74,7b,76ee,6807,20,51,20,503c,7d,20,2d,20,51,28,73,2c,20,61,3b,20,5c,74,68,65,74,61,29,20,5c,72,69,67,68,74,29,5e,32,20,5c,72,69,67,68,74,5d,20,5c,5d←←←LaTex
322
323
其中 LaTex→→→5c,28,20,5c,74,68,65,74,61,20,5c,29←←←LaTex 是神经网络的权重参数,LaTex→→→5c,28,20,51,28,73,2c,20,61,3b,20,5c,74,68,65,74,61,29,20,5c,29←←←LaTex 是神经网络预测的 Q 值。
324
325
然而,直接将 Q-学习的更新规则与非线性的深度神经网络结合会带来一些稳定性问题。主要原因包括:
326
327
① **数据相关性 (Correlated Data)**: 强化学习智能体通常按照时间序列与环境交互,连续的状态和经验是高度相关的。直接使用这些相关数据进行梯度下降训练会效率低下且容易陷入局部最优或发生震荡。神经网络需要独立同分布 (Independent and Identically Distributed, IID) 的数据进行有效训练。
328
② **非平稳目标 (Non-stationary Target)**: 在 Q-学习中,目标 Q 值 LaTex→→→5c,28,20,72,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,3b,20,5c,74,68,65,74,61,29,20,5c,29←←←LaTex 本身依赖于当前正在更新的网络参数 LaTex→→→5c,28,20,5c,74,68,65,74,61,20,5c,29←←←LaTex。这意味着训练目标在不断变化,导致训练过程不稳定。
329
330
为了解决这些稳定性问题,DQN引入了两大核心技术:
331
332
① **经验回放 (Experience Replay)**
333
▮▮▮▮ⓑ **思想**: 将智能体与环境交互产生的经验元组 LaTex→→→5c,28,20,28,73,5f,74,2c,20,61,5f,74,2c,20,72,5f,74,2c,20,73,5f,7b,74,2b,31,7d,29,20,5c,29←←←LaTex 存储在一个缓冲区 (Replay Buffer) 中。
334
▮▮▮▮ⓒ **过程**: 在训练时,不使用最新的经验立即更新网络,而是从缓冲区中随机采样一批经验元组进行训练。
335
▮▮▮▮ⓓ **优点**:
336
▮▮▮▮▮▮▮▮❺ 打破了经验之间的时序相关性,使得训练数据更接近 IID 分布。
337
▮▮▮▮▮▮▮▮❻ 重复利用过去的经验,提高了数据效率。
338
▮▮▮▮▮▮▮▮❼ 可以存储和回放稀有但重要的经验。
339
340
② **目标网络 (Target Network)**
341
▮▮▮▮ⓑ **思想**: 使用两个结构相同的神经网络:一个是在线网络 (Online Network) 或当前网络 (Current Network),用于实时与环境交互并计算当前的 Q 值 LaTex→→→5c,28,20,51,28,73,2c,20,61,3b,20,5c,74,68,65,74,61,29,20,5c,29←←←LaTex;另一个是目标网络 (Target Network),专门用于计算 TD 目标 LaTex→→→5c,28,20,72,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,3b,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,29,20,5c,29←←←LaTex。
342
▮▮▮▮ⓒ **过程**: 目标网络的参数 LaTex→→→5c,28,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,20,5c,29←←←LaTex 不会在每次训练迭代中更新,而是每隔 LaTex→→→5c,28,20,43,20,5c,29←←←LaTex 步(或经过一定数量的训练迭代后)将在线网络的参数 LaTex→→→5c,28,20,5c,74,68,65,74,61,20,5c,29←←←LaTex 复制给目标网络。
343
▮▮▮▮ⓓ **优点**: 固定了 TD 目标在一个周期内的数值,使得训练目标更加稳定,缓解了非平稳目标问题。
344
345
▶️ **DQN算法流程**:
346
① 初始化在线 Q 网络参数 LaTex→→→5c,28,20,5c,74,68,65,74,61,20,5c,29←←←LaTex 和目标 Q 网络参数 LaTex→→→5c,28,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,20,3d,20,5c,74,68,65,74,61,20,5c,29←←←LaTex。
347
② 初始化经验回放缓冲区 LaTex→→→5c,28,20,44,20,5c,29←←←LaTex。
348
③ 对于每个 эпизод (episode):
349
▮▮▮▮▮▮▮▮❹ 初始化环境,获得初始状态 LaTex→→→5c,28,20,73,5f,30,20,5c,29←←←LaTex。
350
▮▮▮▮▮▮▮▮❺ 对于每个时间步 LaTex→→→5c,28,20,74,20,5c,29←←←LaTex:
351
▮▮▮▮ⓕ 以 LaTex→→→5c,28,20,5c,65,70,73,69,6c,6f,6e,20,5c,29←←←LaTex 概率随机选择动作 LaTex→→→5c,28,20,61,5f,74,20,5c,29←←←LaTex (探索),或以 LaTex→→→5c,28,20,31,2d,5c,65,70,73,69,6c,6f,6e,20,5c,29←←←LaTex 概率选择 LaTex→→→5c,28,20,61,5f,74,20,3d,20,5c,61,72,67,5c,6d,61,78,5f,61,20,51,28,73,5f,74,2c,20,61,3b,20,5c,74,68,65,74,61,29,20,5c,29←←←LaTex (利用),通常使用 LaTex→→→5c,28,20,5c,65,70,73,69,6c,6f,6e,20,5c,29←←←LaTex-贪心策略 (LaTex→→→5c,28,5c,65,70,73,69,6c,6f,6e,5c,29←←←LaTex-greedy policy)。
352
▮▮▮▮ⓖ 在环境中执行动作 LaTex→→→5c,28,20,61,5f,74,20,5c,29←←←LaTex,获得奖励 LaTex→→→5c,28,20,72,5f,74,20,5c,29←←←LaTex 和下一个状态 LaTex→→→5c,28,20,73,5f,7b,74,2b,31,7d,20,5c,29←←←LaTex。
353
▮▮▮▮ⓗ 将经验元组 LaTex→→→5c,28,20,28,73,5f,74,2c,20,61,5f,74,2c,20,72,5f,74,2c,20,73,5f,7b,74,2b,31,7d,29,20,5c,29←←←LaTex 存储到经验回放缓冲区 LaTex→→→5c,28,20,44,20,5c,29←←←LaTex。
354
▮▮▮▮ⓘ 从缓冲区 LaTex→→→5c,28,20,44,20,5c,29←←←LaTex 中随机采样一批 (batch) 经验元组 LaTex→→→5c,28,20,28,73,5f,6a,2c,20,61,5f,6a,2c,20,72,5f,6a,2c,20,73,27,5f,7b,6a,7d,29,20,5c,29←←←LaTex。
355
▮▮▮▮ⓙ 计算目标 Q 值 LaTex→→→5c,28,20,79,5f,6a,20,3d,20,72,5f,6a,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,5f,7b,6a,7d,2c,20,61,27,3b,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,29,20,5c,29←←←LaTex。如果 LaTex→→→5c,28,20,73,27,5f,7b,6a,7d,20,5c,29←←←LaTex 是终止状态,则 LaTex→→→5c,28,20,79,5f,6a,20,3d,20,72,5f,6a,20,5c,29←←←LaTex。
356
▮▮▮▮ⓚ 计算损失函数 LaTex→→→5c,28,20,4c,28,5c,74,68,65,74,61,29,20,3d,20,5c,66,72,61,63,7b,31,7d,7b,7c,62,61,74,63,68,7c,7d,20,5c,73,75,6d,5f,7b,28,73,5f,6a,2c,20,61,5f,6a,2c,20,72,5f,6a,2c,20,73,27,5f,7b,6a,7d,29,20,5c,69,6e,20,62,61,74,63,68,7d,20,28,79,5f,6a,20,2d,20,51,28,73,5f,6a,2c,20,61,5f,6a,3b,20,5c,74,68,65,74,61,29,29,5e,32,20,5c,29←←←LaTex。
357
▮▮▮▮ⓛ 使用优化器(如 Adam 或 RMSProp)对损失函数进行梯度下降,更新在线 Q 网络参数 LaTex→→→5c,28,20,5c,74,68,65,74,61,20,5c,29←←←LaTex。
358
▮▮▮▮ⓜ 每隔 LaTex→→→5c,28,20,43,20,5c,29←←←LaTex 步,更新目标网络参数:LaTex→→→5c,28,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,20,3d,20,5c,74,68,65,74,61,20,5c,29←←←LaTex。
359
▮▮▮▮▮▮▮▮❸ 直到 эпизод 结束。
360
361
通过经验回放和目标网络,DQN显著提高了基于值函数的强化学习算法在高维状态空间下的训练稳定性和性能,为深度强化学习的后续发展奠定了基础。
362
363
### 5.3 DQN的改进算法 (Improvements on DQN)
364
365
DQN的提出打开了深度强化学习的大门,但它本身也存在一些问题,例如对目标 Q 值的过高估计 (overestimation) 和在重要经验上学习效率不足等。为了解决这些问题,研究者们提出了一系列重要的改进算法,其中一些成为了现代基于值方法的标准组件。
366
367
① **Double DQN (DDQN)**
368
▮▮▮▮ⓑ **问题**: 在标准DQN中,计算目标 Q 值时 LaTex→→→5c,28,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,3b,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,29,20,5c,29←←←LaTex 会同时用于选择动作和评估其价值。这种“选择”和“评估”使用同一个网络参数 LaTex→→→5c,28,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,20,5c,29←←←LaTex 的方式,可能导致对某些动作的 Q 值产生系统性的过高估计,尤其是在 Q 值估计存在噪声时。
369
▮▮▮▮ⓒ **思想**: 解耦动作的选择和价值的评估。使用在线网络 LaTex→→→5c,28,20,5c,74,68,65,74,61,20,5c,29←←←LaTex 来选择下一个状态 LaTex→→→5c,28,20,73,27,20,5c,29←←←LaTex 中的最优动作 LaTex→→→5c,28,20,61,5e,2a,20,3d,20,5c,61,72,67,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,3b,20,5c,74,68,65,74,61,29,20,5c,29←←←LaTex,但使用目标网络 LaTex→→→5c,28,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,20,5c,29←←←LaTex 来评估该动作的价值 LaTex→→→5c,28,20,51,28,73,27,2c,20,61,5e,2a,3b,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,29,20,5c,29←←←LaTex。
370
▮▮▮▮ⓓ **目标 Q 值计算**:
371
▮▮▮▮▮▮▮▮❺ Standard DQN target: LaTex→→→5c,28,20,79,5f,6a,20,3d,20,72,5f,6a,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,5f,7b,6a,7d,2c,20,61,27,3b,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,29,20,5c,29←←←LaTex
372
▮▮▮▮▮▮▮▮❻ Double DQN target: LaTex→→→5c,28,20,79,5f,6a,20,3d,20,72,5f,6a,20,2b,20,5c,67,61,6d,6d,61,20,51,28,73,27,5f,7b,6a,7d,2c,20,5c,61,72,67,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,5f,7b,6a,7d,2c,20,61,27,3b,20,5c,74,68,65,74,61,29,2c,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,29,20,5c,29←←←LaTex
373
▮▮▮▮ⓖ **优点**: 有效地缓解了价值的过高估计问题,提高了算法的稳定性和性能。
374
375
② **Prioritized Experience Replay (PER)**
376
▮▮▮▮ⓑ **问题**: 标准的经验回放是从缓冲区中均匀采样经验。然而,并不是所有的经验都具有相同的学习价值。例如,那些具有较大 TD 误差的经验(即当前网络预测的 Q 值与目标 Q 值差异较大)可能更能帮助网络学习。
377
▮▮▮▮ⓒ **思想**: 根据经验的“重要性”进行优先采样。TD 误差的绝对值 LaTex→→→5c,28,20,7c,79,5f,6a,20,2d,20,51,28,73,5f,6a,2c,20,61,5f,6a,3b,20,5c,74,68,65,74,61,29,7c,20,5c,29←←←LaTex 是衡量经验重要性的一个好指标。
378
▮▮▮▮ⓓ **过程**: 经验被存储时,计算其 TD 误差并赋予相应的优先级。采样时,优先选择优先级高的经验。更新网络后,需要更新被采样经验的优先级。为了避免只重复采样少数几个优先级极高的经验,通常采用一种采样概率与优先级成正比的方式,并结合重要性采样 (Importance Sampling) 来修正梯度,消除采样不均匀带来的偏差。
379
▮▮▮▮ⓔ **优点**: 使得智能体能够更频繁地学习那些“令人惊讶”或包含更多新信息的经验,提高了学习效率和最终性能。
380
381
③ **Dueling DQN**
382
▮▮▮▮ⓑ **问题**: 在传统的 Q 网络中,网络直接输出每个动作的 Q 值。这意味着对于每个状态,网络都必须从头计算所有动作的价值。然而,对于许多状态而言,不同动作的价值差异可能主要取决于状态本身的价值,而不是动作带来的特定优势。
383
▮▮▮▮ⓒ **思想**: 将 Q 值的估计分解为两个部分:状态价值 (State Value) LaTex→→→5c,28,20,56,28,73,29,20,5c,29←←←LaTex 和优势函数 (Advantage Function) LaTex→→→5c,28,20,41,28,73,2c,20,61,29,20,5c,29←←←LaTex。动作价值函数 LaTex→→→5c,28,20,51,28,73,2c,20,61,29,20,5c,29←←←LaTex 可以表示为 LaTex→→→5c,28,20,51,28,73,2c,20,61,29,20,3d,20,56,28,73,29,20,2b,20,41,28,73,2c,20,61,29,20,5c,29←←←LaTex。Dueling Network 架构的最后几层不是直接输出 Q 值,而是分成两条支流,一条估计 LaTex→→→5c,28,20,56,28,73,29,20,5c,29←←←LaTex,另一条估计 LaTex→→→5c,28,20,41,28,73,2c,20,61,29,20,5c,29←←←LaTex,最后再将它们合并起来得到 LaTex→→→5c,28,20,51,28,73,2c,20,61,29,20,5c,29←←←LaTex。
384
▮▮▮▮ⓓ **合并方式**: 为了保证 LaTex→→→5c,28,20,41,28,73,2c,20,61,29,20,5c,29←←←LaTex 的均值为 0(这是优势函数的性质),常用的合并方式是 LaTex→→→5c,28,20,51,28,73,2c,20,61,3b,20,5c,74,68,65,74,61,2c,20,5c,61,6c,70,68,61,2c,20,5c,62,65,74,61,29,20,3d,20,56,28,73,3b,20,5c,74,68,65,74,61,2c,20,5c,61,6c,70,68,61,29,20,2b,20,28,41,28,73,2c,20,61,3b,20,5c,74,68,65,74,61,2c,20,5c,62,65,74,61,29,20,2d,20,5c,6d,61,78,5f,7b,61,27,7d,20,41,28,73,2c,20,61,27,3b,20,5c,74,68,65,74,61,2c,20,5c,62,65,74,61,29,29,20,5c,29←←←LaTex。或者更常用的、数值上更稳定的方式是 LaTex→→→5c,28,20,51,28,73,2c,20,61,3b,20,5c,74,68,65,74,61,2c,20,5c,61,6c,70,68,61,2c,20,5c,62,65,74,61,29,20,3d,20,56,28,73,3b,20,5c,74,68,65,74,61,2c,20,5c,61,6c,70,68,61,29,20,2b,20,28,41,28,73,2c,20,61,3b,20,5c,74,68,65,74,61,2c,20,5c,62,65,74,61,29,20,2d,20,5c,66,72,61,63,7b,31,7d,7b,7c,41,7c,7d,20,5c,73,75,6d,5f,7b,61,27,7d,20,41,28,73,2c,20,61,27,3b,20,5c,74,68,65,74,61,2c,20,5c,62,65,74,61,29,29,20,5c,29←←←LaTex。其中 LaTex→→→5c,28,20,5c,74,68,65,74,61,20,5c,29←←←LaTex 是共享的网络层参数,LaTex→→→5c,28,20,5c,61,6c,70,68,61,20,5c,29←←←LaTex 和 LaTex→→→5c,28,20,5c,62,65,74,61,20,5c,29←←←LaTex 是 LaTex→→→5c,28,20,56,20,5c,29←←←LaTex 和 LaTex→→→5c,28,20,41,20,5c,29←←←LaTex 流各自的参数。
385
▮▮▮▮ⓔ **优点**:
386
▮▮▮▮▮▮▮▮❻ 网络可以分别学习状态的价值(无论采取什么动作都可能获得的价值)和每个动作相对于平均水平的优势。
387
▮▮▮▮▮▮▮▮❼ 在某些状态下,只需要更新 LaTex→→→5c,28,20,56,28,73,29,20,5c,29←←←LaTex 分支,而不需要计算每个动作的优势,提高了学习效率,尤其是在许多动作对状态价值影响不大时。
388
▮▮▮▮▮▮▮▮❽ 对于未采取的动作,网络也可以通过 LaTex→→→5c,28,20,56,28,73,29,20,5c,29←←←LaTex 的学习间接了解它们的 Q 值。
389
390
④ **Noisy Net**
391
▮▮▮▮ⓑ **问题**: DQN及其变体通常依赖 LaTex→→→5c,28,20,5c,65,70,73,69,6c,6f,6e,20,5c,29←←←LaTex-贪心策略进行探索。这种探索方式是随机且不依赖于状态的。在状态空间很大时,随机探索效率低下,难以发现有用的经验。
392
▮▮▮▮ⓒ **思想**: 将探索集成到网络结构中,通过在网络的权重或激活中添加参数化的噪声来实现。网络学习如何调整这些噪声的参数,使得噪声(探索)能够更有效地进行。
393
▮▮▮▮ⓓ **过程**: 将神经网络的线性层 LaTex→→→5c,28,20,79,20,3d,20,57,78,20,2b,20,62,20,5c,29←←←LaTex 替换为带有噪声的层 LaTex→→→5c,28,20,79,20,3d,20,28,57,20,2b,20,5c,65,70,73,69,6c,6f,6e,5f,57,20,5c,6f,64,6f,74,20,5c,73,69,67,6d,61,5f,57,29,78,20,2b,20,28,62,20,2b,20,5c,65,70,73,69,6c,6f,6e,5f,62,20,5c,6f,64,6f,74,20,5c,73,69,67,6d,61,5f,62,29,20,5c,29←←←LaTex,其中 LaTex→→→5c,28,20,5c,6f,64,6f,74,20,5c,29←←←LaTex 是逐元素乘法,LaTex→→→5c,28,20,5c,65,70,73,69,6c,6f,6e,5f,57,2c,20,5c,65,70,73,69,6c,6f,6e,5f,62,20,5c,29←←←LaTex 是随机噪声,LaTex→→→5c,28,20,5c,73,69,67,6d,61,5f,57,2c,20,5c,73,69,67,6d,61,5f,62,20,5c,29←←←LaTex 是网络需要学习的噪声的标准差参数。
394
▮▮▮▮ⓔ **优点**: 实现了状态依赖的探索,并且探索的量会随着学习的进行而自适应调整。通常在学习后期,噪声的标准差会减小,探索量随之减少。这比固定的 LaTex→→→5c,28,20,5c,65,70,73,69,6c,6f,6e,20,5c,29←←←LaTex-贪心策略或线性衰减的 LaTex→→→5c,28,20,5c,65,70,73,69,6c,6f,6e,20,5c,29←←←LaTex-贪心策略更有效。
395
396
⑤ **Categorical DQN (C51)**
397
▮▮▮▮ⓑ **问题**: 标准 DQN 学习的是期望的 Q 值 LaTex→→→5c,28,20,5c,6d,61,74,68,62,62,7b,45,7d,5b,5c,74,65,78,74,7b,52,65,74,75,72,6e,7d,5d,20,5c,29←←←LaTex。然而,不同策略或在不同状态下,回报的分布可能差异很大,仅关注期望值可能不足以做出最优决策,特别是在存在风险的环境中。
398
▮▮▮▮ⓒ **思想**: 学习回报的分布 (Distribution) 而不是仅仅学习期望值。C51 模型输出的不是一个单一的 Q 值,而是一个概率分布,表示回报落在预设的离散“原子”(atoms) 上的概率。
399
▮▮▮▮ⓓ **过程**: 将回报的可能范围离散化为 LaTex→→→5c,28,20,4e,20,5c,29←←←LaTex 个原子 LaTex→→→5c,28,20,5c,7b,7a,5f,69,5c,7d,5f,7b,69,3d,31,7d,5e,4e,20,5c,29←←←LaTex。网络输出的是在每个原子 LaTex→→→5c,28,20,7a,5f,69,20,5c,29←←←LaTex 上获得回报的概率 LaTex→→→5c,28,20,70,5f,69,28,73,2c,20,61,29,20,5c,29←←←LaTex,且 LaTex→→→5c,28,20,5c,73,75,6d,5f,69,20,70,5f,69,28,73,2c,20,61,29,20,3d,20,31,20,5c,29←←←LaTex。训练时,使用分布间的距离(如交叉熵)作为损失函数,目标分布由贝尔曼方程根据下一个状态的回报分布计算得到,然后投影到当前状态的原子上。
400
▮▮▮▮ⓔ **优点**: 提供了比单一期望值更丰富的信息,有助于智能体理解环境的风险和不确定性,理论上可以做出更稳健的决策。实验表明 C51 在许多 Atari 游戏上显著优于标准 DQN。
401
402
⑥ **Rainbow**
403
▮▮▮▮ⓑ **思想**: 将上述几种有效的 DQN 改进技术(如 DDQN, PER, Dueling, Noisy Net, Categorical DQN)以及其他一些技术(如 Multi-step Learning)集成到一个算法中。
404
▮▮▮▮ⓒ **优点**: 结合了多种改进的优势,Rainbow 在 Atari 游戏等任务上取得了当时最佳的性能,证明了这些改进技术是相互补充且有效的。
405
406
这些改进算法显著提升了基于值方法的性能、稳定性和探索能力,使得基于 DQN 的方法仍然是离散动作空间任务中的重要基线和强大工具。
407
408
### 5.4 基于值的连续动作空间方法 (Value-Based Methods for Continuous Action Spaces)
409
410
基于值的强化学习方法,尤其是 Q-学习及其变体,最直接的应用场景是离散动作空间。这是因为在计算 TD 目标 LaTex→→→5c,28,20,72,20,2b,20,5c,67,61,6d,6d,61,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex 时,需要对下一个状态 LaTex→→→5c,28,20,73,27,20,5c,29←←←LaTex 的所有可能动作 LaTex→→→5c,28,20,61,27,20,5c,29←←←LaTex 求最大值 LaTex→→→5c,28,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex。如果动作空间是连续的,这个求最大值的操作就变成了一个优化问题 LaTex→→→5c,28,20,5c,6d,61,78,5f,7b,61,27,20,5c,69,6e,20,41,7d,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex,通常难以高效准确地求解,特别是在每次网络更新时都需要进行。
411
412
尽管如此,研究者们也探索了一些将基于值的方法应用于连续动作空间的思路:
413
414
① **动作空间离散化 (Action Space Discretization)**
415
▮▮▮▮⚝ **思想**: 将连续的动作空间划分为有限的离散动作集合。例如,如果一个动作是速度,可以将其离散为“慢速”、“中速”、“快速”等几个等级。
416
▮▮▮▮⚝ **优点**: 可以直接应用处理离散动作的基于值算法(如 DQN)。
417
▮▮▮▮⚝ **缺点**:
418
▮▮▮▮▮▮▮▮❶ 粒度问题:粗粒度的离散化可能导致失去最优动作的精度;细粒度的离散化会使得离散动作集合非常大,Q 网络输出层需要处理的动作数量剧增,计算量巨大。
419
▮▮▮▮▮▮▮▮❷ 不适用于高维连续动作空间(例如,一个机器人有多个关节,每个关节的角度或角速度都是连续的)。
420
421
② **基于优化的方法 (Optimization-Based Methods)**
422
▮▮▮▮⚝ **思想**: 在计算 TD 目标时,通过优化算法(如梯度上升)来寻找使得 LaTex→→→5c,28,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex 最大的动作 LaTex→→→5c,28,20,61,27,20,5c,29←←←LaTex。
423
▮▮▮▮⚝ **过程**: 在 LaTex→→→5c,28,20,73,27,20,5c,29←←←LaTex 状态下,使用梯度上升 LaTex→→→5c,28,20,61,27,20,5c,6c,65,66,74,61,72,72,6f,77,20,61,27,20,2b,20,5c,62,65,74,61,20,5c,6e,61,62,6c,61,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex 来寻找最大化 LaTex→→→5c,28,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex 的 LaTex→→→5c,28,20,61,27,20,5c,29←←←LaTex。
424
▮▮▮▮⚝ **缺点**:
425
▮▮▮▮▮▮▮▮❶ 每次更新都需要运行一个优化过程,计算成本高。
426
▮▮▮▮▮▮▮▮❷ 优化过程可能陷入局部最优,无法找到全局最优的 LaTex→→→5c,28,20,61,27,20,5c,29←←←LaTex,导致 TD 目标不准确。
427
428
③ **使用特殊的网络结构 (Using Specific Network Architectures)**
429
▮▮▮▮⚝ **思想**: 设计特殊的网络结构,使得 LaTex→→→5c,28,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex 能够更高效或解析地计算。例如,如果假设 LaTex→→→5c,28,20,51,28,73,2c,20,61,29,20,5c,29←←←LaTex 关于 LaTex→→→5c,28,20,61,20,5c,29←←←LaTex 是一个二次函数,那么最大值可以在闭合形式下计算。但这种假设通常过于严格。
430
431
④ **Normalized Advantage Function (NAF)**
432
▮▮▮▮⚝ **思想**: NAF 算法是 Dueling Network 思想在连续动作空间的一种扩展。它将 Q 函数分解为状态价值 LaTex→→→5c,28,20,56,28,73,29,20,5c,29←←←LaTex 和优势函数 LaTex→→→5c,28,20,41,28,73,2c,20,61,29,20,5c,29←←←LaTex,并且假设优势函数 LaTex→→→5c,28,20,41,28,73,2c,20,61,29,20,5c,29←←←LaTex 关于动作 LaTex→→→5c,28,20,61,20,5c,29←←←LaTex 是一个二次函数 LaTex→→→5c,28,20,41,28,73,2c,20,61,3b,20,5c,74,68,65,74,61,29,20,3d,20,2d,5c,66,72,61,63,7b,31,7d,7b,32,7d,20,28,61,20,2d,20,5c,6d,75,28,73,3b,20,5c,74,68,65,74,61,29,29,5e,54,20,50,28,73,3b,20,5c,74,68,65,74,61,29,20,28,61,20,2d,20,5c,6d,75,28,73,3b,20,5c,74,68,65,74,61,29,29,20,5c,29←←←LaTex,其中 LaTex→→→5c,28,20,5c,6d,75,28,73,29,20,5c,29←←←LaTex 是最优动作,LaTex→→→5c,28,20,50,28,73,29,20,5c,29←←←LaTex 是一个正定矩阵。
433
▮▮▮▮⚝ **过程**: 网络学习 LaTex→→→5c,28,20,56,28,73,29,20,5c,29←←←LaTex、最优动作 LaTex→→→5c,28,20,5c,6d,75,28,73,29,20,5c,29←←←LaTex 和矩阵 LaTex→→→5c,28,20,50,28,73,29,20,5c,29←←←LaTex。由于 LaTex→→→5c,28,20,41,28,73,2c,20,61,29,20,5c,29←←←LaTex 是二次函数且 LaTex→→→5c,28,20,50,28,73,29,20,5c,29←←←LaTex 是正定的,其最大值点就是 LaTex→→→5c,28,20,61,20,3d,20,5c,6d,75,28,73,29,20,5c,29←←←LaTex,最大值是 0。因此,LaTex→→→5c,28,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,3d,20,56,28,73,27,29,20,2b,20,5c,6d,61,78,5f,7b,61,27,7d,20,41,28,73,27,2c,20,61,27,29,20,3d,20,56,28,73,27,29,20,5c,29←←←LaTex。TD 目标变为 LaTex→→→5c,28,20,72,20,2b,20,5c,67,61,6d,6d,61,20,56,28,73,27,3b,20,5c,74,68,65,74,61,5f,7b,5c,74,65,78,74,7b,74,61,72,67,65,74,7d,7d,29,20,5c,29←←←LaTex。
434
▮▮▮▮⚝ **优点**: 将连续动作空间的最大化问题转化为了学习最优动作 LaTex→→→5c,28,20,5c,6d,75,28,73,29,20,5c,29←←←LaTex 和价值 LaTex→→→5c,28,20,56,28,73,29,20,5c,29←←←LaTex 的问题,避免了昂贵的在线优化。
435
▮▮▮▮⚝ **局限性**: 优势函数必须是二次函数的强假设限制了模型的表达能力。
436
437
总的来说,尽管有一些尝试,但基于价值的方法在处理连续动作空间时面临本质的困难,即计算 LaTex→→→5c,28,20,5c,6d,61,78,5f,7b,61,27,7d,20,51,28,73,27,2c,20,61,27,29,20,5c,29←←←LaTex。因此,对于连续动作空间的深度强化学习任务,基于策略的方法 (Policy-Based Methods) 或 Actor-Critic 方法通常是更自然和常用的选择。我们将在后续章节中详细探讨这些方法。本章重点在于基于值的方法在离散动作空间中的强大能力,尤其是DQN及其系列改进。
438
439
希望通过本章的学习,您对基于值的深度强化学习方法有了全面和深入的理解。我们学习了其根基——Q-学习,掌握了DQN如何克服与深度学习结合的挑战,并了解了一系列重要的DQN改进算法如何进一步提升性能。这为您后续学习更复杂的DRL算法打下了坚实的基础。
440
441
<END_OF_CHAPTER/>
442
443
444
445
## 6. 基于策略的深度强化学习方法 (Policy-Based Deep Reinforcement Learning Methods)
446
447
本章我们将深入探讨另一大类深度强化学习 (Deep Reinforcement Learning, DRL) 方法:基于策略的方法 (Policy-Based Methods)。与基于值的方法(如DQN)不同,这类方法直接学习一个参数化的策略函数 LaTex→→→5c,28,5c,70,69,5f,5c,74,68,65,74,61,28,61,7c,73,29,5c,29←←←LaTex,该函数将状态映射到动作的概率分布或确定性动作,而无需显式计算价值函数。我们将重点介绍策略梯度 (Policy Gradient) 方法,它是基于策略DRL的基石。
448
449
### 6.1 策略梯度定理 (Policy Gradient Theorem)
450
451
在本节中,我们将理解为什么可以直接优化策略,并推导出用于计算策略参数梯度的基本定理。
452
453
强化学习 (Reinforcement Learning, RL) 的目标是找到一个最优策略 LaTex→→→5c,28,5c,70,69,5e,2a,5c,29←←←LaTex,使得智能体 (Agent) 在环境 (Environment) 中获得的累积奖励 (Cumulative Reward) 最大化。对于一个策略 LaTex→→→5c,28,5c,70,69,5f,5c,74,68,65,74,61,5c,29←←←LaTex,我们可以定义一个目标函数 (Objective Function),通常是期望的回报 (Expected Return)。对于一个连续性的任务(如没有终止状态),这个目标函数可以是平均奖励率 (Average Reward Rate)。对于幕式任务 (Episodic Task),目标函数通常定义为从某个起始状态 LaTex→→→5c,28,73,5f,30,5c,29←←←LaTex 开始的期望总回报:
454
455
LaTex→→→5c,5b,20,4a,28,5c,74,68,65,74,61,29,20,3d,20,5c,6d,61,74,68,62,62,7b,45,7d,5f,7b,5c,74,61,75,20,5c,73,69,6d,20,5c,70,69,5f,5c,74,68,65,74,61,7d,20,5b,47,5f,30,20,7c,20,73,3d,73,5f,30,5d,20,5c,5d←←←LaTex
456
或者,对于某个状态分布 LaTex→→→5c,28,64,5e,5c,70,69,28,73,29,5c,29←←←LaTex(智能体在执行策略 LaTex→→→5c,28,5c,70,69,5c,29←←←LaTex 时访问各状态的概率分布),目标函数也可以定义为在所有状态下的期望总回报:
457
458
LaTex→→→5c,5b,20,4a,28,5c,74,68,65,74,61,29,20,3d,20,5c,6d,61,74,68,62,62,7b,45,7d,5f,7b,73,20,5c,73,69,6d,20,64,5e,7b,5c,70,69,5f,5c,74,68,65,74,61,7d,2c,20,61,20,5c,73,69,6d,20,5c,70,69,5f,5c,74,68,65,74,61,28,5c,63,64,6f,74,7c,73,29,7d,20,5b,47,5f,74,20,7c,20,53,5f,74,3d,73,2c,20,41,5f,74,3d,61,5d,20,5c,5d←←←LaTex
459
这里的 LaTex→→→5c,28,5c,74,61,75,5c,29←←←LaTex 表示一条轨迹 (Trajectory) LaTex→→→5c,28,73,5f,30,2c,20,61,5f,30,2c,20,72,5f,31,2c,20,73,5f,31,2c,20,61,5f,31,2c,20,72,5f,32,2c,20,73,5f,32,2c,20,5c,64,6f,74,73,5c,29←←←LaTex,LaTex→→→5c,28,47,5f,30,5c,29←←←LaTex 是从 LaTex→→→5c,28,73,5f,30,5c,29←←←LaTex 开始的总回报(可能是带折扣的)。我们的目标是通过调整策略的参数 LaTex→→→5c,28,5c,74,68,65,74,61,5c,29←←←LaTex,最大化 LaTex→→→5c,28,4a,28,5c,74,68,65,74,61,29,5c,29←←←LaTex。为了最大化一个函数,我们可以使用梯度上升 (Gradient Ascent) 方法,即沿着函数的梯度方向更新参数:
460
461
LaTex→→→5c,5b,20,5c,74,68,65,74,61,20,5c,6c,65,66,74,61,72,72,6f,77,20,5c,74,68,65,74,61,20,2b,20,5c,61,6c,70,68,61,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,4a,28,5c,74,68,65,74,61,29,20,5c,5d←←←LaTex
462
其中 LaTex→→→5c,28,5c,61,6c,70,68,61,5c,29←←←LaTex 是学习率 (Learning Rate)。因此,核心问题是如何计算 LaTex→→→5c,28,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,4a,28,5c,74,68,65,74,61,29,5c,29←←←LaTex。
463
464
直接计算 LaTex→→→5c,28,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,4a,28,5c,74,68,65,74,61,29,5c,29←←←LaTex 是困难的,因为期望是关于轨迹分布 LaTex→→→5c,28,5c,74,61,75,20,5c,73,69,6d,20,5c,70,69,5f,5c,74,68,65,74,61,5c,29←←←LaTex 的,而轨迹分布又依赖于策略 LaTex→→→5c,28,5c,70,69,5f,5c,74,68,65,74,61,5c,29←←←LaTex,这意味着期望中的分布是关于 LaTex→→→5c,28,5c,74,68,65,74,61,5c,29←←←LaTex 变化的。策略梯度定理 (Policy Gradient Theorem) 提供了一种巧妙的方式来计算这个梯度,避免了对轨迹分布梯度的计算。
465
466
策略梯度定理指出,对于一个可微分的策略 LaTex→→→5c,28,5c,70,69,5f,5c,74,68,65,74,61,28,61,7c,73,29,5c,29←←←LaTex 和一个可微分的状态价值函数 LaTex→→→5c,28,76,5f,5c,70,69,28,73,29,5c,29←←←LaTex,对于幕式任务,从任意状态 LaTex→→→5c,28,73,5c,29←←←LaTex 开始的期望总回报的梯度是:
467
468
LaTex→→→5c,5b,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,4a,28,5c,74,68,65,74,61,29,20,3d,20,5c,6d,61,74,68,62,62,7b,45,7d,5f,7b,73,20,5c,73,69,6d,20,64,5e,7b,5c,70,69,5f,5c,74,68,65,74,61,7d,2c,20,61,20,5c,73,69,6d,20,5c,70,69,5f,5c,74,68,65,74,61,28,5c,63,64,6f,74,7c,73,29,7d,20,5b,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,5c,6c,6f,67,20,5c,70,69,5f,5c,74,68,65,74,61,28,61,7c,73,29,20,47,5f,74,20,5d,20,5c,5d←←←LaTex
469
这里的 LaTex→→→5c,28,47,5f,74,5c,29←←←LaTex 是从时间步 LaTex→→→5c,28,74,5c,29←←←LaTex 开始的总回报。更通用的形式,适用于连续任务和使用动作价值函数 LaTex→→→5c,28,71,5f,5c,70,69,28,73,2c,20,61,29,5c,29←←←LaTex 代替总回报 LaTex→→→5c,28,47,5f,74,5c,29←←←LaTex 的情况是:
470
471
LaTex→→→5c,5b,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,4a,28,5c,74,68,65,74,61,29,20,3d,20,5c,6d,61,74,68,62,62,7b,45,7d,5f,7b,73,20,5c,73,69,6d,20,64,5e,7b,5c,70,69,5f,5c,74,68,65,74,61,7d,2c,20,61,20,5c,73,69,6d,20,5c,70,69,5f,5c,74,68,65,74,61,28,5c,63,64,6f,74,7c,73,29,7d,20,5b,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,5c,6c,6f,67,20,5c,70,69,5f,5c,74,68,65,74,61,28,61,7c,73,29,20,51,5e,7b,5c,70,69,5f,5c,74,68,65,74,61,7d,28,73,2c,20,61,29,20,5d,20,5c,5d←←←LaTex
472
这里的 LaTex→→→5c,28,51,5e,7b,5c,70,69,5f,5c,74,68,65,74,61,7d,28,73,2c,20,61,29,5c,29←←←LaTex 是在策略 LaTex→→→5c,28,5c,70,69,5f,5c,74,68,65,74,61,5c,29←←←LaTex 下,从状态 LaTex→→→5c,28,73,5c,29←←←LaTex 执行动作 LaTex→→→5c,28,61,5c,29←←←LaTex 后的期望回报(动作价值函数)。
473
474
这个定理的推导基于**似然比技巧 (Likelihood Ratio Trick)** 或**分对数技巧 (Log-Derivative Trick)**。核心思想是利用恒等式 LaTex→→→5c,28,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,50,28,78,29,20,3d,20,50,28,78,29,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,5c,6c,6f,67,20,50,28,78,29,5c,29←←←LaTex。将这个技巧应用于期望公式中的概率密度函数(即轨迹的概率),并进行一系列数学推导(涉及对状态分布 LaTex→→→5c,28,64,5e,7b,5c,70,69,5f,5c,74,68,65,74,61,7d,28,73,29,5c,29←←←LaTex 求导的处理,这部分比较复杂,定理的神奇之处在于避免了显式计算这部分),最终可以得到上述简洁的梯度公式。
475
476
直观上理解策略梯度公式 LaTex→→→5c,28,5c,6d,61,74,68,62,62,7b,45,7d,20,5b,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,5c,6c,6f,67,20,5c,70,69,5f,5c,74,68,65,74,61,28,61,7c,73,29,20,51,5e,7b,5c,70,69,5f,5c,74,68,65,74,61,7d,28,73,2c,20,61,29,20,5d,5c,29←←←LaTex:
477
⚝ LaTex→→→5c,28,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,5c,6c,6f,67,20,5c,70,69,5f,5c,74,68,65,74,61,28,61,7c,73,29,5c,29←←←LaTex 称为分对数梯度 (Log-policy Gradient) 或得分函数 (Score Function)。它表示在状态 LaTex→→→5c,28,73,5c,29←←←LaTex 下,朝着什么方向调整 LaTex→→→5c,28,5c,74,68,65,74,61,5c,29←←←LaTex 可以增加选择动作 LaTex→→→5c,28,61,5c,29←←←LaTex 的概率。
478
⚝ LaTex→→→5c,28,51,5e,7b,5c,70,69,5f,5c,74,68,65,74,61,7d,28,73,2c,20,61,29,5c,29←←←LaTex 表示在状态 LaTex→→→5c,28,73,5c,29←←←LaTex 执行动作 LaTex→→→5c,28,61,5c,29←←←LaTex 的好坏程度(价值)。
479
⚝ 策略梯度就是对所有可能的状态-动作对 LaTex→→→5c,28,28,73,2c,20,61,29,5c,29←←←LaTex,计算“增加选择动作 LaTex→→→5c,28,61,5c,29←←←LaTex 概率的方向”乘以“执行动作 LaTex→→→5c,28,61,5c,29←←←LaTex 的价值”,然后求其期望。这意味着对于价值高的动作,我们增大选择它们的概率;对于价值低的动作,我们减小选择它们的概率。这就是策略梯度的核心思想:**让好的动作更可能被选中**。
480
481
需要注意的是,策略梯度定理中的期望是基于策略 LaTex→→→5c,28,5c,70,69,5f,5c,74,68,65,74,61,5c,29←←←LaTex 采样的状态和动作。在实际应用中,我们通过与环境交互产生样本(轨迹)来蒙特卡洛 (Monte Carlo) 估计这个期望。
482
483
### 6.2 REINFORCE 算法 (REINFORCE Algorithm)
484
485
REINFORCE (也被称为 Monte Carlo Policy Gradient) 是最简单的策略梯度算法。它直接利用策略梯度定理的蒙特卡洛估计形式来更新策略参数。
486
487
策略梯度定理的一个蒙特卡洛估计版本是:
488
489
LaTex→→→5c,5b,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,4a,28,5c,74,68,65,74,61,29,20,5c,61,70,70,72,6f,78,20,5c,66,72,61,63,7b,31,7d,7b,4e,7d,20,5c,73,75,6d,5f,7b,69,3d,31,7d,5e,4e,20,5c,73,75,6d,5f,7b,74,3d,30,7d,5e,7b,54,5f,69,2d,31,7d,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,5c,6c,6f,67,20,5c,70,69,5f,5c,74,68,65,74,61,28,61,5f,7b,69,2c,74,7d,7c,73,5f,7b,69,2c,74,7d,29,20,47,5f,7b,69,2c,74,7d,20,5c,5d←←←LaTex
490
其中,我们采样 LaTex→→→5c,28,4e,5c,29←←←LaTex 条完整的轨迹 LaTex→→→5c,28,5c,74,61,75,5f,69,20,3d,20,28,73,5f,7b,69,2c,30,7d,2c,20,61,5f,7b,69,2c,30,7d,2c,20,72,5f,7b,69,2c,31,7d,2c,20,5c,64,6f,74,73,2c,20,73,5f,7b,69,2c,54,5f,69,7d,29,5c,29←←←LaTex 与环境交互得到,LaTex→→→5c,28,73,5f,7b,69,2c,74,7d,2c,20,61,5f,7b,69,2c,74,7d,5c,29←←←LaTex 是第 LaTex→→→5c,28,69,5c,29←←←LaTex 条轨迹在时间步 LaTex→→→5c,28,74,5c,29←←←LaTex 的状态和动作,LaTex→→→5c,28,47,5f,7b,69,2c,74,7d,5c,29←←←LaTex 是该轨迹从时间步 LaTex→→→5c,28,74,5c,29←←←LaTex 开始的总回报。
491
492
REINFORCE 算法的步骤如下:
493
① 初始化策略网络(使用神经网络参数化策略 LaTex→→→5c,28,5c,70,69,5f,5c,74,68,65,74,61,28,61,7c,73,29,5c,29←←←LaTex)的参数 LaTex→→→5c,28,5c,74,68,65,74,61,5c,29←←←LaTex。
494
② 重复以下步骤直到收敛:
495
▮▮▮▮ⓒ 通过当前策略 LaTex→→→5c,28,5c,70,69,5f,5c,74,68,65,74,61,5c,29←←←LaTex 与环境交互,采样一条完整的轨迹:LaTex→→→5c,28,73,5f,30,2c,20,61,5f,30,2c,20,72,5f,31,2c,20,73,5f,31,2c,20,61,5f,31,2c,20,72,5f,32,2c,20,73,5f,32,2c,20,5c,64,6f,74,73,2c,20,73,5f,7b,54,2d,31,7d,2c,20,61,5f,7b,54,2d,31,7d,2c,20,72,5f,54,2c,20,73,5f,54,5c,29←←←LaTex。
496
▮▮▮▮ⓓ 对于轨迹中的每一个时间步 LaTex→→→5c,28,74,5c,29←←←LaTex (LaTex→→→5c,28,74,3d,30,2c,20,5c,64,6f,74,73,2c,20,54,2d,31,5c,29←←←LaTex),计算从该时间步开始的总回报 LaTex→→→5c,28,47,5f,74,5c,29←←←LaTex。如果使用折扣因子 LaTex→→→5c,28,5c,67,61,6d,6d,61,5c,29←←←LaTex,则 LaTex→→→5c,28,47,5f,74,20,3d,20,72,5f,7b,74,2b,31,7d,20,2b,20,5c,67,61,6d,6d,61,20,72,5f,7b,74,2b,32,7d,20,2b,20,5c,64,6f,74,73,20,2b,20,5c,67,61,6d,6d,61,5e,7b,54,2d,74,2d,31,7d,20,72,5f,54,5c,29←←←LaTex。
497
▮▮▮▮ⓔ 计算策略参数的梯度:
498
499
LaTex→→→5c,5b,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,4a,28,5c,74,68,65,74,61,29,20,5c,61,70,70,72,6f,78,20,5c,73,75,6d,5f,7b,74,3d,30,7d,5e,7b,54,2d,31,7d,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,5c,6c,6f,67,20,5c,70,69,5f,5c,74,68,65,74,61,28,61,5f,74,7c,73,5f,74,29,20,47,5f,74,20,5c,5d←←←LaTex
500
请注意,这里的总回报 LaTex→→→5c,28,47,5f,74,5c,29←←←LaTex 是一个随机变量,是基于单条采样轨迹计算的。
501
▮▮▮▮ⓓ 使用梯度上升更新策略参数:
502
503
LaTex→→→5c,5b,20,5c,74,68,65,74,61,20,5c,6c,65,66,74,61,72,72,6f,77,20,5c,74,68,65,74,61,20,2b,20,5c,61,6c,70,68,61,20,5c,6e,61,62,6c,61,5f,5c,74,68,65,74,61,20,4a,28,5c,74,68,65,74,61,29,20,5c,5d←←←LaTex
504
505
**REINFORCE 算法示例 (概念性)**
506
507
```python
508
509
# Conceptual REINFORCE Algorithm Outline
510
511
initialize policy network with parameters theta
512
choose a learning rate alpha
513
514
loop forever:
515
collect a trajectory (s0, a0, r1, s1, a1, r2, ...) by running policy pi_theta in the environment
516
calculate the return Gt for each step t in the trajectory
517
518
initialize gradient_accumulator = 0
519
520
for each step t = 0 to T-1 in the trajectory:
521
# Calculate the log probability of the action taken
522
log_prob = log(pi_theta(a_t | s_t))
523
524
# Calculate the gradient of the log probability w.r.t theta
525
# This requires automatic differentiation framework (e.g., PyTorch, TensorFlow)
526
gradient_log_prob = compute_gradient(log_prob, theta)
527
528
# Accumulate the gradient contribution for this step
529
gradient_accumulator += gradient_log_prob * G_t
530
531
# Update policy parameters using gradient ascent
532
theta = theta + alpha * gradient_accumulator
REINFORCE 算法的特点:
⚝ 优点:
▮▮▮▮⚝ 概念简单清晰,直接优化策略。
▮▮▮▮⚝ 可以学习随机性策略 (Stochastic Policy),这在某些环境下(如扑克游戏)是必须的,因为最优策略可能是随机的。
▮▮▮▮⚝ 可以直接处理连续动作空间 (Continuous Action Space),只需让策略网络输出连续动作的概率分布(如高斯分布的均值和方差),然后采样动作并计算相应概率的对数梯度。
⚝ 缺点:
▮▮▮▮⚝ 高方差 (High Variance): 这是REINFORCE最主要的缺点。策略梯度估计量 \(\sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) G_t\) 的方差很高,因为 \(G_t\) 是一个不加权的总回报,其值波动很大。这使得训练过程不稳定,收敛速度慢。
▮▮▮▮⚝ 样本效率低 (Low Sample Efficiency): 每进行一次策略更新,都需要采样一条完整的轨迹。如果轨迹很长,或者需要很多轨迹才能得到稳定的梯度估计,那么与环境的交互次数会非常多。
高方差的问题促使人们寻求改进策略梯度估计量的方法,其中最有效且常用的一种就是引入基线 (Baseline)。
6.3 基线 (Baseline) 的引入 (Introducing Baselines)
为了降低策略梯度估计量的高方差,我们可以引入一个基线函数 \(b(s)\)(在策略梯度定理的期望中,基线通常只依赖于状态 \(s\))。将基线从回报 \(G_t\) 中减去,策略梯度公式变为:
\[ \nabla_\theta J(\theta) = \mathbb{E}_{s \sim d^{\pi_\theta}, a \sim \pi_\theta(\cdot|s)} [ \nabla_\theta \log \pi_\theta(a|s) (Q^{\pi_\theta}(s, a) - b(s)) ] \]
或者在蒙特卡洛估计中:
\[ \nabla_\theta J(\theta) \approx \frac{1}{N} \sum_{i=1}^N \sum_{t=0}^{T_i-1} \nabla_\theta \log \pi_\theta(a_{i,t}|s_{i,t}) (G_{i,t} - b(s_{i,t})) \]
为什么引入基线可以降低方差?
考虑梯度估计量的期望:
\[ \mathbb{E} [\nabla_\theta \log \pi_\theta(a|s) (Q^{\pi_\theta}(s, a) - b(s))] \]
\[ = \mathbb{E} [\nabla_\theta \log \pi_\theta(a|s) Q^{\pi_\theta}(s, a)] - \mathbb{E} [\nabla_\theta \log \pi_\theta(a|s) b(s)] \]
由于基线 \(b(s)\) 只依赖于状态 \(s\),与动作 \(a\) 无关,我们可以将 \(b(s)\) 从期望中提出来:
\[ \mathbb{E}_{s \sim d^{\pi_\theta}} [ b(s) \mathbb{E}_{a \sim \pi_\theta(\cdot|s)} [\nabla_\theta \log \pi_\theta(a|s) ] ] \]
现在考虑 \(\mathbb{E}_{a \sim \pi_\theta(\cdot|s)} [\nabla_\theta \log \pi_\theta(a|s) ]\)。我们知道 \(\sum_a \pi_\theta(a|s) = 1\)。对两边关于 \(\theta\) 求导:
\[ \nabla_\theta \sum_a \pi_\theta(a|s) = \nabla_\theta 1 = 0 \]
\[ \sum_a \nabla_\theta \pi_\theta(a|s) = 0 \]
利用分对数技巧 \(\nabla_\theta \pi_\theta(a|s) = \pi_\theta(a|s) \nabla_\theta \log \pi_\theta(a|s)\),我们得到:
\[ \sum_a \pi_\theta(a|s) \nabla_\theta \log \pi_\theta(a|s) = 0 \]
这正是 \(\mathbb{E}_{a \sim \pi_\theta(\cdot|s)} [\nabla_\theta \log \pi_\theta(a|s) ]\) 的定义!
\[ \mathbb{E}_{a \sim \pi_\theta(\cdot|s)} [\nabla_\theta \log \pi_\theta(a|s) ] = \sum_a \pi_\theta(a|s) \nabla_\theta \log \pi_\theta(a|s) = 0 \]
因此, \(\mathbb{E} [\nabla_\theta \log \pi_\theta(a|s) b(s)] = 0\)。这意味着引入一个只依赖于状态的基线不会改变策略梯度的期望,也就不会引入偏差 (Bias)。
虽然期望不变,但减去一个合适的基线可以减小估计量的方差。一个理想的基线是状态价值函数 \(v_\pi(s) = \mathbb{E}_{a \sim \pi_\theta(\cdot|s)} [Q^{\pi_\theta}(s, a)]\)。此时,我们使用优势函数 (Advantage Function) \(A_\pi(s, a) = Q_\pi(s, a) - v_\pi(s)\) 代替 \(Q_\pi(s, a)\)。优势函数表示在状态 \(s\) 下,采取动作 \(a\) 相对于该状态平均而言(即按照策略 \(\pi\) 执行)的优势。
使用优势函数作为“奖励”信号:
\[ \nabla_\theta J(\theta) = \mathbb{E}_{s \sim d^{\pi_\theta}, a \sim \pi_\theta(\cdot|s)} [ \nabla_\theta \log \pi_\theta(a|s) A^{\pi_\theta}(s, a) ] \]
在蒙特卡洛估计中,我们可以使用总回报 \(G_t\) 作为 \(Q^{\pi_\theta}(s_t, a_t)\) 的无偏估计。为了引入 \(v_\pi(s_t)\) 作为基线,我们需要估计 \(v_\pi(s)\)。一个常用的方法是训练一个单独的价值网络(通常是状态价值函数网络 \(v_\phi(s)\),参数为 \(\phi\))来逼近 \(v_\pi(s)\)。这样,蒙特卡洛策略梯度的估计量变为:
\[ \nabla_\theta J(\theta) \approx \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) (G_t - v_\phi(s_t)) \]
这里的 \(G_t - v_\phi(s_t)\) 是优势函数 \(A^{\pi_\theta}(s_t, a_t)\) 的蒙特卡洛估计。
通过减去 \(v_\phi(s_t)\),我们将回报信号的基准拉到了状态的平均价值水平。如果一个动作 \(a_t\) 的回报 \(G_t\) 高于状态的平均价值 \(v_\phi(s_t)\),那么 \(G_t - v_\phi(s_t)\) 是正的,我们将增加选择动作 \(a_t\) 的概率;反之,如果低于平均水平,则减小选择 \(a_t\) 的概率。这比直接使用 \(G_t\)(其绝对值可能很大,导致梯度波动大)作为奖励信号要稳定得多。
REINFORCE 算法通过引入一个学习到的基线(通常是状态价值函数 \(v(s)\))来减少方差,这实际上已经悄然迈向了下一章要介绍的 Actor-Critic 框架。在纯 Policy Gradient 算法中,基线 \(b(s)\) 可以是任何不依赖于动作的函数,例如所有回报的平均值,或者一个学习到的状态价值函数。使用学习到的状态价值函数作为基线是最常见的做法,因为它能够更好地捕捉状态的价值,从而更有效地减少方差。
6.4 策略梯度方法的优缺点 (Pros and Cons of Policy Gradient Methods)
回顾了策略梯度定理和REINFORCE算法后,我们可以总结基于策略方法的特点:
优点 (Pros):
① 能够处理连续动作空间 (Handling Continuous Action Spaces): 基于策略的方法可以直接输出连续动作的概率分布(如高斯分布),然后从中采样动作或使用其均值作为确定性动作,这比基于值的方法在连续动作空间中更自然和高效(基于值的方法通常需要对连续动作空间进行离散化,计算量巨大)。
② 能够学习随机性策略 (Learning Stochastic Policies): 在存在部分可观测性 (Partial Observability) 或对手策略未知的情况下,最优策略可能不是确定性的。基于策略的方法可以直接学习输出动作概率的随机性策略,而基于值的方法通常学习确定性策略(选择价值最高的动作)。
③ 收敛性性质可能更好 (Potentially Better Convergence Properties): 策略梯度方法沿着策略性能的梯度方向进行优化,可以保证收敛到局部最优策略(在一定条件下)。而基于值的方法(如Q-学习)在函数逼近时可能会出现震荡或发散。
缺点 (Cons):
① 样本效率低 (Low Sample Efficiency): 策略梯度方法通常需要大量的样本来估计梯度,尤其是在REINFORCE这样的蒙特卡洛方法中,需要完整的轨迹。即使引入基线或使用时序差分 (Temporal Difference, TD) 估计(这部分通常归入Actor-Critic),其样本效率通常仍低于基于值的方法(特别是离策略 Off-Policy 的Q-learning变体,可以重用旧数据)。
② 容易陷入局部最优 (Prone to Local Optima): 策略梯度方法是基于梯度的优化方法,容易收敛到局部最优策略,而不是全局最优策略。
③ 高方差 (High Variance): 策略梯度的估计量通常具有较高的方差,尤其是简单的蒙特卡洛策略梯度方法(如REINFORCE),这需要引入基线或其他技巧来缓解(如后续章节将介绍的Actor-Critic方法)。
总的来说,基于策略的方法在处理连续动作空间和学习随机策略方面具有优势,但其主要的挑战在于如何高效且稳定地估计策略梯度,这通常需要更多的样本并容易受到高方差的影响。为了结合基于值方法和基于策略方法的优点,Actor-Critic 方法应运而生,我们将在下一章详细探讨。
7. Actor-Critic 深度强化学习方法 (Actor-Critic Deep Reinforcement Learning Methods)
本章介绍结合策略(Actor)和价值函数(Critic)的Actor-Critic框架,讲解主要的AC算法及其变体。
7.1 Actor-Critic 框架 (The Actor-Critic Framework)
在本章之前,我们分别探讨了基于值的方法(如DQN)和基于策略的方法(如REINFORCE)。基于值的方法在处理离散、有限状态-动作空间的问题上表现出色,但在连续动作空间或高维离散动作空间中面临挑战,同时它们直接学习价值函数,间接推导出策略,可能无法学到最优随机策略。基于策略的方法可以直接学习策略,适用于连续动作空间,也能够学习随机策略,但其策略梯度估计通常具有较高的方差,导致训练不稳定且收敛缓慢。
Actor-Critic (AC) 框架的出现,旨在结合这两类方法的优点,规避其缺点。它是一个混合框架,包含两个主要的组成部分:
⚝ 行动者 (Actor): 这是一个学习策略(Policy)的模型,通常由一个神经网络表示,负责根据当前状态 \(s\) 选择要执行的动作 \(a\)。它可以输出一个动作的概率分布 \(\pi(a|s;\theta)\)(对于随机策略)或直接输出一个确定的动作 \(a = \mu(s;\theta)\)(对于确定性策略),其中 \(\theta\) 是策略网络的参数。Actor的目标是学习一个能够最大化长期累积奖励的策略。
⚝ 评论家 (Critic): 这是一个学习价值函数(Value Function)的模型,通常也由一个神经网络表示,负责评估Actor选择的动作或当前状态的好坏。Critic可以学习状态价值函数 \(V(s;w)\) 或动作价值函数 \(Q(s, a;w)\),其中 \(w\) 是价值网络的参数。Critic的作用是为Actor提供一个关于其当前策略表现的反馈信号,指导Actor进行策略更新。
Actor和Critic协同工作:
① 在状态 \(s_t\) 下,Actor 根据当前策略 \(\pi_\theta\) 选择动作 \(a_t\)。
② 智能体 (Agent) 执行动作 \(a_t\),环境 (Environment) 转移到新状态 \(s_{t+1}\),并给出奖励 \(r_{t+1}\)。
③ Critic 利用经验 \((s_t, a_t, r_{t+1}, s_{t+1})\) 来更新其价值函数 \(w\)。Critic的评估信号通常是时序差分 (Temporal Difference, TD) 误差,因为它提供了当前估计值与通过贝尔曼方程 (Bellman Equation) 获得的更准确(或至少是向前一步)的目标值之间的差异。
④ Actor 利用Critic提供的评估信号(例如,通过TD误差或优势函数 (Advantage Function))来更新其策略参数 \(\theta\),使得更有利的动作(由Critic评估为价值更高的动作)被选择的概率增加,而不利的动作被选择的概率降低(对于随机策略),或者直接向更有利的动作方向调整(对于确定性策略)。
AC框架的关键在于Critic提供的价值估计可以作为策略梯度的基线 (Baseline),从而显著降低策略梯度的方差,使得训练更加稳定。与REINFORCE使用完整的、高方差的回报 (Return) \(G_t\) 作为策略更新的指导信号不同,AC使用Critic估计的、低方差的TD误差或优势函数。
考虑策略梯度定理(详见第6章),策略目标函数 \(J(\theta) = \mathbb{E}_{s \sim \rho^\pi, a \sim \pi_\theta} [Q^\pi(s, a)]\) 的梯度为:
\[ \nabla_\theta J(\theta) = \mathbb{E}_{s \sim \rho^\pi, a \sim \pi_\theta} [\nabla_\theta \log \pi_\theta(a|s) Q^\pi(s, a)] \]
在AC框架中,我们用Critic学到的 \(Q_w(s, a)\) 来近似 \(Q^\pi(s, a)\)。为了降低方差,通常使用优势函数 \(A^\pi(s, a) = Q^\pi(s, a) - V^\pi(s)\)。策略梯度可以写成:
\[ \nabla_\theta J(\theta) = \mathbb{E}_{s \sim \rho^\pi, a \sim \pi_\theta} [\nabla_\theta \log \pi_\theta(a|s) A^\pi(s, a)] \]
这里,\(V^\pi(s)\) 作为基线被减去,可以用Critic学到的 \(V_w(s)\) 来近似。优势函数 \(A^\pi(s, a)\) 可以用TD误差 \(\delta_t = r_{t+1} + \gamma V_w(s_{t+1}) - V_w(s_t)\) 或 \(r_{t+1} + \gamma Q_w(s_{t+1}, a_{t+1}') - Q_w(s_t, a_t)\) 来估计。使用优势函数或TD误差作为指导信号,策略更新的方差通常比使用原始回报要小。
7.2 A2C 与 A3C (Asynchronous Advantage Actor-Critic, A3C / Advantage Actor-Critic, A2C)
A3C 和 A2C 是基于优势函数 (Advantage Function) 的 AC 算法的代表。
7.2.1 A3C (Asynchronous Advantage Actor-Critic)
A3C 是由DeepMind在2016年提出的一种高效的Actor-Critic算法。它的核心思想是利用多线程 (Multi-threading) 或多进程 (Multi-processing) 在多个并行的环境拷贝中同步(相对于分布式)或异步(相对于单线程)地运行多个Agent。
① 异步训练 (Asynchronous Training): A3C 不使用经验回放缓冲区 (Experience Replay Buffer)。相反,它创建多个Worker线程,每个Worker都有自己独立的Agent和环境拷贝。这些Worker并行地与环境交互,收集经验数据,并计算各自的梯度。
② 全局网络 (Global Network): 存在一个全局的共享神经网络模型,包含Actor和Critic的参数。每个Worker线程定期将自己计算的梯度异步地发送给这个全局网络,并用全局网络的最新参数更新自己的本地网络。由于Worker是异步更新的,全局网络的参数在Worker计算梯度和应用梯度的过程中一直在变化,这提供了一种天然的去相关性 (Decorrelation),类似于经验回放,但不需要额外的内存和采样机制。
③ 优势函数 (Advantage Function): A3C使用优势函数 \(A(s, a)\) 来指导策略更新。优势函数表示在状态 \(s\) 下采取动作 \(a\) 相比于根据策略 \(\pi\) 行动平均而言的额外收益。通常,A3C使用Generalized Advantage Estimation (GAE) 来更稳定地估计优势函数,但基础的A3C可以使用简单的TD误差作为优势函数的近似:
\[ \delta_t = r_{t+1} + \gamma V_w(s_{t+1}) - V_w(s_t) \]
Actor网络根据梯度 \(\nabla_\theta \log \pi_\theta(a_t|s_t) \delta_t\) 更新策略参数 \(\theta\)。
Critic网络根据最小化TD误差的平方 \(\delta_t^2\) 来更新价值函数参数 \(w\)。
④ 熵奖励 (Entropy Bonus): 为了鼓励探索,A3C在Actor的损失函数中加入了策略的熵 (Entropy) 项,并乘以一个系数。最大化熵可以防止策略过早地收敛到确定性策略,保持一定的随机性,从而有利于探索。
A3C 的优点在于其异步特性可以有效地利用多核CPU,并行收集大量经验,且不需要大的经验回放缓冲区,结构相对简单。缺点是异步更新可能导致更新使用旧的参数,引入额外的非平稳性。
7.2.2 A2C (Advantage Actor-Critic)
A2C (Advantage Actor-Critic) 可以看作是 A3C 的同步版本。在A2C中,多个Worker线程(或进程)并行地与环境交互收集经验,但它们不立即更新全局网络。相反,它们将各自的经验和计算出的梯度发送给一个主协调器。主协调器收集所有Worker的梯度,然后进行一次同步的全局网络参数更新。更新完成后,主协调器将新的全局参数分发给所有Worker,Worker再开始下一轮的经验收集。
A2C 和 A3C 的主要区别在于更新的方式是同步还是异步。尽管 A3C 名字里有 "Asynchronous",但研究表明 A2C (Synchronous) 在许多任务上表现更好,可能因为同步更新可以使用更大的有效批次大小 (Batch Size),且避免了异步更新可能带来的 stale gradient (陈旧梯度) 问题,使得训练更加稳定。A2C 通常比 A3C 需要更多的总计算资源(因为需要等待所有Worker完成),但在达到相同性能所需的环境交互次数上可能更少。
7.3 确定性策略梯度 (Deterministic Policy Gradient, DPG)
策略梯度方法通常学习一个随机策略 \(\pi(a|s)\),即在给定状态下输出每个动作的概率分布。这对于离散动作空间是直观的。然而,对于连续动作空间,如果动作空间维度很高,对动作分布进行积分或采样来计算期望梯度会变得非常困难。
确定性策略 (Deterministic Policy) \(\mu(s)\) 在给定状态下直接输出一个确定的动作 \(a\)。对于连续动作空间,学习一个确定性策略 \(\mu_\theta(s)\) 并直接对它进行梯度更新可能更加高效。
确定性策略梯度定理 (Deterministic Policy Gradient Theorem) 表明,对于一个确定性策略 \(\mu_\theta(s)\),目标函数 \(J(\theta) = \mathbb{E}_{s \sim \rho^\mu}[Q^\mu(s, \mu_\theta(s))]\)(即策略 \(\mu\) 下的期望启动状态价值或平均状态价值)的梯度可以表示为:
\[ \nabla_\theta J(\theta) = \mathbb{E}_{s \sim \rho^\mu} [\nabla_\theta \mu_\theta(s) \nabla_a Q^\mu(s, a)|_{a=\mu_\theta(s)}] \]
其中,\(\rho^\mu\) 是策略 \(\mu\) 在环境中的状态分布。
这个公式的含义是,要提高确定性策略的性能,应该沿着 Critic 认为当前动作 \(\mu_\theta(s)\) 下的 Q 值增加最快的方向(即 \(\nabla_a Q^\mu(s, a)|_{a=\mu_\theta(s)}\))调整策略输出 \(\mu_\theta(s)\);而如何调整 \(\mu_\theta(s)\) 来实现这个目标,取决于策略网络本身的梯度 \(\nabla_\theta \mu_\theta(s)\)。
DPG 的优点在于它为连续动作空间的策略梯度提供了一个直接且看起来更高效的计算方法,避免了对动作空间进行积分或采样的复杂性。然而,它仍然需要一个 Critic 来估计 \(Q^\mu(s, a)\)。
7.4 深度确定性策略梯度 (Deep Deterministic Policy Gradient, DDPG)
DDPG 是将 DPG 理论与深度学习和一些DQN的关键技术相结合而产生的算法,特别适用于连续动作空间任务。
DDPG 的核心是一个 Actor-Critic 架构,其中 Actor 是一个深度神经网络,它学习一个确定性策略 \(\mu_\theta(s)\),将状态映射到连续的动作;Critic 也是一个深度神经网络,它学习对应的动作价值函数 \(Q_w(s, a)\)。
DDPG 引入了 DQN 中的两个关键思想来稳定训练:
① 经验回放 (Experience Replay): DDPG 使用一个经验回放缓冲区来存储 Agent 与环境交互产生的经验元组 \((s_t, a_t, r_t, s_{t+1})\)。在训练时,从缓冲区中随机采样一批 (Batch) 经验用于更新网络。这打破了连续经验之间的相关性,使得训练数据更独立同分布 (i.i.d.),提高了训练的稳定性。与DQN不同的是,DDPG中存储的动作 \(a_t\) 是由当前的 Actor 网络 \(\mu_\theta(s_t)\) 选择的,并可能加入探索噪声 (Exploration Noise)。
② 目标网络 (Target Networks): 为了计算 Critic 更新的目标值,DDPG 使用了目标 Actor 网络 \(\mu_{\theta'}\) 和目标 Critic 网络 \(Q_{w'}\)。目标 Q 值的计算公式为:
\[ y_i = r_i + \gamma Q_{w'}(s_{i+1}, \mu_{\theta'}(s_{i+1})) \]
其中 \(s_i, a_i, r_i, s_{i+1}\) 是从经验回放缓冲区中采样的经验。目标网络的参数 \(\theta'\) 和 \(w'\) 不通过梯度下降直接更新,而是通过软更新 (Soft Update) 的方式,以一个小的步长 \(\tau\) 向当前网络参数逼近:
\[ \theta' \leftarrow \tau \theta + (1 - \tau) \theta' \\ w' \leftarrow \tau w + (1 - \tau) w' \]
使用目标网络使得计算目标 Q 值时使用的网络更加稳定,降低了训练过程中的震荡。
DDPG 的更新过程:
① Critic 更新: 从经验回放缓冲区中采样一批经验 \((s_i, a_i, r_i, s_{i+1})\)。根据目标 Actor \(\mu_{\theta'}\) 和目标 Critic \(Q_{w'}\) 计算目标 Q 值 \(y_i = r_i + \gamma Q_{w'}(s_{i+1}, \mu_{\theta'}(s_{i+1}))\)。使用当前 Critic \(Q_w\) 计算估计 Q 值 \(Q_w(s_i, a_i)\)。Critic 通过最小化均方误差 (Mean Squared Error, MSE) 损失 \(\frac{1}{N} \sum_i (y_i - Q_w(s_i, a_i))^2\) 来更新参数 \(w\)。
② Actor 更新: 从经验回放缓冲区中采样一批状态 \(s_i\)。Actor 通过最大化 Critic 估计的当前策略下的 Q 值来更新参数 \(\theta\)。Actor 的目标是最大化 \(J(\theta) = \mathbb{E}_{s \sim \rho} [Q_w(s, \mu_\theta(s))]\),梯度为:
\[ \nabla_\theta J \approx \frac{1}{N} \sum_i \nabla_a Q_w(s_i, a)|_{a=\mu_\theta(s_i)} \nabla_\theta \mu_\theta(s_i) \]
这个梯度可以通过反向传播 (Backpropagation) 计算得到:首先计算 Critic 输出 \(Q_w(s_i, \mu_\theta(s_i))\) 对其输入动作 \(\mu_\theta(s_i)\) 的导数 \(\nabla_a Q_w\),然后将这个导数乘以 Actor 网络对 \(\theta\) 的梯度 \(\nabla_\theta \mu_\theta\),得到 Actor 的梯度。
③ 目标网络软更新: 定期更新目标网络参数 \(\theta'\) 和 \(w'\)。
④ 探索: 由于 Actor 输出确定性动作,探索通常通过在 Actor 输出的动作上添加噪声来实现,例如 Ornstein-Uhlenbeck 过程噪声,它适用于物理控制任务中需要时序相关噪声的场景。
DDPG 是处理连续动作空间DRL问题的里程碑算法,但它也存在一些问题,如对超参数敏感、 Critic 的过高估计问题 (Overestimation Bias) 以及探索效率不高等。
7.5 TD3 (Twin Delayed Deep Deterministic Policy Gradient)
TD3 (Twin Delayed Deep Deterministic Policy Gradient) 是在 DDPG 基础上进行改进的算法,旨在解决 DDPG 中 Critic 过高估计 Q 值的问题,从而提高算法的稳定性和性能。TD3 引入了三个主要的改进:
① 双 Critic (Twin Critics): TD3 使用两个独立的 Critic 网络 \(Q_{w_1}(s, a)\) 和 \(Q_{w_2}(s, a)\) 以及对应的目标网络 \(Q_{w'_1}(s, a)\) 和 \(Q_{w'_2}(s, a)\)。在计算目标 Q 值时,不是使用单个目标 Critic 的估计值,而是取两个目标 Critic 估计值中的最小值:
\[ y_i = r_i + \gamma \min(Q_{w'_1}(s_{i+1}, a'), Q_{w'_2}(s_{i+1}, a')) \]
其中 \(a'\) 是通过目标 Actor 网络并加上噪声计算得到(详见第三点)。取最小值可以有效地抑制 Critic 的过高估计,因为即使一个 Critic 高估了 Q 值,另一个也可能提供更接近真实值的估计。两个 Critic 网络都独立地通过最小化自己的 TD 误差来更新。
② 延迟策略更新 (Delayed Policy Updates): Actor 网络和目标网络的更新频率低于 Critic 网络。通常是每更新 Critic 网络两次,才更新一次 Actor 网络和四个目标网络(两个 Critic 目标网络,两个 Actor 目标网络,尽管只有一个 Actor 网络)。这个想法是让 Critic 有更多时间学习更准确的价值估计,然后再用这些相对准确的估计来指导 Actor 的策略更新,避免 Actor 基于不准确的 Q 值估计进行更新,从而导致策略不稳定。
③ 目标策略平滑 (Target Policy Smoothing): 在计算目标 Q 值时, TD3 在目标 Actor 网络输出的动作 \(a' = \mu_{\theta'}(s_{i+1})\) 上添加一个小的、裁剪过的随机噪声 \(\epsilon\),然后再将 \(a' + \epsilon\) 输入目标 Critic 网络计算 \(Q\) 值:
\[ y_i = r_i + \gamma Q_{w'}(s_{i+1}, \mu_{\theta'}(s_{i+1}) + \epsilon) \]
其中 \(\epsilon \sim \text{clip}(\mathcal{N}(0, \sigma), -c, c)\)。这个噪声是故意引入的,旨在平滑价值函数 \(Q(s, a)\) 在动作维度上的变化。直观上,这使得策略更不容易利用 Q 函数中狭窄的、可能存在误差的高峰,鼓励学习更鲁棒的策略。
TD3 通过这些改进显著提高了 DDPG 的训练稳定性和样本效率,在许多连续控制任务上取得了更好的性能。
7.6 SAC (Soft Actor-Critic)
SAC (Soft Actor-Critic) 是一种基于最大熵强化学习 (Maximum Entropy Reinforcement Learning) 的 Actor-Critic 算法,特别擅长处理连续动作空间任务。与许多最大化期望累积奖励的RL算法不同,SAC 的目标是最大化一个包含奖励和策略熵的加权和的目标函数:
\[ J(\pi) = \sum_{t=0}^\infty \mathbb{E}_{(s_t, a_t) \sim \rho_\pi}[r(s_t, a_t) + \alpha \mathcal{H}(\pi(\cdot|s_t))] \]
其中 \(\mathcal{H}(\pi(\cdot|s_t))\) 是策略在状态 \(s_t\) 下的动作分布的熵,\(\alpha > 0\) 是温度参数 (Temperature Parameter),控制着奖励和熵之间的权衡。最大化熵鼓励 Agent 探索更多不同的动作,即使这些动作当前看起来不是最优的,从而有助于发现更好的策略,提高鲁棒性,并避免陷入局部最优。
SAC 的核心组成部分通常包括:
⚝ 策略网络 (Policy Network): 一个输出随机策略 \(\pi_\theta(a|s)\) 的神经网络。对于连续动作空间,它通常输出一个高斯分布 (Gaussian Distribution) 的均值和标准差(或其变换),然后从中采样动作。
⚝ 价值网络 (Value Network): 通常有两个 Q-网络 \(Q_{w_1}(s, a)\) 和 \(Q_{w_2}(s, a)\)(类似于TD3),以及一个可选的状态价值网络 \(V_v(s)\)。Q-网络用于学习软 Q 函数 (Soft Q-function),它考虑了熵项。
SAC 的更新过程:
① Q-网络更新: 使用两个 Q-网络和对应的目标 Q-网络 \(Q_{w'_1}, Q_{w'_2}\)。Q-网络的更新目标是最小化与软贝尔曼方程 (Soft Bellman Equation) 相关的误差。目标 Q 值的计算考虑了下一个状态的软状态价值:
\[ y_i = r_i + \gamma \mathbb{E}_{a_{t+1} \sim \pi_\theta(\cdot|s_{i+1})} [\min(Q_{w'_1}(s_{i+1}, a_{t+1}), Q_{w'_2}(s_{i+1}, a_{t+1})) - \alpha \log \pi_\theta(a_{t+1}|s_{i+1})] \]
这里的期望 \( \mathbb{E}_{a_{t+1} \sim \pi_\theta(\cdot|s_{i+1})} \) 需要通过从策略分布中采样动作 \(a_{t+1}\) 来近似计算。两个 Q-网络都独立地根据这个目标值进行更新。SAC 也使用经验回放。
② 策略网络更新: Actor 网络通过最大化当前 Q 估计值加上熵项来更新策略。具体来说,Actor 更新的目标是:
\[ J(\theta) = \mathbb{E}_{s \sim \rho_\pi, a \sim \pi_\theta(\cdot|s)} [\min(Q_{w_1}(s, a), Q_{w_2}(s, a)) - \alpha \log \pi_\theta(a|s)] \]
这个目标可以通过对 \(s\) 进行采样(从经验回放中)和对 \(a\) 进行重参数化技巧 (Reparameterization Trick) 来计算梯度并更新 \(\theta\)。重参数化技巧使得采样动作 \(a\) 成为一个关于策略网络输出和随机噪声的可微函数,从而可以通过反向传播计算关于 \(\theta\) 的梯度。
③ 温度参数 \(\alpha\) 的更新 (可选): 在原版SAC中,\(\alpha\) 是一个固定的超参数。但在后续版本 (Auto-tuned SAC) 中,\(\alpha\) 可以被自动学习,目标是维持策略熵在一个预设的目标值附近。这使得算法对不同的环境更加鲁棒,无需手动调整 \(\alpha\)。
④ 目标 Q-网络软更新: 类似于 DDPG 和 TD3,SAC 也使用目标 Q-网络的软更新来稳定训练。
SAC 的主要优点包括:
⚝ 样本效率高: 作为off-policy算法,可以有效利用经验回放。
⚝ 性能稳定: 最大熵框架和双 Critic 有助于提高训练稳定性。
⚝ 探索能力强: 内置的熵奖励鼓励Agent进行充分探索。
⚝ 适用于连续控制: 在许多复杂的连续控制任务上取得了当前最优的效果。
SAC 的缺点可能在于理论上比确定性策略算法稍复杂,并且温度参数 \(\alpha\)(如果不是自动调整)可能需要仔细调优。
本章详细介绍了Actor-Critic框架的基本思想以及几个重要的基于深度学习的AC算法:A2C/A3C(基于优势函数)、DDPG(基于确定性策略梯度)以及它们的改进算法TD3和SAC。这些算法在处理高维状态和连续动作空间问题上表现出色,是当前DRL领域的核心算法族谱之一。
8. 高级主题一:探索策略与内在激励 (Advanced Topic I: Exploration Strategies and Intrinsic Motivation)
本章将深入探讨深度强化学习(Deep Reinforcement Learning, DRL)中一个至关重要且充满挑战的问题:探索(Exploration)。智能体(Agent)如何在复杂的环境中有效地进行探索,发现潜在的高奖励区域,是其能否学到最优策略(Optimal Policy)的关键。我们将介绍多种先进的探索方法,并着重讲解如何通过设计内在激励(Intrinsic Motivation)信号来增强智能体的自主探索能力。
8.1 探索的重要性与挑战 (Importance and Challenges of Exploration)
在强化学习(Reinforcement Learning, RL)中,智能体的目标是最大化累积奖励(Cumulative Reward)。为了实现这一目标,智能体必须在其所处的环境(Environment)中进行试错。试错过程包含两个基本方面:利用(Exploitation)和探索(Exploration)。
⚝ 利用(Exploitation):根据当前已知的信息,选择当前被认为最优的动作(Action),以期获得最高的即时奖励。
⚝ 探索(Exploration):尝试新的动作,即使这些动作当前看起来不是最优的,目的是为了发现潜在的更高奖励或更好的策略。
这构成了一个经典的探索-利用困境(Exploration-Exploitation Dilemma)。智能体需要在短期收益(利用已知知识)和长期收益(探索未知可能性以找到更好的策略)之间进行权衡。
在深度强化学习中,由于状态空间(State Space)和动作空间(Action Space)往往非常巨大甚至是连续的,有效的探索变得尤为困难。具体的挑战包括:
① 稀疏奖励(Sparse Rewards):在许多复杂的任务中(如完成一个游戏关卡、机器人完成一项复杂操作),奖励信号非常稀疏,可能只有在完成任务的最后一步才能获得奖励。智能体在探索过程中很长时间无法获得任何正向反馈,这使得学习信号非常微弱,难以有效指导策略的改进。
② 欺骗性奖励(Deceptive Rewards):环境中可能存在一些局部最优(Local Optima),它们能提供一定的奖励,但会阻止智能体探索能够获得更高奖励的全局最优(Global Optima)。智能体可能陷入局部最优而无法自拔。
③ 高维状态空间(High-Dimensional State Space):使用深度神经网络(Deep Neural Network)处理图像、文本等高维状态时,状态空间的组合数量是天文数字。简单地尝试所有状态是不可行的。
④ 连续动作空间(Continuous Action Space):在机器人控制等任务中,动作是连续的。智能体无法枚举所有可能的动作。
⑤ 非平稳环境(Non-stationary Environment):在多智能体系统(Multi-Agent System)或环境动态可能变化的情况下,环境对于单个智能体而言是非平稳的,这使得学习和探索更加复杂。
传统的强化学习探索方法,如 \(\epsilon\)-贪心策略 (\(\epsilon\)-Greedy Policy),在简单任务中是有效的。它以 \(\epsilon\) 的概率随机选择动作进行探索,以 \(1-\epsilon\) 的概率选择当前估计价值最高的动作进行利用。然而,在高维、稀疏奖励环境中,简单的随机探索效率极低,智能体可能永远无法触达奖励区域。因此,设计更智能、更有效的探索策略对于深度强化学习至关重要。
8.2 基于不确定性的探索 (Uncertainty-Based Exploration)
基于不确定性的探索方法的核心思想是:智能体应该优先探索那些它“不确定”区域的状态或动作。这里的“不确定性”可以来源于对状态访问次数的统计、对价值函数或策略函数的估计误差,或者通过贝叶斯方法建模的信念分布。
8.2.1 基于状态访问计数的探索 (Exploration Based on State Visit Counts)
最直观的基于不确定性的探索是统计智能体访问各个状态的次数。智能体应该更频繁地访问那些很少被访问的状态。
⚝ 表格型方法的回顾 (Review of Tabular Methods):在状态空间较小时,可以直接维护一个表格来记录每个状态的访问次数 \(N(s)\)。可以将奖励函数 \(R(s, a)\) 或状态价值函数 \(V(s)\) 加上一个与访问次数相关的探索奖励项,例如 \(\frac{\beta}{\sqrt{N(s)}}\),其中 \(\beta\) 是一个超参数。访问次数越少的状态,额外奖励越高。
⚝ 在高维空间的挑战 (Challenges in High-Dimensional Spaces):在高维或连续状态空间中,直接统计状态访问次数变得困难,因为智能体可能永远不会两次访问完全相同的状态。需要将状态空间进行离散化(Discretization)或使用其他方法来近似状态访问次数。
8.2.2 使用密度模型或哈希的计数方法 (Count-Based Methods Using Density Models or Hashing)
为了在高维空间进行计数,可以采用一些技巧:
⚝ 状态空间哈希 (State Space Hashing):将高维状态映射到低维离散空间,然后在这个低维空间中进行计数。例如,可以使用神经网络的中间层输出来代表状态,然后对这些输出来进行哈希处理。需要设计好的哈希函数,使得相似的状态能够映射到相邻或相同的哈希桶中。
⚝ 基于密度的探索 (Density-Based Exploration):学习一个状态空间的密度模型 \(p(s)\)。智能体访问一个状态后,模型密度越低,表明该状态越“新颖”或访问越少。可以将探索奖励设置为与 \(1/p(s)\) 相关。常见的密度模型包括:
▮▮▮▮⚝ 基于生成模型(Generative Models)的方法:如像素RNN(PixelRNN)、变分自编码器(Variational Autoencoder, VAE)等,可以估计状态的概率。
▮▮▮▮⚝ 基于非参数方法:如核密度估计(Kernel Density Estimation)或最近邻方法,但这些方法在高维空间计算成本较高。
▮▮▮▮⚝ 基于伪计数(Pseudo-Counts):通过一个生成模型(如预测智能体下一个状态的模型)的预测误差来衡量状态的新颖性,将预测误差高的状态视为访问次数少的状态,赋予伪计数。代表性工作有Bellemare et al. (2016) 的Pseudocounts in Large State Spaces。
8.2.3 基于不确定性传播的探索 (Exploration Based on Uncertainty Propagation)
这些方法旨在估计智能体对价值函数或转移动态的“认识”程度,并优先探索那些不确定性高的区域。
⚝ 贝叶斯强化学习 (Bayesian Reinforcement Learning):将不确定性直接建模。例如,对价值函数或模型参数维护一个概率分布。探索可以通过采样不同的模型或价值函数来实现(后验采样,Posterior Sampling)。著名的算法有基于Thompson采样的RL方法。在高维状态空间下,直接在函数空间上进行贝叶斯推断是困难的。
⚝ Bootstrap DQN (Osband et al., 2016):作为一种计算上可行的贝叶斯方法近似,Bootstrap DQN训练一组(例如K个)独立的Q网络。每个网络在训练时使用经验回放池(Experience Replay Buffer)的一个不同子集进行训练。在决策时,智能体随机选择其中一个Q网络来指导探索。对于未充分探索的状态,不同的Q网络会给出差异较大的Q值估计,这种差异反映了不确定性。通过基于这些不同Q网络的输出来进行决策(例如,ε-greedy over one randomly selected network, or Bayesian UCB style),可以鼓励对不确定区域的探索。
⚝ 基于预测误差的不确定性 (Uncertainty Based on Prediction Error):训练一个模型来预测环境的转移或奖励。模型预测误差大的地方通常是智能体较少看到或环境动态复杂的地方。可以将预测误差作为探索奖励。这与基于内在激励的好奇心方法(Section 8.3)密切相关。
例子:Bootstrap DQN
假设我们训练了3个Q网络 \(Q_1, Q_2, Q_3\)。对于某个状态 \(s\),3个网络对某个动作 \(a\) 可能给出不同的Q值估计:\(Q_1(s, a) = 10, Q_2(s, a) = 2, Q_3(s, a) = 15\)。这表明智能体对 \( (s, a) \) 的价值估计有较大的不确定性。而对于另一个状态 \(s'\),所有网络都给出类似的Q值估计:\(Q_1(s', a') = 8, Q_2(s', a') = 8.5, Q_3(s', a') = 7.8\),这表明对 \( (s', a') \) 的价值估计不确定性较低。Bootstrap DQN通过随机选择一个网络 \(Q_i\) 来计算当前状态下的最优动作 \(a^* = \arg\max_a Q_i(s, a)\) 并执行,从而隐式地鼓励智能体探索那些网络估计差异大的状态。
8.3 基于内在激励的探索 (Intrinsic Motivation-Based Exploration)
传统的强化学习依赖于环境提供的外在奖励(Extrinsic Rewards)。在稀疏奖励环境中,这种奖励信号不足以驱动有效的探索。内在激励(Intrinsic Motivation)的思想来源于心理学,指个体因为活动本身的乐趣或兴趣而产生的动机。在RL中,内在激励表现为智能体自身产生的一种额外的奖励信号(Intrinsic Reward),与环境提供的外在奖励(Extrinsic Reward)相结合 \((R_{total} = R_{extrinsic} + R_{intrinsic})\),用于指导智能体的行为。
内在奖励的设计通常与智能体对环境的“新奇性”、“可预测性”或“信息增益”等方面的感知有关。
8.3.1 基于好奇心 (Curiosity-Based Intrinsic Motivation)
智能体像一个好奇的孩子,会探索那些它不理解或预测不了的事物。基于好奇心的内在激励通常通过预测任务的误差来衡量新颖性或不可预测性。
⚝ 预测状态奖励 (Predicting State Rewards):训练一个模型来预测下一个状态(或下一个状态的特征表示),给定当前状态和动作。预测误差越大,说明智能体对该状态-动作转移越不熟悉或越难预测,因此产生一个正向的内在奖励。
▮▮▮▮⚝ 好奇心驱动探索 (Curiosity-driven Exploration by Predicting the Next State):代表性算法有 Intrinsic Curiosity Module (ICM) (Pathak et al., 2017)。ICM包含三个模块:
▮▮▮▮▮▮▮▮❶ 特征编码模块 (Feature Encoder):将高维状态 \(s_t\) 和 \(s_{t+1}\) 编码为低维特征向量 \(\phi(s_t)\) 和 \(\phi(s_{t+1})\)。这个编码器可以通过最大化预测任务的损失来学习,使得特征能够保留环境可控的变化信息。
▮▮▮▮▮▮▮▮❷ 前向动力学模型 (Forward Dynamics Model):输入当前状态特征 \(\phi(s_t)\) 和当前动作 \(a_t\),预测下一个状态的特征 \(\hat{\phi}(s_{t+1})\)。内在奖励 \(r_i\) 定义为预测值 \(\hat{\phi}(s_{t+1})\) 与实际下一个状态特征 \(\phi(s_{t+1})\) 之间的误差,例如均方误差 \(||\hat{\phi}(s_{t+1}) - \phi(s_{t+1})||^2\)。
▮▮▮▮▮▮▮▮❸ 逆向动力学模型 (Inverse Dynamics Model):输入当前状态特征 \(\phi(s_t)\) 和下一个状态特征 \(\phi(s_{t+1})\),预测导致这种转移的动作 \(\hat{a}_t\)。这个模型与特征编码模块一起训练,帮助学习有意义的状态特征表示。
▮▮▮▮⚝ 预测像素奖励 (Predicting Pixel Rewards):直接预测下一个原始图像帧。这在高维像素空间中很难做到,且容易受到环境中的随机噪声(Stochasticity)影响(比如电视屏幕上的雪花)。预测那些智能体可以控制的变化(例如通过逆向动力学模型学习的特征空间)更鲁棒。
⚝ 基于不可预测性 (Based on Unpredictability):训练一个模型预测某个信号(如下一个状态、奖励等),并使用该模型预测误差的方差作为奖励。方差越大表示越不可预测,越值得探索。
8.3.2 基于信息增益 (Information Gain-Based Intrinsic Motivation)
这类方法鼓励智能体采取能够最大化其对环境了解程度的动作。
⚝ 最大化信息增益 (Maximizing Information Gain):智能体选择动作来最大化某个不确定性度量(如熵)的降低。例如,最大化对未来状态的预测准确性的提升,或者最大化对环境动态模型的参数估计的信息增益。
⚝ 衡量状态新颖性 (Measuring State Novelty):除了预测误差,也可以通过衡量状态本身的“新颖性”来给予奖励。例如,训练一个判别器(Discriminator)来区分经验回放中的旧状态和新收集的状态,判别器认为某个状态是“新”的可能性越高,奖励越高。
8.3.3 基于能力 (Capability-Based Intrinsic Motivation)
这类方法鼓励智能体学习能够产生特定效果(如达到某些状态、控制某些变量)的技能或能力。
⚝ 控制增益 (Control Gain):学习一个模型,预测智能体在采取某个动作后,某个特定状态变量的变化量。奖励可以与智能体控制这个变量的能力相关。
⚝ 可实现的目标 (Reachable Goals):在分层强化学习中,高层策略(High-Level Policy)可以设定目标,低层策略(Low-Level Policy)学习如何实现这些目标。实现目标的内在奖励可以鼓励低层策略学习有用的技能。
内在激励方法的优点与挑战:
👍 优点:
▮▮▮▮⚝ 有助于解决稀疏奖励问题,驱动智能体进行更有效的探索。
▮▮▮▮⚝ 可以学习到更有通用性的技能和状态表示,因为内在激励鼓励探索整个状态空间,而不仅仅是与外在奖励直接相关的部分。
👎 挑战:
▮▮▮▮⚝ 内在奖励的设计很关键,不恰当的内在奖励可能导致智能体被一些无法控制的噪声所吸引(称为“嘈杂TV”问题,Noisy TV Problem),或在某些简单重复的任务上浪费时间。
▮▮▮▮⚝ 如何有效地结合外在奖励和内在奖励,确定它们的权重或结合方式是一个开放问题。
▮▮▮▮⚝ 计算内在奖励可能需要训练额外的模型,增加了系统的复杂性和计算开销。
8.4 基于进化的探索 (Evolutionary-Based Exploration)
进化算法(Evolutionary Algorithms, EA)是一类受到生物进化过程启发的优化算法。它们维护一个种群(Population)的解(在DRL中可以是策略网络的参数),通过变异(Mutation)、交叉(Crossover)和选择(Selection)等操作来迭代改进种群。虽然进化算法本身不是强化学习,但它们提供了一种无梯度(Gradient-Free)的优化方法,非常适合在策略空间中进行探索。
⚝ 进化策略 (Evolution Strategies, ES):一种常见的进化算法,适用于连续参数空间的优化。ES在一个参数向量(如神经网络权重)的周围添加噪声生成一批“后代”,然后根据这些后代在环境中的表现(累积奖励)来计算梯度的估计值,并更新原始参数。与基于梯度的DRL方法(如策略梯度)相比,ES在某些情况下更容易并行化,对奖励函数的稀疏性和非平稳性更鲁棒。
⚝ 结合进化算法和RL (Combining EAs and RL):
▮▮▮▮⚝ 进化作为探索 (Evolution as Exploration):EA可以用于生成多样化的策略,这些策略可以在环境中进行探索,收集经验。这些经验可以用于训练一个标准的RL算法(如Q-learning或策略梯度)。
▮▮▮▮⚝ 通过EA优化策略 (Optimizing Policies via EAs):直接使用EA来搜索最优策略的参数。这种方法不需要计算策略梯度,可以直接处理非连续的奖励函数。然而,EA通常需要大量的环境交互才能收敛,且样本效率不如梯度方法。
▮▮▮▮⚝ 混合方法 (Hybrid Methods):结合EA和RL的优点。例如,使用EA生成初始策略或在局部搜索中提供多样性,而使用RL进行高效的局部优化。或者使用EA来优化RL算法的超参数。
例子:Evolution Strategies (ES) for RL
假设我们有一个策略网络 \(\pi_\theta\),其参数为 \(\theta\)。ES算法会执行以下步骤:
① 从当前参数 \(\theta\) 生成 N 个带有噪声的参数变体:\(\theta_i = \theta + \sigma \cdot \epsilon_i\),其中 \(\epsilon_i\) 是从标准正态分布中采样的噪声向量,\(\sigma\) 是噪声强度。
② 对于每个参数变体 \(\theta_i\),让智能体在环境中运行并计算其总奖励 \(F_i\)。
③ 计算“伪梯度”:将每个噪声向量 \(\epsilon_i\) 乘以其对应的标准化奖励 \(\frac{F_i - \text{mean}(F)}{\text{std}(F)}\),然后求平均。
④ 使用Adam等优化器,沿着这个“伪梯度”的方向更新原始参数 \(\theta\)。
\[ \theta \leftarrow \theta + \alpha \cdot \frac{1}{N\sigma} \sum_{i=1}^N F_i \epsilon_i \]
其中 \(\alpha\) 是学习率。
这种方法在高维参数空间中也能工作,并且因为每次迭代是并行评估 N 个策略,很容易在大规模并行计算集群上实现。
基于进化的探索方法提供了一种与基于梯度的RL不同的视角,尤其适用于梯度信息难以获取或需要在大尺度策略空间进行多样化探索的场景。它们是DRL工具箱中的重要补充。
9. 高级主题二:多智能体深度强化学习 (Advanced Topic II: Multi-Agent Deep Reinforcement Learning, MARL)
欢迎来到深度强化学习的进阶领域!在前几章中,我们主要聚焦于单个智能体(Single Agent)在环境中的学习与决策。然而,现实世界中的许多复杂系统都涉及多个智能体之间的交互。想象一下自动驾驶车辆在拥挤道路上的协作、机器人团队完成一项联合任务、或者网络游戏中的多位玩家。在这些场景中,智能体不仅需要学习如何在环境中行动以最大化自己的奖励,还需要考虑其他智能体的存在、行为甚至意图。这就引出了多智能体强化学习(Multi-Agent Reinforcement Learning, MARL)这一激动人心的领域。
本章将深入探讨MARL的核心概念、挑战以及主流的深度强化学习算法。我们将首先定义MARL问题的不同类型,并分析多智能体环境带来的特有挑战。接着,我们将介绍中心化训练分布式执行(CTDE)这一常用的范式。随后,我们将详细讲解基于值分解和多智能体Actor-Critic等重要的MARL算法族谱。最后,我们将简要介绍其他前沿方法,并通过丰富的应用案例展示MARL的强大潜力。
9.1 多智能体RL的问题设置 (Problem Settings in MARL)
多智能体强化学习研究的是多个智能体如何在共享的环境中通过与环境和其他智能体互动来学习最优行为策略,以最大化各自或集体的长期累积奖励。与单智能体RL不同,MARL中的环境动态不仅取决于当前智能体的动作,还取决于所有其他智能体的动作。
根据智能体之间的合作或竞争关系,MARL问题通常可以划分为以下几种类型:
① 合作型 (Cooperative):
▮▮▮▮在这种设置下,所有智能体共享一个共同的目标和奖励函数。它们需要互相协作才能最大化整体的奖励。例如,一个机器人团队共同搬运一个大型物体,或者多辆自动驾驶汽车在交叉路口协调通行以最小化整体拥堵时间。
▮▮▮▮这类问题的目标是找到一组联合策略 \(\pi = (\pi_1, \dots, \pi_N)\),使得所有智能体共享的全局奖励 \(R_{global}\) 的期望最大化。
② 竞争型 (Competitive):
▮▮▮▮在这种设置下,智能体之间存在利益冲突,一个智能体的奖励可能是另一个智能体的损失。典型的例子包括两人零和博弈(Two-player Zero-sum Games),如国际象棋、围棋、扑克等。在这种博弈中,一个智能体的收益完全等于另一个智能体的损失,总奖励始终为零。
▮▮▮▮更一般的竞争型问题可能是非零和博弈,智能体之间存在冲突但总奖励不为零。这类问题的目标通常是找到一个稳定状态,如纳什均衡(Nash Equilibrium)。
③ 混合型 (Mixed):
▮▮▮▮这类问题介于完全合作和完全竞争之间。智能体之间可能存在合作和竞争并存的关系。例如,多支队伍在比赛中互相竞争,但队伍内部的成员之间需要合作;或者在经济市场中,公司之间竞争市场份额,但在某些标准制定上可能需要合作。
▮▮▮▮这类问题的分析往往更为复杂,可能需要结合博弈论(Game Theory)的概念。
在MARL问题中,一个关键概念是智能体对环境的观察。根据观察范围的不同,MARL问题又可以分为:
⚝ 完全可观察 (Fully Observable):每个智能体都能观察到环境的完整状态 \(s\)。这类似于经典的单智能体MDP,只是动作空间变成了所有智能体的联合动作空间 \(\mathbf{a} = (a_1, \dots, a_N)\),转移概率 \(P(s' | s, \mathbf{a})\) 和奖励函数 \(R(s, \mathbf{a})\) 也依赖于联合动作。
⚝ 部分可观察 (Partially Observable):每个智能体只能获得其自身的局部观察 \(o_i\),该观察是基于全局状态 \(s\) 的一个函数 \(o_i = O_i(s)\)。智能体无法直接得知环境的全局状态或其他智能体的精确状态或意图。这使得问题变成了部分可观察随机博弈(Partially Observable Stochastic Games, POSG)。
针对竞争型博弈,一个重要的理论概念是纳什均衡 (Nash Equilibrium)。在一个由N个智能体组成的博弈中,如果每个智能体采取的策略是其他所有智能体策略的已知情况下的最优响应,那么这组策略构成一个纳什均衡。在纳什均衡下,任何单个智能体都无法通过单方面改变自己的策略来增加自己的收益。在零和博弈中,通常寻找的是最大最小策略(Minimax Strategy),它对应于纳什均衡。然而,在非零和博弈和更一般的MARL设置中,纳什均衡可能不止一个,或者很难计算,而且找到一个联合策略让所有智能体收敛到某个均衡点本身就是一个挑战。
9.2 MARL的挑战 (Challenges in MARL)
多智能体环境为强化学习带来了单智能体所不具备的独特挑战:
① 环境的非平稳性 (Non-stationarity of the Environment):
▮▮▮▮在单智能体设置中,智能体与一个固定的环境交互,环境的动力学(转移函数和奖励函数)是不变的(平稳的)。智能体的目标是学习针对这个平稳环境的最优策略。
▮▮▮▮然而,在MARL中,每个智能体都在同时学习并更新自己的策略。这意味着对于任何一个智能体而言,环境(包括其他智能体)的行为是在不断变化的。智能体 i 观察到的状态转移 \(P(s' | s, a_i)\) 和接收到的奖励 \(R(s, a_i)\) 不仅取决于它自己的动作 \(a_i\),还取决于其他智能体 j (\(j \ne i\)) 的联合动作 \(a_j\),以及它们各自的策略 \(\pi_j\)。当其他智能体的策略 \(\pi_j\) 发生变化时,智能体 i 感知的环境动力学也就随之改变。这使得传统的单智能体RL算法(如Q-learning)中的收敛性理论不再直接适用,因为Q-learning等算法通常假设环境是平稳的马尔可夫过程。
② 信用分配问题 (Credit Assignment Problem):
▮▮▮▮尤其在合作型MARL中,智能体通常只能接收到一个全局的奖励信号,该奖励是所有智能体共同努力的结果。例如,一个机器人团队成功地将物体搬到目标位置后获得一个正奖励。如何将这个全局奖励公平或有效地分配给各个智能体,以指导它们各自策略的改进,是一个巨大的挑战。某些智能体可能做出了关键贡献,而另一些智能体可能表现不佳甚至阻碍了任务的完成。如果简单地将全局奖励反馈给每个智能体,智能体将难以区分哪些行为是有效的、哪些是无效的,从而难以学到有效的协作策略。这被称为“信用分配问题”,在时间维度和智能体维度上都存在。
③ 部分可观察性 (Partial Observability):
▮▮▮▮在许多实际应用中,智能体无法获得环境的全局状态。它们只能依赖于自己的局部观察 \(o_i\)。这意味着不同的状态可能会产生相同的观察,导致智能体无法完全确定当前所处的状态,从而难以做出最优决策。其他智能体的策略、状态和意图对于智能体来说也是不可见的隐变量。处理部分可观察性需要智能体能够从序列观察中推断出必要的信息,这通常涉及到维护一个信念状态(Belief State)或者使用循环神经网络(Recurrent Neural Network, RNN)等技术来处理历史信息。
④ 可扩展性问题 (Scalability Issues):
▮▮▮▮随着智能体数量 \(N\) 的增加,联合状态空间和联合动作空间呈指数级增长。理论上,一个包含 \(N\) 个智能体,每个智能体有 \(|S|\) 个状态和 \(|A|\) 个动作的完全合作型MARL问题,可以看作是一个状态空间为 \(|S|^N\),动作空间为 \(|A|^N\) 的单智能体问题。显然,这种方法在智能体数量较多时是不可行的。MARL算法需要能够在智能体数量增加时仍能有效学习,这通常需要利用智能体之间的交互结构或采取分布式计算的方法。
⑤ 探索困境 (Exploration Dilemma):
▮▮▮▮在单智能体RL中,探索与利用(Exploration vs. Exploitation)已经是一个挑战。在MARL中,这个问题变得更加复杂。一个智能体需要探索自己的动作空间,同时还需要考虑其他智能体的行为以及这些行为的组合可能带来的结果。一个智能体的探索行为可能会影响其他智能体观察到的环境,从而影响它们的学习过程。在一个大型多智能体系统中进行有效的协调探索是一个开放性问题。
9.3 中心化训练分布式执行 (Centralized Training Decentralized Execution, CTDE)
面对MARL特别是合作型MARL中的诸多挑战,研究者们提出了一种常用的范式:中心化训练分布式执行 (Centralized Training Decentralized Execution, CTDE)。这种范式巧妙地利用了训练阶段可以访问更多信息的优势,同时保留了执行阶段的分布式特性,以提高可扩展性和鲁棒性。
CTDE范式的核心思想如下:
① 中心化训练 (Centralized Training):
▮▮▮▮在训练阶段,算法可以访问环境中所有智能体的全部信息,包括它们的局部观察 \(o_i\)、局部动作 \(a_i\),甚至全局状态 \(s\) 和全局奖励 \(R_{global}\)。
▮▮▮▮利用这些中心化的信息,可以更容易地解决非平稳性问题(因为可以明确知道其他智能体在做什么),以及信用分配问题(可以基于全局信息评估每个智能体的贡献)。
▮▮▮▮在训练过程中,通常会训练一个中心化的评价模块(例如一个全局的价值函数 Critic)来评估联合动作的价值,或者训练一个模块来辅助分解全局奖励。
② 分布式执行 (Decentralized Execution):
▮▮▮▮在实际部署或执行阶段,每个智能体仅依赖于自己的局部观察 \(o_i\) 来选择动作 \(a_i\)。它们不需要知道其他智能体的观察、动作或内部状态,也不需要一个中心化的协调器。
▮▮▮▮这种分布式执行的特性使得系统更加鲁棒(单个智能体失效不影响整个系统)且更易于部署在物理世界中(如机器人不需要时刻与中心服务器通信)。
▮▮▮▮在执行阶段,每个智能体通常运行一个独立的策略网络(Actor),该网络以其局部观察为输入,输出其动作。
CTDE范式的优势在于:
⚝ 缓解非平稳性:通过在训练时访问其他智能体的信息,中心化的Critic或训练机制可以更好地理解环境的动态变化,从而为分布式Actor提供稳定的学习信号。
⚝ 简化信用分配:中心化的训练过程可以利用全局奖励和联合状态-动作信息,通过设计特定的网络结构或训练目标来更有效地进行信用分配。
⚝ 保留分布式执行的优点:最终的策略是分布式的,使得系统在实际应用中具有高效率和鲁棒性。
许多成功的MARL算法都采用了CTDE范式,包括将在后续章节详细介绍的基于值分解的方法(如VDN, QMIX)和多智能体Actor-Critic方法(如MADDPG)。
9.4 基于值分解的MARL算法 (Value Decomposition Based MARL Algorithms)
基于值分解的方法主要关注合作型MARL问题中的信用分配挑战。这类方法的思想是:虽然智能体独立地执行策略(基于局部观察),但它们的联合动作价值函数可以被分解为各个智能体独立价值函数的组合。通过学习这种分解关系,可以在训练时利用全局奖励和中心化信息,同时确保学到的个体价值函数能够支持分布式的最优联合动作选择。
核心思想:学习一个可分解的联合价值函数 \(Q_{tot}(\mathbf{o}, \mathbf{a})\) 或 \(Q_{tot}(\mathbf{s}, \mathbf{a})\),其中 \(\mathbf{o}=(o_1, \dots, o_N)\) 是联合观察,\(\mathbf{a}=(a_1, \dots, a_N)\) 是联合动作。这个 \(Q_{tot}\) 可以通过某种方式从每个智能体的独立价值函数 \(Q_i(o_i, a_i)\) 中得到。
关键在于,这个分解必须满足一个条件,使得在执行阶段,每个智能体独立地选择使其个体 \(Q_i\) 最大的动作时,这些动作的组合恰好是使 \(Q_{tot}\) 最大的联合动作。数学上,这要求:
\[ \arg\max_{\mathbf{a}} Q_{tot}(\mathbf{o}, \mathbf{a}) = (\arg\max_{a_1} Q_1(o_1, a_1), \dots, \arg\max_{a_N} Q_N(o_N, a_N)) \]
如果这个条件满足,那么在执行阶段,每个智能体只需要计算并执行自己的局部最优动作 \(a_i^* = \arg\max_{a_i} Q_i(o_i, a_i)\),就能实现全局最优。
下面介绍两种重要的基于值分解的算法:
9.4.1 价值分解网络 (Value Decomposition Networks, VDN)
价值分解网络(VDN)是最早提出值分解思想的算法之一。它假设联合价值函数 \(Q_{tot}\) 可以简单地分解为每个智能体的个体价值函数 \(Q_i\) 的总和:
\[ Q_{tot}(\mathbf{o}, \mathbf{a}) = \sum_{i=1}^N Q_i(o_i, a_i) \]
在VDN中,每个智能体 \(i\) 都有一个独立的DQN风格的网络,接收其局部观察 \(o_i\) 作为输入,输出其在所有可能的局部动作上的Q值 \(Q_i(o_i, \cdot)\)。
训练过程:
① 经验回放 (Experience Replay):智能体与环境互动产生经验样本 \(((\mathbf{o}, \mathbf{a}), R_{global}, (\mathbf{o}', \mathbf{a}'))\),存储在共享的经验回放缓冲区中。注意,经验中包含所有智能体的联合观察和动作,以及全局奖励。
② 目标Q值计算:利用下一个状态 \(\mathbf{o}'\) 的联合最大Q值计算目标Q值 \(Y\)。根据Q-learning的更新规则,目标Q值 \(Y\) 可以表示为:
\[ Y = R_{global} + \gamma \max_{\mathbf{a}'} Q_{tot}(\mathbf{o}', \mathbf{a}') \]
在VDN的假设下,这变成:
\[ Y = R_{global} + \gamma \sum_{i=1}^N \max_{a_i'} Q_i(o_i', a_i') \]
注意,这里的 \(\max_{\mathbf{a}'}\) 变成了 \(\sum_{i=1}^N \max_{a_i'}\),这正是利用了可分解性。在实现中,可以使用目标网络(Target Network)来计算 \(Q_i(o_i', a_i')\) 以提高训练稳定性。
③ 损失函数:训练所有智能体的Q网络,使得预测的联合Q值 \(Q_{tot}(\mathbf{o}, \mathbf{a}) = \sum_{i=1}^N Q_i(o_i, a_i)\) 逼近目标Q值 \(Y\)。损失函数通常是均方误差(MSE):
\[ L = (Y - Q_{tot}(\mathbf{o}, \mathbf{a}))^2 \]
梯度 \(\nabla L\) 通过链式法则反向传播,更新每个智能体的Q网络参数。
执行过程:
▮▮▮▮在执行阶段,每个智能体 \(i\) 仅接收其局部观察 \(o_i\),然后使用其训练好的局部Q网络 \(Q_i\) 计算 \(Q_i(o_i, \cdot)\),并选择使其局部Q值最大的动作 \(a_i^* = \arg\max_{a_i} Q_i(o_i, a_i)\)。
▮▮▮▮根据VDN的假设,如果训练收敛,这个局部最优动作的组合 \((a_1^*, \dots, a_N^*)\) 就是全局最优动作 \(\arg\max_{\mathbf{a}} Q_{tot}(\mathbf{o}, \mathbf{a})\)。
VDN的优点是概念简单、易于实现。然而,其缺点在于对价值函数的分解形式做了强假设(简单的求和),这限制了它的表达能力,可能无法适用于所有合作任务。
9.4.2 QMIX
QMIX 是在 VDN 基础上提出的更具代表性的值分解算法。它放宽了 VDN 的求和假设,允许联合价值函数 \(Q_{tot}\) 是个体价值函数 \(Q_i\) 的一个非线性组合。但为了保留分布式执行时的最优性保证,QMIX 引入了一个关键的单调性约束 (Monotonicity Constraint)。
QMIX 包含两部分核心网络:
① 智能体网络 (Agent Network):每个智能体 \(i\) 有一个独立的网络,接收其局部观察 \(o_i\) 和可选的历史信息(通常通过 RNN 处理部分可观察性),输出其在每个动作上的个体Q值 \(Q_i(o_i, \text{history}_i)\)。这些网络通常共享参数以提高泛化性,但也允许有独立的参数。
② 混合网络 (Mixing Network):一个中心化的网络,接收所有智能体的个体Q值 \(Q_1, \dots, Q_N\) 作为输入,并输出联合价值函数 \(Q_{tot}\)。关键在于,混合网络的权重必须是非负的,以保证 \(Q_{tot}\) 关于每个 \(Q_i\) 的单调性:\( \frac{\partial Q_{tot}}{\partial Q_i} \ge 0 \)。这种单调性保证了:如果动作 \(a_i\) 使个体 \(Q_i\) 增加,那么在固定其他智能体动作的情况下,该动作也使联合 \(Q_{tot}\) 增加。因此,每个智能体独立地选择使其 \(Q_i\) 最大的动作,就等价于选择使 \(Q_{tot}\) 最大的联合动作。混合网络的权重可以通过一个超网络(HyperNetwork)根据全局状态 \(s\) 或联合观察 \(\mathbf{o}\) 生成,以增加表达能力。偏置项(Bias)也可以依赖于全局状态。
训练过程:
① 经验回放:与VDN类似,收集包含联合观察、联合动作、全局奖励、下一状态联合观察的经验。
② 目标Q值计算:使用目标网络版本的智能体网络和混合网络计算下一状态的目标联合Q值 \(Y\)。
\[ Y = R_{global} + \gamma \max_{\mathbf{a}'} Q_{tot}(\mathbf{o}', \mathbf{a}'; \theta_{mix}^-, \theta_{agent}^-) \]
由于单调性约束,\(\max_{\mathbf{a}'} Q_{tot}(\mathbf{o}', \mathbf{a}')\) 可以分解为 \(\max_{\mathbf{a}'} Q_{tot}(\mathbf{o}', \mathbf{a}') = Q_{tot}(\mathbf{o}', (\arg\max_{a_1'} Q_1(o_1', \dots), \dots, \arg\max_{a_N'} Q_N(o_N', \dots)); \theta_{mix}^-, \theta_{agent}^-)\)。智能体网络直接输出所有动作的Q值,因此可以容易地找到每个智能体的局部最大Q值对应的动作。
③ 损失函数:训练智能体网络和混合网络,使得预测的联合Q值 \(Q_{tot}(\mathbf{o}, \mathbf{a})\) 逼近目标Q值 \(Y\)。同样使用MSE损失:
\[ L = (Y - Q_{tot}(\mathbf{o}, \mathbf{a}))^2 \]
反向传播更新所有网络的参数,同时保证混合网络权重的非负性。
执行过程:
▮▮▮▮与VDN类似,每个智能体 \(i\) 仅接收其局部观察 \(o_i\),使用其训练好的智能体网络计算 \(Q_i(o_i, \text{history}_i, \cdot)\),并选择局部最优动作 \(a_i^* = \arg\max_{a_i} Q_i(o_i, \cdot)\)。
QMIX相比于VDN具有更强的函数逼近能力,能够学习更复杂的联合价值分解,同时通过单调性约束保留了分布式执行的最优性。它在多种合作型MARL基准任务上取得了很好的效果。然而,QMIX仍然假设存在这种满足单调性的分解结构,这并非适用于所有合作任务。
9.5 多智能体Actor-Critic算法 (Multi-Agent Actor-Critic Algorithms)
Actor-Critic 方法结合了基于值和基于策略方法的优点,通过 Actor (策略网络) 直接学习策略 \(\pi(a|s)\) 并由 Critic (价值网络) 评估策略的好坏。在MARL中,多智能体Actor-Critic (MAAC) 方法是一个重要的算法族谱,特别是基于CTDE范式的MAAC算法,它们在处理非平稳性和连续动作空间方面表现出色。
MAAC算法通常包括 N 对 Actor-Critic 网络,每对对应一个智能体。在CTDE范式下:
⚝ 分布式 Actor (Decentralized Actors):每个智能体 \(i\) 有一个本地的 Actor 网络 \(\pi_i(a_i|o_i)\),仅根据自己的局部观察 \(o_i\) 输出动作 \(a_i\)。在训练和执行时都使用。
⚝ 中心化 Critic (Centralized Critic):在训练时,有一个或多个 Critic 网络接收更多信息,通常包括所有智能体的局部观察 \(\mathbf{o}\) 和/或联合动作 \(\mathbf{a}\),甚至全局状态 \(s\)。Critic 的作用是估计联合状态价值 \(V(\mathbf{s})\) 或联合状态-动作价值 \(Q(\mathbf{s}, \mathbf{a})\),为 Actor 的策略更新提供更稳定和准确的梯度信号。在执行时,Critic 网络被丢弃。
9.5.1 多智能体深度确定性策略梯度 (Multi-Agent Deep Deterministic Policy Gradient, MADDPG)
MADDPG 是将单智能体 DDPG (Deep Deterministic Policy Gradient) 算法扩展到多智能体环境的经典算法,采用了 CTDE 范式,并且可以应用于合作、竞争和混合型任务。
在 MADDPG 中,每个智能体 \(i\) 都有:
① 一个本地 Actor 网络 \(\mu_i(o_i; \theta_i)\):接收局部观察 \(o_i\),输出确定性动作 \(a_i\)。训练和执行都使用。
② 一个中心化 Critic 网络 \(Q_i(\mathbf{o}, a_1, \dots, a_N; \phi_i)\):接收所有智能体的观察 \(\mathbf{o} = (o_1, \dots, o_N)\) 和所有智能体选择的动作 \(\mathbf{a} = (a_1, \dots, a_N)\) 作为输入,输出智能体 \(i\) 在此联合状态和联合动作下的Q值。请注意,这里的Critic是为每个智能体单独训练的,输出的是该智能体的Q值(尽管输入是全局信息)。对于合作任务,所有智能体共享同一个Critic或Critics输出同样的值(全局Q值)。
③ 对应的目标 Actor \(\mu_i'\) 和目标 Critic \(Q_i'\):用于计算目标Q值,提高训练稳定性,类似于DDPG。
训练过程:
① 经验回放:收集包含所有智能体观察、动作、奖励以及下一状态观察的经验样本 \(((\mathbf{o}, \mathbf{a}), (r_1, \dots, r_N), (\mathbf{o}'))\),存储在共享缓冲区。这里的奖励 \(r_i\) 可以是智能体 \(i\) 自己的奖励信号(在非合作或混合任务中)或全局奖励(在合作任务中)。
② 更新 Critic:每个智能体 \(i\) 的 Critic \(Q_i\) 通过最小化目标Q值和当前Q值之间的差的平方来更新。目标Q值 \(Y_i\) 计算如下:
\[ Y_i = r_i + \gamma Q_i'(\mathbf{o}', \mu_1'(\mathbf{o}_1'), \dots, \mu_N'(\mathbf{o}_N'); \phi_i^-) \]
其中 \(\mu_j'(\mathbf{o}_j')\) 是智能体 \(j\) 的目标 Actor 在其下一状态观察 \(o_j'\) 下的输出动作。损失函数为:
\[ L(\phi_i) = \mathbb{E} \left[ \left( Y_i - Q_i(\mathbf{o}, \mathbf{a}; \phi_i) \right)^2 \right] \]
通过最小化 \(L(\phi_i)\) 更新 Critic 参数 \(\phi_i\)。
③ 更新 Actor:每个智能体 \(i\) 的 Actor \(\mu_i\) 通过策略梯度来更新。目标是最大化其 Critic 评估的Q值。策略梯度为:
\[ \nabla_{\theta_i} J \approx \mathbb{E} \left[ \nabla_{a_i} Q_i(\mathbf{o}, a_1, \dots, a_i, \dots, a_N; \phi_i) | _{a_j=\mu_j(o_j) \forall j} \cdot \nabla_{\theta_i} \mu_i(o_i; \theta_i) \right] \]
这里的梯度计算包含了对其他智能体当前策略输出动作的依赖,这是中心化训练的关键。
④ 更新目标网络:定期软更新目标网络的参数:\(\theta_i' \leftarrow \tau \theta_i + (1-\tau) \theta_i'\) 和 \(\phi_i' \leftarrow \tau \phi_i + (1-\tau) \phi_i'\)。
执行过程:
▮▮▮▮每个智能体 \(i\) 仅使用自己的本地 Actor 网络 \(\mu_i(o_i; \theta_i)\),接收局部观察 \(o_i\) 并输出确定性动作 \(a_i = \mu_i(o_i)\)。Critic 网络在执行时不再需要。
MADDPG 的主要优势在于其 CTDE 架构有效地解决了非平稳性问题,因为 Critic 在训练时能够看到所有智能体的行为。它可以应用于多种MARL设置(合作、竞争、混合),并且可以处理连续动作空间。然而,随着智能体数量增加,Critic 的输入维度显著增加,训练计算量变大,可扩展性仍然是挑战。此外,确定性策略梯度在探索方面可能不足。
9.5.2 其他多智能体Actor-Critic算法
除了MADDPG,还有其他MAAC变体,例如:
⚝ MATD3 (Multi-Agent Twin Delayed Deep Deterministic Policy Gradient):借鉴了单智能体TD3算法的思想,在MADDPG基础上引入了双Critic、延迟策略更新和平滑目标策略等技术,以缓解 Critic 过高估计Q值的问题,提高训练稳定性。
⚝ MASAC (Multi-Agent Soft Actor-Critic):将单智能体SAC算法扩展到多智能体环境。SAC的核心思想是在最大化期望回报的同时最大化策略的熵(Entropy),鼓励探索。MASAC在CTDE框架下,每个智能体有自己的 Actor,Critic 接收全局信息并评估联合动作价值,同时考虑熵奖励。
9.6 其他MARL方法与应用 (Other MARL Methods and Applications)
除了上述基于值分解和MAAC的算法,MARL领域还有许多其他重要的研究方向和方法,以及广泛的应用。
① 基于通信的方法 (Communication-Based Methods):
▮▮▮▮在合作任务中,智能体之间能否有效地共享信息(通信)对完成任务至关重要,尤其是在部分可观察的环境中。研究方向包括:
▮▮▮▮▮▮▮▮⚝ 学习通信协议:让智能体通过神经网络学习如何发送和接收信息,以及如何利用这些信息来改进协作。例如,CommNet, IC3Net等算法。
▮▮▮▮▮▮▮▮⚝ 可微分通信:将通信过程建模为神经网络中的信息传递,使得通信过程可以与策略一起进行端到端训练。
② 基于博弈论的方法 (Game Theory Based Methods):
▮▮▮▮将MARL问题与博弈论的概念结合,例如寻找纳什均衡或近似均衡、理性或对手建模(Opponent Modeling)等。这在竞争和混合型任务中尤为重要。
③ 基于对手建模的方法 (Opponent Modeling):
▮▮▮▮智能体显式或隐式地学习其他智能体的策略或行为模式,以便更好地预测它们的行为并做出最优响应。
④ 基于宏动作/分层的方法 (Macro-Action/Hierarchical Methods):
▮▮▮▮类似于单智能体中的分层RL,在MARL中也可以定义更长时间跨度的宏动作,或者设计分层结构来处理复杂的任务和长期协作。
⑤ 学习如何学习/元学习 (Learning to Learn / Meta-Learning):
▮▮▮▮研究如何使智能体能够快速适应新的团队成员、新的对手或稍有变化的环境。
MARL 在众多领域展现出巨大的应用潜力:
⚝ 游戏领域 (Gaming Domain):
▮▮▮▮MARL在多人电子游戏中取得了巨大成功,如OpenAI Five在Dota 2中击败顶尖人类玩家,AlphaStar在StarCraft II中达到宗师水平。这些智能体需要处理复杂的状态、长远的规划、与队友的协作以及与对手的竞争。
▮▮▮▮在棋牌类游戏(如扑克)中,MARL也用于训练智能体在不完美信息博弈中做出最优决策。
⚝ 机器人控制 (Robotics Control):
▮▮▮▮多机器人系统执行协同任务,如协同搬运、编队飞行、仓库物流协作、多机器人探索未知环境等。MARL可以学习机器人在分布式感知和控制下的协调策略。
⚝ 自动驾驶与智能交通 (Autonomous Driving and Intelligent Transportation):
▮▮▮▮自动驾驶汽车在道路上行驶时需要与周围的其他车辆、行人和交通信号灯进行交互。这本质上是一个多智能体决策问题,需要考虑避碰、路径规划、速度协调等。MARL也可用于优化交通信号灯的配时,以缓解城市交通拥堵。
⚝ 推荐系统与智能决策 (Recommendation Systems and Intelligent Decision Making):
▮▮▮▮在一些平台级应用中,如电商或新闻推荐,可以将用户和物品(或不同的推荐策略)视为智能体,通过MARL学习如何进行动态、个性化的推荐,以最大化用户长期留存或平台整体收益。在金融交易、资源管理等领域,MARL也被用于学习复杂的动态决策策略。
⚝ 其他前沿应用 (Other Frontier Applications):
▮▮▮▮MARL还在许多其他领域被探索,如无线网络资源分配、智能电网管理、分布式计算任务调度、以及需要多个AI系统协同工作的复杂系统。
尽管MARL取得了显著进展,但仍然面临许多挑战,例如在非完全可观察环境下的探索、如何处理智能体数量变化的情况(可伸缩性)、如何保证智能体行为的安全性和稳定性、以及如何将理论成果有效地应用于更复杂的现实世界场景。这是一个充满活力且前景广阔的研究领域。
10. 高级主题三:分层与模型基础的深度强化学习 (Advanced Topic III: Hierarchical and Model-Based Deep RL)
本章探讨如何通过分层结构处理长期信用分配问题,以及如何学习环境模型来改进DRL。
10.1 分层强化学习 (Hierarchical Reinforcement Learning, HRL)
本节介绍HRL解决长期规划和信用分配问题,讲解Option框架和基于Manager/Worker结构的HRL方法。
10.1.1 为什么需要分层强化学习? (Why Hierarchical Reinforcement Learning?)
在标准的强化学习 (Reinforcement Learning, RL) 设置中,智能体 (Agent) 需要学习一个直接从状态 (State) 到动作 (Action) 的映射策略 (Policy),以最大化累积奖励 (Cumulative Reward)。然而,对于许多复杂的任务,特别是那些涉及长期目标、稀疏奖励 (Sparse Reward) 或需要执行一系列低层级动作才能达成高层级目标的任务,标准RL方法会面临挑战:
① 长期信用分配问题 (Long-term Credit Assignment Problem): 一个动作的效果可能要很久之后才能体现在奖励上。如果任务目标很远,智能体很难知道哪个动作序列导致了最终的成功。
② 探索效率低下 (Inefficient Exploration): 在巨大的状态-动作空间中,随机探索或简单的 \( \epsilon \)-贪婪 ( \( \epsilon \)-Greedy) 策略很难找到通往稀疏奖励的路径。智能体可能需要执行很长的动作序列才能达到一个有奖励的状态。
③ 任务分解与可迁移性 (Task Decomposition and Transferability): 许多复杂任务可以分解为更简单的子任务。学习如何解决这些子任务(技能)可以使得智能体更容易学习解决更复杂的任务,并且这些技能可能在不同的任务中重复使用。标准RL通常一次性学习解决整个复杂任务,缺乏这种结构化的分解和复用能力。
分层强化学习 (Hierarchical Reinforcement Learning, HRL) 提供了一种解决这些问题的方法,它通过引入多个层级的策略和抽象动作 (Abstract Action) 来组织学习和决策过程。
10.1.2 Option 框架 (The Option Framework)
Option框架是HRL中最经典和理论基础最扎实的框架之一。它将低层级的动作序列抽象为一个"选项" (Option)。一个选项可以被认为是广义上的动作 (Generalized Action)。
▮▮▮▮⚝ Option 的定义: 一个选项 \( o \) 通常由以下三个要素组成:
▮▮▮▮▮▮▮▮⚝ 起始状态集 (Initiation Set) \( I \subseteq S \): 选项 \( o \) 可以被选取的那些状态的集合。
▮▮▮▮▮▮▮▮⚝ 策略 (Policy) \( \pi_o(a|s) \): 当选项 \( o \) 被选中并在状态 \( s \in I \) 执行时,用于选择具体低层级动作 \( a \) 的策略。
▮▮▮▮▮▮▮▮⚝ 终止条件 (Termination Condition) \( \beta(s) \in [0, 1] \): 在执行选项 \( o \) 的每个时间步,选项 \( o \) 终止于状态 \( s \) 的概率。一旦选项终止,高层级的策略会重新选择一个新的选项。
▮▮▮▮⚝ Option 的执行过程:
① 高层级策略 \( \pi_{high} \) 在某个状态 \( s \in I \) 中选择一个选项 \( o \)。
② 低层级策略 \( \pi_o \) 开始执行,从状态 \( s \) 生成动作 \( a = \pi_o(s) \) (如果是确定性策略)或 \( a \sim \pi_o(\cdot|s) \) (如果是随机性策略)。
③ 环境 (Environment) 根据动作 \( a \) 转移到新状态 \( s' \),并产生奖励 \( r \)。
④ 重复步骤 ② 和 ③,直到选项 \( o \) 根据终止条件 \( \beta(s') \) 终止。
⑤ 选项终止后,高层级策略 \( \pi_{high} \) 在新状态 \( s' \) 选择下一个选项。
▮▮▮▮⚝ Option 框架下的价值函数与贝尔曼方程:
在Option框架下,价值函数和贝尔曼方程可以被推广。例如,一个状态 \( s \) 在策略 \( \pi \) 下的价值 \( V^\pi(s) \) 可以通过对所有可能的选项 \( o \) 和在选项 \( o \) 执行期间获得的奖励进行期望来计算。这里涉及到的贝尔曼方程会更复杂,需要考虑选项执行过程中的累积奖励和终止概率。
Option框架提供了一种理论上的分层建模方式,但实际应用中,如何学习有效的选项本身是一个挑战。
10.1.3 基于 Manager/Worker 结构的 HRL 方法 (Manager/Worker Based HRL Methods)
另一种常见的HRL范式是基于两个或多个不同层级的智能体:一个高层级智能体(Manager)和一个或多个低层级智能体(Worker)。
▮▮▮▮⚝ Manager (高层级智能体):
▮▮▮▮▮▮▮▮⚝ 工作在抽象的、较慢的时间尺度上。
▮▮▮▮▮▮▮▮⚝ 接收环境的状态信息。
▮▮▮▮▮▮▮▮⚝ 学习一个策略来设置"目标" (Goal) 或"子目标" (Subgoal) 给Worker。目标可以是:
▮▮▮▮▮▮▮▮❶ 某个特定的状态 (State)。
▮▮▮▮▮▮▮▮❷ 某个状态的特定特征 (Feature)。
▮▮▮▮▮▮▮▮❸ 完成某个低层级任务 (Low-level Task)。
▮▮▮▮▮▮▮▮⚝ 从环境接收稀疏的、与主任务目标相关的奖励。
▮▮▮▮⚝ Worker (低层级智能体):
▮▮▮▮▮▮▮▮⚝ 工作在具体的、较快的时间尺度上。
▮▮▮▮▮▮▮▮⚝ 接收环境的状态信息 以及 Manager设定的目标。
▮▮▮▮▮▮▮▮⚝ 学习一个策略来选择低层级动作,以达成Manager设定的目标。
▮▮▮▮▮▮▮▮⚝ 通常从一个"内在奖励" (Intrinsic Reward) 信号中学习,这个奖励由Manager的目标决定(例如,如果Worker到达了目标状态,就获得一个内在奖励)。
▮▮▮▮⚝ 协同工作与学习:
Manager和Worker可以同时学习。Manager学习如何设定能够最终获得环境奖励的目标,而Worker学习如何高效地达成这些目标。这种结构通过将长期、稀疏奖励问题分解为一系列短期、密集的内在奖励问题,降低了学习难度。
▮▮▮▮⚝ 基于Manager/Worker的深度强化学习方法示例:
在深度强化学习 (Deep Reinforcement Learning, DRL) 中,Manager和Worker的策略或价值函数通常用深度神经网络 (Deep Neural Network, DNN) 来逼近。
▮▮▮▮▮▮▮▮⚝ Hindsight Experience Replay (HER): 虽然不是严格意义上的Manager/Worker结构,但HER通过将未能达成但接近目标的经验重新标记为达成“另一个目标”的经验,极大地提升了在稀疏奖励任务中学习达成目标的能力,这与Worker学习达成目标的概念相关。
▮▮▮▮▮▮▮▮⚝ Meta-Learning Shared Hierarchies (MLSH): 学习一系列可重用的技能(Worker策略),并通过一个高层级策略(Manager)来选择使用哪个技能。
▮▮▮▮▮▮▮▮⚝ Options-Critic: 一种学习Option参数(包括策略和终止条件)的端到端 (End-to-End) 算法,是Option框架与深度学习结合的代表。
总之,HRL通过引入层级结构,使得智能体能够以更抽象的视角看待任务,学习和重用技能,从而更有效地处理长期规划和稀疏奖励问题。
10.2 模型基础的强化学习 (Model-Based Reinforcement Learning)
本节介绍模型基础RL的优势和类型:学习模型并规划 (Learn Model and Plan) vs. 使用模型辅助无模型学习 (Model-Augmented Model-Free RL)。
10.2.1 模型基础强化学习的定义与优势 (Definition and Advantages of Model-Based RL)
模型基础强化学习 (Model-Based Reinforcement Learning) 与模型无关强化学习 (Model-Free Reinforcement Learning) 的主要区别在于,模型基础方法尝试学习或已知环境的动态模型 (Dynamic Model)。环境模型通常包括状态转移模型 \( p(s'|s, a) \) 和奖励模型 \( r(s, a, s') \)。
▮▮▮▮⚝ 优势:
① 样本效率 (Sample Efficiency): 智能体可以通过与真实环境交互获取少量数据,然后使用这些数据学习一个环境模型。一旦模型学习得足够好,智能体就可以在模型中进行大量的模拟 (Simulation) 或规划 (Planning),从而在不与真实环境进行额外昂贵交互的情况下,生成大量的虚拟经验 (Synthetic Experience) 来改进策略或价值函数。这在真实环境交互成本高昂(如机器人、自动驾驶)的场景下尤为重要。
② 规划能力 (Planning Capability): 智能体可以使用学习到的模型来向前预测执行某个动作序列的未来结果,从而通过搜索或优化来选择当前的最优动作。这使得智能体能够提前预见并避免潜在的危险或低奖励的未来。
③ 潜在的可解释性 (Potential Interpretability): 学习到的模型可以提供关于环境如何运作的一些信息,有助于理解智能体的行为和环境的动力学。
10.2.2 模型基础强化学习的类型 (Types of Model-Based RL)
模型基础RL可以大致分为两类:
▮▮▮▮⚝ 类型一:学习模型并规划 (Learn Model and Plan)
▮▮▮▮▮▮▮▮⚝ 描述: 这类方法首先利用与环境的交互数据学习一个环境模型(包括状态转移和奖励模型)。一旦模型学习完成,智能体主要依靠这个学习到的模型进行规划,根据规划结果来选择动作。规划过程可以在没有进一步环境交互的情况下进行。
▮▮▮▮▮▮▮▮⚝ 常见规划方法:
▮▮▮▮▮▮▮▮❶ 动态规划 (Dynamic Programming, DP): 如果学习到的模型是确定性的或状态空间较小,可以使用DP算法在模型中直接计算价值函数或最优策略。
▮▮▮▮▮▮▮▮❷ 蒙特卡洛树搜索 (Monte Carlo Tree Search, MCTS): 对于复杂或非确定性模型,MCTS可以在模型中进行模拟,构建搜索树,并通过多次模拟结果来评估不同动作的价值,从而选择最优动作。AlphaGo是成功结合MCTS和深度学习的著名例子。
▮▮▮▮▮▮▮▮⚝ 学习流程:
\[ \text{Data Collection} \rightarrow \text{Model Learning} \rightarrow \text{Planning in Model} \rightarrow \text{Action Selection} \rightarrow \text{Data Collection} \quad (\text{循环}) \]
▮▮▮▮▮▮▮▮⚝ 优点: 在模型准确的情况下,可以实现高效的规划和学习;与环境的交互次数可以很少。
▮▮▮▮▮▮▮▮⚝ 挑战: 学习准确的模型本身可能很困难,尤其是在高维或复杂动态环境中;模型误差可能导致规划结果失效(模型失配,Model Misspecification)。
▮▮▮▮⚝ 类型二:使用模型辅助无模型学习 (Model-Augmented Model-Free RL)
▮▮▮▮▮▮▮▮⚝ 描述: 这类方法结合了模型基础和模型无关方法的优点。智能体学习一个环境模型,但并不完全依赖模型进行规划。学习到的模型主要用于生成额外的虚拟经验,这些虚拟经验随后被用于训练一个标准的模型无关学习器(如Q网络或策略网络)。
▮▮▮▮▮▮▮▮⚝ 经典算法: Dyna-Q 是一个代表性的例子,它在Q-学习 (Q-Learning) 的基础上,额外使用学习到的环境模型生成 \( k \) 个虚拟样本 \( (s, a, r, s') \),并用这些虚拟样本进行Q值更新。
▮▮▮▮▮▮▮▮⚝ 学习流程:
\[ \text{Data Collection} \rightarrow \text{Model Learning \& Model-Free Learning} \rightarrow \text{Simulate in Model to Generate Data} \rightarrow \text{Model-Free Learning with Real + Simulated Data} \quad (\text{循环}) \]
▮▮▮▮▮▮▮▮⚝ 优点: 利用模型提高样本效率,同时保留了模型无关方法在模型不准确时仍能工作的鲁棒性。
▮▮▮▮▮▮▮▮⚝ 挑战: 仍然需要学习一个模型;虚拟经验的质量取决于模型准确性,不准确的模型可能引入误差;如何在真实经验和虚拟经验之间平衡也很关键。
总的来说,模型基础RL通过显式或隐式地利用环境模型,为解决RL问题提供了另一条重要的技术路线,尤其在强调样本效率和规划能力的场景下具有显著优势。
10.3 深度学习在模型学习中的应用 (Applying Deep Learning in Model Learning)
本节讲解如何使用神经网络学习环境的动态模型和奖励模型。
传统的模型基础RL方法通常假设环境模型是已知的(如简单的表格模型)或可以通过简单函数拟合。然而,在处理高维状态(如图像、传感器数据)或复杂非线性动力学时,显式地构建或学习精确的模型变得非常困难。深度学习强大的函数逼近 (Function Approximation) 能力使其成为学习复杂环境模型的理想工具。
10.3.1 使用神经网络学习状态转移模型 (Learning Transition Models with Neural Networks)
状态转移模型 \( p(s'|s, a) \) 描述了在状态 \( s \) 执行动作 \( a \) 后转移到状态 \( s' \) 的概率。使用神经网络学习这个模型通常意味着学习一个映射:\( (s, a) \rightarrow s' \) 或 \( (s, a) \rightarrow p(s'|s, a) \)。
▮▮▮▮⚝ 学习确定性转移模型:
▮▮▮▮▮▮▮▮⚝ 网络结构: 可以使用全连接网络 (Fully Connected Network, FCN) 或更复杂的网络(如对于图像状态使用卷积神经网络 (Convolutional Neural Network, CNN) 处理状态输入)作为函数逼近器。输入是当前状态 \( s \) 和执行的动作 \( a \),输出是预测的下一个状态 \( \hat{s'} \)。
▮▮▮▮▮▮▮▮⚝ 训练数据: 使用智能体与环境交互产生的真实经验 \( (s_t, a_t, s_{t+1}) \) 作为训练数据。
▮▮▮▮▮▮▮▮⚝ 损失函数: 通常使用预测状态 \( \hat{s'} \) 与真实下一个状态 \( s_{t+1} \) 之间的距离作为损失,例如均方误差 (Mean Squared Error, MSE): \( L = ||s_{t+1} - \hat{s'}_t||^2 \)。
▮▮▮▮▮▮▮▮⚝ 适用场景: 环境动态相对确定。
▮▮▮▮⚝ 学习随机性转移模型:
▮▮▮▮▮▮▮▮⚝ 网络结构: 输出不再是单个预测状态,而是预测下一个状态的分布参数。例如,对于连续状态,可以预测高斯分布的均值和方差;对于离散状态,可以预测每个可能下一个状态的概率。
▮▮▮▮▮▮▮▮⚝ 训练数据: 同确定性模型,使用 \( (s_t, a_t, s_{t+1}) \) 数据。
▮▮▮▮▮▮▮▮⚝ 损失函数: 通常使用最大化观测到真实下一个状态 \( s_{t+1} \) 在预测分布下的对数概率(即负对数似然损失,Negative Log-Likelihood Loss)。
▮▮▮▮▮▮▮▮⚝ 适用场景: 环境动态具有随机性或不确定性。
▮▮▮▮⚝ 学习高维观测环境的模型 (Model Learning in High-Dimensional Observation Spaces):
当状态是高维图像时,直接预测像素级的下一帧通常效率低下且不准确。更常见的方法是:
▮▮▮▮▮▮▮▮⚝ 学习潜在空间模型 (Learning Latent Space Models): 使用变分自编码器 (Variational Autoencoder, VAE) 或世界模型 (World Model) 等技术,首先学习一个将高维观测 \( o \) 编码到低维潜在状态 \( z \) 的编码器 \( E(o) \rightarrow z \) 和从潜在状态解码回观测的解码器 \( D(z) \rightarrow o \)。然后在低维潜在空间中学习潜在状态的转移模型 \( p(z'|z, a) \) 和潜在状态的奖励模型 \( p(r|z, a, z') \)。智能体的策略和价值函数都在潜在空间中学习和规划。这种方法是 Dreamer 等算法的核心思想。
10.3.2 使用神经网络学习奖励模型 (Learning Reward Models with Neural Networks)
奖励模型 \( r(s, a, s') \) 描述了从状态 \( s \) 执行动作 \( a \) 转移到状态 \( s' \) 后获得的即时奖励。学习奖励模型通常是一个回归问题。
▮▮▮▮⚝ 网络结构: 输入可以是 \( (s, a, s') \) 或简化为 \( (s, a) \) (如果奖励只取决于当前状态和动作),输出是预测的奖励值 \( \hat{r} \)。
▮▮▮▮⚝ 训练数据: 使用智能体与环境交互产生的真实经验 \( (s_t, a_t, r_{t+1}, s_{t+1}) \) 中的 \( (s_t, a_t, s_{t+1}, r_{t+1}) \) 数据对。
▮▮▮▮⚝ 损失函数: 使用预测奖励 \( \hat{r}_t \) 与真实奖励 \( r_{t+1} \) 之间的距离作为损失,例如均方误差 (MSE): \( L = (r_{t+1} - \hat{r}_t)^2 \)。
10.3.3 深度模型学习的挑战 (Challenges in Deep Model Learning)
尽管深度学习为模型学习提供了强大工具,但也面临挑战:
▮▮▮▮⚝ 模型误差累积 (Accumulation of Model Errors): 即使单步预测误差很小,在进行多步预测(规划)时,误差可能会指数级增长,导致预测结果与真实轨迹严重偏离。这被称为"模型偏差" (Model Bias) 或"截断误差" (Truncation Error)。
▮▮▮▮⚝ 数据分布不匹配 (Data Distribution Mismatch): 智能体学习的模型是在其当前策略产生的数据上训练的。当智能体策略改进并探索到新的状态区域时,之前训练的模型可能在新区域表现不佳。
▮▮▮▮⚝ 非静态环境 (Non-static Environments): 如果环境本身的动态随时间变化,学习一个固定的模型会很困难。
因此,在深度模型基础RL中,如何学习准确且能够泛化到未见状态的模型,以及如何处理模型误差是关键的研究问题。
10.4 基于模型预测控制的 DRL (Model Predictive Control based DRL)
本节介绍 MPC 如何结合 DRL。
模型预测控制 (Model Predictive Control, MPC) 是一种广泛应用于控制领域的优化技术。它利用环境的动态模型来预测未来一段时间内(预测范围,Prediction Horizon)系统的行为,然后在此基础上求解一个优化问题,得到一个最优的动作序列。但是,MPC只执行这个序列的第一个动作,然后在新状态下重复整个过程(滚动优化,Receding Horizon Control)。
MPC的核心是需要一个准确的环境模型以及一个能够高效求解优化问题的求解器。在高维、复杂或未知动态的环境中,获取或构建精确模型以及实时求解复杂优化问题是挑战。深度学习和强化学习的结合为克服这些挑战提供了可能性。
10.4.1 MPC与DRL的结合方式 (Ways to Combine MPC and DRL)
DRL和MPC可以以多种方式结合,相互增强:
▮▮▮▮⚝ DRL 学习 MPC 所需的模型:
▮▮▮▮▮▮▮▮⚝ 前面章节提到,DRL技术(特别是基于深度学习的模型学习方法)可以用于学习环境的动态模型 \( p(s'|s, a) \) 和奖励模型 \( r(s, a, s') \)。学习到的深度模型可以直接用于MPC的预测步骤。
▮▮▮▮⚝ DRL 学习一个策略来引导或替代 MPC:
▮▮▮▮▮▮▮▮⚝ 学习一个策略来加速 MPC 的优化: 在复杂的环境中,MPC求解器可能需要很长时间才能找到好的动作序列。DRL可以学习一个策略 \( \pi(a|s) \) 作为MPC的"热启动" (Warm Start),为MPC提供一个初始的、接近最优的动作序列,从而加速MPC的求解过程。
▮▮▮▮▮▮▮▮⚝ 学习一个值函数来改进 MPC 的成本函数: MPC通常需要定义一个成本函数来评估动作序列的好坏。这个成本函数往往包含一个终端状态成本,用于评估预测范围末端的状态价值。DRL可以学习一个值函数 \( V(s) \) 来作为这个终端成本估计,从而将短期预测的MPC与长期回报联系起来。
▮▮▮▮▮▮▮▮⚝ 学习一个策略来近似 MPC 的行为: MPC在已知模型下可以找到一个次优策略(因为它只执行第一个动作)。DRL可以学习一个策略网络,通过模仿学习 (Imitation Learning) 的方式来学习MPC在各种状态下生成的动作,从而用一个快速的策略网络替代实时的MPC求解,实现更快的响应。
▮▮▮▮⚝ MPC 生成数据用于训练 DRL:
▮▮▮▮▮▮▮▮⚝ MPC,尤其是在已知或高精度模型下运行时,可以生成高质量的专家轨迹。这些轨迹可以作为监督数据,用于训练DRL策略网络,例如通过行为克隆 (Behavioral Cloning)。
10.4.2 基于深度学习模型预测控制的方法示例 (Examples of Deep Learning MPC based Methods)
▮▮▮▮⚝ 深度动力学模型 + MPC (Deep Dynamics Model + MPC):
▮▮▮▮▮▮▮▮⚝ 使用深度神经网络学习环境动力学模型。
▮▮▮▮▮▮▮▮⚝ 在每个时间步,利用学习到的深度模型,通过随机搜索 (Random Shooting)、交叉熵方法 (Cross-Entropy Method, CEM) 或其他优化方法,搜索未来一段时间内的动作序列,找到最大化预测累积奖励的序列。
▮▮▮▮▮▮▮▮⚝ 执行最优序列的第一个动作。
▮▮▮▮▮▮▮▮⚝ 重复。
▮▮▮▮▮▮▮▮⚝ 优点: 结合了深度学习处理高维数据的能力和MPC的在线规划能力,对模型误差有一定的鲁棒性(通过滚动优化)。
▮▮▮▮▮▮▮▮⚝ 挑战: 模型学习可能不精确;在线优化计算量可能较大,需要快速求解器;预测范围的选择很关键。
将DRL与MPC结合,旨在融合两者优势:DRL的自动策略学习和适应能力,以及MPC的基于模型的预测和优化能力。这在机器人控制、自动驾驶等需要精确控制和预测的应用中尤其有前景。
10.5 梦境学习 (Dreamer) 等模型基础 DRL 算法 (Model-Based DRL Algorithms like Dreamer)
本节介绍近期重要的模型基础 DRL 算法。
近年来,一系列先进的模型基础DRL算法在高维观测环境(如基于图像输入的视频游戏)中取得了显著进展,甚至在样本效率上超越了一些主流的模型无关DRL算法。这类算法通常通过学习一个复杂的概率生成模型来表征环境。
10.5.1 Dreamer 系列算法 (Dreamer Family of Algorithms)
Dreamer 系列(包括 DreamerV1, DreamerV2, DreamerV3)是Google Research提出的一系列重要的模型基础DRL算法。它们的核心思想是学习一个从高维观测中抽象出来的低维“世界模型” (World Model),并在纯粹的“梦境”(即学习到的世界模型内部)中进行学习和规划。
▮▮▮▮⚝ 核心组成部分:
① 感知模型 (Representation Model): 将高维观测 \( o_t \) 编码到潜在状态 \( z_t \) 中。通常是循环神经网络 (Recurrent Neural Network, RNN) 或门控循环单元 (Gated Recurrent Unit, GRU) 结合变分推断 (Variational Inference) 的方式,学习潜在状态的先验分布和后验分布。
② 动态模型 (Dynamics Model): 预测潜在状态的未来变化。根据当前潜在状态 \( z_t \) 和动作 \( a_t \),预测下一个潜在状态 \( z_{t+1} \) 的分布。这是在潜在空间中学习的状态转移模型。
③ 奖励模型 (Reward Model): 根据潜在状态 \( z_t \) 和动作 \( a_t \),预测奖励 \( r_t \)。
④ 值函数 (Value Function) \( V(z) \): 学习潜在状态的价值函数,用于评估潜在状态的好坏。
⑤ 策略函数 (Policy Function) \( \pi(a|z) \): 学习潜在状态下的策略,用于选择动作。
▮▮▮▮⚝ 工作流程:
① 真实世界交互: 智能体在真实环境中执行动作 \( a_t \),观察到 \( (o_t, r_t) \),并记录真实经验 \( (o_t, a_t, r_t, o_{t+1}) \)。
② 模型学习: 使用收集到的真实经验离线 (Offline) 更新世界模型的各个部分(感知模型、动态模型、奖励模型)。目标是让模型能够准确地从观测中推断潜在状态,并在潜在空间中预测动态和奖励。
③ 梦境学习/规划: 在学习到的世界模型(潜在空间)中,智能体可以通过“想象”未来的轨迹来进行策略和价值函数的学习。它从当前的潜在状态出发,使用学习到的动态模型生成一系列未来的潜在状态和奖励(比如想象 \( H \) 步)。然后,策略和价值函数在这些想象的轨迹上进行更新。例如,策略可以通过最大化预测的未来累积奖励的期望进行更新,价值函数可以通过时序差分学习在想象轨迹上进行更新。
④ 动作选择: 在真实世界中,当需要选择动作时,智能体首先将当前观测编码到潜在状态 \( z_t \),然后使用在梦境中学习到的策略 \( \pi(a|z_t) \) 选择动作 \( a_t \)。
▮▮▮▮⚝ DreamerV1/V2/V3 的改进:
▮▮▮▮▮▮▮▮⚝ DreamerV1 首次提出了在潜在空间学习世界模型并在梦境中训练策略和价值函数的框架。
▮▮▮▮▮▮▮▮⚝ DreamerV2 改进了学习目标和架构,特别是引入了分类潜在变量 (Categorical Latent Variables),提高了在高维离散控制任务上的性能。
▮▮▮▮▮▮▮▮⚝ DreamerV3 进一步提升了模型的泛化能力和训练效率,使其能够在更广泛的任务和环境中无需太多调参就能取得良好表现。
10.5.2 其他相关的模型基础 DRL 方法 (Other Related Model-Based DRL Methods)
▮▮▮▮⚝ World Models: 由Ha和Schmidhuber提出,是Dreamer的先驱之一。它也学习一个生成式的世界模型(包括视觉模型、动态模型和奖励模型),但其策略学习是通过进化算法 (Evolutionary Algorithms) 在动态模型的潜在空间中进行的,而不是梯度下降。
▮▮▮▮⚝ PlaNet (Planning Network): DreamerV1的直接前身,也学习潜在空间的动态模型,并使用基于模型的规划方法(如CEM)在潜在空间中搜索最优动作序列。Dreamer在此基础上增加了策略和价值函数的学习。
▮▮▮▮⚝ Model-Based Value Expansion (MVE) / Model-Based Policy Optimization (MBPO): 这些方法属于模型辅助无模型RL的范畴。它们学习一个环境模型,然后用模型生成额外数据来补充真实经验回放缓冲区,用于训练模型无关的策略或价值函数。它们证明了仅仅使用短期模型预测来增强模型无关学习就可以显著提高样本效率。
这些先进的模型基础DRL算法表明,通过有效地结合深度学习来学习和利用环境模型,可以显著提高RL算法的样本效率和在高维复杂环境中的表现。然而,模型误差、计算资源需求以及对模型训练的鲁棒性仍然是需要持续研究的课题。
11. 高级主题四:离线强化学习与模仿学习 (Advanced Topic IV: Offline RL and Imitation Learning)
本章将带你深入探索强化学习领域的两个重要前沿方向:离线强化学习 (Offline Reinforcement Learning, Offline RL) 和模仿学习 (Imitation Learning, IL)。与传统的在线强化学习需要与环境进行实时交互并收集新数据不同,Offline RL 关注如何仅从一个预先收集好的静态数据集(通常包含历史交互数据)中学习到一个最优或接近最优的策略。这在许多实际场景中至关重要,例如医疗、金融、自动驾驶等,这些领域在线试错成本高昂或风险极大。另一方面,模仿学习则是一种从专家演示中学习策略的方法,它回避了奖励信号设计困难的问题,直接从“如何做”的示例中学习。理解这两个方向,对于将强化学习技术应用于真实世界复杂且受限的环境具有重要意义。
11.1 离线强化学习 (Offline Reinforcement Learning)
11.1.1 Offline RL 的定义与重要性 (Definition and Significance of Offline RL)
① 定义 (Definition):
▮▮▮▮离线强化学习 (Offline Reinforcement Learning),有时也称为批量强化学习 (Batch Reinforcement Learning),指的是仅利用一个预先收集好的、固定不变的交互数据集 \(\mathcal{D} = \{(s_i, a_i, r_i, s'_i)\}_{i=1}^N\) 来学习一个最优策略 \(\pi^*\)。这个数据集是在之前的某个或某组策略 \(\pi_b\)(称为行为策略 (Behavior Policy))与环境交互时生成的。Offline RL 的核心任务是在不与真实环境进行额外交互的情况下,从 \(\mathcal{D}\) 中学习一个在环境部署时能够表现良好的策略。
② 重要性 (Significance):
▮▮▮▮Offline RL 在许多实际应用中具有不可替代的价值:
▮▮▮▮⚝ 数据利用 (Data Utilization):在现实世界中,往往已经积累了大量的历史交互数据(例如用户行为日志、机器人操作记录、自动驾驶行驶数据),这些数据是宝贵的资源。Offline RL 使得我们能够充分利用这些已有数据来训练智能体,而无需从零开始进行昂贵的在线数据采集。
▮▮▮▮⚝ 安全性与成本 (Safety and Cost):在某些领域(如医疗诊断、药物研发、工业控制、自动驾驶),在线试错可能会导致严重的后果(如患者生命危险、设备损坏、交通事故)。Offline RL 允许在安全的环境中离线训练策略,训练完成后再进行谨慎的部署和评估,显著降低了风险和成本。
▮▮▮▮⚝ 可复现性与研究 (Reproducibility and Research):使用固定的数据集进行训练提高了研究的可复现性,不同的算法可以在相同的数据集上进行公平比较。
11.1.2 核心挑战:分布偏移 (Distribution Shift)
Offline RL 最核心且最具挑战性的问题是 分布偏移 (Distribution Shift),也称为协变量偏移 (Covariate Shift) 或离策略问题 (Off-Policy Problem) 在Offline RL 环境下的放大。
① 什么是分布偏移?
▮▮▮▮在在线强化学习中,智能体通过与环境的交互,其访问的状态和采取的动作的分布会随着策略的更新而改变。算法会针对当前策略遇到的状态-动作对进行学习和更新。然而,在 Offline RL 中,学习过程依赖于行为策略 \(\pi_b\) 生成的数据 \(\mathcal{D}\)。当我们尝试学习一个新的策略 \(\pi\)(希望它比 \(\pi_b\) 更好)时,\(\pi\) 可能会在 \(\pi_b\) 从未访问过或很少访问过的状态下采取行动。
▮▮▮▮如果在这些 未充分覆盖 (Under-covered) 或 未见状态-动作对 (Unseen State-Action Pairs) 上评估或学习价值函数,由于数据集中缺乏相应的信息,学习到的价值估计可能会非常不准确。
▮▮▮▮\[ P_{\pi}(s,a) \neq P_{\pi_b}(s,a) \]
▮▮▮▮特别是,如果学习到的策略 \(\pi\) 倾向于在某个状态 \(s\) 下采取一个动作 \(a\) (即 \(\pi(a|s)\) 很高),而这个 \((s, a)\) 对在行为数据集 \(\mathcal{D}\) 中出现的频率很低 (即 \(P_{\pi_b}(s,a)\) 很低),那么我们根据数据集估计 \(Q(s, a)\) 的值就会非常不可靠。
② 分布偏移带来的问题 (Problems caused by Distribution Shift):
▮▮▮▮⚝ 价值过高估计 (Value Overestimation):这是最常见也是最危险的问题。学习算法可能会在数据集中罕见的、但通过函数逼近(如神经网络)被意外赋予高价值的 (s, a) 对上,学习到一个虚高的 Q 值。如果学习到的策略贪婪地选择这些动作,但在真实环境中执行时,由于缺乏数据支撑,实际的回报远低于估计值,导致策略性能远低于预期,甚至崩溃。
▮▮▮▮⚝ 错误传播 (Error Propagation):由于价值估计的误差会在贝尔曼更新中传播,不准确的价值估计会影响到其他状态的价值估计,导致恶性循环。
▮▮▮▮⚝ 策略退化 (Policy Degradation):最终学习到的策略可能会在部署时表现得很差,甚至比行为策略 \(\pi_b\) 还要差。
为了克服分布偏移带来的挑战,Offline RL 算法需要采取特殊的机制来保证学习的策略或价值函数对于数据分布之外的状态-动作对不会产生过于激进或不准确的估计。
11.1.3 解决分布偏移的方法 (Methods to Address Distribution Shift)
当前解决 Offline RL 分布偏移问题的主流方法主要集中在两个方向:行为约束 (Behavior Constraint) 和 保守估计 (Conservatism)。
① 行为约束 (Behavior Constraint):
▮▮▮▮这类方法的核心思想是限制学习到的策略 \(\pi\) 不能离行为策略 \(\pi_b\) 太远,即 \(\pi\) 只能在 \(\pi_b\) 采取过或者可能性较高的状态-动作对上采取行动。
▮▮▮▮原理:通过某种方式惩罚或限制策略 \(\pi\) 在数据集 \(\mathcal{D}\) 中支持度低的区域采取行动,从而减少在 OOD (Out-of-Distribution) 数据上进行价值评估或策略优化的风险。
▮▮▮▮常用技术:
▮▮▮▮▮▮▮▮❶ KL散度惩罚 (KL Divergence Penalty):在策略优化的目标函数中加入一个项,惩罚学习策略 \(\pi\) 与行为策略 \(\pi_b\) 之间的 KL 散度 \(D_{KL}(\pi || \pi_b)\)。这鼓励 \(\pi\) 保持接近 \(\pi_b\)。
▮▮▮▮▮▮▮▮❷ 策略约束 (Policy Constraint):直接限制策略 \(\pi\) 只能选择那些在数据集 \(\mathcal{D}\) 中出现过的动作,或者确保 \(\pi(a|s) > 0\) 只发生在 \(\pi_b(a|s) > 0\) 的地方。
▮▮▮▮▮▮▮▮❸ 基于模型的约束 (Model-Based Constraint):学习一个行为模型的近似,并在策略优化时,只考虑模型认为在行为策略下可能访问的状态-动作对。
▮▮▮▮优点:直观,能够有效防止策略漂移到数据之外的区域。
▮▮▮▮缺点:学习到的策略性能上限被限制在行为策略附近,可能无法发现数据集中蕴含的、但行为策略没有展现出的更优行为。
② 保守估计 (Conservatism):
▮▮▮▮这类方法的核心思想是在对价值函数进行估计时,尤其是在 OOD 区域,采取保守的态度,即尽量低估这些区域的价值。
▮▮▮▮原理:通过修改价值函数的更新规则或目标函数,使得 Q 函数的估计值对于 OOD (s, a) 对倾向于较低的值。这样即使策略不小心在 OOD 区域采取了行动,由于对其价值是保守估计的,也不会产生虚高的期望回报,从而避免策略被误导。
▮▮▮▮常用技术:
▮▮▮▮▮▮▮▮❶ 增加惩罚项 (Adding Penalty Term):在价值函数的贝尔曼更新中加入一个惩罚项,该惩罚项与状态-动作对的 OOD 程度有关。越是 OOD 的 (s, a) 对,惩罚越大,Q 值就被压得越低。
▮▮▮▮▮▮▮▮❷ 最小化 OOD Q 值 (Minimizing OOD Q-values):显式地在目标函数中加入一项,最小化 OOD 状态-动作对的 Q 值。
▮▮▮▮▮▮▮▮❸ 使用多个 Q 函数 (Using Multiple Q-functions):学习多个 Q 函数的集合,并使用它们的最小值作为最终的 Q 值估计(类似于 Twin Delayed Deep Deterministic Policy Gradient, TD3 中的方法),这能在一定程度上降低过高估计的风险。
▮▮▮▮▮▮▮▮❹ 基于不确定性的估计 (Uncertainty-Based Estimation):显式地估计 Q 值的不确定性,并在计算目标 Q 值时,减去与不确定性相关的项。不确定性通常在 OOD 区域更高。
▮▮▮▮优点:理论上能够学习到比行为策略更好的策略,因为它不直接约束策略必须接近行为策略。
▮▮▮▮缺点:如何准确地识别 OOD 区域和量化保守程度是一个难题,过于保守可能导致学习到的策略过于谨慎,无法充分利用数据中潜在的价值。
许多最先进的 Offline RL 算法结合了行为约束和保守估计的思想。
11.1.4 主要的离线RL算法 (Major Offline RL Algorithms)
以下介绍几个具有代表性的 Offline RL 算法:
① Batch-Constrained Q-learning (BCQ):
▮▮▮▮BCQ 是早期有影响力的 Offline RL 算法之一,它结合了行为克隆和基于值的学习,并引入了行为约束。
▮▮▮▮核心思想:为了解决数据集外动作的价值过高估计问题,BCQ 不会简单地取 \(\max_a Q(s, a)\) 来进行价值更新,而是只考虑那些在给定状态 \(s\) 下,"可能"由行为策略采取的动作。
▮▮▮▮实现方式:
▮▮▮▮▮▮▮▮❶ 训练一个生成模型(如变分自编码器 VAE)来建模行为策略在状态 \(s\) 下的动作分布 \(P(a|s)\)。
▮▮▮▮▮▮▮▮❷ 对于一个状态 \(s\),生成一批可能的动作 \(a_1, a_2, \dots, a_k\)(例如从 VAE 中采样或通过生成扰动得到)。
▮▮▮▮▮▮▮▮❸ 训练一个 Q 函数 \(Q(s, a)\)。
▮▮▮▮▮▮▮▮❹ 在计算目标 Q 值时,不是计算 \(\max_a Q(s, a)\),而是计算 \(\max_{a_i \text{ generated}} \{ Q(s, a_i) + \lambda |a_i - \text{VAE.decode}(\text{VAE.encode}(a_i))| \}\),其中 \(\lambda\) 是一个权重,用于惩罚与原始动作 \(a_i\) 重构误差较大的动作(即鼓励选择那些容易被 VAE 生成的动作)。这本质上是将最大化限制在一个由生成模型和 Q 函数共同筛选出的动作集合中。
▮▮▮▮通过这种方式,BCQ 约束了智能体在选择动作时要接近行为策略的分布,从而缓解了分布偏移问题。
② Conservative Q-learning (CQL):
▮▮▮▮CQL 是一种典型的基于保守估计的算法。
▮▮▮▮核心思想:在学习 Q 函数时,显式地惩罚 OOD 动作的 Q 值,使得学习到的 Q 函数对于数据集中未充分覆盖的区域给出较低的估计。
▮▮▮▮损失函数 (Simplified):CQL 的 Q 函数损失函数在标准 Q 学习的 TD 误差基础上,增加了一个正则化项:
▮▮▮▮\[ L(Q) = \mathbb{E}_{(s, a, r, s') \sim \mathcal{D}} \left[ (Q(s, a) - y)^2 \right] + \alpha \cdot \mathbb{E}_{s \sim \mathcal{D}} \left[ \log \sum_{\tilde{a}} \exp(Q(s, \tilde{a})) - \mathbb{E}_{a \sim \pi_b} [Q(s, a)] \right] \]
▮▮▮▮其中,\(y\) 是 TD 目标值。正则化项的第一部分 \( \log \sum_{\tilde{a}} \exp(Q(s, \tilde{a})) \) 鼓励 Q 函数对所有可能动作的最大值 \( \max_{\tilde{a}} Q(s, \tilde{a}) \) 很高,而第二部分 \( \mathbb{E}_{a \sim \pi_b} [Q(s, a)] \) 鼓励 Q 函数对数据集中实际采取的动作 \(a\) 的值很高。整个正则化项 \( \log \sum_{\tilde{a}} \exp(Q(s, \tilde{a})) - \mathbb{E}_{a \sim \pi_b} [Q(s, a)] \) 实际上是惩罚 "OOD 动作的 Q 值比数据内动作的 Q 值高" 的情况,从而压低 OOD 动作的 Q 值。参数 \(\alpha > 0\) 控制了保守程度。
▮▮▮▮CQL 通过修改 Q 函数的损失函数,强制其在数据分布之外的区域保持保守,是目前 Offline RL 领域非常流行和有效的算法。
③ Implicit Q-learning (IQL):
▮▮▮▮IQL 提出了一种 decoupling (解耦) 的思想,将价值学习和策略学习分开,避免了传统 Actor-Critic 方法中策略依赖于 Q 函数、Q 函数又依赖于下一状态策略带来的累积误差问题。
▮▮▮▮核心思想:
▮▮▮▮▮▮▮▮❶ 学习一个保守的 Q 函数 \(Q(s, a)\) (例如使用类似于 CQL 的保守更新)。
▮▮▮▮▮▮▮▮❷ 学习一个价值函数 \(V(s)\),通过期望分位数回归 (Expectile Regression) 来预测 Q 值在数据集中的某个分位数。具体来说,\(V(s)\) 的学习目标是使得对于数据集中的状态 \(s_i\) 和动作 \(a_i\),\(V(s_i)\) 能够预测 \(Q(s_i, a_i)\) 的某个较高分位数(例如0.7或0.8分位数),而不是期望值。这使得 \(V(s)\) 能够代表在状态 \(s\) 下采取数据集中较优动作所能获得的价值水平,而避免了对未见动作的依赖。
▮▮▮▮▮▮▮▮❸ 学习策略 \(\pi(a|s)\) 时,不是使用 Q 值的argmax,而是使用 Softmax 或指数形式来加权数据集中的动作。策略 \(\pi(a|s)\) 的目标是最大化 \(\mathbb{E}_{(s,a) \sim \mathcal{D}} [\log \pi(a|s) \cdot \exp(\beta (Q(s,a) - V(s)))]\)。这个目标鼓励策略在给定状态 \(s\) 下,更倾向于选择数据集中那些 \(Q(s,a)\) 高于 \(V(s)\) 的动作。这里的 \(V(s)\) 起到了一个基线的作用,\(Q(s,a) - V(s)\) 可以看作是优势函数(Advantage Function)的变体。
▮▮▮▮IQL 通过这种方式,避免了对 OOD 动作进行显式评估或最大化,而是利用数据集中的 (s, a) 对及其学习到的保守 Q/V 值来指导策略学习,从而提高了 Offline RL 的稳定性。
还有许多其他的 Offline RL 算法,如 TD3+BC, PLAS, SPOT 等,它们通常结合了不同的行为约束、保守估计或模型学习技术来解决分布偏移问题。选择合适的算法取决于数据集的特性、任务类型以及对性能和稳定性的要求。
11.2 模仿学习 (Imitation Learning)
11.2.1 模仿学习的定义与问题设置 (Definition and Problem Setting of Imitation Learning)
① 定义 (Definition):
▮▮▮▮模仿学习 (Imitation Learning, IL) 是一种机器学习范式,旨在让智能体通过观察专家(通常是人类或其他高性能智能体)的演示来学习行为策略。与强化学习需要设计奖励函数不同,模仿学习的核心输入是专家的轨迹或行为序列。智能体尝试学习一个策略,使得其行为在给定状态下与专家的行为相似。
▮▮▮▮模仿学习可以看作是一种从专家数据中学习控制策略的方法。
② 问题设置 (Problem Setting):
▮▮▮▮给定一个由专家生成的演示数据集 \(\mathcal{D}_E = \{ \tau_1, \tau_2, \dots, \tau_M \}\),其中每一条轨迹 \(\tau_j = (s_{j,0}, a_{j,0}, s_{j,1}, a_{j,1}, \dots, s_{j,T_j}, a_{j,T_j})\) 包含了专家在环境中的状态-动作序列。通常假设专家策略是某种形式的最优策略,或者至少是满足任务要求的策略。
▮▮▮▮目标:从 \(\mathcal{D}_E\) 中学习一个智能体策略 \(\pi(a|s)\),使得智能体部署后在环境中遵循该策略执行任务时,其表现接近专家的表现。
③ 与强化学习的关系 (Relationship with Reinforcement Learning):
▮▮▮▮⚝ IL 可以看作是 RL 的一种替代或补充。在奖励函数难以设计或专家演示数据容易获取时,IL 是一个更好的选择。
▮▮▮▮⚝ IL 回避了 RL 中的信用分配问题,因为专家演示直接提供了在每个状态下应该采取的行动。
▮▮▮▮⚝ 然而,纯粹的 IL 方法通常无法超越专家性能,而 RL 在理论上可以发现比人类专家更优的策略。
▮▮▮▮⚝ 一些高级的 IL 方法(如逆强化学习 Inverse Reinforcement Learning, IRL)尝试从专家演示中推断出专家的奖励函数,然后再用 RL 方法求解,这结合了 IL 和 RL。GAIL 就是一种基于 IRL 的模仿学习方法。
11.2.2 行为克隆 (Behavioral Cloning)
① 原理 (Principle):
▮▮▮▮行为克隆 (Behavioral Cloning, BC) 是最简单直接的模仿学习方法。它将模仿学习问题建模为一个监督学习问题。
▮▮▮▮过程:将专家数据集 \(\mathcal{D}_E\) 中的每个状态-动作对 \((s_t, a_t)\) 视为一个独立的训练样本,其中状态 \(s_t\) 是输入特征,动作 \(a_t\) 是对应的标签。训练一个映射函数或策略模型(通常是神经网络)\(\pi_\theta(a|s)\) 来预测在给定状态 \(s\) 下专家会采取的动作 \(a\)。
▮▮▮▮对于离散动作空间,这通常是一个分类问题;对于连续动作空间,这通常是一个回归问题。
▮▮▮▮损失函数:常用的损失函数包括:
▮▮▮▮▮▮▮▮❶ 交叉熵损失 (Cross-Entropy Loss):适用于离散动作,最小化 \(\mathbb{E}_{(s,a) \sim \mathcal{D}_E} [-\log \pi_\theta(a|s)]\)。
▮▮▮▮▮▮▮▮❷ 均方误差损失 (Mean Squared Error Loss, MSE):适用于连续动作,最小化 \(\mathbb{E}_{(s,a) \sim \mathcal{D}_E} [\| \pi_\theta(s) - a \|^2]\)。
② 局限性 (Limitations):
▮▮▮▮尽管简单,BC 存在一个核心问题:协变量偏移 (Covariate Shift)。
▮▮▮▮协变量偏移:BC 假设训练数据(专家状态分布)和测试数据(学习策略遇到的状态分布)是同分布的。然而,在实际部署时,如果学习到的策略 \(\pi_\theta\) 由于任何微小的误差,在一个状态 \(s\) 下采取了一个与专家不同的动作 \(a'\),智能体可能会进入一个专家轨迹中从未出现过的新状态 \(s'\)。由于 BC 只在专家数据分布上训练,它可能没有在 \(s'\) 或其邻近状态上见过专家行为,因此在 \(s'\) 下采取的行动可能会进一步偏离专家轨迹,导致误差累积,最终智能体进入完全陌生的、无法处理的状态,导致任务失败。这就像一个刚学会开车的 L 牌司机,在正常路况下能模仿教练的操作,但一旦因为小失误偏离了预定的路线,进入一个训练中没见过的情景(比如突然施工改道),就可能不知所措。
▮▮▮▮其他局限性:
▮▮▮▮⚝ 无法超越专家 (Cannot Outperform Expert):BC 只能复制专家行为,无法学习到比专家更优的策略。
▮▮▮▮⚝ 需要大量多样化数据 (Requires Large and Diverse Data):为了缓解协变量偏移,需要专家数据覆盖尽可能多的状态空间,这在复杂环境中很难做到。
11.2.3 数据集聚合 (Dataset Aggregation, DAgger)
① 原理 (Principle):
▮▮▮▮数据集聚合 (Dataset Aggregation, DAgger) 是一种解决 BC 协变量偏移问题的在线模仿学习算法。其核心思想是通过迭代地收集由当前学习策略访问的状态数据,并获取专家在这些状态下的正确动作,然后将这些新的数据添加到训练集中,从而使训练数据分布逐渐接近学习策略的真实访问分布。
② 算法流程 (Algorithm Steps):
▮▮▮▮DAgger 算法通常按以下步骤进行:
▮▮▮▮▮▮▮▮❶ 专家提供一个初始的演示数据集 \(\mathcal{D}_1\)。
▮▮▮▮▮▮▮▮❷ 使用 BC 在 \(\mathcal{D}_1\) 上训练一个初始策略 \(\hat{\pi}_1\)。
▮▮▮▮▮▮▮▮❸ 将当前策略 \(\hat{\pi}_k\) 部署到环境中,让其自主运行并记录访问到的状态序列 \(\{s_{k, t}\}\)。
▮▮▮▮▮▮▮▮❹ 对于策略 \(\hat{\pi}_k\) 访问到的每一个状态 \(s_{k, t}\),查询专家,获取专家在该状态下应该采取的动作 \(a_{k, t} = \pi_E(s_{k, t})\)。
▮▮▮▮▮▮▮▮❺ 将新的状态-动作对 \((s_{k, t}, a_{k, t})\) 添加到聚合的数据集 \(\mathcal{D}_{k+1} = \mathcal{D}_k \cup \{ (s_{k, t}, a_{k, t}) \}\) 中。
▮▮▮▮▮▮▮▮❻ 使用 BC 在聚合的数据集 \(\mathcal{D}_{k+1}\) 上训练更新的策略 \(\hat{\pi}_{k+1}\)。
▮▮▮▮▮▮▮▮❼ 重复步骤 3-6,直到策略收敛或达到预设的迭代次数。
③ 优势与局限性 (Advantages and Limitations):
▮▮▮▮优势:通过在学习策略的访问分布上收集专家标签,DAgger 有效地缓解了协变量偏移问题,理论上可以收敛到一个与专家策略行为非常接近的策略(如果专家在所有状态下都能提供最优行为)。
▮▮▮▮局限性:
▮▮▮▮⚝ 需要在线专家交互 (Requires Online Expert Interaction):DAgger 需要在训练过程中多次查询专家,这在专家不可用或查询成本很高的情况下难以应用。
▮▮▮▮⚝ 效率问题 (Efficiency):每次迭代都需要部署策略、收集数据并重新训练模型,效率相对较低。
11.2.4 生成对抗模仿学习 (Generative Adversarial Imitation Learning, GAIL)
① 原理 (Principle):
▮▮▮▮生成对抗模仿学习 (Generative Adversarial Imitation Learning, GAIL) 是一种更复杂的模仿学习方法,它借鉴了生成对抗网络 (Generative Adversarial Network, GAN) 的思想,并与逆强化学习 (Inverse Reinforcement Learning, IRL) 的概念联系紧密。GAIL 的目标是学习一个策略,使得其产生的数据分布(状态-动作对的联合分布)与专家演示数据分布尽可能接近,而无需显式地恢复专家的奖励函数。
② 框架 (Framework):
▮▮▮▮GAIL 框架包含两个核心部分:
▮▮▮▮▮▮▮▮❶ 生成器 (Generator):即智能体的策略 \(\pi_\theta(a|s)\)。生成器的目标是学习一个策略,使其生成的轨迹看起来像专家轨迹。它通过接收判别器提供的信号作为“奖励”来更新策略。
▮▮▮▮▮▮▮▮❷ 判别器 (Discriminator):一个二元分类器 \(D_\phi(s, a)\),它试图区分输入的状态-动作对是来自专家数据集 \(\mathcal{D}_E\) 还是来自生成器(当前策略)生成的轨迹。判别器的输出可以解释为输入 (s, a) 对来自专家的概率。
③ 训练过程 (Training Process):
▮▮▮▮GAIL 的训练过程是一个对抗过程,生成器和判别器交替优化:
▮▮▮▮▮▮▮▮❶ 训练判别器 (Train Discriminator):固定生成器 \(\pi_\theta\),使用专家数据 \((s_E, a_E)\) 和生成器生成的数据 \((s_G, a_G)\) 来训练判别器 \(D_\phi\),使其能够区分两类数据。判别器的目标是最大化区分能力,例如最小化交叉熵损失:
▮▮▮▮▮▮▮▮\[ L(D) = -\mathbb{E}_{(s_E, a_E) \sim \mathcal{D}_E} [\log D_\phi(s_E, a_E)] - \mathbb{E}_{(s_G, a_G) \sim \pi_\theta} [\log (1 - D_\phi(s_G, a_G))] \]
▮▮▮▮▮▮▮▮❷ 训练生成器 (Train Generator):固定判别器 \(D_\phi\),训练生成器 \(\pi_\theta\) 生成能欺骗判别器的数据。判别器的输出 \(D_\phi(s, a)\) 可以被用作策略学习的奖励信号。生成器的目标是最大化轨迹的总“奖励”,例如:
▮▮▮▮▮▮▮▮\[ \max_\theta \mathbb{E}_{(s, a) \sim \pi_\theta} [\log D_\phi(s, a)] \]
▮▮▮▮▮▮▮▮这个奖励函数 \(\tilde{r}(s, a) = \log D_\phi(s, a)\) 鼓励策略生成判别器认为是专家的 (s, a) 对。生成器可以使用标准的强化学习算法(如策略梯度或 Actor-Critic)来优化带这个奖励函数的策略。
▮▮▮▮迭代重复步骤 1 和 2,直到收敛。
④ 优势与局限性 (Advantages and Limitations):
▮▮▮▮优势:
▮▮▮▮⚝ 无需奖励函数设计 (No Reward Function Design):直接从专家数据中学习策略,避免了复杂的奖励函数设计。
▮▮▮▮⚝ 潜在地学习复杂奖励 (Potentially Learn Complex Rewards):判别器隐式地学习了一个区分专家和非专家行为的“奖励”函数,这可能比手动设计的奖励函数更复杂和有效。
▮▮▮▮⚝ 可能处理高维输入 (Can Handle High-Dimensional Inputs):结合深度学习,GAIL 可以处理图像等高维状态输入。
▮▮▮▮局限性:
▮▮▮▮⚝ 训练不稳定 (Training Instability):继承了 GANs 训练不稳定的问题,可能存在模式崩溃 (Mode Collapse) 等现象。
▮▮▮▮⚝ 需要在线环境交互 (Requires Online Environment Interaction):在生成器(策略)训练阶段,通常需要与环境交互来采样轨迹,这限制了其在一些高成本环境中的应用。
▮▮▮▮⚝ 收敛性与评估困难 (Convergence and Evaluation Difficulty):判断对抗训练是否收敛以及如何评估学习到的策略的质量比 BC 更具挑战性。
▮▮▮▮⚝ 无法超越专家 (Cannot Outperform Expert):与 BC 类似,GAIL 的目标是匹配专家行为分布,理论上无法超越专家性能。
总体而言,Offline RL 和 Imitation Learning 是互补的技术。Offline RL 专注于在无环境交互下利用已有数据学习最优策略,核心挑战是分布偏移。Imitation Learning 则专注于从专家演示中学习行为,回避了奖励设计,核心挑战是协变量偏移(对于 BC)或对抗训练稳定性(对于 GAIL)。在实际应用中,可以根据具体问题、数据可用性以及在线交互成本来选择合适的方法,甚至结合两者的思想来构建更强大的学习系统。🛣️🚗🕹️
12. 深度强化学习的应用案例分析 (Case Studies of Deep Reinforcement Learning Applications)
在本章中,我们将离开相对抽象的理论和算法讨论,将目光投向深度强化学习 (Deep Reinforcement Learning, DRL) 如何在真实世界和复杂环境中大放异彩。通过分析一系列具有里程碑意义的应用案例,您将亲眼见证 DRL 的强大能力,了解它是如何解决传统方法难以应对的难题,并深刻理解其在不同领域落地时需要面对的特定挑战。本章旨在弥合理论与实践之间的鸿沟,激发您将 DRL 应用于自己感兴趣问题的灵感。
12.1 游戏领域 (Gaming Domain)
游戏环境因其多样性、明确的奖励信号和可控的实验条件,一直是强化学习 (Reinforcement Learning, RL) 和深度强化学习 (DRL) 研究的天然试验场。从简单的棋盘游戏到复杂的电子竞技,DRL 在游戏领域取得了诸多令人瞩目的突破,甚至在许多方面超越了人类顶尖玩家的水平。
12.1.1 围棋 (Go) - AlphaGo 系列
提到 DRL 在游戏领域的成就,AlphaGo 无疑是最具代表性的案例。围棋拥有极其庞大的状态空间和复杂的博弈性质,曾被认为是人工智能 (Artificial Intelligence, AI) 难以企及的“最后一个堡垒”。
① 挑战: 围棋的状态空间远超国际象棋,暴力搜索几乎不可能;人类职业棋手依赖于直觉和对“势”的判断,难以用传统编程方式捕捉。
② AlphaGo 的解决方案: AlphaGo 结合了深度学习 (Deep Learning) 和蒙特卡洛树搜索 (Monte Carlo Tree Search, MCTS)。
▮▮▮▮ⓒ 策略网络 (Policy Network): 使用深度卷积神经网络 (Convolutional Neural Network, CNN) 输入棋盘状态,输出下一步棋的概率分布。这相当于模拟了人类棋手的“直觉”,快速排除大量不可能的走法,聚焦于有希望的区域。
▮▮▮▮ⓓ 价值网络 (Value Network): 使用另一个深度 CNN 输入棋盘状态,输出当前局面的胜率估计。这用于评估搜索树中某个节点的潜在价值,指导 MCTS 的方向。
▮▮▮▮ⓔ 蒙特卡洛树搜索 (MCTS): 结合策略网络和价值网络进行模拟和评估。MCTS 是一种启发式搜索算法,它通过模拟随机对局(或由策略网络引导的对局)来评估当前及未来可能局面的价值。
⑥ 训练过程:
▮▮▮▮ⓖ 最初版本的 AlphaGo (Nature 2016) 通过监督学习 (Supervised Learning, SL) 模仿人类专业棋谱进行策略网络的预训练,然后通过与自身对弈进行强化学习 (RL) 微调策略网络和训练价值网络。
▮▮▮▮ⓗ AlphaGo Zero (Nature 2017) 则完全放弃了人类棋谱,仅凭围棋规则,从零开始通过自我对弈进行强化学习。它使用单一神经网络同时输出策略和价值,并显著改进了 MCTS。这种纯自学的模式被证明更为强大和通用。
▮▮▮▮ⓘ AlphaZero 进一步将 AlphaGo Zero 的思想推广到国际象棋和将棋等其他棋类游戏,仅凭规则,无需任何领域知识,短时间内达到了超越人类最强程序和棋手的水平。
⑩ 意义: AlphaGo 证明了 DRL 结合搜索算法可以在复杂决策任务中达到超人类水平,极大地推动了 AI 领域的发展和公众对 AI 能力的认知。
12.1.2 雅达利游戏 (Atari Games)
在 AlphaGo 之前,DeepMind 的 DQN (Deep Q-Network) 在解决雅达利 2600 视频游戏方面取得了突破。雅达利游戏通常通过像素输入进行交互,需要智能体 (Agent) 从原始图像中学习策略。
① 挑战: 雅达利游戏的状态空间是高维的像素信息;许多游戏存在延迟奖励 (Delayed Reward);需要智能体具备一定的泛化能力以应对不同游戏。
② DQN 的解决方案:
▮▮▮▮ⓒ 端到端学习: 直接输入原始像素作为状态,使用深度 CNN 作为函数逼近器 (Function Approximator) 来估计动作价值函数 \(Q(s, a)\)。
▮▮▮▮ⓓ 经验回放 (Experience Replay): 将智能体与环境交互产生的样本 \((s_t, a_t, r_t, s_{t+1})\) 存储在经验回放缓冲区 (Experience Replay Buffer) 中,训练时从缓冲区中随机抽取批量样本进行学习。这打破了样本之间的时序相关性,提高了训练效率和稳定性。
▮▮▮▮ⓔ 目标网络 (Target Network): 在计算 Q-学习 (Q-Learning) 的目标值 \(r_{t+1} + \gamma \max_{a'} Q(s_{t+1}, a')\) 时,使用一个独立的、周期性更新的网络(目标网络)来计算 \(Q(s_{t+1}, a')\)。这使得训练目标更加稳定,避免了“追逐自己的尾巴”的问题。
⑥ 成就: DQN 在多个雅达利游戏上达到了人类专家水平,甚至在某些游戏上超越了人类。后来的 Double DQN、Prioritized Experience Replay、Dueling DQN、Rainbow 等改进算法进一步提升了性能和稳定性。
⑦ 意义: DQN 是 DRL 领域的重要里程碑,它成功地将深度学习应用于强化学习,解决了处理高维感知输入和训练不稳定等核心问题,为后续 DRL 的发展奠定了基础。
12.1.3 电子竞技 (Esports) - Dota 2 与 StarCraft II
现代电子竞技游戏如 Dota 2 和 StarCraft II 具有高度复杂的规则、巨大的状态-动作空间、长远的游戏目标、不完美信息以及多智能体 (Multi-Agent) 协作与竞争等特性,对 DRL 提出了更高难度的挑战。
① OpenAI Five (Dota 2):
▮▮▮▮⚝ 游戏特性: 5v5 团队合作与对抗,实时策略,巨大且部分可观察的状态空间(需要处理游戏内各种单位、技能、地图信息),连续的动作空间(移动到某点、攻击某单位、使用某技能等),长期的游戏时长和延迟奖励。
▮▮▮▮⚝ 解决方案: OpenAI Five 使用了基于近端策略优化 (Proximal Policy Optimization, PPO) 的大规模分布式训练系统。每个智能体使用循环神经网络 (Recurrent Neural Network, RNN) 处理序列化的游戏信息,并进行协作与对抗的学习。通过海量的自我对弈数据进行训练。
▮▮▮▮⚝ 成就: OpenAI Five 最终在限制英雄池的情况下,击败了人类顶尖职业战队。
② AlphaStar (StarCraft II):
▮▮▮▮⚝ 游戏特性: 1v1 对抗,实时策略,需要同时进行资源管理、基地建设、单位控制、侦察等多种任务,不完美信息,极大的动作空间(单位选择、目标、指令类型),多尺度的决策(宏观战略、微观操作)。
▮▮▮▮⚝ 解决方案: AlphaStar 使用了一个复杂的 Actor-Critic 架构,结合了 Transformer 模块处理大规模游戏信息。训练时采用多智能体学习和进化算法的思想,构建了一个多智能体联盟 (League) 进行持续的自我对弈和策略演化。还引入了对人类玩家 APM (Actions Per Minute) 的限制,使其行为更接近人类。
▮▮▮▮⚝ 成就: AlphaStar 在 StarCraft II 中达到了宗师级水平,击败了多位人类职业选手。
③ 意义: 这些案例表明 DRL 能够处理极高复杂度的实时策略游戏,需要结合大规模分布式训练、先进的网络架构以及针对特定游戏特性的算法设计。它们也推动了多智能体强化学习 (Multi-Agent Reinforcement Learning, MARL) 等领域的发展。
12.2 机器人控制 (Robotics Control)
机器人控制是 DRL 的另一个重要应用领域。教会机器人在物理世界中执行复杂任务,如抓取、行走、操作工具等,是具身智能 (Embodied AI) 的核心问题。与游戏环境不同,机器人控制面临更多的挑战,如连续的状态和动作空间、物理世界的随机性和不确定性、安全性以及真实世界数据获取的高成本。
12.2.1 机械臂操作与抓取 (Robot Manipulation and Grasping)
教会机械臂进行精确的操作和可靠的抓取是工业自动化和服务机器人的关键能力。
① 挑战: 机械臂具有多关节、连续的运动空间;抓取物体需要精确的视觉感知和力控制;环境和物体位置可能存在不确定性;需要在保证安全的前提下进行学习。
② DRL 解决方案:
▮▮▮▮⚝ 通常使用基于策略的方法 (Policy-Based Methods) 或 Actor-Critic 方法来处理连续动作空间(例如,控制关节角度或末端执行器速度)。DDPG (Deep Deterministic Policy Gradient), SAC (Soft Actor-Critic) 等算法常用于此。
▮▮▮▮⚝ 利用深度学习从相机图像中提取视觉特征作为状态输入。
▮▮▮▮⚝ 在仿真环境中进行大规模训练(如使用 MuJoCo, Isaac Gym 等物理仿真器),然后通过领域随机化 (Domain Randomization) 或域适应 (Domain Adaptation) 技术将学习到的策略迁移到真实机器人上 (Sim-to-Real Transfer)。
▮▮▮▮⚝ 奖励函数设计需要精细,通常包括任务完成奖励、惩罚碰撞或超出关节限制等。
③ 案例: Google Brain 的抓取项目 (e.g., QT-Opt) 使用大规模分布式 DRL 训练机械臂进行各种物体的抓取。OpenAI 的 Dactyl 项目教会机械手灵巧地转动魔方。
④ 意义: DRL 使得机器人能够从试错中学习复杂的非线性控制策略,无需人工编程复杂的规则,提高了机器人的灵活性和适应性。Sim-to-Real 成为解决真实世界数据稀缺问题的关键技术。
12.2.2 步态控制 (Locomotion Control)
让双足或多足机器人实现稳定、灵活的行走、跑步、跳跃等步态控制是一个长期存在的难题。
① 挑战: 高维、连续的状态(关节角度、角速度、本体加速度等)和动作空间(关节力矩或位置);需要处理复杂的动力学和接触物理;地面摩擦、障碍物等环境因素增加不确定性;需要具备对扰动的鲁棒性。
② DRL 解决方案:
▮▮▮▮⚝ 利用基于策略或 Actor-Critic 算法直接学习从本体状态到关节指令的映射策略。
▮▮▮▮⚝ 奖励函数设计需要平衡前进速度、方向、步态稳定性、能量消耗等多个目标。
▮▮▮▮⚝ 同样 heavily rely on 仿真环境进行训练,并利用 Sim-to-Real 技术。引入噪声、随机扰动等可以提高策略在真实世界中的鲁棒性。
③ 案例: DeepMind 的一系列工作展示了 DRL 在模拟和真实四足、双足机器人上的步态控制能力,包括地形适应、跳跃等复杂动作。ANYbotics 的 ANYmal 机器人利用 DRL 学习在复杂地形上行走。
④ 意义: DRL 为机器人步态控制提供了一种端到端的学习方法,能够生成比传统方法更自然、更灵活且对环境更具适应性的步态。
12.2.3 多机器人协作 (Multi-Robot Coordination)
在仓储、探索、救援等场景中,多个机器人需要协同完成任务。这引入了多智能体强化学习 (MARL) 的挑战。
① 挑战: 非平稳环境(其他智能体的行为在变化);联合动作空间巨大;信用分配困难(如何确定每个智能体的贡献);通信与协调。
② DRL 解决方案:
▮▮▮▮⚝ 应用 MARL 算法,例如集中式训练分布式执行 (Centralized Training Decentralized Execution, CTDE) 框架下的 QMIX、VDN 或 MADDPG 等。
▮▮▮▮⚝ 设计能够促进协作的奖励信号,或者引入显式的通信机制。
▮▮▮▮⚝ 可以通过自博弈 (Self-Play) 或与多种不同策略的智能体进行交互来提高协作或竞争能力。
③ 案例: 多机器人物流分拣、多无人机编队飞行、机器人足球等。
④ 意义: DRL 为解决复杂的多机器人协作任务提供了一种强大的学习范式,使得机器人群体能够通过学习涌现出复杂的协作行为。
12.3 自动驾驶与智能交通 (Autonomous Driving and Intelligent Transportation)
自动驾驶和智能交通系统是 DRL 具有巨大应用潜力的领域,涉及到车辆的感知、决策、规划与控制,以及整个交通系统的优化。
12.3.1 自动驾驶决策与路径规划 (Autonomous Driving Decision Making and Path Planning)
在复杂的交通环境中,自动驾驶车辆需要实时做出各种决策,如变道、超车、避障、遵守交通规则等,并规划安全、高效的行驶路径。
① 挑战: 交通环境动态变化、其他车辆和行人的行为不确定;需要同时考虑安全性和效率;决策空间巨大且复杂;感知数据噪声大;存在罕见但高风险的边缘案例。
② DRL 解决方案:
▮▮▮▮⚝ 将驾驶任务建模为序列决策问题,智能体是自动驾驶车辆,环境是交通场景,状态是车辆自身和周围环境的信息(传感器数据、交通规则等),动作是车辆的控制指令(加减速、转向、变道等),奖励函数设计需要同时考虑行驶效率(到达目的地时间)、安全性(避免碰撞)、舒适性(平稳驾驶)和合规性(遵守交通规则)。
▮▮▮▮⚝ 通常采用 Actor-Critic 方法处理连续的控制动作。
▮▮▮▮⚝ 在高度逼真的仿真环境中(如 Carla, SUMO, Waymo Open Sim)进行大规模训练,以覆盖尽可能多的交通场景和交互模式。Sim-to-Real 迁移同样重要。
▮▮▮▮⚝ 多智能体 RL 方法也适用于建模自动驾驶车辆与其他交通参与者之间的交互。
③ 案例: 使用 DRL 学习高速公路变道策略、交叉路口决策、拥堵路段驾驶策略等。一些研究探索将 DRL 用于端到端的自动驾驶控制,直接从传感器输入学习控制输出。
④ 意义: DRL 能够学习到比基于规则或传统优化方法更灵活、更具适应性的驾驶策略,尤其在复杂交互场景下表现出优势。
12.3.2 交通信号控制 (Traffic Signal Control)
优化城市交通信号配时可以显著缓解交通拥堵,提高通行效率。这也可以被建模为一个 DRL 问题。
① 挑战: 交通流量动态变化且难以预测;多个交叉口之间存在复杂的关联;需要考虑整体交通系统的效率;奖励信号(如总等待时间、吞吐量)往往是延迟的。
② DRL 解决方案:
▮▮▮▮⚝ 将每个交叉口的信号控制器视为一个智能体(可以是单智能体或多智能体系统)。状态可以包括各进口道的车辆排队长度、等待时间等。动作是选择当前的信号相位(例如,东西直行绿灯)。奖励可以是整个区域的车辆总等待时间减少量。
▮▮▮▮⚝ 采用适合离散动作空间的 DRL 算法,如 DQN 或基于策略的方法。多智能体 RL 算法(如 IPPO, MADDPG)适用于协调多个交叉口的信号。
▮▮▮▮⚝ 在交通流仿真软件(如 SUMO)中进行训练和评估。
③ 案例: 使用 DRL 学习在不同交通流量模式下优化信号配时,与传统方法(如定长配时、感应控制)相比通常能取得更好的效果。
④ 意义: DRL 能够在线学习和适应不断变化的交通状况,实现更智能、更动态的交通信号控制,为缓解城市交通拥堵提供了新的途径。
12.4 推荐系统与智能决策 (Recommendation Systems and Intelligent Decision Making)
在商业领域,DRL 可以应用于需要进行序列决策以优化长期目标的场景,例如个性化推荐、广告投放、库存管理等。
12.4.1 个性化推荐系统 (Personalized Recommendation Systems)
传统的推荐系统侧重于单次推荐的准确性(例如,用户是否点击了推荐的商品),而 DRL 可以用来优化用户在平台上的长期互动和价值(例如,用户总共购买了多少商品,总停留时长)。
① 挑战: 用户的兴趣和行为是动态变化的;用户的反馈(奖励)通常是延迟的(例如,用户购买商品可能发生在多次推荐之后);状态和动作空间巨大(海量用户、海量商品);需要平衡探索新的推荐机会和利用已知的用户偏好。
② DRL 解决方案:
▮▮▮▮⚝ 将用户视为环境,推荐系统视为智能体。状态可以是用户的历史行为序列、人口统计学信息、当前的上下文信息等。动作是向用户推荐某个或某组商品。奖励可以是用户的即时反馈(点击、收藏)或延迟反馈(购买、停留时长)。
▮▮▮▮⚝ 利用序列模型(如 RNN, Transformer)处理用户的历史行为,构建用户状态表示。采用适合离散动作空间(商品 ID)的 DRL 算法,如 DQN 或其变体,或者基于策略的方法。
▮▮▮▮⚝ 需要解决离线数据 (Offline Data) 带来的分布偏移 (Distribution Shift) 问题,离线强化学习 (Offline Reinforcement Learning) 技术在此有重要作用。
③ 案例: 应用 DRL 优化新闻推荐的点击率和用户活跃度、电商平台的商品推荐序列以提高总销售额或用户粘性、短视频平台的视频推荐以最大化用户观看时长。
④ 意义: DRL 使得推荐系统能够从优化短期点击转向优化长期用户价值,更符合平台的商业目标。它能够学习到更精细化的用户互动策略。
12.4.2 广告投放与资源调度 (Advertising Placement and Resource Scheduling)
DRL 可以应用于需要动态分配资源或进行实时竞价的场景,以最大化收益或效率。
① 挑战: 市场环境和竞争对手策略动态变化;需要实时做出决策;资源有限且需要在多个选项之间权衡;奖励信号是延迟的商业收益。
② DRL 解决方案:
▮▮▮▮⚝ 状态可以包括当前的市场状况、广告库存、历史投放效果等。动作可以是决定在哪些渠道投放广告、投放预算、广告创意选择,或者决定将有限的计算资源分配给哪些任务等。奖励是实际获得的商业收益或系统效率。
▮▮▮▮⚝ 同样需要处理动态环境和延迟奖励。
③ 案例: 在线广告平台使用 DRL 优化广告位竞价策略或广告创意推荐;云计算平台使用 DRL 优化虚拟机或容器的资源分配,提高资源利用率;电网调度使用 DRL 优化能源分配。
④ 意义: DRL 能够学习到复杂的动态资源分配和竞价策略,以应对高度动态和竞争激烈的环境,从而提高商业效率和收益。
12.5 其他前沿应用 (Other Frontier Applications)
DRL 的应用范围正在不断扩展到更多领域,展现出解决各种复杂决策问题的潜力。
12.5.1 金融领域 (Finance Domain)
① 案例:
▮▮▮▮⚝ 量化交易 (Algorithmic Trading): 使用 DRL 学习基于历史市场数据和当前状况的买卖策略,以最大化投资组合价值。需要处理市场波动性、噪声和奖励延迟等挑战。
▮▮▮▮⚝ 投资组合管理 (Portfolio Management): DRL 可以学习如何动态调整不同资产的配置比例,以平衡风险和收益。
② 挑战: 金融市场高度随机且非平稳;数据信噪比低;过度拟合 (Overfitting) 风险高;需要考虑交易成本和风险管理。
③ 意义: DRL 为金融决策提供了数据驱动的学习方法,有望发现传统模型难以捕捉的市场模式。
12.5.2 医疗健康 (Healthcare)
① 案例:
▮▮▮▮⚝ 个性化治疗方案推荐 (Personalized Treatment Recommendation): DRL 可以根据患者的动态生理数据和治疗反馈,学习推荐最优的药物剂量或治疗方案序列,以最大化患者的长期健康收益。
▮▮▮▮⚝ 药物研发 (Drug Discovery): DRL 可以用于优化分子设计或实验流程。
② 挑战: 医疗数据通常有限、异质性高;需要处理不确定性和风险;伦理和安全问题极为重要;延迟奖励明显(治疗效果可能需要很长时间才能显现)。
③ 意义: DRL 为医疗决策提供了新的智能化工具,有望实现更精准和个性化的治疗。
12.5.3 自然语言处理 (Natural Language Processing, NLP)
① 案例:
▮▮▮▮⚝ 对话系统 (Dialogue Systems): 使用 DRL 训练对话智能体,使其能够与用户进行流畅、有意义且目标导向的对话。奖励可以基于用户满意度、任务完成率等。
▮▮▮▮⚝ 机器翻译 (Machine Translation): 可以将翻译过程建模为序列生成和决策过程,利用 DRL 优化翻译质量指标。
② 挑战: 语言的离散性和复杂性;奖励设计困难;需要处理长距离依赖。
③ 意义: DRL 为构建更智能、更具交互性的 NLP 系统提供了新的范式。
12.5.4 计算机视觉 (Computer Vision, CV)
① 案例:
▮▮▮▮⚝ 图像生成与编辑 (Image Generation and Editing): 一些生成模型(如 GAN 的某些变体)可以与 RL 结合,通过学习一个策略来生成满足特定属性或美学标准的图像。
▮▮▮▮⚝ 视觉导航 (Visual Navigation): 智能体需要学习如何根据视觉输入在环境中导航到目标位置。
② 挑战: 高维的视觉状态空间;需要结合感知和决策。
③ 意义: DRL 使得计算机视觉系统能够进行更复杂的、基于目标的感知和操作。
总结而言,DRL 已不再局限于理论研究或游戏领域,它正逐渐渗透到物理世界和商业决策等更广泛的领域,解决着形形色色的复杂问题。这些案例不仅展示了 DRL 的强大能力,也突显了将 DRL 应用于实际问题时需要解决的关键挑战,如仿真与现实的差距 (Sim-to-Real Gap)、数据效率、安全性和可解释性等。下一章,我们将深入探讨 DRL 在实践中的框架、技巧和经验,帮助您更好地应用这些强大的工具。
13. 深度强化学习的实践:框架与技巧 (Deep Reinforcement Learning Practice: Frameworks and Tips)
本章旨在为读者提供将深度强化学习 (Deep Reinforcement Learning, DRL) 理论应用于实践的全面指导。我们将深入探讨主流的 DRL 开发框架、构建一个 DRL 系统的端到端流程、如何构建或接入强化学习环境、DRL 训练中最关键且最具挑战性的超参数调优问题、保证训练稳定性和进行有效调试的技巧,以及如何科学地评估 DRL 算法的性能。通过学习本章,读者将能够更好地应对将理论知识转化为实际应用时遇到的各种挑战,提升开发效率和模型性能。
13.1 主流DRL框架介绍 (Introduction to Mainstream DRL Frameworks)
在深度学习时代,框架极大地简化了神经网络的构建和训练过程。类似地,针对深度强化学习,也涌现了许多优秀的开源框架,它们提供了算法实现、环境接口、并行化工具和实验管理功能,极大地降低了 DRL 开发的门槛。选择合适的框架对于项目的成功至关重要。
我们将介绍几个目前业界和学界广泛使用的 DRL 框架,它们通常基于主流的深度学习框架(如 TensorFlow 和 PyTorch)之上构建。
① TensorFlow (TF) 和 PyTorch:
▮▮▮▮这两者是构建所有深度学习模型(包括 DRL 中的神经网络)的基础框架。它们提供了自动微分、GPU 加速、丰富的层库和优化器。大多数 DRL 框架都构建在这两个框架之一上。
▮▮▮▮⚝ TensorFlow 的特点包括生产环境部署能力强、可视化工具 TensorBoard 功能丰富。
▮▮▮▮⚝ PyTorch 的特点包括动态图机制更灵活(便于调试和研究)、社区生态活跃、近年来在学术界尤其流行。
② Ray/RLlib:
▮▮▮▮RLlib 是 Ray 项目的一部分,Ray 是一个用于构建分布式应用的统一框架。RLlib 的设计目标是支持大规模并行训练和多种算法。
▮▮▮▮⚝ 特点:支持多种主流 DRL 算法、内置大规模分布式训练能力、支持多种环境接口、配置灵活、适合工业级应用。
▮▮▮▮⚝ 适用场景:需要大规模并行训练、处理复杂或多智能体环境、追求生产环境部署。
③ Stable Baselines3 (SB3):
▮▮▮▮SB3 是 OpenAI gym 社区维护的一个流行的 DRL 算法实现库,特别强调算法实现的可靠性和易用性。它构建在 PyTorch 之上。
▮▮▮▮⚝ 特点:算法实现质量高、文档清晰、API 简洁易用、适合初学者和研究者快速验证想法、提供了许多常用算法的基线实现。
▮▮▮▮⚝ 适用场景:快速原型开发、学术研究、入门学习、不需要超大规模分布式训练的场景。
④ Acme:
▮▮▮ Acme 是 DeepMind 推出的一个用于构建和训练 DRL 智能体的框架。它强调模块化、可读性和可重用性。
▮▮▮▮⚝ 特点:高度模块化、支持分布式执行、提供了许多高级算法的实现、设计哲学偏向研究复现和新算法开发。
▮▮▮▮⚝ 适用场景:DRL 算法研究、需要灵活组合不同组件构建新算法、分布式实验。
⑤ 其他框架:
▮▮▮▮⚝ Dopamine (Google Research): 专注于评估和复现经典 DRL 算法,强调易用性。
▮▮▮▮⚝ ChainerRL: 基于 Chainer 构建(但 Chainer 已被 PyTorch 取代,该框架活跃度下降)。
▮▮▮▮⚝ Tianshou: 基于 PyTorch 的研究型 DRL 平台,支持多种算法和环境。
选择框架时,应考虑项目的规模、是否需要分布式训练、团队对特定深度学习框架的熟悉程度、所需算法是否已在框架中实现以及框架的社区支持活跃度。
13.2 构建DRL系统的基本流程 (Basic Workflow for Building a DRL System)
构建一个 DRL 系统通常遵循一个迭代的流程,从定义问题到最终部署和监控。这个流程可以分为以下主要步骤:
① 问题定义 (Problem Definition):
▮▮▮▮清晰地定义智能体(Agent)需要解决的任务。这包括:
▮▮▮▮⚝ 确定智能体的目标是什么(最大化长期奖励)。
▮▮▮▮⚝ 明确智能体可以感知到的状态(State)信息。
▮▮▮▮⚝ 确定智能体可以执行的动作(Action)。
▮▮▮▮⚝ 设计合适的奖励函数(Reward Function),这是 DRL 中最关键且最具挑战性的环节之一。奖励信号需要能够引导智能体学习期望行为。
▮▮▮▮将问题抽象为一个 马尔可夫决策过程 (Markov Decision Process, MDP)。
② 环境构建与接口 (Environment Construction and Interfaces):
▮▮▮▮实现或选择一个模拟环境(Simulation Environment)或接入真实环境。
▮▮▮▮环境需要提供以下功能:
▮▮▮▮⚝ 初始化环境 (reset()),返回初始状态。
▮▮▮⚝ 接收智能体动作并更新环境状态 (step(action)),返回新的状态、奖励、是否结束(done)以及可选的额外信息(info)。
▮▮▮▮遵循标准的强化学习环境接口(如 Gym/Gymnasium 接口)可以方便地切换不同的算法和环境。
③ 算法选择 (Algorithm Selection):
▮▮▮▮根据问题类型(离散/连续动作空间、状态空间维度、单智能体/多智能体、模型已知/未知)和数据可用性(在线/离线)选择合适的 DRL 算法。
▮▮▮▮⚝ 离散动作空间:DQN 及其变体 (Double DQN, Dueling DQN)、策略梯度方法 (REINFORCE)、Actor-Critic (A2C/A3C)。
▮▮▮▮⚝ 连续动作空间:DDPG, TD3, SAC, PPO, TRPO。
▮▮▮▮⚝ 大规模状态空间:几乎所有基于函数逼近的 DRL 算法。
▮▮▮▮⚝ 多智能体:MADDPG, QMIX 等 MARL 算法。
▮▮▮▮⚝ 离线数据:BCQ, CQL, IQL 等 Offline RL 算法。
▮▮▮▮⚝ 模型已知:可以考虑模型基础方法或动态规划,但 DRL 通常用于模型未知或状态/动作空间巨大的情况。
④ 模型实现与训练 (Model Implementation and Training):
▮▮▮▮使用选择的 DRL 框架实现智能体模型(如价值网络、策略网络)。
▮▮▮▮配置训练参数,如学习率、折扣因子、经验回放大小、批量大小、优化器等。
▮▮▮▮启动训练过程。这通常是一个与环境不断交互、收集经验、存储经验、从经验中学习(更新网络参数)的循环。
⑤ 实验管理与超参数调优 (Experiment Management and Hyperparameter Tuning):
▮▮▮▮记录实验结果(奖励曲线、损失曲线、关键指标)。使用 TensorBoard 等工具进行可视化。
▮▮▮▮通过尝试不同的超参数组合来优化算法性能。这是一个经验性的过程,可能需要借助自动化调优工具。
⑥ 评估与分析 (Evaluation and Analysis):
▮▮▮▮在训练过程中或训练结束后,使用固定的测试策略在环境(通常是无探索行为的确定性策略)中评估智能体的性能。
▮▮▮▮分析智能体的行为,理解其学习到的策略。如果性能不佳,则需要回溯到前面的步骤(如调整奖励函数、改变网络结构或超参数)。
⑦ 部署与监控 (Deployment and Monitoring):
▮▮▮▮将训练好的智能体部署到实际应用或更逼真的模拟环境中。
▮▮▮▮监控智能体在实际运行中的性能,收集更多数据以备后续改进。
这个流程是迭代的,可能需要在不同阶段之间来回切换,直到获得满意的性能。
13.3 环境构建与接口 (Environment Construction and Interfaces)
强化学习环境是智能体学习的舞台。一个好的环境不仅需要准确模拟真实世界或任务的 dynamics,还需要提供标准的接口,以便于算法的开发和测试。
① 为什么需要标准接口? (Why Standard Interfaces?):
▮▮▮▮标准接口(如 OpenAI 的 Gym/Gymnasium)使得 DRL 算法可以独立于具体的环境实现。这意味着你可以用相同的算法代码训练玩 Atari 游戏、控制机器人行走或进行股票交易的智能体,只需要切换底层的环境实现。
▮▮▮▮它促进了算法和环境的共享与复用,形成了活跃的开源社区。
② Gym/Gymnasium 接口 (Gym/Gymnasium Interface):
▮▮▮▮Gym 是一个经典的环境集合和接口库,Gymnasium 是其继任者。它们定义了强化学习环境的基本规范。
▮▮▮▮一个符合 Gym/Gymnasium 接口的环境通常需要实现以下方法:
▮▮▮▮⚝ __init__(self, ...)
:环境初始化,可以接受配置参数。
▮▮▮▮⚝ reset(self, seed=None, options=None)
:重置环境到初始状态,返回初始状态和可选的额外信息。
▮▮▮▮⚝ step(self, action)
:执行一个动作,返回 (observation, reward, terminated, truncated, info)
。
▮▮▮▮▮▮▮▮⚝ observation
: 智能体感知到的环境状态。
▮▮▮▮▮▮▮▮⚝ reward
: 执行动作后获得的奖励。
▮▮▮▮▮▮▮▮⚝ terminated
: 表示任务是否达到终止状态(例如,游戏失败或成功)。
▮▮▮▮▮▮▮▮⚝ truncated
: 表示任务是否因达到时间限制或其他非终止条件而结束(例如,仿真时间步用完)。
▮▮▮▮▮▮▮▮⚝ info
: 包含其他诊断信息(例如,调试信息,不应被智能体学习)。
▮▮▮▮⚝ render(self)
(可选): 可视化环境当前状态。
▮▮▮▮⚝ close(self)
: 关闭环境资源。
▮▮▮▮环境还需定义其 observation_space
(状态空间) 和 action_space
(动作空间),它们描述了状态和动作的形状、类型和范围。
③ 构建自定义环境 (Building Custom Environments):
▮▮▮▮在实际应用中,往往需要构建符合特定任务的自定义环境。
▮▮▮▮⚝ 模拟环境 (Simulation Environments):对于物理系统(如机器人、车辆)或复杂系统(如交通、经济),通常需要构建模拟器。模拟器的精度和计算效率会显著影响 DRL 训练的效果和速度。
▮▮▮▮⚝ 真实环境 (Real-World Environments):直接在真实环境中训练通常是危险、昂贵且效率低下的。DRL 通常在模拟环境中预训练,然后迁移到真实世界,或者使用 Offline RL 从真实数据中学习。
④ 环境包装器 (Environment Wrappers):
▮▮▮▮为了方便算法应用或增强环境功能,可以对环境进行包装。常见的包装器包括:
▮▮▮▮⚝ 状态预处理 (Observation Preprocessing):如图像缩放、灰度化、堆叠多帧图像。
▮▮▮▮⚝ 奖励塑形 (Reward Shaping):调整奖励信号以提供更密集的指导信号(需谨慎,可能引入偏差)。
▮▮▮▮⚝ 动作空间转换 (Action Space Transformation):如将连续动作映射到离散动作。
▮▮▮▮⚝ 时间限制 (Time Limit):为环境添加最大时间步限制,实现 truncated
标志。
13.4 超参数调优技巧 (Hyperparameter Tuning Techniques)
深度强化学习以其对超参数的敏感性而闻名。不同的超参数组合可能会导致训练的巨大差异,从快速收敛到最优策略到完全无法学习。超参数调优是 DRL 实践中最具挑战性但又至关重要的一环。
① 重要的超参数示例 (Examples of Important Hyperparameters):
▮▮▮▮超参数的集合取决于具体的算法,但一些常见的、影响较大的超参数包括:
▮▮▮▮⚝ 学习率 (Learning Rate):智能体优化器的学习率,控制参数更新的步长。过大可能导致震荡或发散,过小可能导致收敛缓慢。
▮▮▮▮⚝ 折扣因子 (Discount Factor, \( \gamma \)):衡量未来奖励相对于当前奖励的重要性。靠近 1 表示重视长期回报,靠近 0 表示重视短期回报。
▮▮▮▮⚝ 经验回放缓冲区大小 (Experience Replay Buffer Size):存储智能体与环境交互经验的大小。较大的缓冲区有助于打破数据相关性,但也需要更多内存。
▮▮▮▮⚝ 批量大小 (Batch Size):从经验回放缓冲区中采样用于更新网络的数据量。
▮▮▮▮⚝ 目标网络更新频率 (Target Network Update Frequency) (对于 DQN 系列):目标网络的更新频率,影响训练稳定性。
▮▮▮▮⚝ 探索策略参数 (Exploration Strategy Parameters):如 \( \epsilon \) -greedy 中的 \( \epsilon \) 值及其衰减率,或者噪声参数 (对于 DDPG/TD3 的 OU 噪声,SAC 的熵正则化系数)。
▮▮▮▮⚝ 网络结构参数 (Network Architecture Parameters):网络层数、每层神经元数量、激活函数等。
▮▮▮▮⚝ 优化器选择 (Optimizer Choice):Adam, RMSprop, SGD 等。通常 Adam 或 RMSprop 是不错的起点。
▮▮▮▮⚝ 回报归一化/缩放 (Reward Normalization/Scaling):对奖励进行归一化或缩放可以改善训练稳定性。
② 超参数调优方法 (Hyperparameter Tuning Methods):
▮▮▮▮由于 DRL 训练过程的随机性(环境随机性、策略随机性、初始化随机性),简单的手动调优效率低下且不可靠。可以借助更系统化的方法:
▮▮▮▮⚝ 网格搜索 (Grid Search):预设几个超参数的离散取值,然后尝试所有可能的组合。
▮▮▮▮⚝ 随机搜索 (Random Search):在超参数的取值范围内随机采样一定数量的组合进行尝试。研究表明在许多情况下随机搜索比网格搜索更高效。
▮▮▮▮⚝ 贝叶斯优化 (Bayesian Optimization):使用概率模型(如高斯过程)来建模目标函数(如智能体最终性能)与超参数之间的关系,并利用这个模型指导下一次尝试的超参数选择,以最小化所需尝试次数。常用的库有 HyperOpt, Optuna。
▮▮▮▮⚝ 群体智能/进化算法 (Population-based Methods/Evolutionary Algorithms):如 Population Based Training (PBT),同时训练多个智能体,并允许它们之间共享参数或超参数。
③ 实用调优技巧 (Practical Tuning Tips):
▮▮▮▮⚝ 从小规模开始:先在简化环境或短时间步内测试算法和超参数,确保基本流程work。
▮▮▮▮⚝ 关注关键参数:优先调优学习率、折扣因子、探索参数等对性能影响较大的参数。
▮▮▮▮⚝ 可视化训练过程:密切关注奖励曲线、价值损失、策略损失、熵等指标,判断训练是否稳定或发散。
▮▮▮▮⚝ 使用多组随机种子 (Multiple Random Seeds):DRL 训练结果受随机种子影响很大,应使用多组种子进行多次实验,并报告平均性能和方差,而不是只依赖单次实验结果。
▮▮▮▮⚝ 借鉴现有工作的超参数:对于在类似环境或任务上表现良好的已知算法,其论文或开源代码中提供的超参数通常是很好的起点。
▮▮▮▮⚝ 逐步调整:每次只改变一个或少量超参数,观察其影响。
超参数调优是一个迭代和经验积累的过程。没有放之四海而皆准的超参数设置,需要针对具体问题和算法进行探索。
13.5 训练稳定性与调试 (Training Stability and Debugging)
与监督学习相比,深度强化学习的训练过程往往更加不稳定且难以调试。细微的错误或不恰当的超参数都可能导致训练崩溃或性能停滞。
① DRL 训练不稳定的常见原因 (Common Causes of DRL Training Instability):
▮▮▮▮⚝ 数据相关性 (Data Correlation):智能体连续采集的数据往往高度相关,违背了深度学习模型训练时数据独立同分布的假设。经验回放 (Experience Replay) 是缓解此问题的主要方法。
▮▮▮▮⚝ 非平稳目标 (Non-stationary Target):在基于值的方法中,目标 Q 值 \( y = r + \gamma \max_{a'} Q(s', a'; \theta_{target}) \) 会随着目标网络参数 \( \theta_{target} \) 的更新而变化,导致训练目标不稳定。目标网络 (Target Network) 技术用于减缓目标变化速度。
▮▮▮▮⚝ 信用分配问题 (Credit Assignment Problem):长期延迟的奖励使得智能体难以确定哪些动作导致了最终的奖励。这是强化学习的根本挑战,而 DRL 在复杂任务中更容易受其影响。
▮▮▮▮⚝ 巨大方差 (High Variance):策略梯度方法尤其容易受高方差梯度影响,导致更新不稳定。引入基线 (Baseline) 和优势函数 (Advantage Function) 是降低方差的常用手段。
▮▮▮▮⚝ 探索不足 (Insufficient Exploration):智能体可能陷入局部最优策略,未能发现能够获得更高奖励的区域。
▮▮▮▮⚝ 奖励稀疏 (Sparse Rewards):在许多任务中,奖励信号非常稀疏,智能体长时间得不到奖励,难以学习。
▮▮▮▮⚝ 超参数设置不当 (Inappropriate Hyperparameter Settings):如前所述,不合适的学习率、折扣因子、探索参数等是训练失败的常见原因。
▮▮▮▮⚝ 梯度爆炸或消失 (Gradient Explosion or Vanishing):深度神经网络训练中的常见问题,尤其在处理长序列或复杂任务时。
② 提高训练稳定性的技术 (Techniques to Improve Training Stability):
▮▮▮▮⚝ 经验回放 (Experience Replay):存储并随机采样旧的经验数据用于训练,打破时间上的相关性。优先经验回放 (Prioritized Experience Replay, PER) 更进一步,优先采样那些“意外”或重要的经验。
▮▮▮▮⚝ 目标网络 (Target Network):使用一个滞后更新的网络来计算目标值,提供更稳定的训练目标。
▮▮▮▮⚝ 网络架构选择 (Network Architecture Choice):选择适合任务的网络结构(如 CNN 处理图像,RNN/Transformer 处理序列)。
▮▮▮▮⚝ 归一化技巧 (Normalization Techniques):
▮▮▮▮▮▮▮▮⚝ 状态归一化 (State Normalization):将状态输入的均值和方差归一化到标准范围。
▮▮▮▮▮▮▮▮⚝ 奖励归一化/缩放 (Reward Normalization/Scaling):归一化或限制奖励的范围。
▮▮▮▮▮▮▮▮⚝ 价值函数归一化 (Value Function Normalization):归一化价值目标或输出。
▮▮▮▮▮▮▮▮⚝ 优势函数归一化 (Advantage Normalization):在 Actor-Critic 方法中归一化优势函数。
▮▮▮▮⚝ 梯度裁剪 (Gradient Clipping):限制梯度的最大 L2 范数或按值裁剪,防止梯度爆炸。
▮▮▮▮⚝ 基线与优势函数 (Baseline and Advantage Function):在策略梯度和 Actor-Critic 方法中,使用价值函数作为基线计算优势函数 \( A(s,a) = Q(s,a) - V(s) \) 或 \( A(s,a) = r + \gamma V(s') - V(s) \),可以有效降低梯度方差。
▮▮▮▮⚝ 信任区域方法 (Trust Region Methods):如 TRPO 和 PPO,通过限制策略更新的步长或确保新旧策略之间的差异在一定范围内,提高策略更新的稳定性。
▮▮▮▮⚝ 熵正则化 (Entropy Regularization):在目标函数中增加策略分布的熵,鼓励智能体保持一定的探索性,避免策略过早坍缩到确定性策略。
③ 调试策略与工具 (Debugging Strategies and Tools):
▮▮▮▮⚝ 从简单问题开始:先在简单的环境或任务上验证算法实现是否正确。
▮▮▮▮⚝ 检查输入输出:验证环境的状态、动作、奖励是否符合预期。检查网络输入输出的形状和范围。
▮▮▮▮⚝ 监控训练指标:使用 TensorBoard 或其他可视化工具监控奖励曲线、损失函数、梯度范数、价值函数的变化范围等。异常的曲线(如奖励突然下降、损失爆炸)通常是问题的信号。
▮▮▮▮⚝ 逐步添加复杂性:如果在复杂环境中遇到问题,尝试简化环境,或者从简单的算法开始,逐步增加算法的复杂性。
▮▮▮▮⚝ 比较基线:与已知的开源实现或论文中的结果进行比较,验证自己的实现是否有问题。
▮▮▮▮⚝ 检查梯度:验证梯度计算是否正确(虽然深度学习框架通常会自动计算),监控梯度的数值范围,检查是否有梯度消失或爆炸。
▮▮▮▮⚝ 固定随机种子:在调试阶段固定随机种子,确保实验的可重复性,便于定位问题。
▮▮▮▮⚝ 单元测试 (Unit Tests):对算法的关键组件(如经验回放、网络更新步骤)编写单元测试。
调试 DRL 需要耐心和经验。理解算法原理、仔细检查代码、充分利用可视化工具和采取系统化的调试策略是成功的关键。
13.6 评估指标与方法 (Evaluation Metrics and Methods)
正确评估 DRL 智能体的性能是验证算法有效性、比较不同方法以及进行超参数调优的基础。DRL 的评估与监督学习有所不同,需要考虑智能体与环境交互的动态过程。
① 常用的评估指标 (Common Evaluation Metrics):
▮▮▮▮⚝ 平均总回报 (Average Total Return/Reward):在多个回合 (Episode) 中,智能体从初始状态到终止状态所获得的累积折扣奖励的平均值。这是最直接反映智能体性能的指标。
▮▮▮▮⚝ 成功率 (Success Rate):对于有明确成功/失败定义的环境(如完成特定任务),衡量智能体成功完成任务的回合比例。
▮▮▮▮⚝ 完成任务所需时间步/回合数 (Steps/Episodes to Completion):衡量智能体达到目标状态的效率。
▮▮▮▮⚝ 样本效率 (Sample Efficiency):智能体达到某个性能水平所需的与环境交互的总时间步数。样本效率越高,意味着学习越快,需要的数据越少。这是 DRL 实践中一个重要的考量,因为与环境交互往往是昂贵的。
▮▮▮▮⚝ 每时间步的奖励 (Reward per Time Step):对于持续运行的任务,可以使用每时间步的平均奖励。
▮▮▮▮⚝ 收敛速度 (Convergence Speed):衡量智能体性能达到稳定水平的速度。
② 评估方法 (Evaluation Methods):
▮▮▮▮⚝ 训练过程中评估 (Evaluation During Training):在训练过程中,定期(例如,每隔一定数量的训练步或回合)中断训练,让智能体进入“评估模式”。在评估模式下:
▮▮▮▮▮▮▮▮⚝ 智能体通常使用确定性策略(例如,对于离散动作选择 Q 值最高的动作,对于连续动作使用策略网络的均值输出),关闭探索机制(如 \( \epsilon \) -greedy 的 \( \epsilon \) 设为 0)。
▮▮▮▮▮▮▮▮⚝ 在一个独立的、没有探索噪声的环境副本中运行多个回合。
▮▮▮▮▮▮▮▮⚝ 记录每个回合的总回报或其他指标,计算平均值和方差。
▮▮▮▮▮▮▮▮⚝ 这些定期评估的结果绘制成曲线(如平均回报随训练时间步的变化),用于监控训练进程和比较不同实验。
▮▮▮▮⚝ 最终评估 (Final Evaluation):训练结束后,使用训练好的模型进行一次更充分的评估。
▮▮▮▮▮▮▮▮⚝ 使用多组不同的随机种子重新运行完整的训练过程,并对最终训练好的模型进行评估。报告所有种子下的平均性能和置信区间,这能更准确地反映算法的鲁棒性。
▮▮▮▮▮▮▮▮⚝ 评估时应在与训练环境设置相同但使用不同随机种子初始化的环境中进行。
③ 评估时的注意事项 (Considerations During Evaluation):
▮▮▮▮⚝ 避免在训练环境/模式下评估:训练过程中包含了探索、经验回放等机制,直接用训练时的指标作为最终性能是 misleading 的。评估应在独立的评估环境副本中进行,并使用确定的评估策略。
▮▮▮▮⚝ 使用多个随机种子:由于 DRL 训练的高度随机性,单次实验的结果可能并不能代表算法的真实性能。务必使用多个随机种子进行多次实验,并报告统计结果(平均值、标准差、置信区间)。
▮▮▮▮⚝ 评估回合数:评估时应运行足够多的回合,以减少评估结果的方差。
▮▮▮▮⚝ 选择合适的指标:根据任务特点选择最能反映性能的指标。例如,对于游戏,得分是关键;对于控制任务,稳定性和精确度更重要。
▮▮▮▮⚝ 考虑在线 vs. 离线性能:有些算法(如在线 Actor-Critic)在训练过程中性能持续提升,但最终稳定性能可能不如其他算法;有些算法(如 Offline RL)只关心在固定数据集上的性能。
科学严谨的评估方法对于 DRL 研究和应用都至关重要,它帮助我们客观地理解算法的优劣及其适用范围。
14. 深度强化学习的未来与挑战 (Future and Challenges of Deep Reinforcement Learning)
欢迎来到本书的最后一章。在前面的章节中,我们系统地学习了深度强化学习(Deep Reinforcement Learning, DRL)的基础原理、核心算法,以及一些重要的进阶主题和应用案例。我们看到了DRL在复杂决策任务上展现出的强大能力,例如在游戏中达到超人类水平、控制复杂机器人系统、优化工业流程等。
然而,深度强化学习并非没有挑战。它仍是一个快速发展中的领域,许多基础性问题尚未完全解决,新的研究方向和应用场景不断涌现。本章将回顾DRL当前面临的一些关键挑战,探讨前沿的研究方向,并讨论其潜在的伦理和社会影响。最后,我们将对全书进行总结,并展望DRL的未来发展。
14.1 当前面临的关键挑战 (Key Current Challenges)
尽管深度强化学习取得了显著的成功,但在将这些成就从实验室环境推广到更广泛、更复杂的现实世界应用时,我们面临着一系列严峻的挑战。理解这些挑战对于推动DRL的进一步发展至关重要。
14.1.1 样本效率低下 (Poor Sample Efficiency)
深度强化学习算法通常需要大量的环境交互才能学到有效的策略。例如,AlphaGo Zero为了掌握围棋技艺,进行了数百万局的自我对弈。这种样本效率低下(Sample Efficiency)的问题在以下场景尤为突出:
① 环境交互成本高昂:在真实世界的应用中(如机器人控制、自动驾驶、医疗诊断),每次尝试或犯错都可能带来实际的成本(时间、金钱、安全风险)。大量的试错是不可接受的。
② 环境模拟困难或不准确:对于某些复杂的物理或社会系统,建立一个高保真(High-Fidelity)的模拟环境本身就非常困难或计算昂贵。
③ 奖励稀疏(Sparse Reward):在许多任务中,智能体(Agent)只有在完成特定目标时才能获得奖励,这使得智能体很难通过随机探索找到奖励信号,从而需要更多的样本来学习。
提高样本效率是当前DRL研究的核心方向之一,相关方法包括模型基础(Model-Based)方法(利用学到的环境模型进行规划或生成更多经验)、离线强化学习(Offline RL)(从静态数据集学习)、高效探索策略(如基于好奇心或不确定性的探索)等。
14.1.2 泛化能力不足 (Limited Generalization)
深度强化学习训练出的策略往往对训练环境高度依赖,在稍有不同的环境或任务中表现会显著下降。这种泛化能力(Generalization)不足体现在:
① 领域转移问题(Domain Shift):在模拟环境中训练的策略往往难以直接迁移到真实的物理世界(即“模拟到现实” Sim-to-Real 问题)。尽管领域随机化(Domain Randomization)等技术有所帮助,但仍是开放问题。
② 任务变体问题:智能体在一个特定任务上学习到的技能,很难直接应用于该任务的变体或相关任务,通常需要从头开始学习。
③ 对抗性攻击(Adversarial Attack):像深度学习模型一样,DRL策略也容易受到微小的对抗性扰动的影响,导致其行为出现不可预测的错误。
提升泛化能力是实现通用人工智能(Artificial General Intelligence, AGI)的关键一步。研究方向包括元强化学习(Meta-RL)、多任务学习(Multi-Task Learning)、领域适应(Domain Adaptation)、学习可迁移的表示(Learning Transferable Representations)等。
14.1.3 可解释性差 (Lack of Interpretability)
与传统的规划或基于规则的系统不同,基于深度学习的强化学习模型往往是一个“黑箱”(Black Box)。我们知道给定输入时模型会产生什么输出(即策略),但很难理解它是“为什么”做出这个决策,或者它的内部“思考过程”是怎样的。
可解释性(Interpretability)在以下方面至关重要:
① 信任与验证:在安全关键或高风险的应用中(如医疗、金融、军事),我们需要信任系统的决策。无法解释其行为会使得部署变得困难或不可能。
② 调试与改进:当智能体表现不佳时,缺乏可解释性使得我们难以诊断问题的原因,从而难以进行有效的调试和改进。
③ 人机协作:为了更好地实现人与智能体的协作,理解智能体的意图和推理过程非常有帮助。
提高DRL模型的可解释性是活跃的研究领域,方法包括注意力机制可视化、分析价值景观(Value Landscape)、提取可理解的规则或表示等。
14.1.4 安全性与鲁棒性 (Safety and Robustness)
部署在现实世界中的强化学习智能体必须是安全的(Safe)和鲁棒的(Robust)。
① 安全性:智能体不应执行会导致 catastrophic failure 或违反预设约束(Safety Constraints)的行为,尤其是在探索阶段。如何在最大化奖励的同时保证安全是重要问题。
② 鲁棒性:智能体应能应对环境中的噪声、传感器故障、执行器误差或非预期的动态变化,其性能不应因微小扰动而急剧下降。
这方面的研究包括安全探索算法(Safe Exploration)、基于约束的RL(Constrained RL)、形式化验证(Formal Verification)DRL策略、鲁棒性训练方法等。
14.1.5 奖励函数设计困难 (Difficulty in Reward Function Design)
强化学习通过奖励信号来引导智能体的行为,但设计一个能够精确反映任务目标并易于智能体学习的奖励函数(Reward Function)往往非常困难。
① 奖励整形(Reward Shaping):手动设计奖励函数时,不恰当的设计可能导致智能体学习到“钻空子”的策略(Reward Hacking),即找到了最大化奖励但不符合人类真实意图的行为。
② 真实世界复杂任务:许多真实世界的任务目标是模糊的或难以量化的,很难将其转化为简单的数值奖励信号。
③ 延迟奖励:在许多任务中,行为的影响要经过很长时间才能体现在奖励上,增加了信用分配(Credit Assignment)的难度。
模仿学习(Imitation Learning)(从专家演示中学习)、逆强化学习(Inverse Reinforcement Learning, IRL)(从专家行为推断奖励函数)以及自动奖励设计(Automatic Reward Design)等方法旨在缓解这一挑战。
14.2 前沿研究方向 (Frontier Research Directions)
为了应对上述挑战并探索DRL的潜力边界,研究人员正在多个前沿方向上积极探索。
14.2.1 元强化学习 (Meta-Reinforcement Learning, Meta-RL)
元强化学习(Meta-RL),或称“学会学习”(Learning to Learn),旨在训练智能体使其能够快速适应新任务或新环境,而无需从头开始学习。其核心思想是在一系列相关任务上进行“元训练”(Meta-Training),使智能体学习到一个通用的学习过程或初始化参数,以便在遇到新的但来自同一分布的任务时,仅需少量数据或少量步骤就能快速“元适应”(Meta-Adaptation)并表现良好。
主要范式包括:
① 基于优化的Meta-RL:学习一个初始化参数,使得在该参数基础上进行少量梯度更新就能在新的任务上表现好(如MAML)。
② 基于循环神经网络(RNN)的Meta-RL:使用RNN等模型来编码学习过程,将先前的经验和学习更新封装在隐藏状态中,使其在新的任务上能够快速调整策略。
③ 基于度量(Metric-Based)的Meta-RL:学习一个有效的任务或经验表示,以便通过简单的最近邻或相似度匹配来在新任务上快速推断策略。
Meta-RL有望显著提高样本效率和泛化能力,特别是在任务族(Task Family)中迁移学习。
14.2.2 因果推理与强化学习的结合 (Integrating Causality and Reinforcement Learning)
传统的强化学习主要关注基于相关性(Correlation)的序列决策,即学习在某个状态下采取某个动作往往能获得更高的预期回报。然而,理解动作对环境状态和未来奖励的真实因果效应(Causal Effect)对于鲁棒性、泛化和可解释性至关重要。
将因果推理(Causality)的思想引入强化学习,可以帮助智能体:
① 更好理解环境动态:区分相关性与因果性,构建更准确的环境模型。
② 改进探索策略:基于因果关系进行更有目标的探索。
③ 增强泛化能力:学习不随环境变化而改变的因果机制,从而更好地泛化到新环境。
④ 提高可解释性:通过因果图等方式呈现决策过程的因果链条。
这方面的研究还处于早期阶段,涉及如何发现环境的因果图、如何利用因果信息指导策略学习、如何评估反事实(Counterfactuals)等。
14.2.3 离线到在线迁移 (Offline-to-Online Transfer)
如前所述,离线强化学习(Offline RL)允许我们利用大规模静态数据集进行策略学习,避免了昂贵的在线交互。然而,离线学习的策略可能不是最优的,并且可能难以适应在线环境中的微小变化。
离线到在线迁移(Offline-to-Online Transfer)研究如何将从离线数据集中学到的知识(如一个预训练策略或价值函数)作为起点,然后在真实的在线环境中进行高效的微调(Fine-tuning)。这个过程需要解决的核心问题是如何在在线微调阶段克服预训练策略的行为分布与在线环境的实时数据分布之间的差异(即分布偏移),同时保证在线探索的安全性。
有效实现离线到在线迁移,将极大地扩展DRL在现实世界中的应用范围,使得我们能够利用现有的大规模历史数据来启动学习过程,并在真实环境中安全、高效地进行优化。
14.2.4 其他值得关注的方向 (Other Noteworthy Directions)
除了上述几个重点方向,深度强化学习的研究还在许多其他领域深入展开:
⚝ 多任务与终身学习(Multi-task and Lifelong Learning): 让智能体能够同时学习多个任务,或者随着时间推移不断学习新任务并保留旧任务的知识。
⚝ 对稀疏/延迟奖励的处理(Handling Sparse/Delayed Rewards): 开发更有效的探索机制和信用分配方法,如基于好奇心(Curiosity-driven Exploration)、分层RL(Hierarchical RL)。
⚝ 机器人操作与具身智能(Robotic Manipulation and Embodied AI): 将DRL应用于复杂的机器人控制任务,以及研究如何赋予智能体在物理世界中感知、行动和推理的能力。
⚝ 与大型语言模型(Large Language Models, LLMs)的结合: 利用LLMs强大的世界知识、常识推理和规划能力来辅助DRL智能体进行高级别决策、任务分解或奖励函数设计。
⚝ 基础模型在RL中的应用(Foundation Models in RL): 探索如何利用在大规模数据上预训练的基础模型(如视觉Transformer, Diffusion Models)来提高RL的表示能力和泛化性能。
这些方向共同推动着深度强化学习向着更通用、更智能、更安全、更高效的目标迈进。
14.3 DRL的伦理和社会影响 (Ethical and Social Implications of DRL)
随着深度强化学习的能力日益增强,其在社会中的潜在应用也越来越广泛,这带来了重要的伦理(Ethical)和社会影响问题,需要我们认真思考和应对。
14.3.1 算法偏见与公平性 (Algorithmic Bias and Fairness)
DRL系统依赖于训练数据和奖励信号。如果这些数据或奖励中隐含了社会偏见(如历史数据反映了不公平的决策模式),那么智能体可能会学习并甚至放大这些偏见,导致歧视性的行为。例如,用于招聘或贷款审批的决策智能体可能会因为训练数据中的历史不公而对特定群体产生偏见。确保DRL系统的公平性(Fairness)是一个重要挑战,需要开发无偏的数据收集方法、公平性约束下的算法以及评估和缓解偏见的工具。
14.3.2 自主性、责任与控制 (Autonomy, Responsibility, and Control)
DRL智能体被设计为在复杂环境中自主做出决策。当这些自主系统造成损害时,责任应如何界定?是设计者、开发者、部署者还是智能体本身?此外,如何确保智能体的目标与人类的价值和意图相一致(即对齐问题,Alignment Problem)?一个追求奖励最大化的智能体,如果目标函数设计不当,可能会采取我们不希望看到的极端或有害行为。这引发了对AI控制和治理的深刻思考。
14.3.3 就业结构变化 (Changes in Employment Structure)
DRL在自动化许多复杂任务方面具有巨大潜力,从工厂自动化到自动驾驶、智能客服甚至某些专业服务。这可能导致大量现有工作岗位的消失或转型,对社会就业结构产生深远影响。我们需要思考如何应对这一变化,例如通过教育和培训来帮助人们适应新的就业需求,或者探索新的社会保障体系。
14.3.4 恶意使用风险 (Risks of Malicious Use)
强大的DRL技术也可能被用于恶意目的,例如开发更复杂的网络攻击、自动化虚假信息传播、制造自主武器系统或进行其他形式的滥用。国际社会需要合作制定规范和条约,以防止DRL被用于破坏稳定和安全的活动。
14.3.5 透明度与问责制 (Transparency and Accountability)
与可解释性相关,但更侧重于制度和流程层面。当一个DRL系统影响到重要的社会决策时,我们是否能够理解它是如何工作的,以及谁对其行为负责?建立透明的决策过程和明确的问责机制对于构建公众信任和确保AI技术的健康发展至关重要。
这些伦理和社会问题不是纯粹的技术问题,需要跨学科的合作,包括技术专家、伦理学家、社会科学家、政策制定者和公众共同参与讨论和决策。
14.4 总结与展望 (Summary and Outlook)
恭喜你已经完成了本书的学习!我们从强化学习和深度学习的基础概念出发,逐步深入,探索了马尔可夫决策过程、动态规划、无模型学习方法,以及如何将深度学习强大的表示能力与强化学习的决策框架结合。我们详细分析了基于值、基于策略和Actor-Critic三大类深度强化学习算法的核心原理和重要变体,探讨了探索、多智能体、分层、离线学习等高级主题,并通过丰富的案例了解了DRL在多个领域的巨大应用潜力。
深度强化学习是人工智能领域最令人兴奋和活跃的分支之一。它提供了一个强大的框架来构建能够通过试错与环境交互并学习最优行为的智能体。AlphaGo击败人类围棋冠军、DRL智能体在复杂视频游戏中达到超人类水平,这些里程碑式的成就证明了DRL处理复杂、高维决策任务的能力。
然而,正如本章所讨论的,深度强化学习仍面临样本效率、泛化能力、可解释性、安全性和鲁棒性等多方面的挑战。这些挑战正是当前研究的前沿,推动着学者们探索元学习、因果推理、离线学习等新方向,并与其他AI技术(如大型语言模型、生成模型)进行融合创新。
展望未来,深度强化学习有望在更多领域实现突破。随着算法效率的提高、泛化能力的增强以及与人类价值观对齐技术的进步,DRL将在自动驾驶、机器人协作、个性化医疗、科学发现、智能制造等领域发挥越来越重要的作用。构建能够与人类安全、高效协作的通用强化学习智能体是终极目标之一。
学习深度强化学习是一个持续精进的过程。理论知识是基础,但实践经验同样重要。我们鼓励你利用现有的开源框架和环境,动手实现和调试算法,参与社区讨论,并持续关注领域的最新研究进展。
深度强化学习的旅程才刚刚开始,未来充满了无限的可能性。希望本书能够为你提供一个坚实的基础和广阔的视野,激发你对这一领域的兴趣,并助你在探索和应用深度强化学习的道路上取得成功。
感谢你的阅读!期待你在深度强化学习的世界中创造属于自己的精彩。
Appendix A: 数学基础回顾 (Mathematical Background Review)
本附录旨在为阅读本书所需的数学基础知识提供一个简要回顾。深度强化学习 (Deep Reinforcement Learning, DRL) 融合了强化学习 (Reinforcement Learning, RL) 和深度学习 (Deep Learning, DL),其理论与算法依赖于多个数学分支,包括概率论(Probability Theory)、线性代数(Linear Algebra)、微积分(Calculus)和优化理论(Optimization Theory)。本附录不追求数学理论的严格推导,而是侧重于介绍DRL中最常用和最关键的概念,帮助读者更好地理解后续章节的内容。
Appendix A1: 概率论 (Probability Theory)
概率论是研究随机现象规律的数学分支。在强化学习中,环境的动态性、智能体的策略(特别是随机策略)以及不确定性通常都需要用概率论来描述。
Appendix A1.1: 基本概念 (Basic Concepts)
概率(Probability)是衡量某一事件发生的可能性的数值。
① 随机变量(Random Variable):其值是随机事件的结果的变量。随机变量可以是离散的(Discrete)或连续的(Continuous)。
② 概率分布(Probability Distribution):描述随机变量取各个可能值的概率。
▮▮▮▮⚝ 概率质量函数(Probability Mass Function, PMF):用于描述离散随机变量的概率分布。对于随机变量 \(X\),\(P(X=x)\) 表示 \(X\) 取特定值 \(x\) 的概率。
▮▮▮▮⚝ 概率密度函数(Probability Density Function, PDF):用于描述连续随机变量的概率分布。对于连续随机变量 \(X\),其PDF \(f(x)\) 满足 \(P(a \le X \le b) = \int_a^b f(x) dx\)。注意 \(f(x)\) 本身不是概率。
Appendix A1.2: 期望与方差 (Expectation and Variance)
① 期望(Expectation):随机变量的平均值或中心趋势。记为 \(E[X]\)。
▮▮▮▮⚝ 对于离散随机变量 \(X\),期望定义为 \(E[X] = \sum_x x P(X=x)\)。
▮▮▮▮⚝ 对于连续随机变量 \(X\),期望定义为 \(E[X] = \int_{-\infty}^{\infty} x f(x) dx\)。
▮▮▮▮⚝ 期望的线性性质:\(E[aX + bY] = aE[X] + bE[Y]\),其中 \(a, b\) 为常数,\(X, Y\) 为随机变量。
② 方差(Variance):衡量随机变量与其期望值之间的离散程度。记为 \(Var(X)\)。
▮▮▮▮⚝ 方差定义为 \(Var(X) = E[(X - E[X])^2] = E[X^2] - (E[X])^2\)。
▮▮▮▮⚝ 方差的性质:\(Var(aX + b) = a^2 Var(X)\)。
在强化学习中,价值函数(Value Function)就是奖励(Reward)的期望值或期望累积值。计算策略梯度(Policy Gradient)也大量依赖于期望的概念。方差则常用于衡量策略或价值估计的稳定性。
Appendix A1.3: 条件概率与独立性 (Conditional Probability and Independence)
① 条件概率(Conditional Probability):在事件 \(B\) 发生的条件下事件 \(A\) 发生的概率,记为 \(P(A|B) = \frac{P(A \cap B)}{P(B)}\),前提是 \(P(B) > 0\)。
② 独立性(Independence):如果事件 \(A\) 的发生不影响事件 \(B\) 发生的概率,则称 \(A\) 和 \(B\) 相互独立。即 \(P(A|B) = P(A)\),等价于 \(P(A \cap B) = P(A)P(B)\)。随机变量的独立性定义类似。
马尔可夫决策过程(Markov Decision Process, MDP)的核心在于马尔可夫性质(Markov Property),即未来状态仅依赖于当前状态和动作,而与过去的状态和动作无关。这是一种条件独立性的体现。
Appendix A1.4: 贝叶斯定理 (Bayes' Theorem)
贝叶斯定理描述了在已知一些先验信息的情况下,如何更新对某个事件的概率估计。
\[ P(A|B) = \frac{P(B|A) P(A)}{P(B)} \]
或更常用的形式:
\[ P(A|B) = \frac{P(B|A) P(A)}{\sum_{i} P(B|A_i) P(A_i)} \]
其中,\(P(A)\) 是先验概率(Prior Probability),\(P(A|B)\) 是后验概率(Posterior Probability),\(P(B|A)\) 是似然度(Likelihood),\(P(B)\) 是证据(Evidence)或边缘概率。在贝叶斯强化学习等领域有应用。
Appendix A1.5: 常见概率分布 (Common Probability Distributions)
① 伯努利分布(Bernoulli Distribution):描述只有两种可能结果(成功/失败,1/0)的单次试验的概率分布。由参数 \(p\) 决定,\(P(X=1) = p\)。
② 分类分布(Categorical Distribution,也称多项式分布 Multinomial Distribution 当 N=1):描述具有 \(K\) 种可能结果的单次试验的概率分布。常用于表示离散动作空间上的策略 \(\pi(a|s)\),即在状态 \(s\) 下选择动作 \(a\) 的概率。
③ 正态分布(Normal Distribution)/高斯分布(Gaussian Distribution):连续随机变量最重要的分布之一,其概率密度函数呈钟形曲线。由均值 \(\mu\) 和方差 \(\sigma^2\) 决定。常用于表示连续动作空间上的策略(输出均值和方差)。
Appendix A1.6: 大数定律与中心极限定理 (Law of Large Numbers and Central Limit Theorem)
① 大数定律(Law of Large Numbers):当独立同分布的随机变量样本数量很大时,它们的样本均值趋近于总体期望。这为我们通过有限次采样来估计期望值提供了理论基础,例如在蒙特卡洛方法(Monte Carlo Method)中估计价值。
② 中心极限定理(Central Limit Theorem):独立同分布的随机变量样本均值的分布,在样本量足够大时,趋近于正态分布。
Appendix A2: 线性代数 (Linear Algebra)
线性代数是处理向量空间和线性变换的数学分支。在深度学习中,模型的输入、输出、权重和偏置通常表示为向量和矩阵,神经网络的计算本质上是矩阵乘法和向量运算。在强化学习中,状态、动作或价值函数有时也用向量或矩阵表示,特别是使用函数逼近器时。
Appendix A2.1: 向量与矩阵 (Vectors and Matrices)
① 向量(Vector):有序的数值列表,可以看作是多维空间中的一个点或方向。记为 \(\mathbf{v} = [v_1, v_2, \dots, v_n]^T\)。
② 矩阵(Matrix):按行和列排列的数值表。记为 \(A \in \mathbb{R}^{m \times n}\),表示一个 \(m\) 行 \(n\) 列的矩阵。
③ 基本运算:
▮▮▮▮⚝ 向量/矩阵加法与减法:对应元素相加减,要求维度匹配。
▮▮▮▮⚝ 标量乘法:每个元素乘以一个标量。
▮▮▮▮⚝ 矩阵乘法:矩阵 \(A \in \mathbb{R}^{m \times n}\) 和 \(B \in \mathbb{R}^{n \times p}\) 的乘积 \(C = AB \in \mathbb{R}^{m \times p}\),其中 \(C_{ij} = \sum_{k=1}^n A_{ik} B_{kj}\)。这是神经网络中最核心的计算。
▮▮▮▮⚝ 向量点乘(Dot Product)/内积(Inner Product):两个向量 \(\mathbf{u}, \mathbf{v} \in \mathbb{R}^n\) 的点乘定义为 \(\mathbf{u} \cdot \mathbf{v} = \sum_{i=1}^n u_i v_i\)。结果是一个标量。
Appendix A2.2: 特殊矩阵与运算 (Special Matrices and Operations)
① 单位矩阵(Identity Matrix):主对角线元素为1,其余为0的方阵,记为 \(I\)。\(AI = IA = A\)。
② 对角矩阵(Diagonal Matrix):除主对角线外,所有元素都为0的方阵。
③ 转置(Transpose):将矩阵的行和列互换。矩阵 \(A\) 的转置记为 \(A^T\)。\((AB)^T = B^T A^T\)。
④ 逆矩阵(Inverse Matrix):方阵 \(A\) 的逆矩阵 \(A^{-1}\) 满足 \(AA^{-1} = A^{-1}A = I\)。逆矩阵存在当且仅当矩阵可逆(Invertible)或非奇异(Non-singular)。
Appendix A2.3: 范数 (Norms)
范数是衡量向量或矩阵“大小”的一种方式。
① 向量 L2 范数(Euclidean Norm):向量 \(\mathbf{v}\) 的 L2 范数定义为 \(\|\mathbf{v}\|_2 = \sqrt{\sum_i v_i^2}\)。衡量向量的长度。
② 向量 L1 范数:向量 \(\mathbf{v}\) 的 L1 范数定义为 \(\|\mathbf{v}\|_1 = \sum_i |v_i|\)。
③ 矩阵范数:有多种定义,如 Frobenius 范数,\(\|A\|_F = \sqrt{\sum_{i,j} A_{ij}^2}\)。
范数在机器学习中常用于正则化(Regularization),防止模型过拟合(Overfitting)。
Appendix A3: 微积分 (Calculus)
微积分是研究变化率和累积量的数学分支。在深度学习中,微积分是训练神经网络的核心:通过计算损失函数相对于模型参数的梯度(Gradient),然后使用梯度下降(Gradient Descent)等优化算法来更新参数,最小化损失函数。在强化学习中,特别是策略梯度(Policy Gradient)方法,直接计算策略相对于参数的梯度,然后沿着梯度方向更新策略参数。
Appendix A3.1: 导数与梯度 (Derivative and Gradient)
① 导数(Derivative):描述函数在某一点的变化率。对于单变量函数 \(f(x)\),其导数记为 \(f'(x)\) 或 \(\frac{df}{dx}\)。
② 偏导数(Partial Derivative):对于多变量函数 \(f(x_1, x_2, \dots, x_n)\),偏导数描述函数相对于其中一个变量的变化率,同时保持其他变量不变。记为 \(\frac{\partial f}{\partial x_i}\)。
③ 梯度(Gradient):由一个多元函数的所有偏导数组成的向量。对于函数 \(f(\mathbf{x})\),其中 \(\mathbf{x} = [x_1, \dots, x_n]^T\),其梯度记为 \(\nabla f(\mathbf{x})\),定义为:
\[ \nabla f(\mathbf{x}) = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{bmatrix} \]
梯度向量指向函数值增长最快的方向。在优化中,我们通常沿着梯度的反方向(最速下降方向)更新参数以最小化函数。
Appendix A3.2: 链式法则 (Chain Rule)
链式法则是计算复合函数导数的重要规则。如果 \(y = f(u)\) 且 \(u = g(x)\),那么 \(y\) 关于 \(x\) 的导数是:
\[ \frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx} \]
对于多变量函数,链式法则更为复杂,但其核心思想相同。神经网络的训练就是通过链式法则逐层计算梯度,这被称为反向传播(Backpropagation)算法。
Appendix A3.3: 积分 (Integral)
积分可以理解为求函数曲线下面积的过程,与导数互为逆运算。在概率论中,计算连续随机变量在某个区间内的概率需要用到积分(概率密度函数的积分)。在强化学习理论中,价值函数(Value Function)可以看作是对未来奖励的累积,数学上表示为期望的和或积分。
Appendix A4: 优化理论 (Optimization Theory)
优化理论是研究如何在给定约束下最大化或最小化某个目标函数的数学分支。深度强化学习的训练过程本质上就是一个优化问题:找到一组模型参数(如神经网络的权重),使得某个目标函数(如期望累积奖励或价值函数的预测误差)达到最优。
Appendix A4.1: 优化问题 (Optimization Problem)
一个标准的优化问题通常表示为:
\[ \min_{\mathbf{w}} L(\mathbf{w}) \]
或
\[ \max_{\mathbf{w}} J(\mathbf{w}) \]
其中 \(\mathbf{w}\) 是需要优化的参数,\(L(\mathbf{w})\) 是损失函数(需要最小化),\(J(\mathbf{w})\) 是目标函数(需要最大化)。许多DRL算法,如DQN最小化贝尔曼误差,策略梯度最大化期望累积奖励。
Appendix A4.2: 梯度下降法及其变体 (Gradient Descent and Variants)
梯度下降法(Gradient Descent, GD)是求解无约束优化问题的最基本方法。它通过迭代更新参数,每次沿着当前梯度的反方向移动一小步。
参数更新规则:
\[ \mathbf{w}_{k+1} = \mathbf{w}_k - \alpha \nabla L(\mathbf{w}_k) \]
其中 \(\alpha > 0\) 是学习率(Learning Rate),控制每次更新的步长。
① 批量梯度下降(Batch Gradient Descent):使用整个训练数据集计算梯度进行更新。计算量大,适用于小数据集。
② 随机梯度下降(Stochastic Gradient Descent, SGD):每次只使用一个样本或一小批样本(Mini-batch)计算梯度进行更新。引入随机性,可以跳出局部最优,训练速度快,适用于大规模数据,是深度学习中最常用的优化方法。
③ SGD的改进算法:为了解决SGD收敛速度慢、震荡等问题,发展了许多改进算法,如动量法(Momentum)、Adagrad、RMSprop、Adam等。这些算法通过调整学习率或利用梯度的历史信息来加速收敛和提高稳定性。在DRL中,Adam及其变体非常常用。
Appendix A4.3: 学习率 (Learning Rate)
学习率是优化算法中最重要的超参数(Hyperparameter)之一。
▮▮▮▮⚝ 学习率过大可能导致参数更新震荡,无法收敛甚至发散。
▮▮▮▮⚝ 学习率过小可能导致收敛速度过慢,陷入局部最优。
通常需要通过实验进行调优,或者使用学习率衰减(Learning Rate Decay)策略。
Appendix A4.4: 损失函数与目标函数 (Loss Function and Objective Function)
① 损失函数(Loss Function):衡量模型预测值与真实值之间的误差。优化目标是最小化损失函数。在DQN中,常用的损失函数是预测Q值与目标Q值之间的均方误差(Mean Squared Error, MSE)。
② 目标函数(Objective Function):更广义的概念,可以是需要最大化或最小化的任何函数。在策略梯度方法中,目标函数通常是策略的期望累积奖励,需要最大化。
这些数学基础构成了理解和实现深度强化学习算法的基石。对这些概念的扎实掌握将极大地帮助读者深入学习后续章节的具体算法细节。
Appendix B: 术语对照与词汇表 (Glossary of Terms)
本附录提供了本书中使用的主要术语的中文与英文对照,并简要解释其含义,旨在帮助读者快速查阅和理解核心概念。
⚝ Actor-Critic (AC): 一种强化学习算法框架,其中包含两个独立的(或部分共享参数的)神经网络:Actor(行动者)负责学习策略(即选择动作),Critic(评论家)负责评估当前策略的好坏(通常通过学习价值函数)。两者协同优化,Actor根据Critic的评估调整策略,Critic则根据环境反馈和Actor的行为更新价值估计。
⚝ A2C (Advantage Actor-Critic): A3C 的同步(Synchronous)版本。在多个并行环境中收集经验,并在主线程上同步计算梯度并更新全局网络参数。
⚝ A3C (Asynchronous Advantage Actor-Critic): 一种Actor-Critic算法,通过异步并行训练多个智能体来提高样本效率和稳定性。每个智能体在自己的环境副本中独立探索并计算梯度,然后异步地更新一个共享的全局网络参数。
⚝ AlphaGo: 由DeepMind开发的一系列围棋程序,使用深度学习和蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS)以及深度强化学习技术,在围棋比赛中击败了人类世界冠军,是深度强化学习领域的一个标志性突破。
⚝ Batch Normalization (批量归一化): 一种深度学习技术,用于规范化神经网络层输入的数据分布,可以加速训练、提高稳定性并允许使用更高的学习率。
⚝ Baseline (基线): 在策略梯度方法中,一个用于减小梯度估计方差的值。常用的基线是状态价值函数 \(V(s)\),策略梯度更新时使用优势函数 \(A(s, a) = Q(s, a) - V(s)\)。
⚝ Bellman Equation (贝尔曼方程): 描述了强化学习中价值函数之间关系的方程。它表达了当前状态(或状态-动作对)的价值与其可能的后继状态(或状态-动作对)的价值之间的递推关系,是动态规划和无模型RL算法的基础。
⚝ Bellman Expectation Equation (贝尔曼期望方程): 在给定策略 \( \pi \) 下,状态价值函数 \( v_\pi(s) \) 和动作价值函数 \( q_\pi(s, a) \) 满足的方程。它描述了当前状态/状态-动作对的期望价值等于即时奖励加上下一状态期望价值(或下一状态-动作对期望价值)的折扣之和。
⚝ Bellman Optimality Equation (贝尔曼最优方程): 描述了最优价值函数 \( v_*(s) \) 和 \( q_*(s, a) \) 满足的方程。它表明最优价值等于在当前状态/状态-动作对下,通过选择最优动作所能获得的即时奖励加上下一状态最优期望价值的折扣之和。
⚝ Behavior Cloning (行为克隆): 一种模仿学习方法,通过监督学习直接将专家观测到的状态映射到其对应的动作。
⚝ Behavior Constraint (行为约束): 离线强化学习中用于解决分布偏移的一类方法,通过限制学习到的策略与用于训练的离线数据集中的行为策略的差距来确保策略不会在未充分覆盖的状态-动作对上采取动作。
⚝ Bootstrap DQN: DQN的一种改进,通过在训练过程中使用多个"头部"(head)来估计Q函数的不同可能值,从而量化不确定性,并利用这种不确定性指导探索。
⚝ Categorical DQN: DQN的一种变体,不直接预测Q值的期望,而是预测Q值的分布,从而更丰富地表征Q值的不确定性。
⚝ Causality in RL (因果推理在RL中): 研究如何在强化学习问题中引入因果关系的概念,以提高学习效率、泛化能力和可解释性。
⚝ Centralized Training Decentralized Execution (CTDE, 中心化训练分布式执行): 多智能体强化学习中的一种常用范式。在训练阶段,利用全局信息(如所有智能体的状态和动作)进行协调和学习;在执行阶段,每个智能体仅依赖本地观测和学到的策略独立行动。
⚝ CNN (Convolutional Neural Network, 卷积神经网络): 一种深度学习模型,特别擅长处理具有网格结构的数据,如图像。通过卷积层、池化层等提取空间特征。
⚝ Conservatism (保守估计): 离线强化学习中用于解决分布偏移的一类方法,通过惩罚或降低在离线数据集中未充分见到的状态-动作对的Q值估计,从而使学习到的策略更保守、更依赖于有数据的区域。
⚝ Covariate Shift (协变量偏移): 在机器学习(尤其是行为克隆)中出现的一种问题,指训练数据(专家轨迹)和智能体在实际环境中生成的数据(由当前策略生成)的状态分布不同。
⚝ Credit Assignment (信用分配): 强化学习中的核心问题之一,指如何确定在长时间序列的动作中,哪些动作对最终获得的(延迟)奖励产生了贡献,并据此更新之前的策略或价值函数。在多智能体RL中,还存在全局奖励如何在不同智能体之间分配的挑战。
⚝ Critic (评论家): 在Actor-Critic框架中,负责评估Actor当前策略好坏的组件,通常通过学习一个价值函数来实现。
⚝ Curiosity (好奇心): 一种内在激励信号,鼓励智能体探索环境中的新颖或不确定区域,通常基于预测误差或对环境动态的理解。
⚝ DAgger (Dataset Aggregation, 数据集聚合): 一种交互式模仿学习算法,通过迭代地收集由当前策略生成的轨迹,并请求专家提供这些状态下的正确动作,然后将新数据聚合到训练集中,从而缓解行为克隆的协变量偏移问题。
⚝ Delayed Reward (延迟奖励): 指智能体的动作带来的奖励并不是即时获得的,而是在未来某个时刻或序列结束时才能得到,这使得信用分配问题更加复杂。
⚝ Deep Learning (深度学习): 机器学习的一个分支,使用包含多个隐藏层(即“深度”)的神经网络来从数据中学习多层次的抽象表示。
⚝ Deep Reinforcement Learning (深度强化学习, DRL): 将深度学习的强大感知和函数逼近能力与强化学习的决策框架相结合的人工智能方法。使用深度神经网络作为函数逼近器来表示价值函数或策略,以处理高维、连续或原始感官输入的状态和动作空间。
⚝ Deep Deterministic Policy Gradient (DDPG, 深度确定性策略梯度): 一种用于连续动作空间的Actor-Critic算法。Actor学习一个确定性策略,Critic学习对应的Q函数。采用经验回放和目标网络来提高训练稳定性,类似于DQN。
⚝ Deep Q-Network (DQN, 深度Q网络): 第一个成功地将深度学习应用于强化学习的算法。使用一个深度卷积神经网络来逼近Q函数,处理图像状态输入,并引入经验回放和目标网络来解决训练不稳定问题。
⚝ Deterministic Policy (确定性策略): 一种策略,对于给定的状态 \(s\),总是选择同一个动作 \(a\)。表示为 \(a = \mu(s)\)。
⚝ Discount Factor (折扣因子): 用符号 \( \gamma \) 表示,用于衡量未来奖励相对于当前奖励的重要性。通常取值在 [0, 1] 之间。 \( \gamma \) 越接近 0,智能体越关注即时奖励;越接近 1,智能体越关注长期累积奖励。
⚝ Distribution Shift (分布偏移): 离线强化学习中的核心挑战。指用于训练的离线数据集的状态-动作分布与学习到的策略在实际执行时可能遇到的状态-动作分布不同。如果策略在数据集中没有充分覆盖的区域采取了次优或危险的动作,可能导致性能下降或灾难性后果。
⚝ Domain Randomization (领域随机化): 一种模拟到现实(Sim-to-Real)迁移的常用技术,通过在模拟环境中对环境参数(如物体形状、颜色、物理属性、传感器噪声等)进行随机化,迫使策略学习对这些变化具有鲁棒性,从而提高其在真实世界中的泛化能力。
⚝ Double DQN (双DQN): DQN的一种改进,通过使用两个Q网络(当前网络和目标网络)来解耦动作选择和动作评估,从而减轻Q函数过高估计(overestimation)的问题。
⚝ Dropout: 一种深度学习正则化技术,在训练过程中随机“关闭”一部分神经元,以减少模型对特定神经元的依赖,防止过拟合。
⚝ Dueling DQN (对决DQN): DQN的一种改进,将Q网络的最后一层分为两个流:一个预测状态价值函数 \(V(s)\),另一个预测优势函数 \(A(s, a)\),最后结合两者得到Q函数。这使得网络能够更好地估计状态价值,从而提高学习效率,特别是在动作选择对状态价值影响不大的情况下。
⚝ Dynamic Programming (动态规划, DP): 一种用于解决具有最优子结构和重叠子问题的复杂问题的算法范式。在强化学习中,动态规划用于在已知完整环境模型(MDP)的情况下计算价值函数和找到最优策略。
⚝ Environment (环境): 强化学习框架中的一个实体,智能体与其交互。环境接收智能体的动作,根据其内部动力学转移到新的状态,并向智能体发出奖励。
⚝ Entropy (熵): 在策略强化学习中,熵可以作为策略随机性的度量。将其加入奖励函数(如在SAC中)可以鼓励智能体探索,提高策略的鲁棒性。
⚝ Exploration vs. Exploitation (探索与利用): 强化学习中的一个基本权衡。智能体需要在探索(尝试新的、可能带来更高奖励的动作或状态)和利用(使用已知信息选择当前看来最优的动作以最大化当前奖励)之间做出选择。
⚝ Experience Replay (经验回放): 一种提高样本效率和打破数据相关性的技术。智能体将与环境交互产生的数据(状态、动作、奖励、下一状态)存储在一个回放缓冲区(Replay Buffer)中,并在训练时从中随机采样批量数据来更新网络参数。
⚝ Function Approximation (函数逼近): 使用参数化的函数(如神经网络)来近似表示价值函数 \(V(s)\)、 \(Q(s, a)\) 或策略 \( \pi(a|s) \),以便处理大规模或连续的状态和动作空间。
⚝ GAIL (Generative Adversarial Imitation Learning, 生成对抗模仿学习): 一种模仿学习算法,使用生成对抗网络(GAN)的框架。一个生成器(通常是智能体的策略)试图生成看起来像专家轨迹的动作序列,一个判别器则试图区分智能体生成的轨迹和真正的专家轨迹。通过优化生成器来“欺骗”判别器,智能体学习模仿专家。
⚝ Gym / Gymnasium: OpenAI 开发的标准强化学习环境接口库,提供了多种环境(如经典控制、雅达利游戏等),方便研究者开发和比较不同算法。
⚝ Hierarchical Reinforcement Learning (HRL, 分层强化学习): 一类强化学习方法,通过引入层次结构来解决复杂任务和长期信用分配问题。通常包含高层管理者(Manager)和低层执行者(Worker),管理者设定高层目标或子任务,执行者学习如何完成这些子任务。
⚝ Hyperparameter Tuning (超参数调优): 选择和调整影响算法性能而非通过训练学习的参数,如学习率、折扣因子、批量大小、网络结构等。
⚝ Imitation Learning (模仿学习): 一类机器学习方法,智能体通过观察专家(通常是人类)的演示来学习完成任务,而不是通过试错获得奖励信号来学习。
⚝ IQL (Implicit Q-learning): 一种离线强化学习算法,通过学习一个Implicit Q-function并采用特定的目标函数,避免显式地查询未充分见到的状态-动作对的Q值,从而减轻分布偏移。
⚝ Intrinsic Motivation (内在激励): 除了环境提供的外部奖励外,智能体内部产生的一种驱动其探索、学习或掌握新技能的奖励信号。
⚝ Keywords (关键词): 在本书的元数据中列出的与书籍内容相关的重要术语和概念,便于检索和分类。
⚝ Loss Function (损失函数): 在机器学习中,用于衡量模型预测输出与真实目标之间差距的函数。训练过程中优化目标是最小化损失函数。
⚝ Machine Learning (机器学习): 人工智能的一个分支,使计算机系统能够通过学习数据而不是显式编程来执行任务。
⚝ MADDPG (Multi-Agent Deep Deterministic Policy Gradient): DDPG在多智能体环境中的扩展,通常采用中心化训练、分布式执行的范式。训练时可以访问所有智能体的观测和动作,但执行时只使用本地信息。
⚝ Manager/Worker (管理者/执行者): 分层强化学习中常见的结构,管理者设定高级目标,执行者执行低级动作以实现这些目标。
⚝ Markov Chain (马尔可夫链): 具有马尔可夫性质的随机过程。未来的状态只依赖于当前状态,与过去状态无关。
⚝ Markov Decision Process (MDP, 马尔可夫决策过程): 强化学习的数学框架,一个五元组 \((S, A, P, R, \gamma)\),包括状态空间 \(S\)、动作空间 \(A\)、状态转移概率 \(P(s'|s, a)\)、奖励函数 \(R(s, a)\) 和折扣因子 \( \gamma \)。它假设环境具有马尔可夫性质。
⚝ Markov Property (马尔可夫性质): 一个随机过程的性质,指给定当前状态,未来状态的条件概率分布与过去状态无关。用数学表示为 \(P(S_{t+1} | S_t, S_{t-1}, ..., S_0) = P(S_{t+1} | S_t)\)。
⚝ Markov Reward Process (MRP, 马尔可夫奖励过程): 在马尔可夫链基础上增加了奖励函数。一个四元组 \((S, P, R, \gamma)\),包括状态空间 \(S\)、状态转移概率 \(P(s'|s)\)、奖励函数 \(R(s)\) 和折扣因子 \( \gamma \)。
⚝ Meta-Reinforcement Learning (Meta-RL, 元强化学习): 研究如何使智能体能够快速适应新的任务或环境,学习“如何学习”的强化学习方法。
⚝ Model-Augmented Model-Free RL (使用模型辅助无模型学习): 一类模型基础强化学习方法,智能体学习环境模型,但不直接基于模型进行规划,而是用模型生成数据来辅助无模型算法(如Q学习或策略梯度)的训练,提高样本效率。
⚝ Model-Based Reinforcement Learning (模型基础强化学习): 一类强化学习方法,智能体尝试学习或已知环境的模型(包括状态转移概率和奖励函数),然后利用模型进行规划或生成合成数据来辅助策略/价值函数的学习。
⚝ Model Predictive Control (MPC, 模型预测控制): 一种控制策略,在每个时间步,利用环境模型预测未来一段时间内的系统状态,并优化未来一段时间内的控制动作序列,但实际只执行序列中的第一个动作,然后重复该过程。
⚝ MSE (Mean Squared Error, 均方误差): 常用的回归问题损失函数,计算预测值与真实值差的平方的平均值。在基于值的强化学习中,常用于衡量预测Q值与目标Q值之间的差异。
⚝ Multi-Agent Reinforcement Learning (MARL, 多智能体强化学习): 研究多个智能体在共享环境或交互环境中学习和决策的强化学习领域。智能体可以是合作、竞争或混合关系。
⚝ Neural Network (神经网络): 受生物神经元结构启发的一种计算模型,由多层连接的节点(神经元)组成,用于学习复杂的模式和函数映射。
⚝ Noisy Net: DQN的一种改进,通过向网络权重添加噪声来鼓励智能体进行参数空间上的探索。
⚝ Non-stationary Environment (非平稳环境): 在多智能体强化学习中常见的一种挑战。由于其他智能体的策略在学习过程中不断变化,从单个智能体的视角来看,环境的动态和奖励函数也在变化,不再满足标准的MDP假设。
⚝ Offline Reinforcement Learning (离线强化学习): 一类强化学习方法,智能体仅从一个固定的、预先收集的离线数据集(通常是历史交互数据)中学习策略,而不与环境进行实时交互。
⚝ Offline-to-Online Transfer (离线到在线迁移): 研究如何利用离线数据进行预训练,然后在新环境或同一环境的在线交互中快速适应或进一步优化策略。
⚝ Option (选项): 分层强化学习中的一个概念,可以看作是一种“扩展的动作”。一个选项由一个起始状态集、一个策略和一个终止条件组成。一旦选择了某个选项,智能体就按照该选项的策略执行,直到满足终止条件。
⚝ Optimal Policy (最优策略): 在所有可能的策略中,能够最大化从任何状态开始的期望累积奖励(或期望回报)的策略。
⚝ Optimal Value Function (最优价值函数): 在所有可能策略中,对于某个状态 \(s\) 或状态-动作对 \((s, a)\) 所能达到的最大期望累积奖励(或期望回报)的价值函数。表示为 \(v_*(s)\) 和 \(q_*(s, a)\)。
⚝ Optimizer (优化器): 在深度学习训练中,用于更新模型参数以最小化损失函数的算法,如梯度下降(SGD)、Adam、RMSprop等。
⚝ Policy (策略): 智能体的行为函数,定义了在给定状态下采取每个可能动作的概率分布(随机性策略 \( \pi(a|s) \))或直接指定要采取的动作(确定性策略 \(a = \mu(s)\))。
⚝ Policy Evaluation (策略评估): 在动态规划或时序差分学习中,给定一个策略 \( \pi \),计算该策略下每个状态的价值函数 \( v_\pi(s) \) 或每个状态-动作对的价值函数 \( q_\pi(s, a) \)。
⚝ Policy Gradient (策略梯度): 一类直接学习策略函数 \(\pi(a|s)\) 的强化学习方法。通过计算策略目标函数(通常是期望回报)关于策略参数的梯度,并沿着梯度方向更新策略参数,以增加高回报动作的概率并减少低回报动作的概率。
⚝ Policy Improvement (策略改进): 在动态规划或策略梯度方法中,根据当前的价值函数找到一个更好的策略。对于基于值的策略改进,通常是选择当前状态下能够最大化 \(q_\pi(s, a)\) 的动作。
⚝ Policy Iteration (策略迭代): 一种动态规划算法,包含两个交替进行的步骤:策略评估(计算当前策略的价值函数)和策略改进(基于当前价值函数找到更好的策略),直到策略收敛到最优策略。
⚝ Prioritized Experience Replay (PER, 优先经验回放): 经验回放的一种改进,智能体在采样经验时不是均匀随机采样,而是优先采样那些具有更高学习价值的经验(通常基于TD误差的绝对值)。
⚝ Q-Learning (Q-学习): 一种无模型的时序差分强化学习算法,用于学习最优动作价值函数 \( q_*(s, a) \)。其更新规则直接基于贝尔曼最优方程,通过 Q-target \( R + \gamma \max_{a'} Q(s', a') \) 来更新 \( Q(s, a) \)。
⚝ QMIX: 一种基于值分解的多智能体强化学习算法,用于解决合作任务中的信用分配问题。它学习一个单独的Q网络来估算全局价值函数,但要求全局Q函数可以被分解为每个智能体的本地Q函数的单调组合,从而允许分布式执行。
⚝ Rainbow: 一种将DQN的多种重要改进(如Double DQN, PER, Dueling DQN, Categorical DQN, Noisy Net等)集成在一起的算法,通常能取得比单一DQN变种更好的性能。
⚝ REINFORCE: 最简单的策略梯度算法之一,使用蒙特卡洛方法估计策略梯度。它通过一个完整的轨迹的累积回报(G_t)来更新策略参数。
⚝ Reinforcement Learning (强化学习, RL): 机器学习的一个分支,智能体通过与环境进行交互,接收奖励或惩罚信号,学习如何在特定状态下采取最优动作以最大化长期累积奖励。
⚝ Replay Buffer (回放缓冲区): 在经验回放中用于存储智能体与环境交互数据的存储结构。
⚝ Return (回报): 从某个时间步开始,未来所有折扣奖励的总和。智能体学习的目标是最大化期望回报。有两种主要形式:有限时域无折扣回报和无限时域折扣回报 \( G_t = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} \)。
⚝ Reward (奖励): 环境在智能体执行动作后给予的标量反馈信号,可以是正面的(奖励)或负面的(惩罚)。智能体试图最大化累积奖励。
⚝ RNN (Recurrent Neural Network, 循环神经网络): 一类深度学习模型,擅长处理序列数据。通过在网络中引入循环连接,使得信息可以在时间步之间传递,具有记忆能力。
⚝ Robustness (鲁棒性): 智能体在面对环境变化、噪声或干扰时,仍能保持良好性能的能力。
⚝ SAC (Soft Actor-Critic): 一种Actor-Critic算法,将最大化期望回报的目标修改为最大化期望回报与策略熵之和,从而在最大化回报的同时鼓励探索。
⚝ Sample Efficiency (样本效率): 衡量一个强化学习算法需要与环境进行多少次交互才能学到一个好的策略。高样本效率意味着算法可以用较少的数据进行学习。
⚝ SGD (Stochastic Gradient Descent, 随机梯度下降): 一种常用的优化算法,用于最小化损失函数。每次迭代使用少量样本(一个批量)计算梯度并更新参数。
⚝ State (状态): 环境的描述,智能体根据当前状态决定采取什么动作。状态可以是离散的或连续的。
⚝ State-Value Function \( v_\pi(s) \) (状态价值函数): 在给定策略 \( \pi \) 下,从状态 \(s\) 开始的期望回报。
⚝ Action (动作): 智能体在特定状态下可以采取的行动。动作空间可以是离散的或连续的。
⚝ Action-Value Function \( q_\pi(s, a) \) (动作价值函数): 在给定策略 \( \pi \) 下,从状态 \(s\) 开始并采取动作 \(a\),然后遵循策略 \( \pi \) 继续下去的期望回报。
⚝ Target Network (目标网络): 在DQN及其变体中使用的技术,用于计算TD目标值。它是一个复制了主网络(Online Network)参数的网络,但其参数更新频率远低于主网络,保持相对稳定,从而减少TD学习中的自举(bootstrapping)带来的不稳定性。
⚝ TD3 (Twin Delayed Deep Deterministic Policy Gradient): DDPG的一种改进,用于连续动作空间。引入了三个主要改进:双Critic(取两个Critic预测的最小值作为Q值估计)、延迟策略更新(Actor更新频率低于Critic)和平滑目标策略(在计算目标Q值时对目标动作添加噪声)。
⚝ Temporal-Difference Learning (TD Learning, 时序差分学习): 一类无模型强化学习方法,智能体通过“从未来预测中学习”来更新价值函数或策略。TD方法在每个时间步进行更新,利用当前估计的未来价值来更新当前状态的价值估计,结合了蒙特卡洛方法和动态规划的思想。
⚝ TensorFlow: Google 开发的一个开源深度学习框架。
⚝ Value Function (价值函数): 用于评估给定状态或状态-动作对的长期期望回报。强化学习算法通常学习价值函数以指导决策。
⚝ Value Iteration (价值迭代): 一种动态规划算法,直接迭代地计算最优价值函数 \( v_*(s) \) 或 \( q_*(s, a) \),直到收敛。一旦获得最优价值函数,最优策略可以很容易地推导出来。
⚝ Value Decomposition (值分解): 多智能体强化学习中用于解决合作任务信用分配问题的一类方法,假设全局价值函数可以分解为每个智能体的本地价值函数的某种组合形式,并且这种组合形式是单调的,这样最大化全局价值就等价于最大化每个智能体的本地价值。VDN和QMIX是代表性算法。
⚝ Value-Based Methods (基于值的方法): 一类强化学习算法,智能体学习价值函数(如 \(V(s)\) 或 \(Q(s, a)\)),然后根据价值函数来选择动作(通常是选择使得Q值最大的动作)。
⚝ VDN (Value Decomposition Network): 一种简单的值分解MARL算法,假设全局Q函数是每个智能体本地Q函数的简单求和。
⚝ 经验回放 (Experience Replay): See Experience Replay.
⚝ 多智能体强化学习 (Multi-Agent Reinforcement Learning, MARL): See Multi-Agent Reinforcement Learning.
⚝ 深度学习 (Deep Learning): See Deep Learning.
⚝ 深度强化学习 (Deep Reinforcement Learning, DRL): See Deep Reinforcement Learning.
⚝ 策略 (Policy): See Policy.
⚝ 强化学习 (Reinforcement Learning, RL): See Reinforcement Learning.
⚝ 离线强化学习 (Offline Reinforcement Learning): See Offline Reinforcement Learning.
⚝ 目标网络 (Target Network): See Target Network.
⚝ 价值函数 (Value Function): See Value Function.
⚝ 马尔可夫决策过程 (Markov Decision Process, MDP): See Markov Decision Process.
⚝ 智能体 (Agent): See Agent.
⚝ 模仿学习 (Imitation Learning): See Imitation Learning.
⚝ 探索与利用 (Exploration vs. Exploitation): See Exploration vs. Exploitation.
⚝ 函数逼近 (Function Approximation): See Function Approximation.
⚝ 环境 (Environment): See Environment.
⚝ 确定性策略梯度 (Deterministic Policy Gradient, DPG): See Deterministic Policy Gradient.
⚝ 确定性策略 (Deterministic Policy): See Deterministic Policy.
⚝ 时序差分学习 (Temporal-Difference Learning, TD): See Temporal-Difference Learning.
⚝ 状态 (State): See State.
⚝ 状态价值函数 \( v_\pi(s) \) (State-Value Function): See State-Value Function \( v_\pi(s) \).
⚝ 回报 (Return): See Return.
⚝ 奖励 (Reward): See Reward.
⚝ 动态规划 (Dynamic Programming, DP): See Dynamic Programming.
⚝ 动作 (Action): See Action.
⚝ 动作价值函数 \( q_\pi(s, a) \) (Action-Value Function): See Action-Value Function \( q_\pi(s, a) \).
⚝ 算法 (Algorithm): 用于解决特定问题或执行特定任务的详细步骤集。
⚝ 批量归一化 (Batch Normalization): See Batch Normalization.
⚝ 半马尔可夫决策过程 (Semi-Markov Decision Process, SMDP): MDP的一种推广,动作可以持续一段时间,而不是瞬间完成。
⚝ 双DQN (Double DQN): See Double DQN.
⚝ 对决网络 (Dueling Network): See Dueling DQN.
⚝ 参数空间探索 (Parameter Space Exploration): 一类探索方法,直接在智能体的策略参数空间而不是动作空间中引入随机性进行探索。
⚝ 分布式强化学习 (Distributed Reinforcement Learning): 利用多个计算节点或多个环境副本来加速强化学习训练或部署。
⚝ 策略评估 (Policy Evaluation): See Policy Evaluation.
⚝ 策略改进 (Policy Improvement): See Policy Improvement.
⚝ 策略迭代 (Policy Iteration): See Policy Iteration.
⚝ 策略梯度 (Policy Gradient): See Policy Gradient.
⚝ 策略梯度定理 (Policy Gradient Theorem): See Policy Gradient Theorem.
⚝ 数据集聚合 (Dataset Aggregation, DAgger): See DAgger.
⚝ 生成对抗模仿学习 (Generative Adversarial Imitation Learning, GAIL): See GAIL.
⚝ 环境模型 (Environment Model): 对环境动态(状态转移和奖励函数)的数学描述或学习到的近似。
⚝ 状态空间 (State Space): 智能体可能处于的所有状态的集合。
⚝ 离线数据 (Offline Data): 预先收集的、用于离线强化学习训练的经验轨迹数据集。
⚝ 离线到在线迁移 (Offline-to-Online Transfer): See Offline-to-Online Transfer.
⚝ 神经网络 (Neural Network): See Neural Network.
⚝ 经验 (Experience): 智能体与环境交互产生的一个四元组 (状态, 动作, 奖励, 下一状态) 或五元组 (状态, 动作, 奖励, 下一状态, 是否终止)。
⚝ 回报函数 (Reward Function): 定义了在特定状态下采取特定动作后智能体获得的即时奖励。
⚝ 批量 (Batch): 在神经网络训练中,用于一次梯度计算和参数更新的一组数据样本。
⚝ 优先经验回放 (Prioritized Experience Replay, PER): See Prioritized Experience Replay.
⚝ 价值迭代 (Value Iteration): See Value Iteration.
⚝ 价值分解 (Value Decomposition): See Value Decomposition.
⚝ 信念状态 (Belief State): 在部分可观测马尔可夫决策过程 (POMDP) 中,智能体无法直接感知环境的真实状态,而是维护一个关于真实状态概率分布的信念状态。
⚝ 部分可观测马尔可夫决策过程 (Partially Observable Markov Decision Process, POMDP): MDP的一种推广,智能体只能获得环境的部分观测,而不是完整的状态信息。
⚝ 协变量偏移 (Covariate Shift): See Covariate Shift.
⚝ 后验采样 (Posterior Sampling): 一种贝叶斯探索方法,智能体对环境模型或Q函数的后验分布进行采样,并根据采样结果采取动作进行探索。
⚝ 奖励函数 (Reward Function): See 回报函数.
⚝ 目标函数 (Objective Function): 在机器学习或优化问题中,需要被最大化或最小化的函数。在强化学习中,通常是期望累积回报或策略梯度中的特定表达式。
⚝ 目标网络 (Target Network): See Target Network.
⚝ 蒙特卡洛方法 (Monte Carlo Methods): 一类通过从经验中采样来估计价值或策略的无模型强化学习方法。需要完整的轨迹才能进行更新。
⚝ 行为策略 (Behavior Policy): 在离线强化学习中,用于收集训练数据集的策略。
⚝ 行为克隆 (Behavioral Cloning): See Behavioral Cloning.
⚝ 贝尔曼方程 (Bellman Equation): See Bellman Equation.
⚝ 贝尔曼期望方程 (Bellman Expectation Equation): See Bellman Expectation Equation.
⚝ 贝尔曼最优方程 (Bellman Optimality Equation): See Bellman Optimality Equation.
⚝ 跳过连接 (Skip Connection / Residual Connection): 在深度神经网络中,允许信息跳过一个或多个层直接传递到后面的层,有助于缓解梯度消失问题,构建更深的网络。
⚝ 轨迹 (Trajectory): 智能体与环境交互产生的一系列状态、动作和奖励的序列,例如 \( (S_0, A_0, R_1, S_1, A_1, R_2, S_2, ...) \)。
⚝ 迁移学习 (Transfer Learning): 利用在一个任务中学到的知识来帮助解决另一个相关任务。
⚝ 价值函数逼近 (Value Function Approximation): 使用函数逼近器(如神经网络)来估计价值函数。
⚝ 确定性策略梯度 (Deterministic Policy Gradient, DPG): See Deterministic Policy Gradient.
⚝ 确定性策略 (Deterministic Policy): See Deterministic Policy.
⚝ 长期信用分配 (Long-Term Credit Assignment): 指智能体如何判断一个遥远的过去动作对最终奖励的贡献。
⚝ 策略外学习 (Off-Policy Learning): 学习一个策略(目标策略),但通过遵循另一个不同的策略(行为策略)产生的经验进行学习。
⚝ 策略内学习 (On-Policy Learning): 学习和评估的策略是同一个策略,学习过程中的经验由当前正在学习的策略产生。
⚝ 策略梯度 (Policy Gradient): See Policy Gradient.
⚝ 泛化能力 (Generalization Ability): 智能体在未见过的新状态或新任务中表现良好的能力。
⚝ 激励设计 (Reward Shaping / Incentive Design): 设计或修改奖励函数,以指导智能体学习期望的行为,同时又不改变最优策略。
⚝ 状态转移概率 (State Transition Probability): 在MDP中,指在状态 \(s\) 下采取动作 \(a\) 后,环境转移到下一状态 \(s'\) 的概率 \( P(s'|s, a) \)。
⚝ 状态空间 (State Space): See State Space.
⚝ 环境建模 (Environment Modeling): 构建环境的模型,预测状态转移和奖励。
⚝ 环境 (Environment): See Environment.
⚝ 用户模拟器 (User Simulator): 在推荐系统、对话系统等应用中,用于模拟用户行为以生成大量交互数据进行强化学习训练的模型。
⚝ 经验回放 (Experience Replay): See Experience Replay.
⚝ 经验池 (Replay Buffer): See Replay Buffer.
⚝ 内在激励 (Intrinsic Motivation): See Intrinsic Motivation.
⚝ 自助法 (Bootstrapping): 在时序差分学习中,使用对下一个状态价值的当前估计来更新当前状态的价值估计。
⚝ 自动驾驶 (Autonomous Driving): 使车辆能够在没有人类干预的情况下感知环境、做出决策和执行控制,常应用DRL解决决策和规划问题。
⚝ 行为约束 (Behavior Constraint): See Behavior Constraint.
⚝ 行为策略 (Behavior Policy): See Behavior Policy.
⚝ 贝尔曼方程 (Bellman Equation): See Bellman Equation.
⚝ 部分可观测马尔可夫决策过程 (Partially Observable Markov Decision Process, POMDP): See 部分可观测马尔可夫决策过程.
⚝ 预测误差 (Prediction Error): 在内在激励中,常用于衡量智能体对环境动态或自身感知的预测准确性,大的预测误差可以作为激励信号鼓励探索。
⚝ 规划 (Planning): 在已知环境模型的情况下,通过计算来找到最优策略的过程,如动态规划。
⚝ 资产组合管理 (Portfolio Management): 在金融领域,使用DRL来优化资产配置和交易策略以最大化长期回报。
⚝ 轨迹 (Trajectory): See Trajectory.
⚝ 转移概率 (Transition Probability): See 状态转移概率.
⚝ 连续动作空间 (Continuous Action Space): 智能体可以采取的动作是连续值,例如机器人关节的角度、车辆的速度等。
⚝ 离散动作空间 (Discrete Action Space): 智能体可以采取的动作是有限集合中的一个动作,例如游戏中的“上、下、左、右”。
⚝ 监督学习 (Supervised Learning): 机器学习范式,从带有标签的训练数据中学习输入到输出的映射函数。
⚝ 稀疏奖励 (Sparse Reward): 环境提供的非零奖励信号非常少或只在任务成功时才出现,使得智能体难以通过试错找到奖励信号。
⚝ 目标 Q 值 (Target Q Value): 在基于值的TD学习中,用于更新当前Q值估计的目标值,通常由即时奖励和下一状态(或下一状态-动作对)的估计价值计算得出。
⚝ 经验池 (Replay Buffer): See Replay Buffer.
⚝ 总回报 (Total Return): See Return.
⚝ 优势函数 (Advantage Function): 定义为 \(A(s, a) = Q(s, a) - V(s)\),表示在状态 \(s\) 下采取动作 \(a\) 相对于平均而言(遵循策略 \( \pi \))能获得多少额外的回报。
⚝ 状态价值 (State Value): See 状态价值函数 \( v_\pi(s) \).
⚝ Q 值 (Q Value): See 动作价值函数 \( q_\pi(s, a) \).
⚝ Q 函数 (Q Function): See 动作价值函数 \( q_\pi(s, a) \).
⚝ Actor (行动者): 在Actor-Critic框架中,负责学习并输出策略(即选择动作)的组件,通常是一个神经网络。
⚝ Adam:一种常用的深度学习优化算法,结合了AdaGrad和RMSprop的优点,能够自适应地调整每个参数的学习率。
⚝ ReLU (Rectified Linear Unit, 修正线性单元):一种常用的神经网络激活函数,定义为 \( f(x) = \max(0, x) \)。
⚝ Sigmoid:一种常用的神经网络激活函数,将输入值映射到 (0, 1) 区间,常用于二分类输出层。
⚝ Tanh (Hyperbolic Tangent, 双曲正切):一种常用的神经网络激活函数,将输入值映射到 (-1, 1) 区间。
⚝ Softmax:一种常用的神经网络输出层函数,将一个向量的元素转换为概率分布,使得所有元素值在 (0, 1) 区间且总和为 1,常用于多分类问题或离散动作空间的策略输出。
⚝ 损失函数 (Loss Function): See Loss Function.
⚝ 优化器 (Optimizer): See Optimizer.
⚝ 梯度下降 (Gradient Descent, GD): 一种迭代优化算法,通过计算目标函数对参数的梯度,并沿着梯度的负方向更新参数,以最小化目标函数。
⚝ 随机梯度下降 (Stochastic Gradient Descent, SGD): See SGD.
⚝ 批量梯度下降 (Batch Gradient Descent, BGD): 每次使用全部训练数据计算梯度进行参数更新的梯度下降方法。
⚝ 小批量梯度下降 (Mini-batch Gradient Descent, MBGD): 每次使用一小部分(批量)训练数据计算梯度进行参数更新的梯度下降方法。
⚝ 全连接网络 (Fully Connected Network, FCN): 一种神经网络结构,相邻层之间的神经元两两之间都有连接。
⚝ 卷积神经网络 (Convolutional Neural Network, CNN): See CNN.
⚝ 循环神经网络 (Recurrent Neural Network, RNN): See RNN.
⚝ 模型基础 (Model-Based): See Model-Based Reinforcement Learning.
⚝ 无模型 (Model-Free): 指强化学习算法不学习或不使用环境的模型,而是直接从经验中学习价值函数或策略。
⚝ 离线策略 (Off-Policy): See 策略外学习.
⚝ 在线策略 (On-Policy): See 策略内学习.
⚝ 重要性采样 (Importance Sampling): 一种用于在不同分布之间估计期望值的方法,在策略外学习和离线强化学习中常用于修正行为策略和目标策略之间的分布差异。
⚝ 多步引导 (Multi-step Bootstrapping): 结合了蒙特卡洛方法和单步TD学习的方法,例如 \(n\)-步TD,使用未来 \(n\) 步的奖励和第 \(n\) 步状态的价值估计来计算更新目标。
⚝ \(n\)-步TD (\(n\)-step TD): See 多步引导.
⚝ 回报函数 (Reward Function): See 回报函数.
⚝ 环境模型 (Environment Model): See 环境建模.
⚝ 状态转移 (State Transition): 环境根据当前状态和智能体动作转移到下一个状态的过程。
⚝ 价值函数逼近 (Value Function Approximation): See 价值函数逼近.
⚝ 策略逼近 (Policy Approximation): 使用函数逼近器(如神经网络)来估计策略函数。
⚝ 收敛性 (Convergence): 算法在迭代过程中,参数或价值估计逐渐稳定并接近最优解的性质。
⚝ 稳定性 (Stability): 算法对超参数、初始化或数据噪声不敏感,能够持续稳定训练并取得良好性能的性质。
⚝ 样本效率 (Sample Efficiency): See Sample Efficiency.
⚝ 计算效率 (Computational Efficiency): 算法在训练和执行过程中所需的计算资源(时间、内存等)。
⚝ 可解释性 (Interpretability): 人类理解智能体如何做出决策的能力。
⚝ 鲁棒性 (Robustness): See 鲁棒性.
⚝ 安全强化学习 (Safe Reinforcement Learning): 研究如何在智能体学习和执行过程中避免进入危险状态或违反约束。
⚝ 约束强化学习 (Constrained Reinforcement Learning): 在最大化回报的同时,需要满足某些安全或其他约束条件的强化学习问题。
⚝ 元学习 (Meta-Learning): See Meta-Reinforcement Learning.
⚝ 多任务学习 (Multi-Task Learning): 同时学习多个相关任务,以利用任务之间的共享结构来提高每个任务的学习性能。
⚝ 终身学习 (Lifelong Learning): 智能体能够持续地学习新任务,并在学习新任务时不遗忘过去学到的知识。
⚝ 领域适应 (Domain Adaptation): 将在源领域学到的知识应用于目标领域,即使两个领域的任务或数据分布存在差异。
⚝ 模拟到现实 (Sim-to-Real): 将在模拟环境中训练的策略迁移到真实世界中执行。
⚝ 传感器融合 (Sensor Fusion): 整合来自多个传感器的数据以获得对环境更全面和准确的理解。
⚝ 机器人操作系统 (Robot Operating System, ROS): 一个灵活的机器人软件框架,提供了用于机器人开发和控制的工具和库。
⚝ 运动规划 (Motion Planning): 机器人学中,规划机器人如何在环境中从起始点移动到目标点的路径。
⚝ 轨迹优化 (Trajectory Optimization): 优化机器人的运动轨迹,通常以最小化时间、能量或平滑度为目标。
⚝ 人机协作 (Human-Robot Collaboration): 人类和机器人在共享空间或任务中协同工作。
⚝ 推荐系统 (Recommendation System): 通过分析用户历史行为或偏好,向用户推荐物品或信息的系统,常应用DRL进行序列化推荐或优化长期用户互动。
⚝ 广告投放 (Ad Placement): 在线广告系统中,使用DRL决定向用户展示哪个广告以最大化收益或点击率。
⚝ 资源调度 (Resource Allocation/Scheduling): 在计算、通信、能源等领域,使用DRL优化资源的分配和调度以提高效率或满足约束。
⚝ 自然语言处理 (Natural Language Processing, NLP): 研究如何使计算机理解、解释和生成人类语言。DRL在对话系统、机器翻译等领域有应用探索。
⚝ 计算机视觉 (Computer Vision, CV): 研究如何使计算机“看懂”图像和视频。DRL在视觉导航、目标跟踪等领域有应用。
⚝ 金融交易 (Financial Trading): 使用DRL开发自动化交易策略以在金融市场中获利。
⚝ 医疗健康 (Healthcare): 应用DRL进行个性化治疗方案推荐、药物研发、医疗诊断辅助等。
⚝ 网格世界 (Grid World): 一种简单的强化学习环境模型,智能体在一个网格状的地图中移动,目标通常是达到特定格子。
⚝ 雅达利游戏 (Atari Games): 一系列经典的电子游戏,常作为DRL算法的基准测试环境(如在Arcade Learning Environment, ALE中)。
⚝ MuJoCo (Multi-Joint dynamics with Contact): 一个物理仿真引擎,常用于机器人控制任务的DRL训练环境。
⚝ OpenAI Gym: See Gym.
⚝ PyTorch:Facebook AI 开发的一个开源深度学习框架。
⚝ TensorFlow: See TensorFlow.
⚝ Ray/RLlib: Ray是一个用于构建分布式应用的开源框架,RLlib是Ray中的一个可扩展的强化学习库,支持多种算法和分布式训练。
⚝ Stable Baselines3: 基于PyTorch的强化学习算法实现库,提供多种DRL算法的可靠实现,易于使用。
⚝ Acme: DeepMind 开发的一个基于TensorFlow的强化学习框架,专注于构建灵活、可重用和可扩展的RL算法组件。
Appendix C: DRL研究资源与学习路径 (DRL Resources and Learning Paths)
本附录旨在为希望进一步学习和深入研究深度强化学习 (Deep Reinforcement Learning, DRL) 的读者提供指导和资源推荐。DRL领域发展迅速,资源丰富多样,选择合适的学习材料和途径对于高效掌握知识至关重要。我们将推荐一些优秀的在线课程、经典书籍、重要研究论文、主流代码库与框架,并提供针对不同水平读者的学习路径建议。
Appendix C1: 在线课程与视频资源 (Online Courses and Video Resources)
系统的在线课程是入门和深入学习DRL的绝佳起点。它们通常结构清晰,包含理论讲解、实践演示和习题。
① 强化学习基础 (Reinforcement Learning Specialization)
▮▮▮▮⚝ 平台/机构: Coursera / University of Alberta
▮▮▮▮⚝ 描述: 这是由RL领域的先驱Richard Sutton教授及其团队提供的系列课程,从基础的RL概念(如马尔可夫决策过程 (Markov Decision Process, MDP)、动态规划 (Dynamic Programming, DP)、蒙特卡洛方法 (Monte Carlo Methods)、时序差分学习 (Temporal-Difference Learning, TD))讲起,逐步深入到函数逼近 (Function Approximation) 和前沿话题。尽管它主要侧重于传统RL,但为理解DRL奠定了坚实理论基础。
▮▮▮▮⚝ 适合人群: 初学者 (Beginners)、进阶者 (Intermediate)。
② 深度学习 (Deep Learning Specialization)
▮▮▮▮⚝ 平台/机构: Coursera / deeplearning.ai (Andrew Ng)
▮▮▮▮⚝ 描述: 这是一门非常受欢迎的深度学习入门课程,系统介绍了神经网络 (Neural Networks)、卷积神经网络 (Convolutional Neural Networks, CNN)、循环神经网络 (Recurrent Neural Networks, RNN) 等基础知识、优化方法和实践技巧。它是学习DRL中深度学习部分的必要补充。
▮▮▮▮⚝ 适合人群: 初学者 (Beginners)。
③ 强化学习 (Reinforcement Learning)
▮▮▮▮⚝ 平台/机构: UCL / DeepMind (David Silver)
▮▮▮▮⚝ 描述: David Silver(AlphaGo的主要作者之一)在伦敦大学学院 (UCL) 的RL课程,提供了RL领域的经典讲解视频。内容涵盖MDP、DP、MC、TD、函数逼近、策略梯度 (Policy Gradient)、Actor-Critic等。虽然视频发布较早,但经典理论部分至今仍极具价值。
▮▮▮▮⚝ 适合人群: 进阶者 (Intermediate)。
④ Spinning Up in Deep RL
▮▮▮▮⚝ 平台/机构: OpenAI
▮▮▮▮⚝ 描述: OpenAI提供的一个优秀的免费资源,包括教程和代码实现。它侧重于介绍主流的DRL算法(如Vanilla Policy Gradient, TRPO, PPO, DDPG, TD3, SAC, DQN, VPG),并提供了清晰的理论解释和配套的PyTorch/TensorFlow代码。
▮▮▮▮⚝ 适合人群: 初学者 (Beginners)、进阶者 (Intermediate)。
⑤ 高级深度强化学习 (Advanced Deep Learning & Reinforcement Learning)
▮▮▮▮⚝ 平台/机构: YouTube / DeepMind (Vincent Vanhoucke)
▮▮▮▮⚝ 描述: DeepMind研究员Vincent Vanhoucke在不同场合(如加州大学伯克利分校 UC Berkeley)讲授的高级DRL课程视频。内容通常涵盖DRL的最新进展和研究方向。
▮▮▮▮⚝ 适合人群: 进阶者 (Intermediate)、专家 (Experts)。
Appendix C2: 经典书籍 (Classic Books)
阅读经典书籍是系统构建知识体系的有效途径。
① 《强化学习:原理与计算 (Reinforcement Learning: An Introduction)》
▮▮▮▮⚝ 作者: Richard S. Sutton, Andrew G. Barto
▮▮▮▮⚝ 描述: 这本书是RL领域的“圣经”,提供了最全面的理论基础和算法介绍。从理论到算法,循序渐进,是深入理解RL的必备读物。第二版包含了对DRL的介绍。
▮▮▮▮⚝ 适合人群: 初学者 (Beginners)、进阶者 (Intermediate)、专家 (Experts)。
② 《深度学习 (Deep Learning)》
▮▮▮▮⚝ 作者: Ian Goodfellow, Yoshua Bengio, Aaron Courville
▮▮▮▮⚝ 描述: 这本书是深度学习领域的权威著作,系统介绍了深度学习的数学基础、基本概念、主流模型和方法。对于理解DRL中的深度学习部分至关重要。
▮▮▮▮⚝ 适合人群: 进阶者 (Intermediate)、专家 (Experts)。
③ 中文DRL相关书籍: 随着DRL的发展,也涌现了一些优秀的中文书籍,可以作为辅助阅读或入门材料。读者可以根据出版时间和评价进行选择。
▮▮▮▮⚝ 适合人群: 初学者 (Beginners)、进阶者 (Intermediate)。
Appendix C3: 重要研究论文 (Important Research Papers)
阅读原始研究论文是了解领域最新进展和思想源泉的关键。以下是一些具有里程碑意义或代表性的DRL论文。
① Playing Atari with Deep Reinforcement Learning (Mnih et al., 2013 / 2015)
▮▮▮▮⚝ 描述: 提出了深度Q网络 (Deep Q-Network, DQN),首次展示了DRL在复杂任务(Atari游戏)上达到人类甚至超人水平的能力,是DRL领域的开创性工作。
② Asynchronous Methods for Deep Reinforcement Learning (Mnih et al., 2016)
▮▮▮▮⚝ 描述: 提出了异步优势Actor-Critic (Asynchronous Advantage Actor-Critic, A3C) 算法,是Actor-Critic方法的重要进展,允许多个智能体并行地在不同环境副本中学习,提高了训练效率和稳定性。
③ Continuous control with deep reinforcement learning (Lillicrap et al., 2015)
▮▮▮▮⚝ 描述: 提出了深度确定性策略梯度 (Deep Deterministic Policy Gradient, DDPG) 算法,将DQN的思想扩展到连续动作空间,是解决连续控制问题的经典算法。
④ Proximal Policy Optimization Algorithms (Schulman et al., 2017)
▮▮▮▮⚝ 描述: 提出了近端策略优化 (Proximal Policy Optimization, PPO) 算法。PPO是一种易于实现且性能优越的策略梯度方法,通过约束策略更新的幅度来提高训练稳定性,是目前应用最广泛的DRL算法之一。
⑤ Addressing Function Approximation Error in Actor-Critic Methods (Fujimoto et al., 2018)
▮▮▮▮⚝ 描述: 提出了双延迟深度确定性策略梯度 (Twin Delayed Deep Deterministic Policy Gradient, TD3) 算法,针对DDPG中的Q值过高估计问题进行了改进,提高了连续控制任务的性能。
⑥ Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor (Haarnoja et al., 2018)
▮▮▮▮⚝ 描述: 提出了软Actor-Critic (Soft Actor-Critic, SAC) 算法,在RL目标中引入熵正则化项,鼓励智能体探索,提高了学习效率和鲁棒性,是当前连续控制领域的SOTA (State-of-the-Art) 算法之一。
⑦ Emergent Tool Use From Multi-Agent Autonomy (OpenAI, 2019)
▮▮▮▮⚝ 描述: 展示了在多智能体竞争环境中,通过大规模训练涌现出复杂行为和协作策略的案例(如Dota 2),体现了多智能体强化学习 (Multi-Agent Reinforcement Learning, MARL) 的潜力。
如何查找论文:
▮▮▮▮⚝ 学术搜索引擎 (Academic Search Engines): Google Scholar, Semantic Scholar, ArXiv (预印本库)。
▮▮▮▮⚝ 顶级会议 (Top Conferences): NeurIPS, ICML, ICLR, AAMAS (多智能体), L4DC (学习与控制)。
▮▮▮▮⚝ 顶级期刊 (Top Journals): Journal of Machine Learning Research (JMLR), Artificial Intelligence。
Appendix C4: 主流代码库与框架 (Mainstream Code Libraries and Frameworks)
实践是掌握DRL的关键。使用成熟的框架可以帮助读者快速实现和实验算法。
① TensorFlow & Keras
▮▮▮▮⚝ 描述: Google开发的开源机器学习框架。TensorFlow提供了灵活的API用于构建神经网络,Keras是其上层API,更加易用。许多DRL算法的实现都基于TensorFlow。
▮▮▮▮⚝ 用途: 构建DRL智能体的神经网络模型。
② PyTorch
▮▮▮▮⚝ 描述: Facebook开发的开源深度学习框架。PyTorch以其易用性和灵活性受到研究人员的喜爱,动态计算图方便调试。是当前DRL研究领域最流行的框架之一。
▮▮▮▮⚝ 用途: 构建DRL智能体的神经网络模型,许多前沿算法的官方实现都使用PyTorch。
③ Gym/Gymnasium
▮▮▮▮⚝ 描述: OpenAI开发的强化学习环境接口库。Gym/Gymnasium提供了大量标准的RL环境(如Atari游戏、经典控制问题、MuJoCo物理仿真环境),并定义了统一的Env API (Observation, Action, Reward, Done, Info)。几乎所有的DRL框架和算法实现都兼容Gym接口。
▮▮▮▮⚝ 用途: 提供标准化的RL任务环境进行实验。
④ Baselines / Stable Baselines3
▮▮▮▮⚝ 描述: OpenAI的Baselines库提供了多种经典RL/DRL算法的TensorFlow实现。Stable Baselines3是其一个维护更积极、文档更完善的分支,使用PyTorch实现,包含了DQN, A2C, PPO, SAC, TD3等主流算法。
▮▮▮▮⚝ 用途: 快速运行和比较主流DRL算法的基准实现。
⑤ Ray / RLlib
▮▮▮▮⚝ 描述: Ray是一个用于构建分布式应用的开源框架,RLlib是构建在Ray之上的一个强化学习库。RLlib支持多种RL/DRL算法,并具备强大的分布式训练能力,适合处理大规模和复杂任务。
▮▮▮▮⚝ 用途: 进行大规模分布式DRL训练和实验。
⑥ Acme
▮▮▮▮⚝ 描述: DeepMind推出的一个DRL框架,专注于可维护性、可扩展性和研究的灵活性。它将DRL智能体分解为不同的组件(如Actor, Learner, Replay Buffer),方便组合和修改。
▮▮▮▮⚝ 用途: DRL研究和复杂算法实现。
Appendix C5: 社区与会议 (Communities and Conferences)
参与社区讨论和关注顶级会议是保持领域敏感度和交流学习心得的重要途径。
① 在线社区 (Online Communities)
▮▮▮▮⚝ 平台: Reddit (r/reinforcementlearning, r/MachineLearning), Stack Overflow, 各大深度学习框架的官方论坛或GitHub Discussions。
▮▮▮▮⚝ 活动: 阅读帖子、提问、回答问题、参与讨论。
② 学术会议 (Academic Conferences)
▮▮▮▮⚝ 主要会议: NeurIPS, ICML, ICLR, AAAI, IJCAI。这些会议通常有大量的DRL相关论文发表和研讨会 (Workshop)。
▮▮▮▮⚝ 专业会议: AAMAS (多智能体), L4DC (学习与控制)。
▮▮▮▮⚝ 活动: 阅读会议论文、观看会议视频、关注最佳论文。
③ 期刊 (Journals)
▮▮▮▮⚝ 主要期刊: JMLR, Artificial Intelligence, Nature, Science (有时发表重要突破性研究)。
▮▮▮▮⚝ 活动: 阅读高质量、经过同行评审的论文。
Appendix C6: 建议学习路径 (Suggested Learning Paths)
根据读者的基础和目标,可以规划不同的学习路径。本书的结构也为学习提供了一个天然的路径。
① 初学者 (Beginners)
▮▮▮▮⚝ 目标: 掌握RL和DRL的基本概念、数学基础和核心算法原理,能够运行现有算法库解决简单问题。
▮▮▮▮⚝ 路径建议:
▮▮▮▮▮▮▮▮❶ 学习基础数学知识(Appendix A)。
▮▮▮▮▮▮▮▮❷ 阅读Sutton & Barto的书籍(前10章左右)或Coursera的RL基础课程 (Appendix C1 ①)。
▮▮▮▮▮▮▮▮❸ 学习深度学习基础知识(Appendix C1 ②, Chapter 3)。
▮▮▮▮▮▮▮▮❹ 重点学习本书的Chapters 1, 2, 3, 4。
▮▮▮▮▮▮▮▮❺ 学习并实践基于值的方法:DQN及其改进(Chapter 5)。选择一个易用的框架(如Stable Baselines3),在Gym环境中运行和修改DQN代码 (Appendix C4 ④, ③)。
▮▮▮▮▮▮▮▮❻ 学习并实践基于策略的方法:REINFORCE, Policy Gradient Theorem(Chapter 6)。在简单环境(如CartPole)中实现Policy Gradient或使用库运行。
▮▮▮▮▮▮▮▮❼ 学习并实践Actor-Critic方法:A2C/A3C(Chapter 7)。
⑧ 通过阅读本书的应用案例(Chapter 12)了解DRL的应用前景。
⑨ 积极参与在线社区讨论 (Appendix C5 ①)。
② 进阶者 (Intermediate)
▮▮▮▮⚝ 目标: 深入理解主流DRL算法的原理、优缺点和适用场景,能够独立实现算法并在复杂环境中进行实验,理解一些高级主题。
▮▮▮▮⚝ 路径建议:
▮▮▮▮▮▮▮▮❶ 回顾和深入理解RL和DRL的数学基础和核心算法(本书Chapters 1-7)。
▮▮▮▮▮▮▮▮❷ 重点学习本书的高级主题章节(Chapters 8, 9, 10, 11)。
▮▮▮▮▮▮▮▮❸ 阅读David Silver的UCL课程视频或讲义 (Appendix C1 ③)。
▮▮▮▮▮▮▮▮❹ 选择一个主流框架(PyTorch或TensorFlow),并熟悉至少一个DRL库(如Stable Baselines3, RLlib)的内部实现 (Appendix C4 ①, ②, ④, ⑤)。
▮▮▮▮▮▮▮▮❺ 尝试复现一些经典论文中的算法 (Appendix C3)。
▮▮▮▮▮▮▮▮❻ 学习DRL的实践技巧(Chapter 13),如超参数调优、训练稳定性等。
▮▮▮▮▮▮▮▮❼ 关注顶级会议的论文和研讨会 (Appendix C5 ②)。
⑧ 尝试将DRL应用于一个自己感兴趣的具体问题或领域。
③ 专家 (Experts)
▮▮▮▮⚝ 目标: 深入理解DRL的前沿研究方向,能够独立开展DRL研究,提出新的算法或解决现有问题,对领域未来发展有洞察。
▮▮▮▮⚝ 路径建议:
▮▮▮▮▮▮▮▮❶ 精读Sutton & Barto书籍 (Appendix C2 ①) 和Goodfellow的深度学习书籍 (Appendix C2 ②) 的相关章节,建立扎实的理论功底。
▮▮▮▮▮▮▮▮❷ 深入研究本书的高级主题和未来挑战章节(Chapters 8-11, 14)。
▮▮▮▮▮▮▮▮❸ 大量阅读和分析顶级会议(NeurIPS, ICML, ICLR等)和期刊(JMLR等)的最新DRL论文 (Appendix C3, Appendix C5 ②, ③)。
▮▮▮▮▮▮▮▮❹ 熟悉多个DRL框架,特别是面向研究的框架(如Acme),能够修改和扩展现有算法 (Appendix C4)。
▮▮▮▮▮▮▮▮❺ 关注DRL领域的前沿研究热点(Chapter 14),如离线RL、因果RL、元RL、基于模型的RL、泛化能力、可解释性等。
▮▮▮▮▮▮▮▮❻ 参与学术社区讨论,参加研讨会和会议,与同行交流。
▮▮▮▮▮▮▮▮❼ 选择一个开放性问题进行深入研究,尝试提出创新性解决方案。
无论处于哪个阶段,持续学习和动手实践是掌握DRL的不二法门。希望本附录提供的资源和建议能为您的DRL学习之旅提供助益。祝您在DRL的世界里探索愉快!🚀
Appendix D: 部分代码示例 (Selected Code Examples)
本附录旨在为读者提供一些核心深度强化学习(Deep Reinforcement Learning, DRL)概念的简化代码示例或思路展示。通过这些示例,读者可以更好地理解理论算法是如何转化为具体实现的步骤。需要强调的是,本书中的代码示例是为了说明原理而高度简化的版本,实际应用中的DRL算法实现通常涉及复杂的神经网络架构、大规模数据处理、分布式训练以及诸多工程细节,需要依赖专业的深度学习和强化学习框架。
提供这些示例代码的目标是:
⚝ 🌉 帮助初学者将抽象的理论知识与具体的编程实现联系起来。
⚝ 💡 💡 💡 展示关键算法步骤(如状态转移、价值更新、策略采样、梯度计算)的基本逻辑。
⚝ 🧭 指引读者在实践中学习,为使用现有DRL库打下基础。
请注意,此处提供的代码示例通常是伪代码(Pseudocode)或核心逻辑的片段,不构成完整、可直接运行的训练脚本。对于完整的算法实现和可运行的代码,强烈建议读者参考附录 C 中推荐的专业DRL框架和代码库。
Appendix D.1: 环境交互的基本流程 (Basic Environment Interaction Workflow)
强化学习的核心是智能体 (Agent) 与环境 (Environment) 的交互。一个典型的交互循环包括智能体在当前状态 (State) 下选择一个动作 (Action),环境执行该动作后转移到新的状态,并产生一个奖励 (Reward)。这个过程不断重复。
考虑一个简化的环境接口(类似于 OpenAI Gym/Gymnasium),其核心函数通常包括 reset()
用于重置环境到初始状态,以及 step(action)
用于执行一步动作。
1
# Pseudocode illustrating basic environment interaction
2
# 导入环境库 (Import environment library)
3
# import gymnasium as gym
4
5
# 创建环境 (Create an environment instance)
6
# env = gym.make('YourEnvironment-v0')
7
8
# 重置环境,获取初始状态 (Reset the environment, get initial state)
9
state = env.reset()
10
11
# 设定总步数或回合数 (Set total steps or episodes)
12
total_steps = 1000
13
episode_count = 0
14
15
# 循环进行环境交互 (Loop for environment interaction)
16
for step in range(total_steps):
17
# 智能体根据当前状态选择动作 (Agent selects action based on current state)
18
# action = agent.select_action(state)
19
20
# 环境执行动作,返回新的状态、奖励、是否结束 (Environment executes action, returns new state, reward, done flag)
21
# next_state, reward, done, info = env.step(action) # Example for newer gym versions
22
# next_state, reward, done, _ = env.step(action) # Example for older gym versions, ignoring info
23
24
# 智能体处理这次交互经验 (Agent processes this interaction experience)
25
# e.g., store in experience replay buffer, update value function or policy
26
# agent.process_experience(state, action, reward, next_state, done)
27
28
# 更新当前状态 (Update current state)
29
state = next_state
30
31
# 如果回合结束,重置环境 (If episode is done, reset the environment)
32
if done:
33
print(f"Episode {episode_count} finished after {step+1} steps.")
34
state = env.reset()
35
episode_count += 1
36
# 可能还需要清理或记录回合信息 (May also need to clean up or log episode info)
37
38
# 环境关闭 (Close the environment)
39
# env.close()
这个伪代码展示了RL中最基本也是最重要的循环结构:观察状态,选择动作,与环境互动,接收奖励和新的状态,然后学习。
Appendix D.2: 价值函数更新示例 (Value Function Update Example)
在基于值的方法(如 Q-学习 (Q-Learning))中,核心是更新价值函数(或动作价值函数 Q(s, a))的估计值。对于表格型 Q-学习,更新规则基于贝尔曼最优方程 (Bellman Optimality Equation) 和时序差分 (Temporal-Difference, TD) 误差。
表格型 Q-学习的更新公式是:
\[ Q(s, a) \leftarrow Q(s, a) + \alpha [r + \gamma \max_{a'} Q(s', a') - Q(s, a)] \]
其中,\(s\) 是当前状态,\(a\) 是当前动作,\(r\) 是获得的即时奖励,\(s'\) 是下一个状态,\(\alpha\) 是学习率 (Learning Rate),\(\gamma\) 是折扣因子 (Discount Factor),\(\max_{a'} Q(s', a')\) 是在下一个状态 \(s'\) 下所有可能动作中最大的 Q 值,代表了最优策略在 \(s'\) 下的期望未来回报。方括号内的项 \(r + \gamma \max_{a'} Q(s', a') - Q(s, a)\) 就是 TD 误差。
在深度 Q 网络 (Deep Q-Network, DQN) 中,我们使用神经网络逼近 Q 函数 \(Q(s, a; \theta)\),其中 \(\theta\) 是神经网络的参数。更新不再是直接修改表格项,而是通过梯度下降来更新 \(\theta\)。TD 目标 (TD Target) 通常使用目标网络 (Target Network) 计算,以增加训练稳定性。TD 目标为 \(y = r + \gamma \max_{a'} Q(s', a'; \theta_{target})\)。损失函数 (Loss Function) 通常是预测的 Q 值 \(Q(s, a; \theta)\) 与 TD 目标 \(y\) 之间的均方误差 (Mean Squared Error, MSE):
\[ L(\theta) = \mathbb{E}_{(s, a, r, s') \sim D} [(y - Q(s, a; \theta))^2] \]
其中 \(D\) 是经验回放缓冲区 (Experience Replay Buffer)。训练过程就是最小化这个损失函数,通过梯度 \(\nabla_\theta L(\theta)\) 更新网络参数 \(\theta\)。
1
# Pseudocode illustrating DQN loss calculation and optimization step
2
# 假设已经从经验回放缓冲区中采样了一个批次的数据 (Assume a batch of data is sampled from the experience replay buffer)
3
# batch_states, batch_actions, batch_rewards, batch_next_states, batch_dones = replay_buffer.sample(batch_size)
4
5
# 计算当前Q网络对当前状态的Q值 (Calculate Q values of current states using the current Q network)
6
# current_q_values = online_q_network(batch_states).gather(1, batch_actions.unsqueeze(1)) # Assuming discrete actions
7
8
# 计算目标网络对下一个状态的最大Q值 (Calculate max Q values of next states using the target Q network)
9
# next_q_values = target_q_network(batch_next_states).max(1)[0].detach() # Use detach() as we don't train the target network
10
11
# 计算TD目标 (Calculate TD targets)
12
# td_targets = batch_rewards + discount_factor * next_q_values * (1 - batch_dones) # (1 - batch_dones) handles terminal states
13
14
# 计算损失函数 (Calculate the loss function, e.g., MSE)
15
# loss = mse_loss(current_q_values.squeeze(1), td_targets)
16
17
# 执行优化步骤 (Perform optimization step)
18
# optimizer.zero_grad() # Clear previous gradients
19
# loss.backward() # Compute gradients
20
# optimizer.step() # Update weights
这个伪代码片段展示了DQN训练的核心:计算基于目标网络的 TD 目标,计算预测 Q 值与 TD 目标之间的损失,然后反向传播更新主 Q 网络的参数。
Appendix D.3: 策略梯度计算示例 (Policy Gradient Calculation Example)
在基于策略的方法(如 REINFORCE)中,我们直接学习策略函数 \(\pi_\theta(a|s)\),它输出在状态 \(s\) 下选择动作 \(a\) 的概率。目标是最大化期望的回报。策略梯度定理 (Policy Gradient Theorem) 提供了计算策略目标函数 \(\mathbb{E}_{\tau \sim \pi_\theta} [R(\tau)]\) 关于策略参数 \(\theta\) 的梯度的表达式。
对于一个完整的回合(Trajectory)\(\tau = (s_0, a_0, r_0, s_1, a_1, r_1, \dots, s_T)\),REINFORCE 算法使用该回合的总回报 \(G_t = \sum_{k=t}^T \gamma^{k-t} r_k\) 作为评估动作 \(a_t\) 在状态 \(s_t\) 下好坏的依据。策略参数的更新方向与 \(\nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t\) 成正比。
策略梯度定理的一个简化形式(对于回合式任务)是:
\[ \nabla_\theta J(\theta) \approx \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) G_t \right] \]
在 REINFORCE 中,我们通过采样一个回合,计算每个时间步的梯度 \(\nabla_\theta \log \pi_\theta(a_t|s_t)\),并乘以该步之后获得的累积回报 \(G_t\),然后累加起来作为梯度的近似。
1
# Pseudocode illustrating REINFORCE update
2
# 假设智能体与环境交互,收集到一个完整的回合数据 (Assume agent interacts with env, collecting a full episode trajectory)
3
# trajectory = [(s_0, a_0, r_0), (s_1, a_1, r_1), ..., (s_T, a_T, r_T)]
4
5
# 计算每个时间步的累积回报 (Calculate cumulative return G_t for each time step)
6
# returns = []
7
# G = 0
8
# for r in reversed([r for (s, a, r) in trajectory]):
9
# G = r + discount_factor * G
10
# returns.append(G)
11
# returns.reverse() # Returns are now in chronological order
12
13
# 计算策略网络的损失并进行优化 (Calculate loss for the policy network and perform optimization)
14
# policy_loss = 0
15
# for t in range(len(trajectory)):
16
# s_t, a_t, _ = trajectory[t]
17
# G_t = returns[t]
18
19
# # 计算 log 概率 (Calculate log probability of the chosen action under the current policy)
20
# # log_prob = policy_network(s_t).log_prob(a_t) # Assuming policy_network outputs a distribution
21
22
# # 计算策略梯度项 (Calculate the policy gradient term)
23
# # Note: In deep learning frameworks, we often define the loss such that minimizing it performs gradient ascent on the objective.
24
# # The policy gradient objective is to maximize sum(log_prob * G_t). So, we minimize -sum(log_prob * G_t).
25
# # policy_loss += -log_prob * G_t # For one step; sum this over the trajectory
26
27
# # 执行优化步骤 (Perform optimization step)
28
# # optimizer.zero_grad()
29
# # policy_loss.backward() # Backpropagate the accumulated loss
30
# # optimizer.step()