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

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

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

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

减少实验

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

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

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

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

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

提高速度

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

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

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

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

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

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

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

调整实验

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

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

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

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

在停机时间实验

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

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

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

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

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

异地实验

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

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

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

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

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

运行实验时做计划

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

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

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

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

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

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

总结

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

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

原文:What To Do During Machine Learning Model Runs

http://machinelearningmastery.com/machine-learning-model-running/

(译者/李贻丽 责编/周建丁)

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2015-03-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BestSDK

50种机器学习和人脸识别API,收藏好!以后开发不用找啦

API 是一套用于构建软件程序的协议和工具。对于应用开发者而言,有了开放的 API,就可以直接调用其他公司做好的功能为我所用,这在很大程度上提升了工作效率。本文...

2023
来自专栏技术翻译

关于TensorFlow你应该知道的9件事

TensorFlow是一个机器学习框架。如果你有大量的数据或你在人工智能中追求的最先进的东西,那么这个框架可能是你最好的选择:深度学习。

830
来自专栏新智元

Andrej Karpathy:神经网络是“软件2.0”,而非机器学习的一种工具

【新智元导读】深度学习和计算机视觉专家、特斯拉人工智能部门主管Andrej Karpathy最近提出将神经网络视为Software 2.0,而非“机器学习中的一...

4188
来自专栏QQ大数据团队的专栏

沙龙回顾 | 推荐系统 唯快不破

本次分享是神盾推荐系统中针对快数据应用场景的架构介绍,分为数据计算和数据分发两个部分。

1873
来自专栏思影科技

PNAS:婴儿早期记忆能力比我们想象的要高

近日来自意大利帕多瓦大学的Silvia Benavides-Varela教授在美国国家科学院院刊(PNAS)上发表了一篇关于婴儿早期记忆的研究,这一工作使用近红...

35913
来自专栏机器学习原理

实例(2)——音乐文件特征工程的提取音乐便签分类

1933
来自专栏SDNLAB

基于无尺度网络模型的启发——一种新型数据中心架构的设想

无尺度网络(Scale Free Network),在网络理论中指的是一类有特定特征的网络。无尺度网络所具有的特征是:大部分节点只有极少的边连接,只有极小一部分...

32411
来自专栏人工智能头条

50种机器学习和预测应用的API,你想要的全都有

1847
来自专栏BestSDK

人脸识别、情感分析,开发者必备50个机器学习API|值得收藏

该清单按照字母排序,对 API 的概述是基于对应官网所提供的信息整合而成。要是大家发现该清单中错过了某些当前流行的 API,可以在评论中告知。

2533
来自专栏AI研习社

2018 最新机器学习 API 推荐清单,快给 APP 加点智能

本篇基于 2017 年的推荐清单做了一些改进——去除了一些不再进行维护的 API,并且更新了一些新的 API。主要覆盖如下方向:

1583

扫码关注云+社区

领取腾讯云代金券