0
本文作者 David Mack,为了从事机器学习相关的研究,他辞去了工作,在没有固定收入的情况下进行了一年了探索。本文是他对过去一年经验和体会的总结。
梯度下降引导的旅程
最近,我发现我的生活需要一个新的挑战。我厌倦了我的日常工作,坚持想自己去从事机器学习研究。
这一年充满了挑战,且收获颇丰。我经历了许多失败和一系列意想不到的成功,走上了一条完全不同于之前设想的道路。
在这里,我将告诉你我的经历:我做了什么,哪些成功了,哪些失败了,我学到了什么,我会做什么不一样的事情。如果你渴望进入机器学习领域,或者想知道成为一名研究员需要什么,希望我的文章能够帮到你。
我从哪里开始
随着时间的推移,我工作中的学习和挑战逐渐减少。以前有很多未知的技能需要学习,现在我每天只需要按照一个规律的模式执行就可以。我对没有已知解决方案的开放性问题感到最为兴奋。
我越来越多地把空闲时间花在阅读学术论文和草拟解决开放性问题的方案上。
有一天,我坐在森林里的树桩上,等着一个朋友回来,我突然产生了一个想法,那就是我不得不辞职。这种清醒的时刻是奇怪和罕见的,你永远不知道它会出现在什么时候。第二天早上,我告诉我的团队我要离开。
在大学里,我攻读了计算机科学的本科和计算机科学与数学的硕士学位。我一直渴望进一步学习,但从未找到一个吸引我的环境。
在我辞职的时候,我很幸运有了一些存款,所以放弃全职工作就不那么可怕了。我每周工作 2 天并减少开支以使我的财务收支平衡。我的搭档帮助我,我很多周末都在工作。
热身运动
在辞掉工作之前,我已经开始从事微型研究项目,我会做一些有趣的东西,在网上写下来,这个过程不会花太多时间来完成。
这大大增强了我走这条新道路的信心。通过指导和出版它们(这里是其中一个例子),我向自己展示了我有研究的基本技能。
我鼓励任何正在考虑进行研究的人找到一些小项目,并把它们做完。它很有趣,并且能让你体验整个过程。
开始
在进入全职研究之后,我做的第一件事就是建立 Octavian.ai,这是一个我可以在网上写作的地方。我将一个网络流量网站,一个媒体出版物,facebook 和 twitter 整合在一起。虽然我在美术上花了很多时间(我也喜欢平面设计),但在过去的一年里,这个网站一直是我用得最多的地方。当人们对我的工作感兴趣时,我经常让他们去看看这个网站。
我还发现,有一个品牌可以将我们所有的工作和各种演讲活动联系在一起。我相信这个品牌帮助我们发展了我们的社区,因为它帮助组织看起来更加连贯和专业。
我没有为这件事情筹集任何资金。这只是一种个人探索的工具,不适合提升。
科研并不是魔法
我需要克服的最早的障碍之一是改变进行研究是一种只有精英才能完成的神秘活动的想法。
我现在已经从一些学生、研究人员和工程师那里听到了同样的感受。即使是出版过相关著作的研究人员也偶尔在 Twitter 上承认感觉自己像冒名顶替者,而不是「真正的研究人员」。
虽然我还只是研究领域的一个刚入门的学生,但我听说很多人对此感到消极,所以我想发表一个声明:研究不是魔法。这只是一个处理问题、定义问题、列出解决方案、尝试解决方案、了解什么方法有效以及记录这些问题的过程。任何聪明、勤奋的人都可以走这条路。
此外,你很容易因为害怕自己能力不够或者这件事情不值得去做而放弃。相反,开始研究吧,给它时间去自由发展。
进行研究需要很长时间
我今年最大的收获之一就是投入了很多时间、精力和资源来进行研究。具体来说,我的意思是产生成功的结果:一种比其他人表现更好的方法,或者发现一个能帮助其他人的问题。
在我的职业生涯中,我很清楚计划的谬误:
「预测完成未来任务所需时间经常会表现出乐观主义倾向,我们会低估所需的时间。」
然而,我花了很多时间在研究项目上,才真正做到这一点。我发现每个项目都会经历一个周期:
蜜月期:对问题和潜在解决方案的强烈兴奋、好奇和乐观
开始工作:打开代码编辑器,整理数据集,勾画出实验架构,满足线性进展
第一个障碍:解决这个问题比最初设想的要困难。数据处理需要更多的工作。最初的想法是错的。
悲伤、漫长的驱动/低谷:坚持成为支撑的动力,需要修复更多的错误,需要编写更多的测试用例,更多的变化需要尝试。未来可能会成功,也可能不会。
最后终于成功:完成这个项目过程中的一个快乐时刻。你可能永远不会到达这里,或者你可能会彻底证明你的方法永远不会奏效。如果是,返回到第一步。
把它拿出来:写作,然后点击发布。至此,你唯一的动机就是不再参与这个项目。你点击发布并离开办公室。
在我的心理评估中,我通常只记得步骤 1 到 3。我的记忆抹去了悲伤的事情,这也许是为了保护我的热情。
我现在对我承担的项目范围更加谨慎了。我有一个评分系统:
新数据集?+2 分
数据集太大,无法放在一台机器的内存中?+1 分
从一篇没有代码的论文中实现?+1 分
不适合库的结构:+1 分
用多个 GPU 训练?+1 分
集群训练?+3 分
我花了很多时间构建数据和训练基础设施。例如,一个项目的大部分是将一个模型转换为在一个 TPU 集群上运行(这是我当时唯一拥有的云资源),这样我就可以测试出注意力函数的变化。经过大量的努力,我得到了一个消极的结果。
我选择放弃学术论文,转而在媒体上写博客。这是一把双刃剑:它牺牲严谨性,让我有时间折腾更多的项目。有人和我的朋友们这件事的讨论利弊,他说:「如果你写一篇论文,大多数人无论如何都读不到这篇博客文章了」,这就解决了问题。
考虑到自己的个人时间之外,我现在非常感谢研究机构的资源。即使是写一篇论文,理想情况下你也需要一个团队的合作者,几个月,大量的 GPU 时间,然后几个人来帮忙写。
与初创企业和图书行业一样,深度学习研究也是一个基于点击率的模型——一小部分的论文将获得最大的关注。研究就像抽奖:有些票会有奖品,但你不知道是哪一张。最好的办法是买很多票。作为一名独立研究者,我必须仔细挑选几张票。
无钱训练
机器学习研究中花费在增加
人工智能的冬天由于 GPU 的发展而部分解冻了,其中很多地方都解冻了。
这张来自 OpenAI 的图表显示了训练资源呈指数级增长的明显趋势,即产生最新成果的成本越来越高:
计算规模(归功于 OpenAI)
在今年年初,我收集了我能得到的资源:一堆谷歌云信用卡。我把自己的一些钱投入了托管。与任何研究实验室都能接触到的资源相比,这一点都显得苍白无力。由于以下几个原因,资源不再是瓶颈:
建造一个能够证明大量资源是合理的东西需要花费大量的工程时间。我一直很小心地只在资源发挥作用的时候使用它们。
我选择了一些数学/理论性更强的问题(而不是在拟合问题下「将模型放大」)。
在某些情况下,你可以使用较小版本的模型进行试验,然后在充分调试后再花掉训练预算。
随着时间的发展,一些善良的人和组织捐赠了资源:
FloydHub:使用 GPU 在云计算机上运行机器学习实验的一种非常简单的方法。
Google TPU 研究云:TPU 现在是我最喜欢的大规模训练方式。编程模型将你的训练分为多个 batch,因此要使用更多的机器,需要增加 batch 大小。
我真的很感谢上面两个资源的支持,它使很多工作成为可能。
无钱招聘
我真的很喜欢创造有自己生命的东西。小时候,我写过多人游戏引擎,程序世界和 BEAM 机器人。作为一个成年人,我开始尝试创建公司。每天 SketchDeck 都会聚集许多伟大的人,他们会制作精美的作品,这给我带来了很多乐趣。
作为 Octavian.ai 项目的一部分,我想创建一个合作者社区。事实证明(毫不奇怪)很难说服人们在没有钱的情况下与你共事。他们有账单要付。
然而,一些人确实站起来并做出了贡献:
Andrew Jefferson,一位我终生的朋友,在从事日常工作的同时,他编写、评审、演讲、发表文章和幻灯片。
今年夏天加入的 Ashwath Kumar Salimath 帮助撰写了一系列文章,并发表了自己的文章。
谢谢你们俩!
此外,随着这一年的发展,许多人加入了我们的聊天室。一个对图形机器学习感兴趣的群体慢慢出现了。我们进行了很多有趣的讨论,我真的很高兴对这个话题感兴趣的人找到了彼此。
无钱营销
随着深度学习从学术界一个不起眼的角落成长为一个价值 10 亿美元的行业,我们看到了学术界和全球营销预算的奇妙交叉。一切看起来都很完美,许多会议和训练营应运而生。
我在 Octavian.ai 的营销上投入了 0 美元。这一年来,我发现我们接触读者的最佳方式是:
谷歌搜索带来了我们大部分的博客流量
我们的免费机器图形学习课程通过 HackerNews, Reddit 和 Twitter 进行了大量分享。
在会议和会议上交谈会带来流量和有价值的互动
在图形上进行机器学习是非常适合的。我最感兴趣的是在这个世界上找到真正重要的人,而不是试图扩大眼球或收到更多喜欢。
在没有主管和团队的情况下生存
今年年初,我真的低估了一件事,那就是与主管和团队合作。我有时开玩笑说,我这一年是「攻读博士学位的第一年,不同的是,没有导师,我自己在家里学习」。
作为一个创业者,我有着强烈的独狼心态。我一般不想等待外部因素,相反,我相信通过坚持不懈,我可以到达任何我想去的地方。
我很幸运有几个亲密的同事,一年来有一个不断壮大的社区来支持我的努力。然而,我的大部分工作是在相对孤立的环境中完成的
我现在认为我可以和主管一起进步得更快。这在一些方面会有所帮助:
向我提出好问题
指导我找到我不可能想到的好办法
压力/灵感,做得更好
作为一个团队的一员会帮助我:
交流和发展更多的想法
更快地测试想法
互相学习
尝试更多的事情
编写更全面的报告
独自工作(大部分)是孤独的。你需要在精神上能快速恢复,并且坚定地相信自己能到达目的地。
最后,从脆弱的角度来说,当你工作之外的生活陷入困境时,做这种工作是非常困难的。生活的曲折消耗了足够的能量,很难继续进行单独的研究。
发现好问题
这是我一年来发展的最大的技能。我现在相信这是研究的第一步,也是许多人成功的秘诀。
选择要解决的问题是一门艺术。这一年来,有那么多人来找我,要求我帮助他们挑选自己的研究问题,于是我写了一份建议清单。
在今年年初,挑选一个问题进行研究既令人困惑又令人担忧。现在我有了一个很长的列表,列出了我想要探索的领域,以及度量标准和实验的概念。
我认为这项技能需要时间来提高。这是直觉(根据过去的经验),什么问题适合研究,什么适合你的资源,以及什么解决方案可能会挖掘出一些成功。
以下是发展这种技能的一些建议:
在公共数据集/已知问题上参与比赛可以让你保持诚实——你有模型可以击败并能建立成功的标准。
尽管为新类型的问题创建自己的数据集也很有价值,但在这里,你更容易满足于你的解决方案是否真正新颖,并且很难让其他人对你的工作感兴趣。
阅读大量的论文,看看他们遇到了什么问题,他们如何试图解决这些问题,以及他们如何衡量成功。
与人交谈。
撰写研究建议并获得反馈。
寻找在现实世界有价值的问题——如果你解决了这些问题,自然会有更大的成果和更多的关注。
倾听你的好奇心:作为一个研究者,你的动机是一个有价值的催化剂。如果你觉得有些东西还没被充分发掘,去看看吧。
如果你们是两个不同领域的专家,看看这两个领域的交叉点。你可以得到一些别人没有的灵感。
参与整个研究项目的生命周期将使你获得其他方法无法获得的洞察力。将最初的想法与最终的结果进行比较。
写作是生命之源
你所有未沟通的想法都将被忽略。提高写作水平的最好方法就是写作。
在写作中(无论是想法还是结果),你不确定的想法都会暴露在你面前。
我的写作能力和研究思路在一年中通过写许多文章而得到了很大的发展。
技术题材常青
你不知道什么会引起读者的共鸣。
写作的另一个好处是它提供了参与度统计数据。查看哪些文章做得好,哪些文章做得不好,我对此无限着迷。其中有一些我也经常感到惊讶。
我早期写的文章之一「如何选择学习速率」,是目前 Octavian 上阅读量最高的文章(66K)。在写作的时候,我从来没有料到这一点。
没有博士学位
自从本科毕业以来,我一直在考虑是否要攻读博士学位。作为一名本科生,我花了一个夏天的时间和团队一起完成一篇论文,最后一学期我的硕士论文都是为这门课写的一篇研究论文。最终,我从未发现我想要的环境、团队和问题的结合。我在创业过程中发现的精力和活力对我更有吸引力。
我认为没有博士学位对我有一些不利之处:
博士学位让你有时间阅读大量论文和实践研究技能。
博士学位给了你一个有利于良好研究的导师和环境。
博士学位是一系列现在对我有吸引力的工作的预期切入点。
我仍然对攻读博士学位持开放态度。我表妹很了解这个职业,并准备攻读第二个博士学位,所以我很感激有很多途径可以了解这一点。
我会怎么做呢?
这一年过去后,我现在可以反思一下我可能可以做得更好的方式。
首先,我不后悔。我能给自己的最大礼物就是时间。有足够的时间和空间去关注我的好奇心,努力完成对我来说很重要的项目,这是非常特别的,我真的很幸运我能做到。
对我来说,今年开始是一次真正的冒险。目的地未知,我将边走边摸索未来的道路。
今年我有许多宽松的目标,其中一些已经实现:
向我自己证明我有能力进行学术研究。我想我做到了。这一年我学到了很多关于构建 ML 系统的技巧和研究的技巧。我对自己的研究方向也有了更好的了解。我看到自己仍在思考问题,掌握了基本技能。我能够完成所有的研究步骤,并有信心指导学生们。
创建一个机器学习驱动的企业。我在这个目标上失败了。我探索了很多想法,和很多人交谈,但没有找到答案。这在一定程度上是因为这个目标并没有集中在解决一个真正的问题上;我从来没有发现一个我非常想解决的问题。
提高我搭建机器学习系统的技能。我确实做到了。在每一篇已发表的文章(以及一堆未发表的文章)后面都有大量的代码、阅读文章和调试模型。我花了大量时间在训练和数据基础设施上。我的实现技能大大提高了,我对系统为什么不能工作以及如何处理它有很强的直觉。
制作一份学术级的研究报告。我没有达到这个目标。到今年年底,我已经建立了尝试这一点的技能和研究问题清单,我的最后一个大项目没有产生积极的结果。我没时间尝试更多的解决方案。不过,它确实教会了我很多关于扩大 TPU 训练的知识。我想花更多的时间来实现这个目标。
一位朋友在这一年给我的一条建议是,为了我的兴趣,寻找世界上最好的人,并向他们学习。我仍然不知道如何在没有博士学位的情况下完成这项工作,但这并不意味着这是不可能的。
我时常反省自己的中心目标是什么。一个持久的答案是「创造我引以为傲的东西」。我坚持自己的高标准,随着我的学习水平的提高而提高,因此我倾向于认为我所有的工作都不够好。感谢所有帮助我走上这条道路的人。
雷锋网雷锋网雷锋网
雷峰网版权文章,未经授权禁止转载。详情见转载须知。