深度学习Google调参指南

这份手册是为谁准备的?

       本文档适用于对最大化深度学习的性能感兴趣的工程师和研究人员(包括个人和团队)。我们假定您具备机器学习和深度学习概念的基本知识。我们的重点是超参数调优的过程,但我们还涉及深度学习学习的其他方面。例如工作流实施和优化,但这些方面并不详尽。我们假设机器学习问题是监督学习或类似的东西(例如自监督学习)。但是,本文档中描述的技术也可能适用于其他类型的问题。

为什么需要这份调优手册?

       目前,要使深度神经网络在实践中正常运行,需要付出大量的努力和猜测。更糟糕的是,目前很少有人记录下那些深度学习中获得良好结果的实际方法。一方面,通常,论文忽略了导致最终结果的过程,以呈现更清晰 的原理。另一方面,处理商业问题的机器学习工程师很少有时间回顾并概括他们的调参过程。教科书也往往回 避实用指南,而偏重于基本原理,即使它们的作者具有在应用工作中提供有用建议的经验。在准备创建此文档 时,我们找不到任何系统性的资料来解释如何使用深度学习获得良好的结果. 相反,我们看到了博客文章和社交 媒体上的建议片段、从研究论文附录中收集的技巧、特定项目或工作流的偶然案例研究,以及很多困惑。在深 度学习领域,专家和新手用着表面上类似的方法,但所取得的结果之间存在着巨大的差距。与此同时,这些专 家也很乐意承认他们所做的一些事情可能没有充分的理由。随着深度学习的成熟并对世界产生更大的影响,社 区需要更多涵盖有用方法的资源,包括对于获得良好结果至关重要的所有实用细节。

       我们是一个由五名研究人员和工程师组成的团队,多年来一直致力于深度学习。我们已经将深度学习应用 到从语音识别到天文学的方方面面,并在此过程中学到了很多东西。本文档源于我们自己训练神经网络、教授 学生以及为我们的同事提供实践建议的经验。虽然深度学习已经从少数学术研究实验室中实践的机器学习方法 发展成为为数十亿人使用的产品提供动力的技术,但深度学习在工程领域仍处于起步阶段,我们希望本文档能鼓励其他人也来帮助系统化该领域的实验细节。

       这份文件是在我们试图实现我们自己的深度学习方法时产生的,因此它只代表作者在撰写本文时的观点,而不是任何客观事实。它被特别强调是因为我们在调整超参数方面遇到了困难,但它也涵盖了我们在工作中遇到(或看到出错)的其他重要问题。我们希望这项工作成为一份活的文件,能随着我们理解的改变从而成长和演变。例如,一份关于如何调试和如何减少训练失败的文档在两年前是不可能写出来的,因为它这得基于最近的结果和正在进行的研究。不可避免地,我们的在此文档中一些建议也将需要更新以考虑新的结果和改进的工作流程。我们不知道最好的深度学习秘诀,但在大众开始记录它并讨论各个步骤之前,我们不能指望找到它。为此,我们鼓励发现我们的建议存在问题的读者提出替代建议以及令人信服的证据,以便我们更新建议。我们也希望看到可能有不同建议的替代指南和方式,以帮助大众追求最佳方法。最后,任何标有🤖表情符号的地方是我们要进一步调查的地方。只有在尝试编写这本playbook之后,我们才完全清楚在深度学习从业者的工作流程中可以找到多少有趣及被忽视的研究问题。

目录

第 1 章 开始新项目的指南1

1.1 选择模型架构 . . . . . . . . . . . .  . . . . . . . . . . . .  . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .1

1.2 选择优化器 . . . . . . . . . .  . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . .1

1.3 选择 BatchSize . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . .  . ..  . . . . . . . . . . . . . . . . . . . . . . . .1

1.3.1 确定可行的 Batch Size 并估计训练吞吐量 . . . . . . . . . . . . . . .. . . . . .  . . . . . . . . . . . . . . . . . .2

1.3.2 选择合适的 Batch Size 以最小化训练时间 . . . . . . . . . . . . .  . . . . . .. . . . . . . . . . . . . . . . . . . .2

1.3.3 选择合适的 Batch Size 以最小化资源消耗 . . . . . . . . . . . . . . . . . . . . .. . . .  . . . . . . . . . . . . . .3

1.3.4 更改 BatchSize 需要重新调整大多数超参数 . . . . . . .  . . . . . . . . . . . . . . .. .  . . . . . . . . . . . . .3

1.3.5 Batch Norm 会对 Batch Size 的选择造成什么影响?. . .  . . . . . . . . . . . ... . . . . .  . . . . . . . . .3

1.4 选择初始配置 . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

第 2 章 提高模型性能的科学方法5

2.1 增量调整策略 . . . . . . . . . . . . . . . . .  . .  . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5

2.2 探索与利用 . . . . . . . . . . . . . . . . . .  . . . . . . . . . .  . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5

2.3 选择下一轮实验的目标 . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6

2.4 设计下一轮实验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   . . .  . . . .  . . . . . . . . . . . . . . . . . . . .6

2.4.1 识别目标超参数、冗余超参数和固定超参数 . ..  . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . .6

2.4.2 创建一组研究 . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .7

2.4.3 平衡实验的信息量和成本 . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . .8

2.5 从实验结果中获取经验 . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

2.5.1 识别错误的搜索空间边界 . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .9

2.5.2 没有在搜索空间中采样足够的点 . . . . . . . . . . . . . . . . . .  . . .. . . . . . . . .. . . . . . . . . . . . . . . .10

2.5.3 检查训练曲线 . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . .10

2.5.4 使用 isolation 图检测更改是否有用 . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

2.5.5 自动化常用的绘图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . .12

2.6 确定是否采用此训练工作流更改或超参数配置 . . . .  . . . . . . . . . .  . . .. . . . . . . . . . . . . . . . . . .12

2.7 探索结束后 . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . .  . . .  . . . . . . . . . . . . . . . . . . . . . .13

第 3 章 确定每次训练运行的步数14

3.1 当训练不受计算限制时如何决定该训练多久 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14

3.1.1 使用学习率搜索算法来确定 max_train_steps 的初始值  . . .  . . . . . . . . . . . . . . . .. . . . . . . .15

3.2 当训练受计算限制时如何决定该训练多久 . . . .  . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15

3.2.1 第一轮 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . .  . . . .   . . . . . . . . . . . . . .16

3.2.2 第二轮 . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . .  . .   . . . . . . . . . . . . . . . . . . . . . .16

第 4 章 关于训练管道的额外补充18

4.1 优化输入管道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . .  . . . . . . . . . . . .  . . . . . . . . . . .18

4.2 评估模型性能 . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . .  . . . . . . .  . . . . . . . . . . . . . . .18

4.2.1 评估设置 . . . . . . . . . . . . . . . . . . . . . . .  . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   . . . . . . .18

4.2.2 设置定期评估 . . . . . . . . . . . . . . .  . . . . . . . . . . . .  . . . .. . . . . . . . . . . . . . . . . . . . .  . . . . . .18

4.2.3 选择样本进行定期评估 . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . .19

4.3 保存检查点并追溯选择最佳检查点 . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . .   . . . . . . . .19

4.4 设置实验跟踪 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . .  . . . . . . . . .  . . . . . . . . . . . .20

4.5 BatchNorm 的实现细节 . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.6 多主机管道的注意事项 . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . .   . . . . . . . . . . . . . . . . . . . .20

第 5 章 常见问题的回答                                                                                                                 21

5.1 最好的学习率衰减方案是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . .    . . . . . .21

5.2 我应该使用哪种学习率衰减方案作为默认值?. . . . . . . . . . . . . . . . . . . . . . . .   . . . . . . . . . . . .21

5.3 为什么有些论文有复杂的学习率衰减方案?. . . . . . . . . . . . . . . . . . . . . . . . .   .  . . . . . . . . . . .21

5.4 Adam 的超参数应该如何调整?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . .  . . . . . . . . .21

5.5 为什么在优化的探索阶段使用 Quasi-Random-Search 而不是更复杂的黑盒优化算法?. . . .  21

5.6 在哪里可以找到 Quasi-Random-Search 的实现?. . . . . . . . . .  . . . . . . . . . . . .. . . .  . . . . . . .23

5.7 需要多少次试验才能通过 Quasi-Random-Search 获得较好的结果?. . . . . . ...  . . . .   . . . . . .23

5.8 如何调试和缓解优化失败 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . .  . .  . . . . . .23

5.8.1 识别不稳定的训练任务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . .   . . . . .. . . . . . . .24

5.8.2 常见不稳定模式的潜在修复方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . .. .. . . . . .   . . . . .24

5.8.2.1 学习率预热 . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . .  . . . . . .25

5.8.2.2 梯度截断 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . .. . . . . . . .  . . . .. . . . . . . . . . . .27

5.9 为什么将学习率和其他优化参数称为超参数?它们不是任何先验分布的参数。 . . . . .  . . . . .28

5.10 为什么不应该调整 Batch Size 来直接提高验证集性能? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.11 所有流行的优化算法的更新规则是什么?. . . . . . . . . . . . . . . . . . . . . . .  .. . . . . . . . .  . . . . . .29

5.11.1 Stochastic gradient descent (SGD) . . . . . . . . . . . . . . . . . . . .. . . . . .  . . . . . . . . .  . . . . . . .29

5.11.2 Momentum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . .  . . . . . . . . . . . . . . . . . .  .  . . . .29

5.11.3 Nesterov . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . .  .. . . . . . . . . . . . . . . . . . . .  . . . . .29

5.11.4 RMSProp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . .. . . . . . .   . . . . . .29

5.11.5 ADAM . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   . . . . . .30

5.11.6 NADAM . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

想要pdf的可以去参考文献下载阅读。

参考文献:

https://github.com/schrodingercatss/tuning_playbook_zh_cn

https://github.com/google-research/tuning_playbook

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值