一个有用的思维模型
训练就是受控的错误修正。
想象一个内部装有可调旋钮的模型。输入一个示例后,模型会生成输出。一条评分规则会说明该输出的好坏。训练会计算出应朝哪个方向转动这些旋钮,将它们稍微调整后再试一次。
这些“旋钮”就是数值形式的模型参数。评分规则称为目标函数。当分数越低越好时,这个分数通常称为损失。
与其说模型“吸收”了数据,不如用这幅图景来理解。数据提供示例,目标函数提供改进方向,而训练算法改变模型。
training examples
|
v
model makes outputs
|
v
objective measures loss or reward
|
v
calculate each parameter's contribution
|
v
update parameters
|
+---------- repeat ----------+
held-out validation data checks whether the result transfersAI 训练如何运作
具体方法取决于模型和目标,但神经网络训练通常遵循以下循环:
- 准备示例和目标函数。训练数据可能将输入与标签配对、隐藏输入的一部分让模型进行预测,或包含关于偏好输出的反馈。
- 选择起始模型。训练可以从新初始化的参数开始,也可以从已经训练过的模型开始。
- 将一个批次输入模型。批次是一起处理的一小组示例。这次前向传播类似于推理:当前模型将输入转换为输出。
- 评估输出。损失函数可以衡量输出与目标答案的差距。另一种目标函数则可能为偏好的行为分配更高的奖励。
- 分配功劳或责任。对于神经网络,反向传播会为每个参数计算一个梯度。梯度表示该参数发生微小变化时,预计会如何改变损失。
- 更新参数。优化器利用这些梯度来选择实际的变化幅度。学习率控制一次典型更新的大小。
- 重复并检查。训练会在更多批次上继续进行。单独的验证数据用于检查这种改进是否能超出产生这些更新的示例。
一个训练轮次(epoch)是对训练数据集进行一次完整遍历。训练可以进行不到一个训练轮次,也可以进行许多个训练轮次。训练轮次只是进度单位,并不保证产生了有用的学习。
上述循环描述了训练的狭义技术含义。在实践中,人们也会用训练来指围绕训练展开的更大流程:收集和筛选数据、选择目标函数、运行实验、评估检查点,以及决定何时停止。
反馈并不总是以同一种形式出现
“将预测结果与正确答案进行比较”是一个有用的起点,但作为定义来说过于狭窄。
- 在监督学习中,示例包含目标标签,例如为图像分配的类别。
- 在自监督学习中,数据会提供自己的目标。语言模型可以通过预测隐藏的文本片段或下一个文本片段来学习。
- 在强化学习中,结果会获得奖励,而训练会提高采取能带来更高奖励的行动的概率。
这些方法的不同之处在于训练信号的来源不同。它们共享同一个核心思想:利用反馈,按照某个目标改变模型参数。
一个单步训练示例
考虑一个只有一个参数的模型:w。它进行如下预测:
output = w × input模型从w = 0.5开始。其训练示例的输入为2,目标输出为4。
第一次预测为:
0.5 × 2 = 1使用平方误差作为损失:
(prediction - target)²
(1 - 4)² = 9对于这个示例,损失相对于w的梯度为-12。负号意味着增大w应当降低损失。当学习率为0.1时,梯度下降会进行如下更新:
new w = old w - learning rate × gradient
new w = 0.5 - 0.1 × (-12)
new w = 1.7现在预测值为1.7 × 2 = 3.4,平方误差为0.36。一次更新就使模型对这个示例的拟合更好。
真实模型可能有许多参数,训练通常还会结合一个批次中的多个信号。优化器必须找到适用于各种不同示例的变化。改善一个批次还不够,模型还必须在留出数据上表现良好。
训练为何重要
训练决定了模型之后被使用时能够表现出的行为。
架构决定模型能够执行哪些类型的计算。训练则在该架构允许的范围内选择具体的参数值。这些值会影响模型响应哪些模式,以及它倾向于生成哪些输出。
目标函数之所以重要,是因为模型会针对接收到的信号进行优化,而不是针对人们可能关心的所有质量进行优化。经过文本预测训练的语言模型可以在许多语言任务上发挥作用,但预测损失并不能直接保证真实性、安全性或遵循指令。后续训练可以通过示范或偏好反馈来针对其中一些行为进行优化。
数据同样重要,原因也相同。模型只能从可用的示例和反馈中获得训练信号。其中的缺失、错误、重复和偏差都可能影响训练结果。
常见误解
训练会存储每个示例的副本
训练会改变参数。它通常不会在模型内部创建一个可按行检索的训练集数据库。
模型仍然可能记住某些示例,尤其是在数据重复或模型对数据拟合过度时。但记忆和有用的泛化是不同的结果。在真正独立的数据上进行评估,有助于区分两者。
训练损失越低,模型就越好
损失降低意味着模型在所测量的数据上更好地拟合了训练目标。它并不能证明模型能处理新情况,也不能证明该目标函数涵盖了真正的目标。
如果训练损失下降而验证集表现变差,模型可能出现过拟合:模型变得更加专门适应训练示例,却以处理新示例的能力为代价。
训练越多,模型就总会越好
额外的更新可能带来帮助、几乎没有效果、使训练不稳定,或加剧过拟合。结果取决于数据、目标函数、优化器设置、模型容量以及停止决策。
模型会在你与它聊天时从你这里学习
在普通的AI 推理过程中,已部署的模型使用固定参数来回答输入。当前对话中的信息可以影响它的下一次输出,但不会改变这些参数。
根据具体产品及其数据政策,提供商之后可能会在独立的训练过程中使用所收集的交互数据。这与模型在对话期间自行更新并不是一回事。
每个模型都是从头开始训练的
训练可以从现有模型开始。预训练利用大型通用数据集构建广泛的能力。微调则继续训练,以适应更狭窄的任务或领域。后训练是对后续阶段的更宽泛称呼,这些阶段旨在塑造模型行为,可能包括微调和基于偏好的方法。
这些标签之间的界限尚未完全标准化。可靠的判断标准是:该过程是否更新了模型参数。在提示中提供示例可以改变输出,但不等于训练模型。
训练如何融入 AI 系统
机器学习是一种更广泛的方法,系统通过数据或经验改进其行为。训练则是在这种方法中产生或调整模型的过程。
训练运行的输出通常是一个保存下来的检查点,其中包含已学习的权重及其他状态。开发者会评估候选检查点,并选择一个用于继续训练或部署。
部署会开启另一个不同的运行阶段。在推理过程中,输入会经过训练好的模型,以生成预测、分类结果或生成内容。前向传播在两个阶段中都会出现;训练则额外包括反馈、梯度计算和参数更新。
接下来阅读什么
阅读《什么是 AI 推理?》,了解当参数更新循环停止、训练好的模型开始被使用时会发生什么变化。然后阅读《训练与推理的区别》,直接比较这两个生命周期阶段。