实验十:强化学习¶
开始之前¶
我们在本次实验中使用Jupyter Notebook进行实验,请参考Jupyter Notebook使用,按照文档中详细步骤进行操作,完成Jupyter Notebook的配置。
强化学习基础概述¶
强化学习(Reinforcement Learning, RL)是一类通过与环境交互来实现目标的学习方法。在强化学习中,智能体(agent)在环境(environment)中不断进行试探:在当前状态下选择一个动作,环境根据该动作反馈奖励(reward)并转移到新的状态。通过多轮交互,智能体的目标是最大化累积奖励的期望。
与有监督学习不同,强化学习强调“决策”而非“预测”。智能体不仅需要感知环境,还需要通过自身的行为影响环境,从而获得更优的长期收益。
强化学习的基本要素¶
在强化学习框架中,智能体主要包含三个核心要素:
- 感知(State):获取当前环境的状态信息,例如棋盘局面、自动驾驶中的路况等;
- 决策(Action / Policy):根据当前状态选择动作,策略(policy)决定了智能体的行为方式;
- 奖励(Reward):环境对智能体动作的反馈,用于衡量当前行为的优劣。
智能体通过不断交互,学习一个最优策略,使得长期累积奖励最大。
强化学习的环境与动态性¶
强化学习中的环境通常可以看作一个动态随机过程。环境的状态不仅会随时间变化,还会受到智能体动作的影响。形式化地,环境的状态转移可以表示为:
其中:\( s_t \) 为当前时刻的状态,\( a_t \) 为智能体执行的动作,\( s_{t+1} \) 为下一时刻的状态。
也就是说下一状态由当前状态和智能体动作共同决定。这意味着强化学习本质上是一个序贯决策问题:当前的决策不仅影响即时奖励,也会影响未来的状态与收益。
强化学习的优化目标¶
在强化学习中,每一轮交互都会产生一个奖励信号。所有奖励的累积称为回报(return),而我们关注的是其期望,即价值(value)。智能体的目标是学习一个策略,使得该价值最大化。
需要注意的是,由于环境和策略可能具有随机性,即使在相同初始条件下,多次运行的结果也可能不同,因此优化目标是期望意义下的最优。
实验任务¶
本次实验分为三个任务:多臂老虎机算法(约50分钟)、Actor-Critic算法(约80分钟)和TRPO(PPO)算法(约30分钟)。
我们设计“强化学习”实验的初衷,是因为 RL 在当今 AI 中的应用极为广泛。然而,RL 算法众多,仅凭一节实验课无法面面俱到;同时,掌握这些算法需要一定的数学基础。因此,我们尽量用三个具有代表性的算法来串联起 RL 的发展脉络:从经典的多臂老虎机问题,到策略梯度与 Actor-Critic 方法,最后再到如今仍被主流使用的 PPO(Proximal Policy Optimization)算法。希望通过这一小段实验旅程,帮助大家对 RL 的核心思想和演进逻辑有一个直观且扎实的认识。
任务一:多臂老虎机算法¶
在这个任务中,你将:
- 了解强化学习的基本原理
- 了解最简单的(无状态)强化学习
主要内容包括:
- 多臂老虎机(multi-armed bandit,MAB)问题的定义
- 多臂老虎机的形式化描述
- 多臂老虎机问题中探索与利用的平衡
- 模型训练与评估
通过本任务,你将了解多臂老虎机问题与强化学习的一大区别在于其与环境的交互并不会改变环境,即多臂老虎机的每次交互的结果和以往的动作无关,所以可看作无状态的强化学习
任务二:ActorCritic算法¶
通过多臂老虎机问题,我们已经理解了强化学习中“探索与利用”的基本矛盾。然而,该问题没有状态信息,无法刻画序列决策问题。在实际问题中,智能体的决策通常依赖于当前状态,并且当前行为会影响未来的状态与奖励。在这个任务中,你将:
- 理解基于策略的强化学习方法与基于价值的方法之间的区别
- 掌握 Actor-Critic 框架的基本思想与实现方式
- 学习如何利用价值函数降低策略梯度方法的方差并提升训练稳定性
- 通过与 REINFORCE 的对比实验,直观理解 Critic 在方差缩减上的价值
主要内容包括:
- 学习 rl_utils 工具包的使用方法
- Actor(策略网络)与 Critic(价值网络)的结构与作用
- 时序差分(Temporal Difference, TD)误差的计算
- 基于 Actor-Critic 的策略更新与价值函数更新方法
- REINFORCE 与 Actor-Critic 的对比实验与训练曲线分析
通过本任务,你将掌握 Actor-Critic 是囊括一系列算法的整体架构,目前很多高效的前沿算法都属于 Actor-Critic 算法。本章接下来将会介绍一种最简单的 Actor-Critic 算法。需要明确的是,Actor-Critic 算法本质上是基于策略的算法,因为这一系列算法的目标都是优化一个带参数的策略,只是会额外学习价值函数,从而帮助策略函数更好地学习。
任务三:TRPO 和 PPO算法¶
在掌握了 Actor-Critic 方法后,我们已经能够通过策略函数直接进行决策,并利用价值函数对策略进行评估。然而,在实际训练过程中,策略梯度方法往往存在训练不稳定、更新幅度过大等问题,可能导致性能震荡甚至崩溃。PPO 是近年来应用最广泛的强化学习算法之一,在许多复杂任务中表现出良好的稳定性与性能。本任务将帮助你理解其核心思想,并完成基本实现。 在这个任务中,你将:
- 理解策略梯度方法在训练过程中可能出现的不稳定问题
- 掌握 Trust Region Policy Optimization (TRPO) 和 Proximal Policy Optimization(PPO)算法的核心思想
- 学习如何通过裁剪(clipping)机制限制策略更新幅度,从而提升训练稳定性
主要内容包括:
- TRPO和PPO 算法的基本原理与目标函数
- 概率比(probability ratio)的计算方法
- 裁剪损失函数(clipped surrogate objective)的设计思想
- 基于 PPO 的策略更新流程与实现细节
通过本任务,你将掌握 PPO 作为一种高效且稳定的策略优化算法,是 Actor-Critic 框架的重要改进之一。PPO 在保证训练稳定性的同时,能够实现较好的样本效率,因此被广泛应用于强化学习的实际问题中。
实验提交¶
实验完成后,请提交以下材料:
- 运行成功的Jupyter Notebook文件
- 一份PDF报告,报告内容包括但不限于:
- 对于三个任务中思考题的回答
- 实验心得与体会
提交说明¶
- 本次提交的内容为: 实验十要求提交的内容,具体要求请参见实验网站(https://zhiweinju.github.io/nju-dl-lab-2026spring/)
- 提交的报告文件请以PDF文件格式上传到selearning网站,上传文件的文件命名格式为: 学号_姓名_实验十.pdf,比如:123456789_张三_实验十.pdf
- 其他提交文件(如 运行成功的Jupyter Notebook文件),请加上前缀: 学号_姓名_,比如: 123456789_张三_lab10.ipynb
- 本次提交的截止时间为 6月20日23:59:59
- 对于迟交的处理: 迟交一周以内,折扣系数为0.8,迟交超过一周,折扣系数为0.6,超过一个月停止接收提交,尚未提交者本次作业计0分