优秀的机器学习开发者都是这样做的!

简介: 有时候过来人的建议真的很重要!

每年我们都会与一起从事短期机器学习研究项目的学生沟通。到目前为止,我们已经和很多学生交流过并且在他们的项目中发现了很多问题,并根据问题给予了他们诸多的建议。我们发现很多问题是大家都存在的,在这篇文章中,我们将集中的介绍这些问题并且给出解决方法。这篇文章绝不是全面的,而是强调了我们一遍又一遍地看到的那些陷阱。例如,我们不会谈论如何选择一个好项目。我们的一些建议通常适用于机器学习,特别是深度学习或强化学习研究的项目。

1主要陷阱:

1.1你的代没有错误

众所周知,机器学习,特别是深度学习和强化学习模型很难调试。为了让你了解无数的犯错方式,请查看Andrej KarpathyTwitter主题。我们所有人,甚至是更高级的研究人员,都会一直犯同样的错误。使这些如此难以察觉的原因是即使是有缺陷的模型通常仍然可以学习并产生有意义的输出。错误可能会对你的模型进行细微更改,并且大多数只会在运行时显示。考虑到这一点,你可以做的最糟糕的事情是假设你的代码不包含任何错误。机器学习研究者对待代码的态度也是将他们分成生产性和非生产性的原意。如果你的默认假设是你的代码可能有问题,那么你将更仔细地搜索错误,逐行完成代码,仔细检查中间输出。如果可能的话,你还会可视化它们。你会考虑张量的形状是否合适?它们是否已正确初始化?克隆还是分离?在训练期间监控梯度并注意NaN。通过设置随机数生成器的种子来编写单元测试并使你的实验可重现等等。这些措施可以让你的代码更具有实际性用处,有关神经网络调试的更多提示,请参阅Goodfellow等人的深度学习书

1.2仅看最终评估指标

虽然你的项目目标可能是实现某些评估指标的改进,但更重要的是,你应该充分了解模型的工作原理和原因。特别是在项目的早期阶段,最终评估指标包含的信息很少,但是这些信息对迭代和开发算法或模型很有用。为了获得更多的信息,我们必须提出更深入的问题并获得信息反馈。例如,如果你引入了门控机制或注意机制,你的模型实际上是否使用了它?你提出的哪些模型创新实际上是有助于整体性能提升?你的模型需要多少个训练样例/时期才能达到合理的性能,这与你使用的基线有何不同?你的模型运行良好或非常严重的测试实例之间是否存在系统差异?你可以从模型的隐藏状态预测重要特征吗?请记住,你的研究和项目报告并非真正告知研究界对先前技术水平的一些(边际)改进,而是为我们对该领域的理解作出贡献。

1.3尝试随机变化并没有明确的期

使用当前的深度学习库,通过添加更多组件、层和优化技巧,可以轻松地使模型更复杂。但是,当你对代码或模型进行更改时,你至少应该对此更改有一个大致的直觉。同样,当你进行实验时,你应该对其结果有明确的期望。你期望绘制的结果看起来像什么,他们会告诉你什么?当你发现自己的模型没有按照预期的方式进行时,这一点就更为重要。通过这些措施,你更有可能看到出现错误的原因,因为扩展你的模型不会帮助你找到该错误,甚至可能使得更难以找到问题。在使模型更复杂之前,先了解它可能出错的底线。此外,请记住,在你的报告中,你必须证明你的所作所为。因为你的报告是别人帮你解决问题的唯一切入口。如果你不能制定一个研究假设,并向自己解释为什么你在做这个工作,那么其他任何人更没有机会了解你在干什么。

1.4过度复杂

我们经常看到积极的学生立即跳出难题并尝试复杂的解决方案。其实真正的出现问题,一般都会很难分析。相反,问问自己:应该起作用的最小的东西是什么?模型能学会记住一个小数据集吗?只使用几个参数时会学到什么?在单个训练实例而不是批处理训练时,代码是否有效?我们期望看到的最简单的概括形式是什么?

1.5迭代太慢了

进行训练实验可能需要很长时间。特别是深度学习和强化学习在积累统计显着数量的随机种子时可能非常耗时。因此,在短期项目过程中不要过早陷入缓慢的迭代周期是至关重要。尽量使用简单的环境调试你的模型,并实现你的想法的概念验证,争取整个过程可以在你的个人计算机上运行。有时,简单的矩阵游戏或网格世界实验也可以提供有用的想法验证。类似的你也可以使用MDP的精确值函数来测试算法思想,而不必乱用梯度估计,演员评论训练等。当转向更大规模的实验时,简化你启动实验和检查结果的过程。在实验完成全部过程之前检查这些结果,看看性能是否平稳。投资训练模型使用的基础设施在开始时可能很耗时,但在项目结束时都会有所回报。

2一些建议:

2.1目开始之前,开始阅读背景知和准备相关工作

我们通常在正式开始日期前就应该分析项目。其中一个原因是了解背景和相关工作,接着我们要进行实施和实验,最后要认真撰写一份好的报告,在做项目之前一定要有一个大局观的设定。另一个原因是我们通常会提出研究项目,如果成功,可能会在机器学习论坛或者杂志上公布。虽然我们都知道整个项目过程中会有很多事情发生,但大多数时候我们都会鼓励你至少提前开始阅读相关文献。理想情况下,当你开始全职工作时,你应该知道该做什么,它如何与现有方法相关,并且知道如何做到这一点。

2.2正确用软件版本及备份

你真的应该为你的项目代码和项目报告使用严格的版本控制,并且及时做好备份。没有什么比在截止日期之前失去所有辛苦工作更糟的了。如果你还没有,请打开GitHub帐户,作为一个学生,你可以获得免费的私人存储库

2.3使用随机重复

在学术界,你不可能在项目期间使用多个GPU进行训练。然而,另外一个尴尬的事情,特别是在深层强化学习中,不能简简单单的就从单个或几个实验中得出过早的结论。理想情况下,你希望多次重复实验,并且如上所述,可以了解不同起始条件和超参数的稳健性。

2.4在实施目中尽早开始写文档

如果你正在做一个硕士项目,你的工作将根据你的书面报告进行评估,而不是基于你所做的杰出工作,这个时候你需要有足够的时间来写清楚你做了那些工作。我个人建议是尽早开始写作,不要低估传播研究的价值。明确说明你的目标、假设和贡献,并让读者遵循你的思维过程,认真的读你的文章。你需要在文档中解释你的设计选择并清楚地讨论你的发现。理想情况下,你应该在项目过程中始终如一地编写报告。这样,你就强迫自己考虑下一步,在截止日期到达时你不太可能忘记任何重要信息。

2.5在需要动寻求帮助

你的上级是忙碌的人,但他们的存在是为了帮助你。一旦出现问题时一定要及时反馈联系上级,千万不要等到下次预定会议时再反馈。积极主动地沟通并准备你想要提前讨论的结果。充分利用你的主管!最后,不要惊慌!他们都经历过这一切,一些问题在你这里可能是个不能解决的问题,但是在你上级哪里可能就是顺手的事情。

以上为译文。

本文由阿里云云栖社区组织翻译。

文章原标题《ADVICE FOR SHORT-TERM MACHINE LEARNING RESEARCH PROJECTS》,

作者:Jakob Foerster and Greg Farquhar 译者:虎说八道,审校:。

文章为简译,更为详细的内容,请查看原文

相关文章
|
机器学习/深度学习 人工智能 搜索推荐
|
机器学习/深度学习 人工智能 搜索推荐
参与赢大奖!阿里云机器学习平台PAI助力开发者激发AIGC潜能
为助力开发者能够一站式快速搭建文生图、对话等热门场景应用,阿里云机器学习平台PAI特推出AIGC加油包,为广大开发者加油助力激发AIGC潜能!
|
机器学习/深度学习 人工智能 文字识别
开发者玩转机器学习不能错过的15篇深度文章!
机器学习平台PAI是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务。开发者可以通过PAI快速构建训练模型,如搭建一些《物体识别》、《验证语音降噪等》有趣的实验模型,也可以契合企业需求,实现企业个性化推荐,小编整理了一些基于PAI平台的模型开发训练指南,供开发者参考收藏。
|
机器学习/深度学习 自然语言处理 文字识别
机器学习开发者不可错过的ModelScope开源模型社区
对于刚刚接触机器学习的开发者来说,ModelScope开源模型社区是你不容错过的选择! 快速入门及环境安装,可以在线体验也可以本地开发。
942 1
机器学习开发者不可错过的ModelScope开源模型社区
|
机器学习/深度学习 人工智能 算法
微软推人人可用的机器学习,打通windows应用程序任督二脉,惠及5000万开发者
微软「Build开发者大会」首次线上开幕,CEO Nadella对开发者倾诉衷肠,微软此次推出了WhiteNoise等多个机器学习工具包,让你的机器学习模型更上一层楼,Project Reunion一统Windows应用程序开发!更有量子计算平台预览版,HoloLens、Office套件等强力升级更新。
228 0
微软推人人可用的机器学习,打通windows应用程序任督二脉,惠及5000万开发者
|
机器学习/深度学习 人工智能 自然语言处理
百度飞桨开发者已超190万,国内首个量子机器学习开发工具「量桨」面世
百度飞桨深度学习平台又有了大幅度的升级:飞桨企业版正式出炉,还有量子机器学习开发工具「量桨」发布。飞桨已成为国内首个,也是唯一支持量子机器学习的深度学习平台。
314 0
百度飞桨开发者已超190万,国内首个量子机器学习开发工具「量桨」面世
|
机器学习/深度学习 算法 Java
Java开发者必看!机器学习开发库精选!
本文将介绍一些目前流行的、强大的基于Java的机器学习库。
4672 0
|
Web App开发 机器学习/深度学习 JavaScript
【TensorFlow开发者峰会】重磅发布TensorFlow.js,完全在浏览器运行机器学习
北京时间3月31日举行的2018 TensorFlow 开发者峰会上,TensorFlow宣布重大更新:增加支持JavaScript,并推出开源库TensorFlow.js,用户可以完全在浏览器定义、训练和运行机器学习模型。
2488 0
|
机器学习/深度学习 架构师 程序员
机器学习工程师第一年的12条踩坑总结 | 开发者必读(020期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
5014 0
|
新零售 机器学习/深度学习 关系型数据库
8月22日云栖精选夜读 | Java开发者必看!机器学习开发库精选!
随着互联网发展和消费者习惯的变化,包括批发、零售及一些生活服务业在内的实体流通企业,由于经营方式较为传统,多以物业租金收益或联营扣点方式为主要盈利模式,无法从商业经营本身获利,这局限了其根据消费者需求对经营模式进行转型创新的探索。
2772 0