模型训练的方法与实践

Oct 8, 2024· 13 min read
模型训练的方法与实践
type
status
date
summary
tags
category
icon
password
featured
freq
difficulty
人们谈论模型架构、参数规模和 SOTA 的频率,远高于谈论训练本身。
无论是传统机器学习还是深度学习,一个模型是否真正“聪明”,不只取决于模型名称是否先进,更取决于训练过程是否科学、稳健、可泛化。
模型训练不是简单的“喂数据、跑代码”,而是一个由数据质量、特征表达、优化设计、训练稳定性、泛化策略与调参系统共同构成的复杂工程体系。
这一过程类似于培养一个学生:教材要对、学习方法要对、习惯要对、纠错要及时、反馈要合理。
本文将从底层原理到实践方法,系统解析训练高质量模型的完整路径。
 

数据与特征决定模型的上限

模型训练的第一性原理是:模型只能从数据中学习它所看到的世界。
如果数据有偏、质量差、特征表达不合理,模型再先进也无法学好。一个常被忽略的事实是:现实中 80% 模型训练效果差,并不因为模型不好,而因为数据准备不足。
面对一个表现不佳的模型,你应该先问的问题不是:“用不用 Transformer?”而是:“模型学到的表征(representation)本身够不够承载任务?
如果任务需要模型理解因果、逻辑、视觉对齐或结构依赖,而数据全是表面统计模式,那么再多的样本,也无法让模型学到真正的能力。
这是为什么近几年 self-supervised learning(自监督)和 foundation models 能超越传统监督学习,因为它们提供了更丰富的信息结构,而不是更多标签。

1. 理解数据

训练前必须回答几个问题:
  • 数据分布是均匀还是偏斜?
  • 是否存在噪声、缺失、异常值?
  • 样本是否平衡?不平衡会导致模型“偏见式学习”
  • 训练集与测试集是否服从同分布?(Distribution Shift 是真实场景常见陷阱)
忽略这些问题的模型训练,就像蒙着眼睛开车。

2. 特征工程没有消失,只是变成了 Representation Engineering

深度学习时代,人们以为特征工程死了。但其实它只是进化成另一种形态:
这意味着“怎么让模型看到正确的信息”比“用哪种模型”重要得多。
过去(传统ML)
现在(深度学习)
手工设计特征
学习表征(Representation Learning)
特征选择(Feature Selection)
架构与预训练语料选择
标准化/归一化等数据处理
Feature dynamics & tokenization research
模型结构和训练方式是在隐式定义特征空间。
 

模型训练是不断从错误中学习的过程

模型训练的过程,本质是一个“不断犯错 → 识别错误 → 调整”的迭代系统,让模型逐步减少不确定性。

1. 明确模型的学习目标:损失函数(Loss Function)

损失函数(Loss Function)是训练方向的风向标。
不同任务对应不同的损失函数,如:
  • 回归问题:MSE、MAE 让预测更接近数值真值
  • 分类问题:交叉熵衡量预测与真实分布的差距
  • 排序、推荐任务:目标可能是排序一致性或用户行为概率
  • 生成任务:可能使用对数似然、KL散度、感知损失甚至对抗损失
优秀的损失函数不仅衡量“对不对”,还应能有效引导梯度方向,提升模型学习效率和泛化能力。

2. 反向传播:神经网络学习的核心算法

神经网络靠什么学习?
不是靠“记忆数据”,而是靠反向传播(Backpropagation)+ 梯度下降
反向传播通过链式求导,将“错误”分配到每一层,使每个参数知道自己应该如何调整,从而形成“学习”。
反向传播解决了一个关键问题:深层网络如何知道哪里需要调整?它是实现深度网络高效学习的数学基础。

3. 优化器:决定参数更新的策略

优化器决定模型如何调整参数。它类似“学习方法论”:
  • SGD:像传统学生,一步步慢慢学,
  • Momentum:像会做笔记的认真学生,会记住趋势,
  • Adam:自适应学习率,像聪明学生会调整学习策略,
  • AdamW:兼顾健身的优秀学生,把学习和保持身材这两件事分开做:学习的时候专心听讲(进行梯度更新),然后单独安排时间塑身(权重衰减)。
 
现代训练还融合了分布式优化、混合精度、分层学习率等技术,进一步提升训练效率和模型性能。
损失函数定义“学什么”,反向传播和优化器决定“怎么学”,三者协同作用构成深度学习训练的核心机制。
 

模型训练为什么会“学不好或学不动”?

研究模型训练过程有点像观察生命体的成长:它会兴奋、停滞、遗忘、偏执、甚至“学坏”。
很成长一样,模型的训练过程并不总是顺利。许多模型不是因为算法错误,而是因为训练过程中出现“学习阻塞”。

1. 权重初始化决定学习路径的起点

权重初始化常被误认为是“工程参数”,但实际上,它决定了模型会看到怎样的 loss landscape。
  • 若初始化过大 → 激活函数饱和 → 梯度消失
  • 若初始化过小 → 信号弱 → 梯度趋近 0 → 学习停滞
  • 糟糕初始化会让模型一开始就走错“山谷”,难以逃脱
以 Xavier 初始化为例(Glorot & Bengio, 2010),它假设:每一层的输出方差与输入方差相同,使梯度在前向与反向传播中保持稳定。
后来 Kaiming 初始化(He et al., 2015)为 ReLU 系列激活函数做了修正,因为 ReLU 会截断负半轴,方差需要补偿。

2. 激活函数塑造了模型的“表达偏好”

激活函数 是模型隐含的 inductive bias(归纳偏置),即它在有限数据上如何推广和泛化,同时优先假设数据遵循何种分布和函数模式。
激活函数
隐含建模偏置
备注
Sigmoid/Tanh
假设输出在有限区间,适用于概率或状态建模
易饱和,造成梯度消失
ReLU 系列
稀疏表征、线性片段组合
引发“死亡 ReLU”现象,但训练快
GELU
平滑、带概率性
GPT 系列采用,有更好的训练动力学
Swish
允许小负值
与注意力结合表现优异
激活函数为神经网络引入非线性,使其能够学习和表达复杂的模式与关系。这也是为什么关于激活函数的研究不断推进,新型激活函数如SiLU、Mish、SmeLU等不断被提出,旨在提升网络的学习能力和泛化效果。

3. 学习率 决定模型“记忆 vs 理解”的平衡点

学习率是训练中最具“性格影响力”的超参。
  • 学习率太大:模型像情绪化的学生,被一条反例就推翻之前认知,
  • 学习率太小:模型像只会死记硬背的学生,无法抽象、不敢更新信念。
而学习率调度(LR schedule)本质是“让模型在不同学习阶段性格不同”:
阶段
学习率策略意图
初期 warm-up
防止梯度爆炸,让模型先“适应世界”
中期 cosine/linear decay
逐步从探索走向收敛
后期 fine-tuning with small LR
巩固能力、更关注泛化而非拟合
REF-Balanced 注:Transformer(Vaswani et al., 2017)提出 warm-up 的初衷是在深层网络中避免梯度一开始振荡

4. Batch Size 决定模型如何看待世界

关于“大 Batch vs 小 Batch”:
小 Batch
大 Batch
梯度噪声大 → 更能逃出 sharp minima
梯度平滑 → 收敛快但易陷入 sharp minima
更像“从个案中学习”
更像“从统计规律中学习”
泛化往往更好
需要额外正则与技巧维持泛化
一个重要的理论解释来自SGD as implicit regularization研究方向:小 Batch 的梯度噪声是“隐式正则”,帮助找到更平滑、泛化更好的解。
但 Foundation Model 时代数据与模型巨大,大 Batch 与 LayerNorm + Scale Schedule的组合逐渐成熟(见 GPT-3 与 PaLM 系列训练策略)。
 

调参的哲学

在研究或工程实践中,有三种截然不同的“调参心态”:
  • 初学者:把调参当“玄学试灯泡”,希望撞到最优
  • 工程师:把调参当“优化工程”,追求可靠可复现
  • 研究者:把调参当“理解模型行为的实验工具”
其实,调参不是为了找到最好的一组超参,而是为了理解模型的行为边界。

1. Grid Search vs Random Search 的隐性哲学差异

为什么 Random Search(Bergstra & Bengio, 2012)碾压 Grid Search?
不是因为“更省计算”,而是因为:
  • 在高维超参空间中,大多数维度对性能影响极不均衡
  • Grid Search 把预算浪费在无意义的组合上
  • Random Search 扩展了探索空间,使模型有机会表现出“意外能力”
更研究者式的理解是:Grid Search 是均匀采样,Random Search 是对“有效维度”进行高效探索。
近年来,Bayesian Optimization、Hyperband、BOHB、Population Based Training(PBT)等方法更像是在模拟“进化式科研实验”。

2. 两种调参哲学:奖励好组合 vs 剔除坏组合

调参往往不是“找到最优”,而是:
A) Rewarding the Good 找到有效的结构、路径、模式,然后不断强化与延展
B) Eliminating the Bad 速识别错误假设、无效区域,把搜索空间缩小
多数人只做 A,不做 B,导致在坏空间内浪费大量算力。
也就是说:有效调参不取决于你能找到多少好组合,而取决于你能多快停止错误方向。

3. 如何判断瓶颈是在数据、模型、损失还是优化?

下面给出一个实用的判断框架:
现象
可能瓶颈
方案
train ≈ val 都差
数据或模型表达力不足
改数据、多任务、换架构
train 好、val 差
泛化问题
正则、数据增强、减少自由度
学习曲线早停滞
优化动力学问题
改 LR、优化器、归一化
Loss 降但指标不升
损失与任务不匹配
设计 task-specific loss

读懂模型的训练曲线

训练曲线不是报告,而是模型的“心电图”。
我们常画两条曲线:Training Loss 和 validation Loss, 以及一个 performance gap(泛化差)。
模型训练过程可视为四种典型状态:
状态
描述
备注
快速同步下降
train 与 val 一起降
学习顺畅
train 降、val 稳
出现过拟合趋势
模型在记忆细节
train 稳、val 不稳
优化不良
看优化器或 LR 调度
波动剧烈
梯度不稳定
Batch 小、LR 大、初始化差

模型训练范式的演变

当前主流的训练范式已演化为:Self-Supervised → Pretraining → Alignment → Continual Learning。
  • 预训练(Pretraining)阶段,模型通过自监督学习或弱监督学习,从大量未标注数据中学习基础的通用表征能力,为后续任务打下坚实基础。
  • 对齐(Alignment)阶段,重点是让模型在输出时更符合人类的期望,包括安全性、伦理性和精确性,通常通过人工反馈微调(RLHF)等技术实现。
  • 持续学习(Continual Learning)阶段,模型不再是一次性训练后固定不变,而是在不断接收新数据和反馈中迭代进化,实现长期适应和能力提升。
这种演化改变了传统对“训练”的定义,从简单的“参数优化”转为引导模型逐步构建对世界的理解与认知能力,使得训练过程更像是塑造智能体认知和行为的持续过程。
总结来说,训练范式已由过去单纯的监督学习,发展为结合自监督预训练、对齐调整以及持续进化的复杂多阶段流程,反映了人工智能从“模式识别”向“智能理解”的根本转变.
 
 

结语

模型训练看成是数值优化问题,也可以看成信息论问题、统计学习问题、甚至神经动力学问题。
好的训练不只是 minimize loss,而是让模型先看世界全貌,再看细节。训练模型,就是在训练一种看世界的方式:
  • 数据赋予它世界的样子,
  • 损失函数告诉它什么是“错误”,
  • 优化器决定它如何反思并前进。
上一篇
NLP技术与应用:从语言理解到智能生成
下一篇
深度学习模型架构的演进