4.3 训练策略与调优


4.3 训练策略与调优

本节摘要:SOURCE 5.1–5.3 讲解交叉熵损失、Adam 优化、学习率、Batch Size、Early Stopping、Dropout 与类别权重。本节把训练循环写成可验收 checklist。

阅读收获

  1. 配置 train/val/test 与 K 折交叉验证
  2. 使用交叉熵与 class_weight 处理不均衡
  3. 应用 Early Stopping 与 Dropout 防过拟合

一、数据划分(SOURCE 5.x)

集合 用途 比例参考
训练集 拟合参数 70–80%
验证集 调超参、早停 10–15%
测试集 最终报告 10–15%

测试集在调参全程不可碰。

二、损失与优化

  • 交叉熵 — 多分类默认
  • Adam — 自适应学习率,BERT 微调常用 2e-5 ~ 5e-5
  • 类别权重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」的分水岭。

要点串联

  • 三分数据;测试集只评一次
  • 交叉熵 + Adam;不均衡用 class_weight
  • Early Stopping / Dropout / 正则
  • 网格搜索在验证集上进行

深化:训练策略里最容易翻车的细节

数据划分的纪律要反复强调:训练集拟合参数,验证集调超参与早停,测试集只在最终评估碰一次。很多人「用测试集调参」而不自知——看到测试分数不理想,改个超参再测,测试集就成了第二个验证集,分数必然虚高。正确做法是每次实验只在验证集上比较,最终模型在测试集上报一次就收手。

学习率调度值得认真对待。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 跑通,再加早停与权重衰减,最后网格搜索正则强度。不要一开始就并行搜索十几个参数——结果往往难以归因。每轮只动一个维度并记录验证分数,是调优纪律的基本盘。

一次训练实验的完整记录

好实验记录长这样:数据集版本、特征版本、模型结构、超参、训练与验证曲线、最终指标、结论一句话。它让「试过什么、为什么不行」成为团队资产。很多调优项目最后能复现的往往不是某个分数,而是这份记录本身——它告诉后人哪些路已经走过。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U