入坑机器学习?送你一篇麻省博士的学习心得

640?wx_fmt=gif


[导读] 随着人工智能技术的火热,越来越多的年轻学者正准备投身其中,开启自己的研究之路。和所有其他学科一样,人工智能领域的新人总会遇到各种各样的难题,其中不仅有研究上的,也有生活方面的。MIT EECS 在读博士、前 Vicarious AI 员工 Tom Silver 近日的一篇文章或许对你有所帮助。


>>>> 


我的一个朋友最近正要开始人工智能的研究,他问及我在 AI 领域近两年的研究中有哪些经验教训。本文就将介绍这两年来我所学到的经验。其内容涵盖日常生活到 AI 领域中的一些小技巧,希望这可以给你带来一些启发。


开始


找到一个你感觉合适的人询问"傻问题"


最初,我非常害怕自己的同事,羞于向人提问,因为这可能会使我看起来非常缺乏基础知识。我花了好几个月才适应了环境,开始向同事提问,但一开始我的问题仍然非常谨慎。不过现在,我已有三四个关系较好的人了,我真希望当时能早点找到他们!我曾经淹没在谷歌搜索的条目中。现在,当我遇到一个问题后会直接询问他人,而不是自己想办法,最终陷入困惑。


在不同的地方寻找研究灵感


决定做哪些工作是研究过程中最困难的一部分。对此,研究人员已经存在一些一般性的策略:


1. 与不同领域的研究者交谈。问问他们对于哪些问题感兴趣,并试图用计算机专业的语言重述这些问题。询问他们是否有想要进行分析的数据集,哪些现有技术是解决问题的瓶颈。机器学习中很多最具影响力的工作都是计算机科学与生物/化学/物理学、社会科学或者纯数学之间的碰撞。例如 Matthew Johnson 等人在 NIPS 2016 的论文《Composing graphical models with neural networks for structured representations and fast inference》是受到一个小鼠行为数据集启发的结果;Justin Gilmer 等人在 ICML 2017 上的论文《Neural Message Passing for Quantum Chemistry》应用于量子化学。


2. 编写一个简单的基线来获得对问题的感受。例如,尝试编写一个有关控制倒立摆的详细校准代码(https://gym.openai.com/envs/Pendulum-v0/),或者试着看看能不能在自然语言数据集上推送一个词袋模型。我在编写基线时经常会遇到无法预料的情况——我的想法或代码里都有可能出现错误。在基线运行时,我通常会对问题有更深的理解,并产生出很多新的想法。


3. 扩展你喜欢的论文的实验部分。仔细阅读方法与结果,尝试找到问题的关键。首先尝试最简单的扩展,问问自己:论文中的方法是否适用,思考一下文中没有讨论的基线方法,以及它们可能会失败的原因。


投资可视化工具和技能


在编写研究代码时我采用的策略是从创建可视化脚本入手。在编写完其余代码后,我会运行可视化脚本,以快速验证代码是否与我的心智模型匹配。更重要的是,良好的可视化经常会使我想法或代码中的 bug 更加明显、明了。这里还有一些自我激励的话要说:当我完成这个代码时,我会做一份漂亮的数据或视频给大家看!


为手头的问题寻找合适的可视化方法可能非常棘手。如果要迭代优化模型(例如深度学习),从绘制损失函数曲线着手会比较好。此外还有许多用于可视化和解释神经网络(特别是卷积神经网络)学得权重的技术,例如导向反向传播。在强化学习和规划中,智能体在其环境中的行为是显而易见的,无论是雅达利游戏、机器人任务还是简单的 grid world(如 OpenAI Gym 中的环境)。根据设置,还可以可视化价值函数及其在训练过程中的变化(如下所示),或者可视化探索状态树。在处理图形模型过程中,当一维或二维变量在推断过程中发生变化时,对其分布进行可视化可以获得丰富的信息(如下所示)。估计每次可视化分析时必须在头脑中保存的信息量可以帮助检测可视化技术的有效性。如果可视化技术非常糟糕,你需要详尽地调用你编写的代码来生成它;反之,一个良好的可视化技术可以带来一个明显的结论。


640?wx_fmt=png

Tensorboard 是可视化 TensorFlow 深度学习模型的常用 GUI


640?wx_fmt=gif

随着数据的积累绘制分布图可以大大降低 debug 图形模型的难度(来自 Wikimedia)


640?wx_fmt=gif

用 Q-learning 学习的价值函数可以在它所表示的 grid world 上可视化(作者:Andy Zeng)


确定研究人员和论文的基本动机


在相同的会议上发表文章、使用相同的技术术语、自称研究领域是人工智能的研究人员可能有截然相反的研究动机。一些人甚至建议为这个领域取不同的名字,以澄清问题(就像 Michael Jordan 在最近一篇优秀的博客文章中提到的那样)。他们的动机至少可分为三类:"数学"、"工程"和"认知"。


  • "数学"动机:智能系统有何基本属性和局限性?

  • "工程"动机:如何开发能够更好地解决实际问题的智能系统?

  • "认知"动机:怎样才能模仿人类和其他动物的自然智能?


这些动机可以和谐共存,许多人工智能领域的有趣论文都是从多个角度出发。此外,单个研究人员的研究动机往往并不单一,这有助于实现人工智能领域的聚合。


然而,动机也可能并不一致。我有一些朋友和同事,他们有明显的"工程"倾向,还有一些主要对"生物学"感兴趣。一篇论文表明,现有技术的巧妙结合足以在基准上超越现有技术水平,这将激起工程师们的兴趣,但认知科学家可能对此不感兴趣,甚至嗤之以鼻。但如果一篇论文阐释了生物可解释性(biological plausibility)或认知联系,这篇论文收到的反响可能截然相反,即使其结论只是理论性的或结果非常不起眼。


优秀的论文和研究人员在一开始就会说明他们的动机,但根本动机往往藏地很深。我发现在动机不明显的情况下,对论文进行各个击破将会很有帮助。


从科研社区中汲取营养


找论文


AI 领域的论文可以在 arXiv 上找到和发布。现在的论文数量非常令人振奋。社区中的许多人降低了从噪声中分辨出信号的难度。Andrej Karpathy 开发了 arXiv sanity preserver,帮助分类、搜索和过滤特征。Miles Brundage 每晚都在推特上发布自己整理的 arXiv 论文列表。很多推特用户常常分享有趣的参考文章,我推荐大家在推特上关注自己喜欢的研究者。如果你喜欢用 Reddit,那么 r/MachineLearning(https://www.reddit.com/r/MachineLearning/)非常棒,不过文章更适合机器学习从业者而不是学界研究者。Jack Clark 发布每周社区 newsletter"Import AI (https://jack-clark.net/),Denny Britz 发布"The Wild Week in AI (https://www.getrevue.co/profile/wildml)"。


查看会议论文集也很值得。三大会议是 NIPS、ICML、ICLR。其他会议还包括 AAAI、IJCAI、UAI。每个分支学科也有自己的会议。计算机视觉方面有 CVPR、ECCV、ICCV;自然语言方面,有 ACL、EMNLP、NAACL;机器人方面,有 CoRL(学习)、ICAPS(规划,包括但不限于机器人)、ICRA、IROS、RSS;对于更理论性的研究,有 AISTATS、COLT、KDD。会议是目前论文发表的主要渠道,但是也有一些期刊。JAIR 和 JMLR 是该领域最厉害的两种期刊。偶尔一些论文也会出现在科学期刊上,如 Nature 和 Science。


寻找旧的论文同样重要,不过通常更难。那些"经典"论文通常出现在参考文献中,或者研究生课程的阅读书单。发现旧论文的另一种方式是从该领域的资深教授开始,寻找他们的早期作品,即他们的研究路径。同样也可以向这些教授发送邮件询问额外的参考(即使他们太忙没有回复也不要介意)。寻找不那么有名或被忽视的旧论文的一种持续方式是在 Google scholar 中搜索关键词。


应该花费多长时间阅读论文?


关于阅读论文应该用的时间我听到过两种常见建议。


  • 第一,刚开始的时候,阅读所有论文!人们通常说研究生的第一学期或第一年应该只阅读论文。

  • 第二,在最初的上升期之后,不要花费太多时间阅读论文!原因在于如果研究者不被之前的方法左右,更有可能创造性地提出和解决问题。


我个人同意第一条建议,不同意第二条。我认为一个人应该尽可能多地阅读论文。"如果我不熟悉别人尝试过的方法,那我就能更好地想出新颖的更好方法。"——这种想法似乎不太可能,且傲慢。是的,新视角可能是一把钥匙,业余者解决长期挑战是因为他们超出常规的想法。但是职业研究者不能完全依赖运气来探索未被考虑过的解决方案。我们的大部分时间都用来缓慢且有方法地逐步解决问题。阅读相关论文是找出我们所处位置和下一步尝试方向的更高效方式。


关于尽可能多地阅读论文,有一个重要的注意事项:消化论文内容和阅读论文一样重要。用一天时间学习几篇论文、认真做笔记、认真思考每一篇的内容和思路,比不断阅读论文要好一些。尽可能多地阅读论文。


对话 >> 视频 > 论文 > 会议演讲


论文绝对是了解陌生研究思路的最易获取的资源。但是最高效的路径是什么呢?不同人的答案或许也不同。我认为,对话(和已经理解该思路的人对话)是目前最快、最有效的路径。如果这种方法不可行,那么相关视频也会提供很好的见解,比如论文作者受邀进行演讲。当演讲者面对的是现场观众时,他们可能更偏重清晰性而不是准确度。而在论文写作中,这种偏重是相反的,字数统计是关键,背景解释可能被当作作者不熟悉该领域的证据。最后,简短的会议演讲通常更正式,而不是合适的教育机会。当然,演讲结束后与演讲者进行对话交流是非常有价值的。


小心炒作


成功的人工智能研究总会引起公众的关注,让更多的人进入这一领域,从而引出更多成功的 AI 研究。这一正循环在大部分情况下都是适用的,但其也有一个副作用就是炒作效应。新闻编辑总是希望获得更多点击率,科技公司则希望获得投资者的青睐,并多多招募新人,而研究者们往往会追求高引用量和更高质量的发表。在看到一篇文章或论文的标题时,请务必注意这些问题。


在 NIPS 2017 的一个论文讨论活动中,数百名听众目睹了一位有名望的教授拿着麦克风("我谨代表炒作警察")劝告作者不要把单词"imagination"用在论文标题中。我对于这种公众对抗总是有着复杂的感受,而且我还恰好喜欢这篇论文。但这并不意味着我无法理解这位教授的挫败感。人工智能研究中最常见,最令人厌恶的宣传表现之一,就是用新术语重新命名旧概念。所以,小心那些流行语——主要根据实验及其结果来判断一篇论文。


开始科研马拉松


树立可衡量的进展目标


之前搜寻研究项目时,我花费了大量时间进行头脑风暴。那时对我来说,头脑风暴就是把脑袋搁在桌子上,希望一些模糊的直觉可以变成具体的见解。结束了一天的"头脑风暴",我常常感觉疲惫、灰心丧气。这是科研吗?我很疑惑。


当然,没有导向科研进展的良方,在黑暗中瞎撞是(大部分)进展的一部分。但是,现在我发现树立一个可衡量的目标,然后计划工作,更加容易且易于实现。如果我不知道接下来要做什么,那么目标可以是:写下一个模糊的想法,但要尽可能详细;如果在写的过程中,觉得这个想法不好,那就写出排除该想法的理由(而不是完全废除这个想法,这样就失去了对进展的衡量)。在没有任何想法的时候,我们可以用读论文或与同事交流的方式取得进展。一天结束时,我的工作有了一些实实在在的东西。即使这些想法永远不会用到,但是我的斗志得到提升,也不再担心以后会在相同的想法上浪费时间。


学会判断死胡同,并退回来


强大的研究者花费更多时间在好的想法上,因为他们在糟糕想法上所用的时间较少。能够识别好想法和坏想法似乎很大程度上是经验问题。然而,任何水平的研究者都会经常遇到下面的决策问题。我的研究思路有缺陷或无法产生结论,我应该尝试 A)继续挽救或支持这个思路,还是 B)完全抛弃这个思路呢?我个人非常后悔在本应该做 B)时却把时间浪费在 A)上。尤其是之前,我曾多次陷在死胡同中,而且时间很长。我之所以不愿意离开很大程度上是由于沉没成本误区:如果我退出这个"死胡同",那我已经花费的时间不就白白浪费了吗?


现在当我离开研究死胡同时还是会感到一些失望。不过我现在尝试使自己意识到后退也是一种进步。成本花费得值,不算沉没。如果我今天没有探索死胡同,那我可能明天还会遇到。死胡同并不是终点,它们是科研生活的一部分。希望我能坚持这种想法,如果不能,还有费曼的名言呢:我们尝试尽快证明自己是错误的,只有这样我们才能进步。(We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.)


写!


我曾经偶然咨询过一位杰出的 AI 研究者早期职业生涯忠告。他的建议非常简单:写!写博客和论文,以及更重要的,写下一天当中自己的想法。我开始注意到积极地写下想法与只是想想带来的明显差别。


身心健康是科研的先决条件


有一种错误的观点认为科研工作者都是废寝忘食,一心追寻科学发现。我之前以此为基准,常常为无法做到而感到内疚。现在我知道锻炼和精神放松是投资,而不是干扰。如果我每天睡 8 小时,工作 4 小时,我的效率比睡 4 小时、工作 8 小时要高得多,也就是说没有造成不好的影响。


在解决一个困难的问题时中途停止是非常困难的。我仍然会一直研究一个问题,即使已经非常累了,即使没有进展也不休息。当停下来深呼吸时,我会非常高兴。我希望在科研生涯的下一个阶段能够继续内化这件事。


来源:机器之心

原文链接:

http://web.mit.edu/tslvr/www/lessons_two_years.html

文章版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。

640?wx_fmt=png

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 读写Ini文件

ini文件在Win95以前比较盛行,之后由于出册表等技术的出现,ini技术主键退居二线,不过对于一些小项目,读写ini文件还是很适用的。Windows API提供了读写配置文件的操作,在C#程序中只要导入相应的API即可。例如GetPrivate…

更改windows2003远程最大连接数

windows 2003中的远程桌面功能非常方便,但是初始设置只允许2个用户同时登陆。有些时候因为我在公司连接登陆后断开,同事在家里用其他用户登陆后断开,当我再进行连接的时候,总是报错终端服务超过最大连接数。这时候我和同事都不能登…

mysql sp who_对ASE系统存储过程的剖析-sp_who

昨晚有空,把 sybase 系统过程 sp_who , DDL 后分析了一下,全文如下:-- 以下是 DDL 出来的内容:------------------------------------------------------------------------------- DDL for Stored procedure sybsyste…

区块链、自动驾驶、人工智能鏖战开始 谁将成为下一个风口?

近年来,区块链、自动驾驶以及人工智能的概念频繁爆红于科技界。有业者称,区块链的颠覆在于人们找到了一个低成本解决信任问题的方案;自动驾驶的出现方便了人们的交通出行;人工智能则为我们打开了新的世界。不论是区块链、自动驾驶…

JWT 介绍 - Step by Step

翻译自 Mohamad Lawand 2021年3月11日的文章 《Intro to JWT - Step by Step》 [1]在本文中,我将向您介绍 JWT[2]。我们今天要讲的内容包含:JWT 是什么我们应该在什么时候使用它JWT 与 Session Id 比较JWT 结构JWT 签名JWT 是什么JWT (JSON Web Token) 是…

Helpdesk 流程

最近Fox的公司部署了新的Helpdesk系统。为了让用户从原来打电话和发邮件寻求IT员工帮助的方式转变为使用Helpdesk系统提交tickets,需要制定和规范Helpdesk流程,小小推动下ITIL进程。 HelpDesk系统与AD集成。公司用户可以使用域用户名和密码登陆Helpdesk系…

vscode 快速调到定义处_vim技巧:在程序代码中快速跳转,在文件内跳转到变量定义处...

本篇文章介绍 vim 的一些使用技巧:在程序代码中快速跳转在文件内跳转到变量定义处在程序代码中快速跳转在 vim 中查看代码文件时,可以使用下面命令在程序代码中快速跳转,提高效率。%跳转到光标所在括号的另一个配对括号上,适用于小…

震撼!英伟达用深度学习做图像修复,毫无ps痕迹

在计算机视觉研究领域,NVIDIA常常让人眼前一亮。比如“用Progressive Growing的方式训练 GAN,生成超逼真高清图像”,“用条件 GAN 进行 2048x1024 分辨率的图像合成和处理”的pix2pixHD项目,或者脑洞大开的让晴天下大雨、小猫变狮…

程序员过关斩将--重复的请求并不好过滤

为什么要做重复请求的过滤呢?不过滤不行吗?过滤重复请求很难吗?加一个请求ID不就好了吗?每个技术难点的话题,肯定是由一个产品需求引发的,俗话说:如果没有产品经理,程序员将不需要听…

.NET团队送给.NET开发人员的云原生学习资源

企业正在迅速采用云的功能来满足用户需求,提高应用程序的可伸缩性和可用性。要完全拥抱云并优化节约成本,就需要在设计应用程序时考虑到云的环境,也就是要用云原生的应用开发方法。这意味着不仅要更改应用程序的构建方式,还要更改…

深夜,学妹说她想做Python数据分析师

大家好,我是大鹏,目前是一名数据分析师。上周末晚上,我的学妹突然约我出来喝咖啡。想起学妹在学校就一直说想转行,最近在网上捣鼓自学数据分析软件有一小段时间了。我想她不是为了叙旧。果然来到咖啡店,她一屁股坐下来…

在真实工作中的编程是怎么样的,与学校里有什么不同?

学校里每门编程语言课程都是上一点上不完的,实验课写的代码最长一两百行。 而在真实的工作环境中,程序员写代码是怎么样的?每天要啪啪啪手敲成千上万行代码嘛?和在学校学习时写代码有什么异同呢?/*说说我的经验*/刚进公…

聊一聊Docker与时区

前言 当我们把应用部署到容器里面之后,基本都会要和时间/时区打交道!!大部分的应用,多多少少都会有获取当前时间的操作,试想一下应用拿到的时间不对,那么业务极有可能会乱套,造成严重的损失。时…

百度竟然不是中国的

2019独角兽企业重金招聘Python工程师标准>>> 身份之谜—百度是中国公司吗? 虽然,Baidu在美国上市使用了“中国的Google”这么一个概念,说真的,我知道的Baidu和Google最大的共同点也许就是他们都是美资公司。Baidu公司…

tortoisegit图标消失_安装TortoiseGit 状态图标不能正常显示

如果你安装 TortoiseSVN 之后,功能使用正常,但是文件夹或文件左上角就是不显示图标,那么你可能1. 64bit 系统上装了 32bit 的 TortoiseSVN解决方法是,再安装 64bit 的 TortoiseSVN,两者可并行运行2. Windows Explorer …

好用的验证框架FluentValidation(上)

把数据错误扼杀在早期,那就是在数据的入口处,一般数据都是打包成一个实体的方式进传递,FluentValidation就以实体类为单位进行属性验证的集合。Install-Package FluentValidation下面看一个例子吧。实体类:public class Person {p…

10G 职场晋升/IT干货/生活技能/理财秘籍 【全套】学习资料免费送!

你的同龄人正在抛弃你,大学毕业后五年,你就会发现,同龄人之间的差距已经是云泥之别。当年一起追剧,一起逃课,一起吹牛的同学,有人已经年薪百万,有人还在抢两块钱的红包。有人去过许多国家&#…

iNeuOS工业互联平台,发布消息管理、子用户权限管理、元件移动事件、联动控制、油表饼状图和建筑类设备驱动,v3.4版本...

目 录1. 概述... 22. 平台演示... 23. 消息管理... 24. 子用户权限管理... 35. 元件移动事件... 36. 联动控制... 47. 增加油表和饼图... 58. 增加住建部DL/T645和智能液位计协议驱动1. 概述发布iNeuOS 3.4版本,主…

程序猿看段子,越看越心碎!

程序员整天面对代码,压力一定很大吧~小编表示应该时不时也给你们来点段子,增加一下生活的乐趣,让你们看到希望的曙光...今天整理的10个段子,你们绝对喜欢。看看就知道啦!【一直有人问我,程序员应该看什么书…

mysql写入监控_zabbix 自定义key 监控mysql增删查改

vim /etc/zabbix/zabbix_agentd.d/mysql.conf##zabbix_agentd.d在这个文件夹下的.conf,都会被agent读取,我们这里新建的一个配置文件方便使用,这样就不需要去动主配置文件了UserParameterecho[*],echo "$1"#要传递参数要带[*],且ke…