加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

机器学习科研的十年

发布时间:2019-07-20 12:57:25 所属栏目:经验 来源:陈天奇
导读:副标题#e# 十年前,MSRA的夏天,刚开始尝试机器学习研究的我面对科研巨大的不确定性,感到最多的是困惑和迷茫。十年之后,即将跨出下一步的时候,未来依然是如此不确定,但是期待又更多了一些。这其中的变化也带着这十年经历的影子。 起始: 科研是什么 我

在第一年暑假结束的时候,因为偶然的原因,我开始对quantile sketch算法感兴趣。这里主要的问题是如何设计一个近似的可以合并的数据结构用来查找quantile。这个方向有一个经典的方案GK-sketch的论文,但是只能够解决数据点没有权重的情况。经过一两天的推导,我在一次去爬山的路上终于把结论推广到了有权重的情况。有趣的是新的证明比起原来的证明看起来简单很多。这个结论没有单独发表,但是后来意想不到地被用到了分布式XGBoost算法中,证明也收录在了XGboost文章的附录中。

研究并不是一朝一夕,做想做的事情把它做好,开始的时候兴趣使然,而在几年之后意想不到的地方获得的收获,这样的感觉走非常不错。

第二年和第三年: 选择做什么

在新生聚会上,Carlos对我说,你已经有论文的发表经历了,接下来要静下心来做发大的,“只做best paper水平的研究”。和很多nice的导师不同,Carlos对于学生的要求非常严格,说话也是非常直白甚至于“尖刻“。很多的老师不论我们提出什么样的想法,总会先肯定一番,而Carlos则会非常直接地提出质疑。一开始的时候会非常不习惯,感觉到信心受到了打击,但是慢慢习惯之后开始习惯这样风格。到现在看来,诚实的反馈的确是我收益最大的东西。我进入博士的一年之后,主要在想的问题是做什么样的问题,可以值得自己深入付出,做扎实有影响力的工作。

在博士的第三年,Carlos在建议我把XGBoost写成论文,用他的话说:“写一篇让读者可以学到东西的文章”。和传统的写法不同,我们在文章的每一个章节插入了实验结果验证当章节提出的观点。而他对于做图的处理也成为了我现在的习惯,直接在图里面插入箭头注释,减少读者的阅读负担。经过几次打磨论文终于成为了我们想要的模样。

博士前对于深度学习遗憾让我又逐渐把目光转回到深度学习。这个时候,我选择了不再一个人作战,在博士的第二年和第三年,我和兴趣使然的小伙伴们合作,一起开始了MXNet的项目。项目从零开始,在短短的一年时间里面做出完整的架构。我第一次看到集合了大家的力量齐心协力可以创造出什么样的东西。研究的乐趣不光是发表论文,更多还是可以给别人带来什么,或者更加大胆地说 -- 如何一起改变世界。

博士第二年暑假,我在小伙伴的介绍下进入Google Brain跟随Ian Goodfellow实习。当时GAN的论文刚刚发表,我也有幸在成为Ian的第一个实习生。实习的开始,我们讨论需要做的问题,Ian和我把可能要做的项目画在一个风险和回报的曲线上,让我选择。到最后我选择了自己提出的一个课题,在这个曲线里面风险最高,回报也最高。我一直有一个理想,希望可以构建一个终身学习的机器学习系统,并且解决其中可能出现的问题。这个理想过于模糊,但是我们想办法拿出其中的一个可能小的目标 -- 知识迁移。如果一个机器学习系统要终生学习,那么在不断收集数据之后必然需要扩充模型的规模来学习更广或者更深,按照现在的做法我们在模型改变之后只能抛弃原来的模型重新训练,这显然是不够高效的。是否有一个方法可以从已经训练好的网络上面进行知识迁移也就成为了一个重要的问题。我先花了一个半月的时间尝试了比较显然的Knowledge distillation的方法一直没有得到正面的结果。在最后的一个月,我改变了思路。实习结束的前一个星期,我打开Tensorborard上最近一组实验的结果:实验表明新的思路正面的效果。这最后几步的幸运也让我的这一个冒险之旅有了一个相对圆满的结果。这篇论文最后被发表在了ICLR上,也是我最喜欢的结果之一。

博士的第三年,我和小伙伴们开发了一种可以用低于线性复杂度就可以训练更深模型的内存优化算法。当时我非常兴奋地把这一结果写下来然后把稿子后给导师看。他和我说:Hmm,这个结果如果投到NeurIPS的话或许可以中一篇poster,但是这并不是特别有意思。在我沉默之后他又补充了一句:论文并非越多越好,相反你可能要尝试优化你的论文里面最低质量的那一篇。最后我们只是把这篇论文挂在了Arxiv上。Carlos的说法或许比较极端(这篇论文依然影响了不少后面的工作),但也的确是对的,用李沐之前说过的一句话概括,保证每一篇论文的质量接近单调提升,已经是一件难以做到但是又值得最求的事情。

选择做什么眼光和做出好结果的能力一样重要,眼界决定了工作影响力的上界,能力决定了到底是否到达那个上界。交大时敖平老师曾经和我说过,一个人做一件简单的事情和困难的事情其实是要花费一样多的时间。因为即使再简单的问题也有很多琐碎的地方。要想拿到一些东西,就必然意味着要放弃一些其他东西,既然如此,为什么不一直选择跳出舒适区,选一个最让自己兴奋的问题呢。

第四年之后: 坚持做什么

博士第三年,我和小伙伴们参加GTC,结束后老黄party的角落里,我一个人在发呆。深度学习的框架发展已经铺开,可接下来应该做什么,我一下子感到迷茫。第三年的暑假我没有去实习,而是决定一个人在学校尝试开发脑海中显现的抽象概念 -- 深度学习中间表示。暑假结束之后,我完成了第一个版本,可以比较灵活地支持深度学习系统里面的计算图内存优化。但是总是觉得还缺少着什么 -- 系统的瓶颈依然在更接近底层的算子实现上。暑假之后在去加州的飞机上,我尝试在纸上画出为了优化矩阵乘法可能的循环变换,回来之后,我们决定推动一个更加大胆的项目 -- 尝试用自动编译生成的方式优化机器学习的底层代码。

这个项目早在之前我也有一些想法,但是一直没有敢去吃这个螃蟹。原因是它的两个特点:从零开始,横跨多领域。因为要做底层代码生成和想要支持新的硬件,我们需要重新重新搞清楚很多在之前被现有的操作系统和驱动隐藏掉的问题,这就好象是在一个荒岛上一无所有重新搭建起一个城堡一样。而这里面也涉及了系统,程序语言,体系结构和机器学习等领域。这让我想起之前在ACM班时候重头搭建编译器和MIPS处理器并且连接起来的经历。也是那段经历让我觉得为了解决问题去吃多个领域的螃蟹是个让人兴奋的事情。那段经历给我留下的第二个印记是理解了合作和传承的重要性。这门课程设计有一个传统,每一门课程的老师都由上一届学长担任。每一届的同学都会在之前的基础上有所改进。我也曾经为这门课做过一些微小的贡献。演化到现在,这门课程已经从只做简单的答辩,到现在已经有在线评测的OJ。大家一起的合作塑造了这个课程。推动新的机器学习系统和塑造这门课程一行,需要各个团队的同学合作,足够时间的耐心关注和不断地改进。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读