订阅云计算RSS CSDN首页> 云计算

在机器学习模型运行时保持高效的方法

发表于2015-03-05 23:05| 次阅读| 来源MachineLearningMastery| 0 条评论| 作者Jason Brownlee

摘要:机器学习算法的运行需要大量的时间,往往造成时间浪费或项目耽搁,本文教你从几个角度思考这个问题,缩减消耗时间,甚至彻底避免时间的浪费。

近来,很多人都面临这样一个问题:“机器学习脚本运行时,如何才能避免浪费时间或者拖延呢?”。

我认为这是一个非常好的问题,回答这个问题能显示组织水平和工作上的成熟度。

我曾对此问题进行过简短的回复,但在这篇文章里,我会详述我的方法,并教你从几个角度思考这个问题,缩减消耗时间,甚至彻底避免时间的浪费。

减少实验

思考为什么要运行模型。你肯定会执行一种探索性数据分析的形式。

你努力去了解问题,以期让结果达到某种精确程度,可能是为了一篇报告需要的结果,也可能是希望模型具有可操作性。

实验可以让你更了解这个问题。当然,你也需要十分清楚该从每个实验中学到什么。

如果连一个清楚明白的问题都还没有,想想究竟是否需要进行实验。

尊重多次实验得出的结论,并尽可能将其融入你对问题的理解。这可能是日记或技术报告之类的半正式的工作结果。

提高速度

现代编程的“编译-运行-修复”模式效率很高,可当即得出结果,于是你可以持续不断测试想法,修正路线。

这个过程并非一直如此高效。工程师就惯用纸笔手工设计模块,检查逻辑。如果在编程中加入数学运算,他们也很有可能使用这一进程。

单元测试是个很有用的工具,它可以自动重复运行检查过程。而对于测试设计来说,速度尤为重要。反馈速度越快,调整路线修正错误也就越快。

下面教你如何获得想要的速度

你想要快速得到的反复验证的结果,这样你才能继续提出后续问题。但这不是说要设计效果欠佳的实验,而是要设计足够宏观或具体到只够验证一个问题的实验。

提高实验速度最简单的方法是使用数据的简化样本。这个技术简单到经常会被忽略掉。

往往你正在寻找的效果是可从数据中预测到的,无论是数据本身的性质,如异常值,还是数据模型的准确性。

调整实验

有些实验本身就很慢,如调整超参数。事实上,当追求的是最佳准确度时,调整会变成一种享受。

要彻底避免手工调整任何参数,这是一个陷阱!我的建议是使用如随机或网格搜索的搜索方法,有条不紊地调整实验。

采集结果并选取实验得出的最优参数。

如果希望获得更好的结果,设计后续实验时可在参数空间内减少超数据库,改为使用梯度(或准梯度)为基础的搜索算法。

在停机时间实验

不要在高效运算时间进行实验。如果白天工作时间完成了工作,不要直接关机,可以在这段时间集中处理一些大型任务,比方说运行模型。

在不工作时安排实验。夜里、午餐时间以及整个周末都是很好的选择。

停机时间运行实验意味着你需要提前安排。如果你能批处理实验,事情会容易得多。

花点时间来将五到十个实验分为一批,准备运行模型,最后在停机时间按顺序运行或并行运行实验。

可能还需要解耦问题和实验结果的规则。好处则是能在最快的速度获得对问题最深度的认识。

异地实验

某些实验可能会持续数天或数周,根本无法在工作站运行。

长期运行的实验可以充分利用云计算服务器(如EC2等)或本地计算服务器。无论其本地环境如何,这些计算服务器都不是实时使用的。你给出问题,得到答案。

将问题列好,有序地解决,再纳入不断增长的知识库中可以更有效地利用计算服务器。

例如,可以设置每天(或每晚)一个实验。我常常想在新项目上使用这种模式。这可以帮助维持好的势头。

当想法没那么多时,可以在问题列表中加入考虑不完备的优化实验,以调整运转良好时得到的参数。

运行实验时做计划

有时候,不得不在实时工作站上运行实验。测试进行时,工作站必须停止工作。原因可能是一些不能耽搁的实时性要求。

发生这种情况时,要记住你的项目和想法并没有停止,停下的只有工作站。

拿出文本编辑器或纸笔(纸笔是首选,这样就不用妨碍实验运行)。利用这段时间深入思考项目。制作列表,如:

  • 列出想要进行的实验,并确定其优先顺序
  • 列出问题、预期答案,设置必需的和可能影响结果的每个实验
  • 列出假设和可以破解这些假设的实验,并确定其优先顺序
  • 列出想要编写单元测试的代码分区,并确定其优先顺序
  • 列出问题的替代观点和框架。

勇于创新,考虑测试项目长期的信念。

我喜欢在一天结束时做创造性的工作,睡觉时让潜意识处理这些问题。我也喜欢夜间在工作站上运行实验,让它和潜意识作伴。

总结

这篇文章介绍了一些机器学习模型运行时保持高效的方法。以下是可用方法的总结:

  • 用实验可以帮助你理解多少问题来确定每个实验的必需性。
  • 设计运行更快的实验,使用数据样本提高实验速度。
  • 不要手动调整超参数,设计自动化实验来回答模型校准问题。
  • 停机时间进行实验,如夜里、午休时间和周末。
  • 批处理实验,这样就可以按照队列安排执行。
  • 授权工作站以外的计算服务器运行实验,以提高效率。
  • 如果必须运行封闭实时实验,利用这段时间来深入思考问题、设计未来实验以及挑战基础假设。

原文链接:What To Do During Machine Learning Model Runs(译者/李贻丽 责编/周建丁)

0
0