当前位置: 首页 > 编程日记 > 正文

从事了两年 AI 研究,我学到了什么?

afd6822d91cb788f70274373bcafba97.gif

作者 | Tom Silver

译者 | 弯月

出品 | CSDN

我从事人工智能研究的工作已经有两年了,有朋友问我都学到了什么,所以我想借本文分享一些迄今为止积累的经验教训。我将在本文中分享一些常见的经历,还会讨论相对具体的人工智能行业技巧。希望对大家能有一定的帮助。

303aaa884bb47f8c35914ecc76907164.png

大胆向同事请教

起初,我有点畏惧周围的同事,害怕一些过于基本的问题可能会暴露自己缺乏专业知识。几个月后,我与同事们相处得越来越融洽,但提问的时候我仍然会小心翼翼。现在我有几个可以敞开心扉的好朋友了。

多么希望我能早点与他们成为好朋友!这样就不必下班后拼命上网搜索资料了。现在每当遇到困惑,我会立即提出来,并在进一步发酵之前解决掉。


f0b9c1d203f3e45ae6a75e821bb2cf1b.png

通过各种途径寻找研究灵感

决定研究课题是我的工作中最困难的部分。下面是研究人员经常采用的一般策略:

1、与不同领域的研究人员交谈。询问他们对什么问题感到兴奋,并尝试用计算机术语重新表述问题。问一问他们是否有想要分析的数据集,但目前已有的技术不足以完成这些分析。在机器学习中,许多颇有影响力的研究都源于与生物、化学、物理、社会科学或纯数学的碰撞。

例如,Matthew Johnson 等人发表的论文《Composing graphicalmodels with neural networks for structured representations and fast inference》就源自一个老鼠行为的数据集,而Justin Gilmer 等人发表的论文《Neural Message Passingfor Quantum Chemistry》则源于量子化学的应用。

2、针对问题编写一个简单的基准方案。例如,尝试编写一些经过仔细校准的代码来控制倒立摆,或者尝试将词袋模型应用到自然语言数据集上。在编写基准方案时,我经常遇到意想不到的情况,有时是我的预期有问题,有时则是代码的问题。在找到合适的基准后,通常我会产生一些其他想法,并更深入地理解问题。

3、扩展论文的实验部分。仔细阅读方法和结果。尝试找到实验的办法。首先考虑简单的扩展,然后思考论文的方法是否充分。想一想还有哪些基准方法没有讨论,并想象这些方法可能不足的地方。


64ed4874175826f78ad8202fb8fdd477.png

在视化工具和技巧方面的投入

我采用的编写研究代码的策略是从创建可视化脚本开始。编写完其余代码后,运行可视化脚本就可以快速验证代码是否符合我的预期。更重要的是,良好的可视化可以让我快速发现思路或代码中的错误,而且也更方便解释。在完成代码后,我就可以向其他人展示图形或视频,这样可以让我很有成就感。

针对当前问题提出正确的可视化可能很困难。如果你正在迭代优化模型(例如深度学习),绘制损失曲线将是一个不错的起点。还有许多技术可用于可视化和解释神经网络的学习权重(尤其是卷积神经网络),例如导向反向传播。在强化学习和规划中,最应该可视化的是智能体在其环境中的行为,无论是雅达利游戏、机器人任务,还是简单的网格世界(例如 OpenAI Gym 中的环境)。

根据设置,还可以可视化值函数及其在训练过程中的变化或探索状态树。在处理图形模型时,应该可视化一维或二维变量的分布,因为它随着推理而发生的变化中的信息非常有价值。对于评估可视化,有效性的一种方法是,估计一下在每次分析可视化时头脑中需要记住的信息量。不恰当的可视化需要你经常回忆代码中的细节,而良好的可视化能够让结论一目了然。


56468d13ad1b0634a8030eadf5119776.png

认清研究人员和论文的基本动机

尽管所有研究人员都会在同一个会议上发表论文,使用相同的技术术语,并称自己的领域为人工智能,但这些研究背后的动机各有千秋。有些人甚至为了澄清问题为该领域取不同的名字。我们的研究动机主要来自三个方向:“数学”、“工程”和“认知”。

  • “数学”:智能系统的基本属性和限制是什么?

  • “工程”:如何开发智能系统,并用它更好地解决实际问题?

  • “认知”:如何模拟人类和其他动物的自然智能?

这些动机可以互相融合,许多 AI 论文都可以从多个角度来解读。此外,推动个体研究人员的动机通常都不止一种,这有助于将 AI 领域联系在一起。

然而,每个人的动机也可能不一样。我的一些朋友和同事侧重于“工程”,而有些人则对“生物学”感兴趣。比如一篇论文论证了现有技术的一些巧妙组合可以轻松通过最新的基准测试,工程师们就会对其非常感兴趣,但认知科学家可能会不屑一顾。而有些论文仅陈述了理论或实验结果,但符合生物学的要求或关系到认知,则会受到完全相反的待遇。

优秀的论文和研究人员会在开篇说明他们的动机,但通常根本的推动力会被掩盖。我发现,如果动机不明显,则可以只通过一个角度考虑一篇论文。


e11dbe2118581e95b732a70d5a908ecf.png

不要被研究社区大量的信息淹没


寻找论文

AI相关的论文很容易获得,大部分都在 arXiv 上发表。如今相关论文的发表数量之多令人目不暇接。社区中的许多人都在设法整理和分类这些论文。Andrej Karpathy 建立的网站 arXiv sanity preserver提供了一些有用的排序、搜索和过滤功能。Miles Brundage 每天晚上都会在推特上分享一份精心挑选的arXiv 论文清单,Brundage Bot 也曾提供过类似的服务。此外,推特上也经常有人分享一些有趣的参考资料,我建议 AI 研究人员应该关注推特上你喜欢的研究人员。如果你喜欢上 Reddit,那么可以参考一下这个版面  r/MachineLearning,但通常这些帖子更适合机器学习的实践人员,而不是研究人员。Jack Clark 发布了一个名叫“Import AI”的周刊,Denny Britz 也发布了一份名为“The Wild Week in AI”的时事通讯。

一些会议出版的论文集也值得一读。其中著名的三大会议是 NIPS、ICML 和 ICLR。还有一些面向普通观众的会议包括 AAAI、IJCAI 和 UAI。每个子学科也有各自的会议。例如计算机视觉有CVPR、ECCV、ICCV;而自然语言有ACL、EMNLP 和 NAACL;机器人则有 CoRL(学习)、ICAPS(计划,包括但不限于机器人)、ICRA、IROS、RSS;更多理论工作有 AISTATS、COLT 和 KDD。迄今为止,各种会议是相关论文的主要发表渠道,但也有一些期刊。有时,一些高调的论文也会发表在《自然》和《科学》等常见科学期刊上。

旧论文通常更难寻找,但它们也同样重要。有些经典读物会经常出现在研究生课程的参考阅读列表中。发现旧论文的另一种方法是找到该领域的资深教授,看一看他们早期的成名作。当然,你也可以给这些教授发电子邮件,拜托他们提供一些参考资料(但如果他们太忙,无法回复你,也不要生气)。如果你想搜索鲜为人知或被忽视的旧论文,有一种很好的方法是在 Google 学术中搜索关键字。

应该花多少时间阅读论文?

关于一个人应该花多少时间阅读论文,有两种常见的看法。第一种看法是,阅读大量论文,阅读所有论文!人们常说,研究生第一个学期甚至是第一年的学习只有阅读论文。第二种看法是,在后期进入研究工作以后,不要花太多时间阅读论文!意思是说,如果一个人没有受到别人的方法的影响,就更容易创造性地提出和解决问题。

就我个人而言,我同意第一条,但不同意第二条。我认为应该尽可能地阅读大量论文,只要还有时间进行原创研究就没问题。如果我不太清楚其他人尝试过哪些方法,也不知道哪些方法很好,而哪些行不通,那么为了提出新颖、卓越的方法,我就需要阅读大量的论文武装自己。当然,从全新的视角审视问题也非常关键,业余爱好者跳出固有思维而解决长期挑战的故事确实很鼓舞人心,但是,职业研究人员不能靠这样的运气来解决问题。绝大多数时候,我们需要有耐心,慢慢地、有条不紊地解决问题。此外,为了弄清楚我们目前处于何处,以及接下来应该尝试什么,阅读相关论文是一种更有效的方式。

关于阅读论文,还有一点需要注意:你需要花时间慢慢消化论文。拿几张纸,认真做笔记,然后认真思考,好过囫囵吞枣似的一篇接一篇地阅读论文。

交谈 >> 视频 > 论文> 会议演讲

在理解某个陌生的研究思想时,论文是最容易获得的信息来源。但是究竟哪种渠道最有效?对于这个问题,不同的人可能有不同的看法。对于我来说,我认为交谈(与熟练掌握相关思想的人)是最快、最有效的途径。如果你找不到这样的人,则该主题的视频可以提供很好的见解,比如论文作者发表的演讲。当演讲者向现场观众讲话时,他们会比较注重清晰易懂。而在写论文时,作者比较注重简练,因为他们需要考虑篇幅,而且过多的背景介绍甚至会被认为作者对该领域的了解不够深入。最后,简短的会议演讲大多比较正式,并不是太好的学习机会。当然,能与作者的交谈则十分珍贵。

小心炒作

成功的 AI 研究会引起公众的关注,从而将更多的人带入该领域,从而让 AI 的研究更成功。这种循环大多是良性的,但一个有害的副作用是炒作。记者为了获得点击次数、公司为了争夺投资者和新员工、研究人员为了提高论文的知名度,这些都是扩大炒作泡沫的罪魁祸首。在评估标题、新闻稿或论文时,请注意这些人的动机。

在 NIPS 2017 上,一篇论文的问答环节在一间数百名观众的房间里进行,一位著名的教授拿着麦克风告诫作者在论文的题目中使用了“想象”这个词。对于这种公开对抗,我的感觉很复杂,因为那碰巧是一篇我非常喜欢的论文,但我也非常理解教授的心情。在人工智能研究中,最常见和最严重的炒作之一就是给一些旧思想冠上华丽的新术语。因此,我们应该小心这些流行语,并根据实验和结果来判断一篇论文。


9710c8b2d26ab6cffbc0fd826fa0e806.png

研究马拉松


可衡量的进步

在早期寻找研究项目时,我花了很多时间进行头脑风暴。在当时,所谓的头脑风暴其实就是在办公桌前冥思苦想,希望一些模糊的思路能够凝聚成具体的观点。结束一天的头脑风暴后,我经常感到疲倦和气馁。心中直犯嘀咕,这是研究吗?

当然,研究的推进没有秘诀,很大一部分就是在黑暗中摸索。然而,现在我发现围绕某个可衡量的目标来组织我的工作要容易得多,也更有成就感。如果我对下一步要做什么一无所知,那么目标可以是:尽可能详细地写下一个模糊的想法;如果在写这个想法的过程中,我选择放弃,那么就写下放弃的原因。如果没有任何想法,那么就可以阅读论文或与同事交谈。每天结束之际,我都会整理当天的工作。即使有些想法最终未能成行,也可以大大提高我的斗志,而且不必担心将来在同一个想法上浪费时间。

学会辨认死胡同并及时回头

优秀的研究人员会将时间花在靠谱的想法上。能否区分想法的好坏在很大程度上取决于经验。尽管如此,任何级别的研究人员都会不断遇到以下情况:我的研究想法有缺陷或不确定,那么我应该 A) 尝试进一步挽救或支持该想法;还是 B) 完全放弃思考该想法是否合理。我个人认为,我们应该快刀斩乱麻(即采用 B),而不应该花过多时间纠结(即采用 A)。尤其是在从事研究的早期,我曾多次陷入“死胡同”,而且还纠结了很久。我不愿意放手的原因可能是因为一旦放手,之前的付出就白费了,但实际上及时回头才能防止浪费更多时间。

每当某个研究进入“死胡同”,决定放弃时,我都会感到很失落。现在遇到这种情况,我会告诉自己及时回头是为了今后更好地向前。而且这些付出也不会白费,正是有了这些付出,今后我就不会在同一个问题上浪费时间了。“死胡同”不是什么坏事,也是研究的一部分。

坚持写作

一位非常杰出的人工智能研究人员曾给职业生涯早期的我一个建议:坚持写作!无论是写博客文章还是论文,重要的是坚持记录每一天都想法。在听取了他的建议之后,我注意到当我积极写作和思考时,每天取得的进步就会非常明显。

身心健康是研究必不可少的条件

学术研究人员在痴迷于某项科学发现时,往往会废寝忘食,这其实很危险。我也曾有这样的经历,现在我明白锻炼身体和精神上的休息是投资。如果我花 8 小时睡觉和 4 小时工作,那么比花4 小时睡觉和 8 小时工作的效率要高得多,更不用说其他的一些潜在影响了。

在遇到棘手的问题时,我们很难中途停下来。如今的我有时已经精疲力竭了,还是不愿停下来休息,其实这样并不好,身心俱疲的情况下很难有实质性的进展。我们应该休息一下,深呼吸。我希望在进入研究生涯的下一阶段时,继续努力保持身心健康。

参考链接:

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

8007f5fa3d01e44cf4437f94d078e16d.gif

资讯

留不住客户?从你的系统找原因

资讯

Nginx宣布在俄罗斯禁止贡献

技术

学会用Opencv做贪吃蛇游戏

技术

一行Python代码能干嘛?来看!

ee8181918d9fef807e23c3834d7b3c80.png

分享

e9cf634433b41f8d95db5ce705f5b5b4.png

点收藏

3bb788b95daeeeca1d591fa1dbd8336c.png

点点赞

ee4d254e62f5f392b3e8a80fa638a8f6.png

点在看

相关文章:

Windows server 2008普通用户不能远程登录问题

1、查登录权限 如果文件服务器没有为用户授权,那么用户自然就不能远程登录服务器系统了,为此笔者决定先仔细检查一下文件服务器系统是否为自己使用的登录账号,授予了远程登录权限。在进行这种检查时,笔者先是在文件服务器本地以系…

面向小白的最全 Python 可视化教程,超全的!

作者 | 俊欣来源丨关于数据分析与可视化今天小编总结归纳了若干个常用的可视化图表,并且通过调用plotly、matplotlib、altair、bokeh和seaborn等模块来分别绘制这些常用的可视化图表,最后无论是绘制可视化的代码,还是会指出来的结果都会通过调…

Atitit.文件搜索工具 attilax 总结

Atitit.文件搜索工具 attilax 总结 1. 指定目录按照体积大小精确搜索1 1.1. File Seeker 4.5 版本的可以,3.5版本的不行。。1 2. 按照文件内容搜索1 2.1. File Seeker2 2.2. Notepad2 2.3. FileLocator Pro 是一款专业的文件搜索软件,2 2.4. 百度硬盘搜索…

ulimit -SHn 65535 含义

linux下用ulimit设置连接数最大值,默认是1024.在高负载下要设置为更高,但最高只能为65535. ulimit只能做临时修改,重启后失效。可以加入ulimit -SHn 65535到 /etc/rc.local 每次启动启用。终极解除 Linux 系统的最大进程数和最大文件打开数限…

5.7-基于Binlog+Position的复制搭建

基本环境 MasterSlaveMySQL版本MySQL-5.7.16-X86_64MySQL-5.7.16-X86_64IP192.168.56.156192.168.56.157Port33063306数据库环境的部署:两边安装好相同的数据库软件,初始化,可以启动起来。检查事项:两边防火墙是否开启&#xff0c…

PHP消息队列httpsqs安装与使用无错版

项目网址:http://code.google.com/p/httpsqs/使用文档:http://blog.s135.com/httpsqs/ 说明:由于需要安装的东西有些多,原文可能写的有些简略,所以适当补充了1.安装libevent-2.0.12-stable.tar.gzwget http://httpsqs.…

Windows Server 2012 系统群集

Windows Server 2012 系统群集本次将测试Windows Server 2012 系统群集功能。实验环境:4台服务器都为Windows Server 2012 DataCenter操作系统SRV2012服务器安装iSCSI目标服务器角色并配置2块虚拟磁盘给两台群集服务器共享使用。群集服务器安装群集功能,…

Python 中最强大的错误重试库

作者 | 费弗里来源丨Python大数据分析1 简介我们在编写程序尤其是与网络请求相关的程序,如调用web接口、运行网络爬虫等任务时,经常会遇到一些偶然发生的请求失败的状况,这种时候如果我们仅仅简单的捕捉错误然后跳过对应任务,肯定…

Spring Cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名密码实现OAuth2.0的登录认证): 上面的图…

php的POSIX 函数以及进程测试

参考&#xff1a;http://cn.php.net/manual/zh/ref.posix.php <?phpecho posix_getpid(); //8805sleep(10);?>再用 #ps -ax这个时候如果多开开个浏览器请求&#xff0c;就会发现Apache自动增加了几个新的进程我们发现并非一直请求同一个进程重启apache # /usr/local/ap…

CAS (10) —— JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法...

CAS (10) —— JBoss EAP 6.4下部署CAS时出现错误exception.messageError decoding flow execution的解决办法 jboss版本: jboss-eap-6.4-CVE-2015-7501 jdk版本: 1.7.0_79 cas版本: cas 4.1.3 参考来源: Nabble: exception.messageErrordecodingflowexecution Nabble: Caused …

昇思MindSpore1.6发布 AI开发者体验再升级

智能时代&#xff0c;AI技术正在发挥至关重要的作用&#xff0c;而开源的深度学习框架不仅能够降低AI开发者的门槛&#xff0c;而且能够极大节省成本与时间&#xff0c;成为创新的重要推手。2022年3月26-27日&#xff0c;昇思MindSpore TechDay活动线上成功举办&#xff0c;包含…

深入解析:TRUNCATE TABLE 的内部原理解析与恢复思路

摘要 众所周知&#xff0c;truncate table 是一种快速清空表内数据的一种方式&#xff0c;与 delete 方式不同&#xff0c;truncate 只产生非常少的 redo 和 undo&#xff0c;就实现了清空表数据并降低表 HWM 的功能。本文主要围绕 truncate table 的实现原理和 truncate table…

Linux exec与重定向

exec和source都属于bash内部命令&#xff08;builtins commands&#xff09;&#xff0c;在bash下输入man exec或man source可以查看所有的内部命令信息。 bash shell的命令分为两类&#xff1a;外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的&#xff0c;如se…

俄罗斯 Android 系统受限,或将转用 HarmonyOS!

整理 | 郑丽媛出品 | CSDN近一个月来&#xff0c;受当前局势影响&#xff0c;部分底层工具、基础软件、开源项目已相继宣布在俄罗斯停服&#xff0c;期间不少人因此担忧&#xff1a;同出自美国且占据极大智能手机市场的 Android 和 iOS 是否会趁机“作乱”&#xff1f;结果&…

Ios应用网络安全之https

戴维营教育原创文章&#xff0c;转载请注明出处。我们的梦想是做最好的iOS开发培训&#xff01;iOS应用网络安全之HTTPS1. HTTPS/SSL的基本原理安全套接字层 (Secure Socket Layer, SSL) 是用来实现互联网安全通信的最普遍的标准。Web 应用程序使用 HTTPS&#xff08;基于 SSL …

云原生应用的10大关键属性

2019独角兽企业重金招聘Python工程师标准>>> “云原生”是用于描述基于容器的环境的术语&#xff0c;而Kubernetes是一个运行云原生应用程序工作负载的理想平台。 开发人员在设计云原生应用程序时&#xff0c;一定要牢记本文内这10个关键属性&#xff01; “云原生&…

grep 正则表达式及选项以及注意

说明&#xff1a;在原文基础上稍作了修改grep命令简介&#xff1a; 在ex编辑器&#xff08;我没用过&#xff09;中&#xff0c;启动ex编辑器后要查找某个字符串时&#xff0c;在ex的命令提示符后键入::/pattern/p:/g/pattern/pgrep这个名字就由来如此。其中p的含义是print&…

iOS_25彩票_幸运转盘

终于效果图: 各个view的关系图: 背景圆盘(须要扣图处理)LuckyBaseBackground.png 盖在背景圆盘上面的转盘 LuckyRotateWheel.png 代表一个星座或生肖的button背景图片 要创建12个,并以最下方中点为锚点进行旋转 对背景圆盘进行扣图,并在其上面盖上转盘图片的核心代码 在自己定义…

Python 自动化办公之 Excel 对比工具

作者 | 周萝卜来源丨萝卜大杂烩今天我们继续分享真实的自动化办公案例&#xff0c;希望各位 Python 爱好者能够从中得到些许启发&#xff0c;在自己的工作生活中更多的应用 Python&#xff0c;使得工作事半功倍&#xff01;需求由于工作当中经常需要对比前后两个 Excel 文件&am…

jQuery简单实现iframe的高度根据页面内容自适应的方法(转)

本文实例讲述了jQuery简单实现iframe的高度根据页面内容自适应的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;方式1&#xff1a;//注意&#xff1a;下面的代码是放在和iframe同一个页面中调用 $("#iframeId").load(function () {var mainheight $(t…

linux wc 命令简介

此wc命令不是让大家没有食欲的地方。而是linux下一个简单的小命令。NAMEwc — word, line, character, and byte countSYNOPSISwc [-clmw] [file ...]下面让我们来简单的看一下其支持的参数及其代表的含义。 参数及含义 参数含义-c显示文件的Bytes数(字节数)-l将每个文件的行数…

这个插件竟打通了Python和Excel,还能自动生成代码!

作者 | 云朵君来源丨数据STUDIO加载一个Jupyter插件后&#xff0c;无需写代码就能做数据分析&#xff0c;还帮你生成相应代码&#xff1f;没错&#xff0c;只需要加载这个名为Mito的小工具包&#xff0c;用Python做数据分析&#xff0c;变得和用Excel一样简单&#xff1a;介绍以…

集合list set Map问题

2019独角兽企业重金招聘Python工程师标准>>> ####集合list set Map的个人理解 首先集合说的对一类数据的存储容器&#xff0c;对象都是引用类型并不是基本数据类型 collection 接口 list和set都需实现它 collections 抽象了一些集合的基本功能&#xff0c;reverse s…

python学习第四课

#!/user/bin/env python#-*-coding:utf-8-*-# 一、字符串魔法# &#xff08;1&#xff09;.isalpha()是否是字母或汉字。# 例&#xff1a;# a"张san22"# b"张三lisi"# va.isalpha()# v1b.isalpha()# print(v)# print(v1)# 因为a里含有数字&#xff0c;结果…

PHP 截取字符串专题

1. 截取GB2312中文字符串<?php< ?php//截取中文字符串functionmysubstr($str, $start, $len){$tmpstr ""; $strlen $start $len; for($i 0; $i< $strlen; $i){if(ord(substr($str, $i, 1))> 0xa0){$tmpstr. substr($str, $i, 2); $i; }else$tm…

​GPT-3好“搭档”:这种方法缓解模型退化,让输出更自然

作者 | LZM来源丨数据实战派文本生成对于许多自然语言处理应用来说都是非常重要的。但神经语言模型的基于最大化的解码方法&#xff08;如 beam search&#xff09;往往导致退化解&#xff0c;即生成的文本是不自然的&#xff0c;并且常常包含不必要的重复。现有的方法通过采样…

(Question)CSS中position的绝对定位问题

RT,绝对定位相对于定位的元素存在是哪里&#xff1f; https://yunpan.cn/crjSMTiak2srZ 访问密码 1570转载于:https://www.cnblogs.com/LiuChunfu/p/5139958.html

BZOJ 4817: [Sdoi2017]树点涂色(LCT+树剖+线段树)

题目描述 Bob有一棵 nn 个点的有根树&#xff0c;其中1号点是根节点。Bob在每个点上涂了颜色&#xff0c;并且每个点上的颜色不同。 定义一条路径的权值是&#xff1a;这条路径上的点&#xff08;包括起点和终点&#xff09;共有多少种不同的颜色。 Bob可能会进行这几种操作&am…

ls -l |wc -l命令多统计一行

#ls -l |wc -l注意&#xff1a;总用量也占用1行&#xff0c;所以统计出来的是14而不是13其他网友提醒 #ls -l |wc -l 就统计实际的行&#xff0c;放大就看出效果1和l不同