1. 引言

当不同领域交汇融合时,其术语使用常会引发混淆。这既可能源于相同概念拥有不同名称,也可能是因为引入的过程虽已不完全符合原定义,却仍保留了原有名称。深度强化学习的发展历程亦如此,同样伴随着类似的术语问题。

本教程将探讨围绕“回合”(episode)与“周期”(epoch)区别产生的理解难题。这种混淆还可能延伸至“步骤”(step)和“批次”(batch)的概念。尽管这些差异看似细微,但它们对于理解训练过程以及比较不同深度强化学习算法具有重要作用。

2. 深度神经网络训练:监督学习

在深度监督学习中,训练过程通常会将可用数据划分为若干批次(batches)。每个批次包含固定数量的输入-输出对。训练算法随后会遍历这些批次,每次处理一个批次。

深度监督学习中的“周期”(epoch)是指完整遍历整个数据集的过程,即算法对所有批次完成一次遍历。在每个周期结束后,模型参数可能会被保存,训练过程则可继续进入下一个周期。

在每次迭代过程中,算法会计算模型预测输出与批次中每个输入的真实输出之间的误差或损失(loss)。随后,算法会使用优化算法(如随机梯度下降)来更新模型参数以降低损失。这一过程常被称为“更新步骤”(update step),优化器通常也会提供相应的步进函数。

3. 深度神经网络训练:强化学习

训练深度强化学习智能体(agent)需要让其与环境(environment)进行交互:基于当前状态(state)采取行动(action),并从环境获取奖励(reward)。智能体与环境的交互被组织成多个“回合”(episodes),每个回合由一系列“步骤”(steps)构成。

在每个步骤中,智能体接收对环境当前状态的观测(observation)并基于该观测采取行动。随后环境会转移到一个新状态,智能体则因其行动获得相应奖励。

训练的目标是学习一个能最大化多个回合累计奖励的“策略”(policy)。为学习策略,需要运行多个回合并将其分组用于模型更新。根据任务类型的不同,环境中执行的步骤数可用于判定回合的终止。这些交互数据构成了数据集,该数据集与传统数据集不同,因其具有动态特性,并会在整个学习过程中持续变化。

当训练“同策略”(on-policy)的策略梯度算法(policy gradient algorithm)时,采样数据仅能使用一次。在此情况下,一个“周期”(epoch)即是对所生成数据(称为一次策略迭代,policy iteration)的完整遍历。在连续采样周期中,这种数据集的规模将保持相对稳定。

当训练基于值函数(value function)的“异策略”(off-policy)方法时,我们可能按照超参数设定的固定更新周期,从回放记忆(replay memory)中采样一个批次(batch)。为了保持与监督学习设定相似的视角,可在对模型执行固定次数的批次更新步骤(update steps)后,视为完成一个“回合”。著名论文《用深度强化学习玩雅达利游戏》采用的就是这种方法。

4. 核心概念辨析

总结来说,"回合"(episode)指智能体与环境进行交互的完整序列(由多个"步骤"(steps)组成),而 "周期"(epoch)表示训练过程中对训练数据集的完整遍历。在强化学习中,一个周期通常对应使用当前策略执行的固定次数回合(对于基于值迭代(value iteration)的方法,则对应固定次数的模型更新)。每个回合由若干步骤构成。

5. 从其他维度进行讲解

1. 数据来源的根本不同:静态 vs. 动态
  • 监督学习(Batch Size 的领域)

    • 数据是静态的:你有一个固定的、预先收集好的数据集(比如ImageNet)。这个数据集的大小是固定的。

    • 你是数据的“上帝”:你可以完全控制如何划分这个数据集。你可以决定每个 Batch 包含100张、256张还是1024张图片。这是一个为了管理内存稳定优化而做的工程选择

  • 强化学习(Episode 的领域)

    • 数据是动态生成的:数据是通过智能体与环境的交互实时产生的。

    • Episode 是环境的“规则”:一个 Episode 代表一个完整的、有始有终的任务单元。它的长度(包含多少 Steps)是由环境动力学智能体的策略共同决定的。

      • 例如

        • 在《雅达利乒乓球》游戏中,一个 Episode 从发球开始,到一方失分结束。这个长度可能是5个步骤(快速得分),也可能是50个步骤(长时间对打)。智能体无法控制。

        • 在机器人行走任务中,一个 Episode 可能从站立开始,到机器人摔倒结束。摔倒的时间点是不确定的。

    • 你不能给环境设定“Episode Size”:你无法命令环境“这个回合你必须正好走100步然后结束”。环境的终止条件是内嵌的(如“到达目标”、“任务失败”、“超过最大步数”)。

2. Episode 长度的不确定性和可变性

这是最核心的原因。在大多数有终止状态的环境中,不同 Episode 的长度是可变的。

  • 一个新手智能体可能很快撞墙,导致一个很短的 Episode(例如,10个 Steps)。

  • 一个训练有素的智能体可能存活很久,完成一个很长的 Episode(例如,1000个 Steps)。

如果强行给 Episode 定义一个 “Size”,那么这个 “Size” 会随着智能体的学习而不断变化,这与 Batch Size 作为一个固定超参数的理念是相悖的。

3. 强化学习中 “Batch” 概念的真正位置

虽然 Episode 本身没有 Batch Size,但 Batch 的概念在强化学习的训练过程中至关重要。它出现在从经验回放池中采样数据的时候。

让我们回顾一下翻译文本中的相关段落:

当训练基于值函数的"异策略"方法时,我们可能按照超参数设定的固定更新周期,从回放记忆中采样一个批次

这个过程是:

  1. 收集经验:智能体将与环境交互产生的多个 (状态, 动作, 奖励, 新状态) 元组(即 Steps)存入一个叫 回放缓冲区 的大池子里。这些数据来自许多个不同的、长度不一的 Episodes

  2. 采样批次:当需要更新模型时,我们从回放缓冲区中随机采样一个固定数量(比如32, 64, 128)的 Steps(经验样本)。

  3. 这个固定的数量,就是 Batch Size

这里的 Batch 已经与 Episode 的原生结构脱钩了。 一个 Batch 里可能包含来自 Episode A 开头的一个 Step,Episode B 中间的一个 Step,以及 Episode C 末尾的一个 Step。我们打乱了所有 Episode 的原始序列,只关心单个 Step 或短序列的统计相关性,以此来训练网络。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐