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,而是让模型先看世界全貌,再看细节。训练模型,就是在训练一种看世界的方式:
- 数据赋予它世界的样子,
- 损失函数告诉它什么是“错误”,
- 优化器决定它如何反思并前进。
- 作者:Fan Luo
- 链接:https://fanluo.me/article/模型训练的方法与实践
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
上一篇
NLP技术与应用:从语言理解到智能生成
下一篇
深度学习模型架构的演进
