本节摘要:SOURCE 5.1–5.3 讲解交叉熵损失、Adam 优化、学习率、Batch Size、Early Stopping、Dropout 与类别权重。本节把训练循环写成可验收 checklist。
| 集合 | 用途 | 比例参考 |
|---|---|---|
| 训练集 | 拟合参数 | 70–80% |
| 验证集 | 调超参、早停 | 10–15% |
| 测试集 | 最终报告 | 10–15% |
测试集在调参全程不可碰。
class_weight='balanced' 缓解不均衡from sklearn.utils.class_weight import compute_class_weight import numpy as np weights = compute_class_weight("balanced", classes=np.unique(y), y=y)
| 技术 | 作用 |
|---|---|
| Early Stopping | val loss 不降则停 |
| Dropout | 深度学习随机失活 |
| L2 正则 | 线性模型权重惩罚 |
| 数据增强 | 同义词替换、回译 |
⚠️ 常见坑:在测试集上反复试超参——指标乐观偏差,上线必翻车。
💡 关键直觉:训练策略是演化史中「同一模型不同 F1」的分水岭。
数据划分的纪律要反复强调:训练集拟合参数,验证集调超参与早停,测试集只在最终评估碰一次。很多人「用测试集调参」而不自知——看到测试分数不理想,改个超参再测,测试集就成了第二个验证集,分数必然虚高。正确做法是每次实验只在验证集上比较,最终模型在测试集上报一次就收手。
学习率调度值得认真对待。BERT 微调常用 warmup 加线性衰减:前若干步学习率从 0 升到目标值,随后线性降到 0,稳定训练早期。传统模型常配学习率衰减或循环学习率。Adam 在多数任务上稳健,但它的自适应步长在「稀疏特征加大词表」场景下可能偏激,此时可换回带动量的 SGD 或加权重衰减的 AdamW。每类任务都要先跑一个小实验确定学习率量级,而不是沿用默认值。
类别不均衡的完整处理链路是:先看混淆矩阵确认影响,再用 class_weight 或过采样、欠采样,然后更换评估指标为 Macro-F1 或加权 F1,最后再训练。只调指标不调采样,等于换了尺子没换秤。数据增强在文本里常见手段有同义词替换、回译、字符扰动,但要小心增强噪声:同义词替换把「不好」换成「不佳」没问题,把「快充」拆成别的就破坏了领域表达。
调优的工程习惯比技巧更重要:每次实验只改一个变量,实验日志记录数据版本、模型版本、超参与验证分数;超参搜索用网格或随机搜索在验证集上进行,注意随机搜索对连续超参更高效。分布式训练或批量搜索时,模型参数与数据要固定版本,否则无法归因。还有一个性价比极高的动作:把「复现上一次最好结果」当作一次正式实验记录在案,防止「不小心跑出一个好分数却复现不了」。
训练结束还要做一次「健壮性检查」:把训练好的模型对少量同分布与跨分布样本各预测一遍,观察置信度分布;若跨分布样本置信度普遍偏低,说明泛化不足,应回到数据或特征层面。这类检查对情感分析尤其重要——线上输入语体一变,模型分数掉得比想象中快。
# 概念:早停伪代码 best_loss, patience = float("inf"), 3 for epoch in range(max_epochs): val_loss = evaluate(model, val_loader) if val_loss < best_loss: best_loss = val_loss save_checkpoint(model) # 保存最优 patience = 3 else: patience -= 1 if patience == 0: break # 触发早停
| 手段 | 作用 | 使用时机 |
|---|---|---|
| Early Stopping | 防过拟合 | 验证集不再提升 |
| Dropout | 随机失活 | 深度学习 |
| class_weight | 处理不均衡 | 少数类占比低 |
| 数据增强 | 扩充样本 | 标注不足 |
| 梯度裁剪 | 防梯度爆炸 | 序列模型 |
超参很多时,按「影响从大到小」排序搜索,避免在无关参数上浪费时间。
| 优先级 | 参数 | 原因 |
|---|---|---|
| 高 | 学习率 | 决定收敛 |
| 高 | batch_size | 影响稳定性 |
| 中 | 正则强度 | 影响过拟合 |
| 低 | 优化器细节 | 默认即可 |
经验顺序:先固定一个合理的学习率与 batch 跑通,再加早停与权重衰减,最后网格搜索正则强度。不要一开始就并行搜索十几个参数——结果往往难以归因。每轮只动一个维度并记录验证分数,是调优纪律的基本盘。
好实验记录长这样:数据集版本、特征版本、模型结构、超参、训练与验证曲线、最终指标、结论一句话。它让「试过什么、为什么不行」成为团队资产。很多调优项目最后能复现的往往不是某个分数,而是这份记录本身——它告诉后人哪些路已经走过。