训练策略与正则化

训练策略与正则化


一、Warmup机制

1.1 基本原理

维度 说明
问题背景 大模型训练极易发生Loss爆炸(训飞),即第一轮还有Evaluation结果,第二轮第三轮直接变成零
实现方式 设置0.1到0.2的比率,让学习率从0缓慢爬升,给予底层参数缓冲的时间
核心目的 实现前后层同步优化,防止训飞

1.2 深度原理

维度 说明
学习率曲线 Warmup使学习率先从零升高到一个预定最大值,然后再下降
深层网络问题 BERT Base有12层,梯度回传是从后向前的过程
梯度消失现象 如果一开始学习率设得较大,靠近输出端的权重更新得特别好特别快,但前面靠近输入的层因梯度消失没有更新好
训飞本质 模型后端在"不稳定的基础"上进行更新,就像盖房子没有建立好地基
Warmup的作用 用较小学习率让后端权重更新慢一点,等待前端权重也逐步更新,实现"参数同化"过程
Warmup比例 建议设置为总训练步数的0.1(10%),或大约1个Epoch
Scheduler Step 每训练完一步后学习率进行相应变化,Warmup体现在Scheduler中

二、梯度截断(Gradient Clipping)

维度 说明
FP16训练场景 开启FP16半精度训练时,梯度会变得特别大,不进行截断模型特别容易训飞
FP32全精度场景 全精度训练时梯度大概每个Batch在0.8~0.9左右,加不加作用不大
阈值设置 建议设置为1,不需要设太大
额外收益 加上梯度截断能提高模型泛化能力,在验证集和Leaderboard上都有一定提升
与梯度累加配合 使用梯度累加时必须配合梯度截断,防止累加梯度爆炸

三、梯度累加(Gradient Accumulation)

维度 说明
问题背景 大型模型极大,普通显卡往往只能把Batch Size设为1
导致后果 Batch Size为1会导致梯度更新方向剧烈震荡、难以收敛
解决方案 通过开启"梯度累加"(比如设为4),可以在低显存下模拟出Batch Size为4的平滑稳定训练效果
配套措施 配合梯度截断来防止累加的梯度爆炸
最终效果 保障模型精度

四、学习率调度器(Scheduler)

4.1 调度策略对比

策略 曲线特征 适用场景 参数
线性递减 线性下降 通用 -
Cosine退火 平滑下降到最低 竞赛常用,比线性递减更优 T_max, eta_min
Cosine退火+重启 周期性下降重启 跳出局部最优 T_0, T_mult
OneCycleLR 先升后降 快速收敛 max_lr, pct_start
WarmUp + Cosine 先升后降 大模型训练必备 warmup_epochs

4.2 分层学习率与逐层衰减

维度 说明
分层学习率 未经过预训练的层(如随机初始化的分类器或被替换的Embedding)应设置较高的学习率(如10^-4级别),而预训练主体应设置较低的学习率(如10^-5级别)
逐层衰减 可更细粒度地逐层衰减学习率,如第12层最高,越浅层越低
适用场景 微调大型预训练模型时,不同层需要不同的学习率以平衡新旧知识

五、Multi-Dropout / Multi-Sample Dropout

5.1 核心原理

维度 说明
传统Dropout局限 一次前向传播只产生一个输出,一对一关系
核心思想 将Dropout视为数据扩充手段,在池化结果之后、分类层之前进行多次Dropout采样
实现方式 在BERT等模型提取出特征后,外接多个具有不同丢弃率的Dropout层
实现流程 同一个样本经过多次随机Dropout生成多个版本的向量表征,分别通过分类层得到多个Logits,最后求和或取平均
计算开销 网络主体已跑完,仅在最后全连接层做多次计算,额外开销相对整个网络较小
核心作用 能起到类似对比学习的作用,促进参数同化
收敛优势 相同训练时间内,Validation Set错误率曲线最终会降至传统Dropout下方,收敛更快

5.2 超参细节

维度 说明
更高的Dropout容忍度 由于该机制本质是内部集成了多个子网络的输出,模型可以承受比常规更大的Dropout Rate。常规设为0.1,应用此方法时提高到0.3甚至0.4反而能达到更优的泛化效果
采样次数 通常设置为4或8次即可(再高收益边际递减)
融合方式 得到多个Logits后,可以直接求和(Sum)进入Softmax,不一定非要取平均(Average)

六、对抗训练(FGM / PGD / AWP)

6.1 FGM

维度 说明
实现方式 在模型梯度下降的相反方向上,人为对Word Embedding(词嵌入层)施加扰动噪声
核心目的 迫使模型在带有恶意干扰的情况下依然能做出正确预测
本质作用 作为一种正则化手段来抵抗过拟合和提高抗干扰能力

6.2 PGD(投影梯度下降)

维度 说明
与FGM区别 相比FGM的单步直接扰动,PGD采用"多步走并限制在球内"策略
投影操作 每走一小步(步长为alpha),如果扰动超出设定的半径epsilon球面,就强行将其"投影"拉回到球面上
优势 生成质量更高的对抗样本

6.3 对抗训练进阶设定

维度 说明
攻击目标层扩展 不仅攻击word_embeddings,还可配置同时攻击BERT的头几层(如第0层、第1层)的参数
对抗执行比例(Attack Ratio) 对抗训练会导致训练耗时翻倍,可设置执行比例(如0.5),即只有50%的迭代步数进行对抗扰动更新,剩下50%使用干净样本常规更新,兼顾速度与鲁棒性

七、SWA(随机权重平均)

维度 说明
问题背景 防止单次验证集保存的最佳模型出现"有偏估计"
实现方式 在训练末期的最后几个Epoch内维持一个较高的固定学习率进行额外训练
权重处理 将这几个Epoch生成的模型权重(Checkpoints)进行算术平均
最终效果 作为最终更加稳健的融合权重
CV中的应用 训练末期最后5~10个epoch,维持较高固定学习率,对权重取算术平均;有交叉验证时SWA收益更明显

八、对比学习(Contrastive Learning)

8.1 有监督对比学习

维度 说明
Supervised Contrastive Learning 利用标签信息将具有相同标签的样本在向量空间中拉近,不同标签的推远,为分类器提供更好的特征表示
实现方式 在分类任务中直接增加对比学习损失,与交叉熵损失加权求和

8.2 SimCSE框架

维度 说明
核心方法 让同一句子两次通过带Dropout的BERT模型,利用Dropout的随机性产生两个不同表征作为正样本对,Batch内其他样本作为负样本
优势 实现更优雅,代码持续维护,优先使用SimCSE方案

8.3 ConSERT框架

维度 说明
核心方法 在Embedding层直接施加Dropout作为数据扩充,构造正负样本对进行对比学习

8.4 深度细节优化

维度 说明
引入标签特征(Label Embedding) 将分类层的权重参数矩阵视作"类别的向量表征"加入对比学习损失计算
温度参数(Temperature)调优 通常基于经验选取0.5的效果会比0.07更好
构造困难负样本(Hard Negatives) 故意抽取不同类别但极易混淆的句子作为困难负样本辅助训练

8.5 避免表征坍缩(Representation Collapse)

维度 说明
问题背景 普通BERT不做处理时,往往会将所有句子的相似度压缩在0.6~1.0之间,导致无法有效区分差异
坍缩表现 BERT将所有句子编码到语义空间的某个局部区域,本质不同的句子完全无法区分
评估指标 利用Alignment(正样本对齐度)和Uniformity(整体分布均匀度)两个指标来评估模型
SimCSE/ConSERT改进 能显著改善表征分布,使不同语义句子在向量空间中均匀分布

8.6 对比学习的级联迁移训练

维度 说明
第一阶段(外部有监督NLI预热) 寻找外部开源的NLI数据集,利用标签明确的句子对进行第一波对比学习训练
第二阶段(领域内自监督迁移) 将NLI任务上训练好的模型移步到赛题官方提供的无标签脱敏语料上,再进行一轮自监督的对比学习微调
核心优势 经过"外部知识注入→领域内适应→最终任务微调"的级联过程,句向量表征质量大幅超越单一数据集训练

九、早停法与模型检查点

维度 说明
早停法(Early Stopping) 监控验证集性能,性能不提升时停止训练,防止过拟合
耐心值(Patience) 设置等待轮数,如3-5轮无提升则停止
模型检查点 保存最佳模型权重,支持断点续训
多模型融合基础 保存多个检查点用于后续模型融合

十、EMA(指数移动平均)

维度 说明
核心思想 训练过程中维护一份模型参数的指数移动平均版本,推理时使用平均后的参数
更新公式 shadow_param = decay * shadow_param + (1 - decay) * model_param,decay通常取0.999或0.9999
与SWA区别 EMA是逐步累积平均,SWA是训练末期对几个checkpoint取算术平均
效果 平滑参数更新轨迹,提升泛化能力,在CV竞赛中广泛使用
适用场景 大模型微调、CV分类/检测任务

十一、知识蒸馏基础

维度 说明
核心思想 用大模型(Teacher)的输出概率分布指导小模型(Student)训练
软标签 Teacher输出的概率分布比one-hot硬标签包含更丰富的类间关系信息
温度参数 蒸馏时提高softmax温度T(如T=4~20),使概率分布更平滑,传递更多暗知识
损失函数 loss = alpha * KL(soft_teacher, soft_student) + (1-alpha) * CE(hard_label, student_output)
适用场景 Code Submission赛等对推理时间和内存有严格限制的比赛
与Self-Distillation区别 Self-Distillation是同模型内部的知识迁移,传统蒸馏是跨模型的知识迁移

十二、训练稳定性综合保障

维度 说明
Warmup比例 建议设置为总训练步数的0.1(10%),或大约1个Epoch
Scheduler选择 Cosine调度器比线性递减更优,被比赛中广泛采用
Dropout推理时关闭 推理时Dropout会自动关闭,训练时用了多个Dropout不影响推理一致性
断点续训 训练中断后直接加载模型权重进行Inference即可,不需要重新训练
数据打乱 增加随机性表现,提高网络泛化性能,避免batch数据过于有规律

十三、模型收敛问题排查

维度 说明
训飞表现 第一轮有Evaluation结果,第二轮第三轮Evaluation直接变成零
排查步骤 检查Warmup是否设置、梯度截断是否开启、学习率是否过大
解决方案 设置Warmup为0.1,开启Gradient Clipping,降低学习率
验证方法 观察训练Loss曲线是否平稳下降,验证集分数是否稳定

十四、显存优化综合策略

维度 说明
梯度检查点 训练时丢弃部分中间层的激活值,反向传播时重新计算,用"计算时间换显存",可提升Batch Size数倍
梯度累加 低显存下模拟大Batch Size训练效果
FP16混合精度 部分计算使用FP16,关键计算保持FP32,显存占用减半,训练速度提升约30%-50%,必须配合梯度截断
模型卸载 将部分参数卸载到CPU,进一步降低显存占用
动态填充 DataCollatorWithPadding按batch内最长填充,短文本训练加速75%
组合使用 多种策略组合使用可在有限显存下训练更大模型

十五、R-Drop(一致性正则)

维度 说明
核心思想 同一样本两次前向传播(不同Dropout mask),用KL散度约束两次输出分布一致
与Multi-Sample Dropout区别 Multi-Sample Dropout是对多次Dropout输出的Logits求和/平均;R-Drop是约束两次输出的概率分布尽量一致,多了输出一致性约束
损失函数 loss = CE_loss + alpha * KL(p1 \|\| p2) + KL(p2 \|\| p1),双向KL取平均
alpha权重 通常取1~5,需根据验证集调整
训练开销 每个样本需两次前向,训练时间约翻倍
适用场景 NLP分类/NER任务,上分明显;与FGM等对抗训练可叠加
竞赛价值 简单有效,几行代码即可实现,NLP竞赛中常作为独立上分点

十六、FreeLB(对抗训练升级)

维度 说明
全称 Free Large-Batch Adversarial Training
与FGM/PGD区别 FGM/PGD是单点扰动;FreeLB在扰动区间内取多个点的平均梯度,更稳定
核心方法 在Embedding周围epsilon球内均匀采样多个扰动点,对这些点的梯度取平均作为更新方向
优势 比FGM更稳定,比PGD更快(不需要多步迭代),BERT官方对抗训练方案
epsilon取值 通常1e-5~1e-4,比FGM的扰动范围更小
与FGM关系 可视为FGM的平滑升级版,推荐在NLP对抗训练中优先尝试

十七、SAM(Sharpness-Aware Minimization)

维度 说明
核心思想 优化时同时关注loss值和loss曲面的平坦度,寻找平坦极小值,泛化更好
第一步 计算当前参数的梯度,找到扰动方向:epsilon = rho * grad / \|\|grad\|\|
第二步 在扰动后的参数处重新计算梯度,用该梯度更新原始参数
rho参数 控制对平坦度的关注程度,通常取0.05~0.1
计算开销 每步需要两次前向+反向,训练时间约翻倍
与FGM区别 FGM是对输入加扰动做正则化;SAM是对参数加扰动寻找平坦极小值
竞赛价值 CV竞赛近年热门,尤其在小数据集上效果显著

十八、Lookahead Optimizer

维度 说明
核心思想 在Adam等基础优化器外层包一层"前瞻"机制:先快步探索,再慢步确认
快权重(Fast Weights) 基础优化器(如Adam)正常更新k步
慢权重(Slow Weights) 将快权重和慢权重做线性插值:slow = slow + alpha * (fast - slow)
k值 通常5~10,即快权重走5~10步后慢权重同步一次
alpha值 通常0.5,慢权重向快权重靠拢的比例
优势 几乎无额外计算开销,收敛更稳定,减少对学习率的敏感性
适用场景 通用,可与任何优化器组合,适合作为默认优化器增强

十九、渐进式解冻(Gradual Unfreezing)

维度 说明
核心思想 微调时先冻结预训练层只训练分类头,再逐层解冻,由顶向底逐步放开
与分层学习率区别 分层学习率是所有层同时训练但学习率不同;渐进式解冻是逐层放开训练,更保守
典型流程 Epoch 1: 只训练分类头 → Epoch 2: 解冻最后2层 → Epoch 3: 解冻最后4层 → ... → 全部解冻
适用场景 小数据微调防灾难性遗忘,预训练模型与目标任务差异大时
竞赛价值 数据量少于1000条时效果明显,可防止微调初期大梯度破坏预训练表征

二十、课程学习(Curriculum Learning)

维度 说明
核心思想 先用简单样本训练,再逐步加入困难样本,模拟人类学习过程
难度定义 可按样本长度(短=简单)、预测置信度(高=简单)、标注一致性(一致=简单)等定义
实现方式 (1) 预排序:训练前按难度排序,逐步加入;(2) 动态调整:每个epoch根据loss排序
与Anti-Curriculum对比 Anti-Curriculum是先学困难样本,某些场景反而更优,需实验对比
适用场景 数据噪声大、样本难度差异大时有效
竞赛价值 数据质量参差不齐时可作为上分手段,但需额外实验验证

二十一、Flooding

维度 说明
核心思想 设定loss下限b,当训练loss低于b时将梯度取反,使loss在b附近波动,防止过拟合
公式 loss = \|\|loss - b\|\| + b,即loss > b时正常下降,loss < b时反弹
b值选取 通常取训练loss即将收敛时的值,如0.01~0.1
本质 类似隐式正则化,阻止模型过度拟合训练数据
优势 实现极简(一行代码),可与任何优化器/调度器组合
竞赛价值 简单有效,适合后期冲刺时防止过拟合

二十二、Stochastic Depth / DropPath

维度 说明
核心思想 训练时以概率p随机跳过整个残差块(直接用恒等映射),推理时使用全部层
与Dropout区别 Dropout跳过神经元;DropPath跳过整个残差块/层,粒度更大
生存概率 浅层概率高(接近1),深层概率低(如0.5),线性衰减:p_l = 1 - l/L * (1 - p_L)
适用场景 ViT/DeiT/Swin Transformer等深层模型训练标配
竞赛价值 CV竞赛中使用ViT系列模型时必用,不设DropPath深层ViT极易过拟合
典型取值 最大丢弃率p_L通常0.1~0.3(分类),0.2~0.5(检测/分割)

二十三、梯度中心化(Gradient Centralization)

维度 说明
核心思想 对梯度按特征维度做中心化(减均值),约束梯度均值为零
公式 grad = grad - grad.mean(dim=0)
优势 加速收敛 + 提升泛化 + 几乎零额外计算开销
实现位置 在optimizer.step()之前对梯度做中心化处理
适用场景 通用,一行代码即可集成,适合作为默认训练流程的一部分
竞赛价值 几乎无成本的正则化手段,适合快速实验

二十四、Weight Standardization

维度 说明
核心思想 对卷积层权重做标准化(减均值除标准差),替代对输入统计量的依赖
与BatchNorm区别 BatchNorm依赖batch统计量,小BS时不稳定;WS只依赖权重自身,不受BS影响
公式 W_hat = (W - mean(W)) / sqrt(var(W) + eps)
适用场景 小Batch Size场景(如BS=1~4的大模型微调),WS+GN组合可替代BN
竞赛价值 显存受限只能用小BS时,WS比BN更稳定

二十五、LayerScale

维度 说明
核心思想 在Transformer残差分支中加可学习的逐通道缩放因子,初始化为极小值(如1e-4)
公式 x = x + LayerScale * Attention(x),LayerScale初始化接近0
作用 训练初期残差分支贡献极小,等效于恒等映射,训练稳定;随训练推进缩放因子逐步增大
适用场景 深层ViT(>12层)训练稳定的关键,DeiT III等模型标配
竞赛价值 使用深层ViT/Swin时必加,否则深层模型训练不稳定

二十六、半监督训练方法

Mean Teacher

维度 说明
核心思想 维护一个EMA版本的模型作为Teacher,Student向Teacher的预测对齐
Teacher更新 teacher_params = alpha * teacher_params + (1-alpha) * student_params,alpha通常0.999
一致性损失 L_consistency = MSE(student_output, teacher_output)
优势 Teacher参数更平滑,提供更稳定的伪标签
适用场景 时序/CV半监督竞赛,有大量无标签数据时

VAT(Virtual Adversarial Training)

维度 说明
核心思想 在对抗训练基础上扩展到无标签数据,对无标签样本施加最小扰动能改变输出的方向
与FGM区别 FGM只用于有标签数据;VAT可用于无标签数据,不依赖标签计算对抗方向
局部平滑性 VAT鼓励模型在输入空间局部邻域内输出平滑,提升泛化
适用场景 半监督+NLP,有大量无标签文本时

FixMatch

维度 说明
核心思想 强增强+弱增强结合:弱增强高置信预测作为伪标签,强增强做一致性约束
流程 (1) 对无标签样本做弱增强,模型预测取高置信(>0.95)的作为伪标签;(2) 对同一样本做强增强,约束其预测与弱增强伪标签一致
关键参数 置信度阈值通常0.95,弱增强(翻转/平移),强增强(RandAugment/CutMix)
适用场景 CV半监督SOTA,图像分类+大量无标签数据

TSA(Training Signal Annealing)

维度 说明
核心思想 来自UDA,逐步释放训练信号,初期只用高置信样本,后期才用全部
阈值调度 随训练推进逐步提高阈值,低于阈值的样本才参与损失计算
作用 防止模型在训练初期被噪声标签误导
适用场景 小数据+大无标注语料的半监督场景

二十七、竞赛常用损失函数补充

ASL(Asymmetric Loss)

维度 说明
核心思想 对正负样本用不同gamma,比Focal Loss更适合多标签分类
非对称性 正样本gamma-(通常0),负样本gamma+(通常2~4),负样本被抑制更多
概率偏移 对负样本概率做偏移(概率人为降低),进一步抑制易分负样本
适用场景 多标签分类竞赛,正样本稀疏时
与Focal Loss对比 Focal Loss对称处理正负样本;ASL专门针对多标签场景优化

Bi-Tempered Loss

维度 说明
核心思想 用两个温度参数分别处理outlier和噪声标签,比Label Smoothing更鲁棒
t1(内温度) 控制对outlier的容忍度,t1 > 1时对outlier更鲁棒
t2(外温度) 控制对噪声标签的容忍度,t2 < 1时对噪声标签更鲁棒
适用场景 噪声标签场景,标注质量差的数据集
竞赛价值 比Label Smoothing更精细的噪声标签处理方案

AUC Loss

维度 说明
核心思想 直接优化AUC指标的近似损失函数,替代交叉熵
实现方式 基于pairwise ranking loss,正样本得分应高于负样本得分
适用场景 评价指标为AUC时,直接优化目标指标
注意事项 训练开销比CE大(需采样正负对),通常先用CE预训练再切换AUC Loss微调

LDAM Loss(Label-Distribution-Aware Margin Loss)

维度 说明
核心思想 给小类更大的分类边界(margin),大类边界小,边界与类别频率的1/4次方成反比
公式 margin_i = C / n_i^(1/4),n_i为类别i的样本数
与Focal Loss区别 Focal Loss通过调整损失权重;LDAM通过调整分类边界,本质不同
适用场景 长尾分类,类别频率差异极大时
竞赛价值 长尾分类竞赛中与Focal Loss互补,可组合使用

二十八、Mixup/CutMix的正则化视角

维度 说明
数据增强视角 Mixup/CutMix通常被归类为数据增强方法(见01章),但它们本质也是强正则化手段
正则化机制 (1) 决策边界平滑化:混合样本迫使模型输出平滑过渡;(2) 隐式模型集成:每个混合样本等价于两个子网络的隐式平均;(3) 梯度噪声注入:混合比例lambda引入额外随机性
与Dropout对比 Dropout是神经元级正则化;Mixup是样本级正则化,两者可叠加
与Label Smoothing对比 Label Smoothing是标签级软化;Mixup是输入+标签同时软化,信息更丰富
竞赛建议 分类任务后期过拟合时,Mixup/CutMix + Label Smoothing + Dropout 三重正则化组合效果最佳

二十九、原型对比学习(Prototype Contrastive Learning)

维度 说明
核心思想 为每个类别学习多个原型向量,通过对比损失拉近样本与同类原型、推远异类原型
原型数量 每类 2 个或更多原型,捕获类内多模态分布
分类方式 基于原型向量的余弦相似度进行分类(原型余弦头)
损失函数 原型对比损失 + 分类 BCE 损失联合训练
与Metric Learning区别 Metric Learning学习全局嵌入空间;原型对比学习为每类学习多个代表性原型
适用场景 细粒度分类、类内差异大的任务(如鸟类识别)
竞赛价值 多模态类别表现提升明显,配合时序建模效果更佳

三十、分类学辅助损失(Taxonomic Auxiliary Loss)

维度 说明
核心思想 利用分类学层级关系(界门纲目科属种)作为多任务学习的辅助目标
实现方式 主任务:物种分类 BCE 损失;辅助任务:科/属级别分类损失
损失权重 主任务权重高,辅助任务权重低(如 1.0 vs 0.2)
优势 利用分类学先验知识,提升稀有物种泛化能力
适用场景 生物分类、具有层级标签体系的任务
竞赛价值 稀有物种/长尾类别表现提升,与主任务互补
目录