RoBERTa 分类模型正则化调优实验笔记
1. 实验目的
在中文文本四分类任务(其他/投诉/疑似投诉/高意图)中,研究dropout率 和冻结底层网络对模型过拟合的影响,通过对比不同配置下的训练过程,找出兼顾性能与泛化的最优超参数组合。
2. 实验设置
- 预训练模型 :
chinese-roberta-wwm-ext - 数据集 :内部标注数据,共约2.4万条,按
sub_label分层划分为训练集(70%)、验证集(15%)、测试集(15%) - 评价指标 :验证集上的 交叉熵损失 和 宏平均F1,以F1为主要早停指标
- 基础训练参数 :
- 最大长度:256
- Batch size:16(训练)/8(验证)
- 学习率:2e-5
- 权重衰减:0.01
- 标签平滑:0.05
- 早停耐心值:2(基于F1)
3. 实验配置
共测试5种配置,主要变化为dropout概率 (0.10/0.15/0.20)和是否冻结底层(Embedding层 + 前4层Encoder)。
| 情况 | hidden_dropout_prob | attention_probs_dropout_prob | 冻结底层 | 简称 |
|---|---|---|---|---|
| 1 | 0.15 | 0.15 | 否 | d0.15_无冻结 |
| 2 | 0.20 | 0.20 | 否 | d0.20_无冻结 |
| 3 | 0.20 | 0.20 | 是 | d0.20_有冻结 |
| 4 | 0.15 | 0.15 | 是 | d0.15_有冻结 |
| 5 | 0.10 | 0.10 | 是 | d0.10_有冻结 |
4. 训练结果汇总
4.1 各配置关键指标对比
| 配置 | 最低验证损失 (epoch) | 最低验证损失 | 最高F1 (epoch) | 最高F1 | 第8轮验证损失 | 验证损失反弹幅度 | 第8轮训练损失 | 早停触发 |
|---|---|---|---|---|---|---|---|---|
| 情况1 (d0.15_无冻结) | 3 | 0.3887 | 7 | 0.8775 | 0.6764 | 0.2877 | 0.0675 | 否 |
| 情况2 (d0.20_无冻结) | 3 | 0.3685 | 6 | 0.8774 | 0.5723 | 0.2038 | 0.1682 | 否 |
| 情况3 (d0.20_有冻结) | 3 | 0.3891 | 5 | 0.8642 | 0.5053 | 0.1162 | 0.2566 | 否 |
| 情况4 (d0.15_有冻结) | 3 | 0.3917 | 6 | 0.8711 | 0.5564 | 0.1647 | 0.1454 | 否 |
| 情况5 (d0.10_有冻结) | 2 | 0.3860 | 4 | 0.8714 | 0.5709 | 0.1849 | 0.1308 | 否 |
注:所有配置均训练满8轮,因F1未出现连续两轮下降(早停未触发)。
-
情况一

-
情况二

-
情况三

-
情况四

-
情况五

4.2 训练曲线可视化折线图

5. 结果分析
5.1 dropout率的影响(对比情况1与情况2)
- 验证损失:情况2(d0.20)的最低验证损失(0.3685)低于情况1(0.3887),且反弹幅度减少29%(0.2877→0.2038)。
- F1值:两者最高F1几乎相同(0.8775 vs 0.8774),但情况2在第6轮即达峰,情况1在第7轮才达峰(验证损失已明显上升)。
- 结论:提高dropout从0.15到0.20,在不冻结的情况下,有效抑制了过拟合,同时保持了性能。
5.2 冻结层的影响(对比情况2与情况3)
- 验证损失:情况3的最低验证损失(0.3891)略高于情况2,但反弹幅度极小(0.1162),仅为情况2的一半。最终验证损失(0.5053)远低于情况2(0.5723)。
- F1值:情况3的最高F1(0.8642)比情况2低约1.3个百分点,说明冻结层限制了模型容量,导致性能轻微下降,但泛化稳定性显著提升。
- 结论:冻结底层能强力缓解过拟合,但会牺牲少量性能。适合对稳定性要求极高且可接受F1微降的场景。
5.3 dropout与冻结层的组合(情况4、情况5)
- 情况4(d0.15_有冻结) 反弹幅度0.1647,优于情况1(无冻结)的0.2877,但比情况2(d0.20_无冻结)的0.2038略小,最高F1 0.8711 接近情况2。
- 情况5(d0.10_有冻结) 最低验证损失出现在第2轮(0.3860),反弹0.1849,最高F1 0.8714,与情况4相当。
- 结论:在冻结基础上,较低dropout(0.10或0.15)也能取得不错的泛化效果,但不如情况2在性能和稳定性上的平衡。
6. 结论与建议
6.1 最优配置推荐
综合性能与泛化,情况2(dropout=0.20,无冻结) 是本次实验的最优选择:
- 取得最低验证损失(0.3685)
- 最高F1与情况1持平(0.8774)
- 过拟合程度可控(反弹0.2038)
- 训练损失与验证损失差距合理
6.2 早停策略调整
由于所有配置均未触发基于F1的早停(F1波动较大),建议将早停指标改为验证损失,耐心值设为2。这样可在验证损失连续上升时及时停止,避免过度训练。例如情况2在第3轮后验证损失开始反弹,若以损失早停,则会在第5轮停止(第4、5轮连续上升),此时F1已达0.8728,接近最高点。
6.3 进一步调优方向
- 在情况2基础上微调dropout(如0.18或0.22),观察性能变化。
- 尝试更复杂的正则化方法,如Stochastic Depth (随机深度)或LayerDrop。
- 对冻结层数进行更细粒度的搜索(如只冻结Embedding,或冻结前6层)。
7. 附录:各配置详细训练日志
情况1(d0.15_无冻结)
| Epoch | Training Loss | Validation Loss | Accuracy | F1 |
|---|---|---|---|---|
| 1 | 0.984556 | 0.535320 | 0.810928 | 0.783722 |
| 2 | 0.726202 | 0.408372 | 0.857993 | 0.840279 |
| 3 | 0.467524 | 0.388687 | 0.866108 | 0.858262 |
| 4 | 0.360807 | 0.425556 | 0.883689 | 0.869660 |
| 5 | 0.252814 | 0.502047 | 0.886394 | 0.872835 |
| 6 | 0.170876 | 0.637724 | 0.883419 | 0.867923 |
| 7 | 0.093552 | 0.650299 | 0.891263 | 0.877456 |
| 8 | 0.067478 | 0.676418 | 0.888288 | 0.873423 |
情况2(d0.20_无冻结)
| Epoch | Training Loss | Validation Loss | Accuracy | F1 |
|---|---|---|---|---|
| 1 | 1.042007 | 0.563510 | 0.799567 | 0.770724 |
| 2 | 0.781551 | 0.400161 | 0.856100 | 0.843470 |
| 3 | 0.554114 | 0.368504 | 0.875304 | 0.862803 |
| 4 | 0.475224 | 0.427141 | 0.880714 | 0.866790 |
| 5 | 0.349338 | 0.426796 | 0.878821 | 0.870065 |
| 6 | 0.265170 | 0.469085 | 0.889370 | 0.877389 |
| 7 | 0.125237 | 0.552799 | 0.890181 | 0.876998 |
| 8 | 0.168174 | 0.572293 | 0.885312 | 0.872764 |
情况3(d0.20_有冻结)
| Epoch | Training Loss | Validation Loss | Accuracy | F1 |
|---|---|---|---|---|
| 1 | 1.080105 | 0.512031 | 0.808223 | 0.783248 |
| 2 | 0.802223 | 0.437697 | 0.842305 | 0.827158 |
| 3 | 0.603538 | 0.389091 | 0.870165 | 0.857313 |
| 4 | 0.554166 | 0.412226 | 0.872329 | 0.857727 |
| 5 | 0.432061 | 0.424423 | 0.878009 | 0.864195 |
| 6 | 0.375812 | 0.459663 | 0.874493 | 0.859982 |
| 7 | 0.217583 | 0.489833 | 0.879632 | 0.865826 |
| 8 | 0.256628 | 0.505250 | 0.877198 | 0.863478 |
情况4(d0.15_有冻结)
| Epoch | Training Loss | Validation Loss | Accuracy | F1 |
|---|---|---|---|---|
| 1 | 0.995017 | 0.486849 | 0.823100 | 0.801614 |
| 2 | 0.761262 | 0.430464 | 0.850419 | 0.833468 |
| 3 | 0.495497 | 0.391672 | 0.864485 | 0.853010 |
| 4 | 0.436764 | 0.395929 | 0.877468 | 0.864437 |
| 5 | 0.307575 | 0.435272 | 0.879632 | 0.866569 |
| 6 | 0.267498 | 0.493138 | 0.884501 | 0.871118 |
| 7 | 0.109806 | 0.543396 | 0.882608 | 0.868585 |
| 8 | 0.145369 | 0.556351 | 0.880985 | 0.867006 |
情况5(d0.10_有冻结)
| Epoch | Training Loss | Validation Loss | Accuracy | F1 |
|---|---|---|---|---|
| 1 | 0.943781 | 0.488687 | 0.819583 | 0.795270 |
| 2 | 0.709607 | 0.386042 | 0.863132 | 0.846711 |
| 3 | 0.429968 | 0.387412 | 0.869083 | 0.857693 |
| 4 | 0.333804 | 0.409719 | 0.883960 | 0.871365 |
| 5 | 0.196703 | 0.481317 | 0.879903 | 0.865617 |
| 6 | 0.130840 | 0.570889 | 0.883419 | 0.869413 |