在上次的模型训练实验中,我们对不同参数组合进行了系统 sweep 测试,包括隐藏层大小 (H)、dropout 比例 (dp) 和学习率 (lr)。本文更换数据集为飞鸟集,针对实验结果、分析了不同参数对训练效果的影响,并给出可参考的最佳配置建议。但在本次的实验中,由于超时时间设置太短的关系,大部分的训练都没能像前一次单句文本的训练一样,进行多轮训练,几轮内就退出了。由于本人硬件(但4070应该不是瓶颈,可能是数据量太小导致显卡一直在空等)及时间的限制(大概运行了一个星期才结束),并没有跑完设定的所有参数类型没有得到太理想的结果。如果感兴趣,建议自行优化训练脚本进行进一步的研究。

1. 实验设计

  • 数据集:飞鸟集(约八百行)
  • 模型架构:简化版 Transformer / RNN,隐藏层大小 H 可选 64、128、256、512
  • 硬件:单 RTX 4070,CPU i5-13600K,32GB 内存
  • 训练参数 sweep
    • 隐藏层 H:64 / 128 / 256 / 512
    • Dropout dp:0.0 / 0.1 / 0.2 / 0.3
    • 学习率 lr:0.0001 / 0.0005 / 0.001
  • 训练限制:部分实验因单轮超时而未完全收敛、

2. 实验结果对比

隐藏层 HDropout dp学习率 lr最终 Loss结果特征备注
640.00.0011.207中等收敛学习率偏大,loss 稳定在 1.x
640.10.00050.981稳定收敛loss <1,较好泛化
640.20.00011.310欠拟合学习率过低,没学够
1280.00.0011.692欠拟合/震荡学习率过大,训练不稳
1280.20.0010.075过拟合loss 极低,几乎背下训练集
1280.30.00050.990稳定收敛泛化良好,推荐组合
2560.00.0010.192严重过拟合loss 接近 0,死记硬背
2560.10.00051.105中等收敛学习率较稳,略偏高
2560.20.00011.432欠拟合学习率太低,停在高 loss
5120.20.00010.573较好收敛模型容量大,训练时间长
5120.30.00051.020中等收敛稳定,但耗时大

3. 参数分析

3.1 学习率影响

  • lr=0.001:训练容易震荡或过拟合,尤其在隐藏层大时表现明显。
  • lr=0.0005:训练最稳定,loss 通常在 0.9–1.1 范围,生成结果泛化性较好。
  • lr=0.0001:训练收敛慢,容易停在高 loss,表现为欠拟合。

3.2 Dropout 作用

  • dp=0.0:loss 常低至 0.1 以下,模型几乎记忆训练集,泛化能力差。
  • dp=0.2–0.3:loss 稳定在 0.9–1.1,生成结果更自然,更有泛化性。

3.3 模型大小 H

  • H=64:模型太小,表达能力有限,训练效果一般。
  • H=128–256:容量适中,既能收敛,又不容易过拟合。
  • H=512:表达能力强,但训练耗时长,部分实验因超时只跑一轮,loss 未完全收敛。

3.4 超时问题

  • 单轮训练超时导致部分实验未收敛,尤其是大模型和小学习率组合。
  • 解决策略:
    • 缩短序列长度,减少计算量
    • 增大学习率,加快收敛
    • 限制 sweep 参数空间,避免大模型 + 小 lr 组合

4.推荐配置

  • 最佳配置组合
    • 隐藏层 H:128 或 256
    • Dropout dp:0.2–0.3
    • 学习率 lr:0.0005
  • 训练效果:loss 稳定在 0.9–1.1,模型未死记硬背,生成文本更自然,泛化性较好。
  • 注意事项
    • loss 太低并非理想结果,通常表示过拟合
    • 模型太大或训练时间不足,会导致实验未充分收敛

部分配置训练结果

5. 结论

  1. 适度容量 + 小 dropout 是有限语料下的最佳选择,可兼顾风格保留与创新性。
  2. 过大容量或 dropout 过小 容易过拟合,生成机械化文本。
  3. 训练轮数不足 会限制大模型潜力发挥,即使容量大,也可能生成偶尔不连贯的句子。
  4. 未来优化方向
    • 增加训练轮数,充分收敛大模型
    • 引入数据增强(如诗句重组或同义改写)
    • 尝试混合容量模型,实现速度与生成质量的平衡
https://github.com/spikec137/miniGPT

本次对应的版本为1.9-2.3。

发布于2025/09/14。

船长

发表评论