深度学习调参小册
字数 2652 2025-08-11 08:35:53
深度学习调参手册详解
一、新项目指南
1. 选择模型架构
- 重用已验证模型:新项目首选已有验证的模型架构,避免从头开发
- 超参数选择:层数、层宽度、激活函数等是模型架构的关键超参数
- 论文复现:找到解决类似问题的论文并复现其模型是良好起点
2. 选择优化器
- 无"最佳"优化器:建议使用成熟流行的优化器(如SGD、Adam)
- 参数重要性:优化器的每个参数都很重要,超参数多的优化器调参更耗时
- 渐进策略:项目初期使用简单优化器(固定动量SGD或固定β的Adam),后期切换更通用优化器
- 推荐优化器:
- 动量SGD(Nesterov变体)
- Adam
- NAdam(比动量SGD更通用)
3. 选择批量大小(batch_size)
- 核心原则:batch_size决定训练速度而非直接提高验证效果
- 理想值:硬件支持的最大batch_size
- 性能关系:适当调整超参数后,任何batch_size都应能达到相同最终性能
3.1 确定可行batch_size
- 内存限制:按2的幂增加batch_size测试,找出内存上限
- 吞吐量关系:batch_size与训练吞吐量成正比,增加应提高吞吐量
- 模型变更影响:模型或优化器变更后需重新选择batch_size
3.2 最小化训练时间
- 完美缩放:batch_size加倍可能使总步数减半(在临界batch_size内)
- 经验法则:使用尽可能大的batch_size
3.3 最小化资源消耗
- 权衡:考虑硬件成本与训练加速收益
- 简单优先:项目初期从简单pipeline开始
3.4 重新调整需求
- 超参数敏感度:大多数超参数对batch_size敏感,变更后需重新调参
- 优化重点:优化器超参数(学习率、动量)和正则化超参数最需调整
- 稳定性建议:尽早确定batch_size,避免频繁变更
4. 选择初始配置
- 配置类型:
- 模型配置(如层数)
- 优化器超参数(如学习率)
- 训练步数
- 指导原则:寻找简单、快速、低资源消耗的"合理"配置
- 避免过早优化:初期不使用复杂配置
- 步数平衡:
- 更多步数:提高性能,调参更容易
- 较少步数:训练更快,资源消耗更低
二、提高模型性能的科学方法
1. 增量调整策略
- 基本原则:从简单开始,逐步改进,每次改进有理有据
- 自动搜索:使用算法自动搜索配置,但需手动设计搜索空间
- 迭代更新:随着经验增长不断更新搜索空间
四个步骤:
- 确定下一轮实验的适当目标
- 设计并运行实验组以达成目标
- 从结果中获取洞察
- 考虑是否推出新最佳配置
2. 探索与开发
- 洞察优先:深入了解问题比短期验证集提升更重要
- 避免随意变更:不因历史表现良好就进行不必要更改
- 敏感度分析:确定对验证错误最敏感的超参数
- 功能试验:尝试新功能(如新正则化器)解决特定问题
- 简化模型:识别并移除无用功能
- 搜索空间优化:围绕最佳值缩小搜索空间提高效率
3. 选择实验目标
- 明确性:每轮实验应有明确、范围狭窄的目标
- 示例目标:
- 尝试管道改进(新正则化器、预处理选择等)
- 了解特定模型超参数影响
- 最大化验证错误
4. 设计实验
- 超参数分类:
- 科学超参数:影响模型性能衡量的参数
- 讨厌超参数:需要优化以公平比较科学超参数
- 固定超参数:当前实验中固定值的参数
- 动态性:超参数分类随实验目标变化
- 调参重点:实践中主要调整讨厌超参数(学习率、优化器参数、正则化参数等)
5. 增强结果洞察力
- 关键问题:
- 搜索空间是否足够大?
- 是否采样足够多点?
- 从最佳训练曲线能学到什么?
- 训练曲线分析:
- 过拟合:验证错误开始增加时出现
- 高方差:可能因批次方差、小验证集或后期高学习率
- 计算限制:训练结束时指标仍在改进
- 非计算限制:指标提前饱和
- 训练损失增加:可能pipeline存在错误
- 可视化:自动绘制不同超参数的轴图
6. 超参数调整判断
- 方差识别:相同配置可能因随机性产生不同结果,需多次试验
- 变更依据:明确导致结果差异的原因
7. 探索结束后
- 工具选择:使用贝叶斯优化等黑盒优化工具自动寻找最佳配置
- 处理发散点:黑盒优化工具可处理搜索空间的发散点
三、确定训练步数
1. 不受计算限制时
- 主要目标:确保足够训练时间达到最佳结果,避免过度浪费
- max_train_steps选择:
- 使用恒定学习率测试
- 损失平稳下降则值合适
- 梯度噪声增加可能需要增大
- 过程有改进可减小
- 网格搜索:无数据增强和正则项时可网格搜索不同学习率
2. 受计算限制时
- 策略:训练多个较短试验来调参
- 推荐轮次:1-3轮,通常2轮最实用
- 两轮调整:
- 较短运行找到好的模型和优化器超参数
- 长时间运行获得最终模型
- 超参数迁移性:
- 极可能迁移:Warmup length、初始化
- 可能迁移:模型架构
- 有可能迁移:数据增强、正则化
- 不太可能迁移:学习率
- 学习率调整:轮次间调整学习率计划时,避免使用额外步数但学习率太小
四、FAQs
1. 学习率衰减
- 最佳时间表:尚无明确构建试验方法
- 默认选择:线性衰减或余弦衰减
- 复杂时间表:许多论文中的复杂分段衰减是根据验证效果临时调整得到
2. Adam超参数调整
- 经验法则:
- <10次试验:只调整基础学习率
- 10-25次试验:调整学习率和β₁
-
25次试验:调整学习率、β₁和β₂
-
25次试验:额外调整ε
3. 准随机搜索
- 优势:
- 非自适应特性便于结果分析
- 可实现回滚
- 并行与顺序运行结果一致
- 简单易用,特别适合并行试验
- 替代方案:伪随机均匀搜索(效率稍低)
- 适用场景:探索阶段优先于复杂黑盒算法
4. batch_size调整
- 验证效果:不应为直接提高验证效果而调整batch_size
- 正则化影响:较小batch_size引入更多噪声,可能有正则化效果
- 过拟合风险:较大batch_size更容易过拟合,需更强正则化
- 步数调整:变更batch_size时可能需要调整训练步数
- 性能上限:无证据表明batch_size影响最大可实现的验证效果
五、总结
本手册提供了深度学习调参的系统方法论,强调:
- 从简单配置开始,逐步增量改进
- 科学设计实验,明确区分超参数类型
- 基于洞察而非随机尝试进行调参
- 合理使用自动化工具与手动分析相结合
- 理解各超参数间的相互作用和敏感度
调参是经验密集型工作,本手册提供的原则和策略可帮助开发者减少试错成本,建立系统化的调参思维框架。