机器学习模型运行时做什么

最近有人问了一个问题:“机器学习脚本运行时如何避免浪费时间/拖延?”。

我认为这是一个重要的问题。我认为这个问题的答案反映了你工作方式的组织程度或成熟度。

我在这个问题上留下了一个简短的评论,但在本文中,我将详细阐述我的回答,并提供一些关于如何考虑这个问题、最小化它甚至完全避免它的角度。

What to do during machine learning model runs

机器学习模型运行时做什么
照片由 Mark Fischer 拍摄,部分权利保留

运行更少次数的实验

考虑你为什么执行模型运行。你几乎肯定是在进行一种形式的探索性数据分析

你正试图了解你的问题,目标是达到特定的准确率。你可能需要结果来撰写报告,或者你可能希望模型能够投入使用。

你的实验旨在教会你关于问题的某些知识。因此,你需要非常清楚你想从你执行的每个实验中学到什么。

如果你没有一个清晰明确的问题,而实验结果将有助于阐明,请考虑是否真的需要运行该实验。

当你获得问题的实证答案时,请尊重这些结果。尽你所能将新知识整合到你对问题的理解中。这可能是一个半正式的工作产品,例如每日日志或技术报告。

运行更快的实验

现代编程的编译-运行-修复循环非常高效。即时的回报让你能够不断地测试想法和纠正方向。

这个过程并非总是如此高效。作为工程师,你曾经需要设计模块,并通过纸笔手动检查其逻辑。如果你在编程中进行任何数学运算,你很可能仍然使用这个过程。

有用的现代工具是单元测试,它们可以自动化桌面检查过程,使其可重复。良好测试设计的格言是速度。反馈越即时,你就能越快地纠正方向并修复错误。

这里的教训是,你需要速度。

你需要快速获得问题的实证答案,以便你能够提出后续问题。这并不意味着设计糟糕的实验。它意味着让实验的规模或详细程度仅足以回答一个问题。

获得更快实验的最简单方法是使用数据的缩减样本。这是一项如此简单的技术,以至于它经常被忽视。

你寻找的效果通常会随着数据而可预测地缩放,无论是数据本身的特性(如异常值)还是来自数据的模型的准确率。

将调优作为实验来运行

有些实验本身就很慢,比如调优超参数。事实上,当你追求最佳准确率时,调优可能会非常令人上瘾。

完全避免手动调优任何参数,这是一个陷阱!我的建议是设计有条理的调优实验,使用随机搜索或网格搜索等搜索方法。

收集结果,并使用你的实验建议的最优参数。

如果你想要更好的结果,请在参数空间缩减的超立方体上设计后续实验,并更改搜索算法以使用基于梯度(或准梯度)的方法。

在空闲时间运行实验

避免在你最富有成效的时间运行实验。如果你在白天工作时间内完成工作,请不要在这段时间内占用你的机器和精力,去做像模型运行这样阻塞的任务。

安排你的实验在你不工作的时候运行。在晚上、午餐时间和周末运行实验。

在空闲时间运行实验意味着你需要安排它们。如果你能够批量处理实验,这一点会容易得多。

你可以通过花时间设计 5-10 个实验,准备模型运行,并在你的空闲时间顺序或并行运行实验来做到这一点。

这可能需要纪律来解耦实验要服务的​​问题和答案。好处是你将对你的问题获得更深入的了解,并提高获得它的速度。

在外部运行实验

一些实验可能需要数天或数周,这意味着在你的工作站上运行它们实际上是不可行的。

对于长时间运行的实验,你可以利用云中的计算服务器(如 EC2 及其同类产品)或本地计算服务器。无论其位置如何,计算服务器都不能实时使用。你输入问题,然后接收答案。

计算服务器最有效的利用方式是有一个问题队列和一个用于消耗答案并将它们整合到你关于该问题的知识库中的流程。

例如,你可以设定每天(或每晚)运行一个实验的目标,无论如何。在新项目上,我经常尝试遵循这种模式。这有助于保持高昂的动力。

当想法枯竭时,你可以用一些不加思考的优化实验来填充队列,以调整表现良好的模型的参数,这是一项持续的后台任务,你可以随时依靠。

在实验运行时规划

有时你必须在工作站上实时运行实验。当模型运行时,你的工作站必须阻塞。原因是某些紧迫的实时需求,你无法延迟。

发生这种情况时,请记住,你的项目和你的想法没有被阻塞,只有你的工作站被阻塞了。

拿出文本编辑器或纸笔(纸笔更佳,这样你就不会占用实验运行的任何计算资源)。利用这段时间深入思考你的项目。列出诸如

  • 列出并优先排序你想要执行的实验
  • 列出问题、预期答案、所需设置以及每个实验结果将产生的影响。
  • 列出并优先排序假设以及你可以进行的实验来反驳它们。
  • 列出并优先排序你想为其编写单元测试的代码区域。
  • 列出你问题 的替代视角和框架。

发挥创意,考虑测试关于该项目长期存在的看法。

我喜欢在一天结束时进行创意工作,这样我的潜意识就可以在睡眠时处理问题。我也喜欢在夜间在我的工作站上运行实验,让它与我的潜意识一起思考。

总结

在这篇文章中,你已经发现了在机器学习模型运行时保持高效的一些方法。

以下是你可以使用的一些关键策略的总结

  • 使用它将为你的问题理解提供的贡献作为评估标准,来考虑每个实验是否必需。
  • 设计运行速度更快的实验,并使用数据样本来实现提速。
  • 切勿手动调优超参数,始终设计自动化实验来回答模型校准问题。
  • 在空闲时间运行实验,例如过夜、午餐休息和周末。
  • 批量设计实验,以便你可以排队和安排它们的执行。
  • 将实验运行委托给工作站以外的计算服务器,以提高效率。
  • 如果你必须运行阻塞的实时实验,请利用这段时间深入思考你的问题,设计未来的实验并挑战基本假设。

4 条对《机器学习模型运行时做什么》的回复

  1. tolerious 2015年2月16日下午3:06 #

    好。

  2. Flimm 2015年2月17日下午9:19 #

    干得好。我经常发现,当我在等待一个进程运行时,我会允许自己被 Hacker News 或其他东西分心,然后不知不觉中就浪费了比预期更多的时间。最后一个技巧听起来是个很好的出路。

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。