我是金海峰,AutoKeras项目作者,Keras团队工程师,负责KerasTuner项目的开发和维护。没时间听故事的同学可以直接下拉到“干货部分”。项目介绍KerasTuner可以在Keras模型构建过程中定义一些超参数的取值范围,搜索它们的值,找到一个相对较好的值来构建一个好的模型。AutoKeras预先为几个常见的任务定义了一系列模型和超参数范围,用户不需要自己定义模型。只需输入训练数据即可完成建模和训练。背后的故事要从我博士二年级说起,当时我在找暑期实习,拿到了微软的offer。但是导师说有个项目想参加,暑假马上就要开始了,和实习有冲突。我决定放弃实习去做这个项目。这是一个关于自动化机器学习(AutoML)的项目,有数十家大学和公司参与,试图创建一个能够胜任所有机器学习任务的AutoML平台,以及友好的人机交互界面。这个项目让我进入了AutoML领域。在一次学术会议上,我突然想到,既然有传统机器学习模型的机器学习库(如:Auto-WEKA和Auto-Sklearn),为什么没有人为深度学习做出类似的产品?想到这里,我立刻冲出了会场,打开笔记本电脑,开始了我的研究。记得在《罗辑思维》第一期看罗振宇讲什么样的人适合创业。其中之一就是行动能力极强。也许一百个人可以同时想到一个主意,但只有动作最快的人才能把水果拿走。他说,有一次他和一个朋友吃饭,聊着自己的一个好主意,他的朋友边吃饭边安排人把相关域名都注册了。可见动作之强。我的行动也很紧急。经过研究,我决定将其命名为AutoKeras,因为Keras的易用性是公认的,我们要做一个傻瓜式的产品,名字可以让用户得到这些信息。没想到真的没有人做出这个软件。我立即注册了所有可以注册的平台,比如PyPI和GitHubrepo。我觉得我的想法太容易被人想到了。随时可能有队伍跳出来,抢我想好的名字,提前做出来。所以,接下来我做了两件事。一是寻找合作伙伴,加快开发进度。我接触了一圈我认识的好人后,只有一个北邮的同学愿意参加。于是,我们开始了开发。二是决定这个开源软件从第一天开始就开源,因为如果我们先开发再开源,很可能在开发过程中别人先做出来盗名。那天找到一篇陈天奇的论文Net2Net,觉得可以解决一部分问题。添加搜索算法以使用它。学术会议结束后,我回到学校,把这个想法告诉了导师,得到了导师的支持。这个开源软件已经开发了半年多,实验室的同学陆续参与开发。基本完成了,其中的方法创新也发表了论文。出乎意料的是,我们在没有任何宣传的情况下就收到了很多媒体报道。后来,它还与GoogleKeras团队合作,将其开发为自己的官方AutoML软件。博士毕业后,我加入了谷歌,继续维护和开发这个项目。干货对工作的影响对于开发者个人来说分为三种情况。1.大多数人只是将运行开源项目作为一种爱好。这可能与开发者的官方工作有冲突。2.对于少数比较成功的项目,开发者可以将开源项目作为全职工作。我在这个阶段。基本上可以全身心投入,但是又担心自己太专注于一个项目,很多通用技术都欠缺。3.最成功的开发人员将开源软件变成了每个人都需要学习的通用技术。这样一来,就完全没有后顾之忧了。例如:Linux和VUE.js。抓住先机非常重要。我觉得自己做的项目虽然有技术含量,但是远不是没有人能做到的难度。回过头来看,最关键的因素是抓住机遇。合作才是王道。在资源有限的情况下,唯有通力合作,合理分配信用和利益,才能将项目规模最大化。包括和同学、朋友以及大公司的合作。不要因为害怕别人夺走你的信用和利益而被套牢。特别感谢参与该项目的所有同学,特别是原论文的第二作者宋清泉。不要小看任何人或工作我学到了一个很重要的教训,就是不要随便小看人。如果有人有好的作品,即使作品看起来很简单,也不要轻易低估作者。一是因为作品的难度不等于作者的全部实力。可能作者的厨艺高深莫测,这部作品只是做鸡蛋炒饭而已。二是因为要让鸡蛋炒饭享誉世界,还需要世界一流的厨艺。运气是必不可少的。从起名,到接受举报,再到与大公司合作,任何一个环节都蕴藏着厚重的运气。运气稍微差一点,影响力可能会大大降低。上手难度决定了用户数量。如果你的技术或用户体验没有那么独特,那么用户是否选择你可能主要取决于你的东西是否好用。完整详细的教程可以轻松解决这个问题。良好的上层管理也是必要条件。我的导师胡侠老师在这个项目中起到了举足轻重的作用。看来是我占了先机,抢占了先机。其实早在我想到这个想法的两三年前,我的导师就想拿到这个前沿领域的研究经费,参与了这个多校合作的AutoML项目。这是从根本上抢占先机。所以这个开源项目离不开导师在大方向上的眼光。可能很多人认为我们的项目很多实验室都可以做,但实际上是有雄厚的科研经费支持的。当时导师把我所有的杂事都拿走了,让我专心做这个项目,才能够很好的完成这个项目。如果实验室没有足够的资金来支持足够的人力,这样的调度怎么可能实现。而且,了解并愿意让学生专注于一个项目以提高产出质量也很有价值。“百亩田不抓准时机,一家几口人能不饿。”——《寡人之于国也》农民勤劳勤劳,但如果上层总是拖延耕作时间,就不可能有好收成。
