https://www.jianshu.com/p/2149c9fee166

摘要: 本文以过来人的身份将自身2年的研究经验做了一下分享,希望本文对于即将开始从事人工智能研究的朋友有所帮助。

人工智能研究这个领域是有一定门槛的。对于初学者来说,一般通常的做法是直接购买一些热门的书籍,比如“西瓜书”、“花书”、“xx天从入门到精通”、“xx天从入门到放弃”等等,但大多数书籍都是讲的基础知识,稍显乏味和枯燥,此外内容太深奥,初学者可能看一段时间就想放弃了。本文以过来人的身份将自身2年的研究经验毫无保留地分享给大家,希望对即将开始从事人工智能研究的朋友有所帮助。

起步

找一个你随时方便提问的人

刚进入公司时,常常会对一些基本问题犹豫不决,这些问题可能会暴露出自身缺乏专业知识。但是过了几个月后,我的提问才慢慢感到自然,提问都是精心拟定的。在此之前,我会积累大量的问题,但现在只要遇到一个问题,我就会立马提问,这样不会造成问题积压以至于越来越困惑。

寻找不同领域的研究灵感

现在不是单打独斗的时代,讲究合作。知识也不例外,多学科交流。对于每个人而言,决定从事什么方向可能是研究中最困难的部分,以下是我所看到的一些具有长期记录的研究人员所采用的策略:

1.与不同领域的研究人员交流。咨询他们感兴趣的问题,询问是否有想要分析的数据集、现有技术存在哪些不足。机器学习中最有效的工作是与生物学、化学、物理、社会科学或纯数学的碰撞。例如,我正在思考Matthew Johnson 在2016年NIPS的文章以及Justin Gilmer在2017年ICML的文章,两篇文章分别是关于鼠标行为数据集的分析以及量子化学的应用;

2.编写一个简单的基线以获得对问题的感觉。比如,尝试编写一些用于控制倒立摆的校准代码。在写基线代码时,会遇到很多情况、各种问题或者一些临时产生的想法,这些都能够加深对问题的理解。

3.扩展喜欢的某篇论文的实验部分。仔细阅读一篇论文,了解其采用的方法和获得的实验结果,设法找到一些可以完善的地方。首先考虑最简单的扩展,然后思考下论文的方法是否合理,实验结果有没有不完善的地方。

重视可视化工具和技能

运行可视化脚本允许我们快速验证代码是否与想法匹配。更重要的是,良好的可视化往往使得想法和代码中的错误变得更加明显以及可解释性。

对于一个实际任务,想出解决问题的正确方法是很困难的。如果采用的是迭代优化模型(比如深度学习),那么绘制出损失函数会是一个好的开端。此外,对于深度学习这个“黑匣子”方法,可视化也能够部分解释其学习到的神经网络参数。比如,当处理图形模型事,可视化其一维或二维变量的分布,当它改变时,可以推断出很多信息。可视化是技术有效性的晴雨表,每次可视化分析结果都能对所采用的的方法或代码起到一定的反馈。

TensorFlow可视化工具Tensorboard

分布图

Q值学习图

弄清楚研究者和论文的最初动机

在学术界可以发现很好玩的现象,研究人员在同一个会议上发表论文,使用相同的技术行话,但两个人的研究动机可以是完全相反的。动机分为以下三个动机——“数学”动机、“工程”动机和“认知”动机:

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

“工程”动机:如何开发比其它方法更好地解决实际问题的智能系统?

“认知”动机:如何模拟像人类或其它动物那样的自然智能?

有些论文不止一个动机,此外,每个研究者的动机不可能一直保持不变,这和工程师的兴趣有关。优秀的论文和研究人员将在一开始就说明其研究动机,但有些论文往往表述的不是很清楚,这就需要读者们仔细阅读,此外,在自己写作时也要注意这一点,以防动机不明显而被退稿或退修。

深入研究

学会找论文

网络上充斥着大量的人工智能论文,大多数人首先会发表在arXiv上,由于该平台可以先发表再经过审稿,因此需要学会从中辨别。另外,建议在社交软件上跟踪你最喜欢的研究人员的动态。此外,还有各种会议也值得关注。三大会议分别是NIPS、ICML以及ICRL。其它著名的一般会议包括AAAI、IJCAI和UAI。对于每一个分支学科而言,都有更加具体的会议。比如计算机视觉领域有CVPR、ECCV和ICCV;自然语言领域有ACL、EMNLP和NAACL;机器人学领域有CoRL、ICAPS、ICRA、IROS和RSS;与理论工作相关的会议有AISTAS、COLT和KDD。此外还有一些期刊也值得关注,JAIR和JMLR是人工智能领域最突出的两个期刊,不过在Nature和Science期刊中也会有很好的论文。

对于一些早期论文的查找也是非常重要的,那些被奉为“经典论文”的论文往往会在参考论文中出现。另外一种发现早期论文的方法是从资深教授的个人主页开始查找,其成名作一般会挂在上面。此外还可以通过一些搜索助手,比如谷歌学术、百度学术等查询关键词。

读论文要花多少时间?

关于如何读论文,人们经常给出两个建议。第一个就是在研究生的第一学期或者第一年度把所有相关的论文都读一遍;第二个是当读了大量论文后,不要再泛读,而是找到突破口,想出创新的办法。

我个人同意第一个建议,但不同意第二个建议。只要有足够的时间用于原始研究,那么就应该尽可能多地阅读论文。对于专业研究员而言,不可能总依靠个人幸运来发现创新的解决办法,有时候你想到的方法别人可能已经尝试过,只是你不知道而已。绝大多数的研究者都是耐心的跟踪研究方向的进展以及发展趋势,有条不紊地思考并解决问题。阅读相关论文也是弄清楚目前所处的阶段以及接下来需要做什么的一个好方法。

关于尽可能多地阅读论文有一个重要的提示:花时间理解消化一篇论文和阅读一篇论文同样重要,阅读的时候可以做些笔记,而不是囫囵吞枣,只求数量,不求质量。

对话 >> 视频 >> 论文 >> 会谈

论文无疑是了解不熟悉的研究理论最容易获取的来源,但是什么路径是最有效的呢?不同的人可能感受不一样。对我而言,我发现对话(与那些已经理解的人)是迄今为止最快且最有效的理解途径。如果找不到和这样的人对话的机会,可以找下关于问题的相关视频,例如论文作者访谈视频,这样的视频可以提供很好的观点。此外,当演讲者向现场观众演讲时,他们往往优先考虑的是清晰度而不是简洁性。在大多数论文写作中,作者将优先权顺序互换了,其中词数为王,背景知识解释得太多反而显得作者对该领域不熟悉。排在最后的是会谈,简单的会谈往往显得比较正式,与主持人的谈话内容可能会非常有价值。

谨防炒作

人工智能取得一系列的成果吸引了公众的关注,使得更多的人投入这个领域,进而促使人工智能取得更多突破性的进展。整个循环是良性的,但有一个副作用就是存在大量的炒作。视图获得点击量的记者、热钱投资者、创业型公司都是夸大炒作泡沫的罪魁祸首。因此,在我们阅读新闻或论文时,要注意“标题党”,以免被误导。

在2017年的NIPS的问答环节,一位著名的教授拿着麦克风(代表炒作警察)告诫作者在论文标题中慎重使用“想象”一词。这和我们看新闻时一样,标题很吸引人,但里面的内容却跟标题关系不大,使得阅读者大失所望。阅读论文同样如此,严防炒作,我们需要做的是根据实验方法和结果来评估一篇论文是否对自己有所帮助。

研究是场马拉松

总是在不断进步

在早期探索研究项目时,一般我会花几个小时开展头脑风暴,希望一些模糊的直接能够指引一个具体的方向。有时候项目没有任何进展,但在黑暗中摸索也算是整个研究过程中的一部分。当不知道下一步应该做什么时,可以基于目前已有的情况将最模糊的想法写下来,并在写的过程中进行一一排除(写出排除的原因)。在没有任何想法的情况下, 可以采取阅读或与同事交流的形式以获得灵感。

从死胡同中学会判别和止损

大牛们一般花更多的时间在好的想法上,能够区分想法的好与坏在很大程度上依赖于个人的经验。尽管如此,任何水平的研究人员都会不断遭遇以下决定:研究思路是否有缺陷、是否应该挽救或进一步支持所提出的想法、是否完全放弃所提出的想法?尤其是在早期时,研究人员踏入死胡同后会停留很长一段时间,而不愿放弃。虽然放弃意味着之前的花费的时间白费了,但有的时候要懂得及时止损。

写作

一些大牛给出的早期职业建议是:写作。平时可以写写博客和论文,但更重要的是把自己的想法记录下来。因为写作有助于我们理解与思考相关知识。

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

学术研究者在追求科学发现的过程中经常会遇到熬夜、顾不上吃饭等问题,这些都不是好习惯。很多博士都开始秃头,甚至硕士就开始掉头发。锻炼身体并放空自己内心也是对科研的投资,并不是阻碍科研。睡8个小时后再工作4个小时,其效率比睡4个小时工作8个小时要高得多。有的时候会遇到卡壳,即使使出浑身解数也无法取得一丝进步,这个时候建议离开工作岗位,稍微活动一下并做长呼吸,放空下自己。

作者信息

Tom Silver,专注于计算科学与数学、人工智能

本文由阿里云云栖社区组织翻译。

文章原标题《Lessons from My First Two Years of AI Research》,译者:海棠,审校:Uncle_LLD。

作者:阿里云云栖社区 链接:https://www.jianshu.com/p/2149c9fee166 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

两年AI研究经验(教训)总结,进来看看吧!的更多相关文章

  1. 使用Kubernetes两年来的7大经验教训

    来源:分布式实验室译者:冯旭松在Ridecell公司管理基础设施团队几年后,我想在停下来休息时记录一些想法和经验教训. 1Kubernetes不仅仅是炒作 我在Kubernetes领域里活跃了很久,所 ...

  2. Apache Storm 的历史及经验教训——Nathan Marz【翻译】

    英文原文地址 中英文对照地址 History of Apache Storm and lessons learned --项目创建者 Nathan Marz Apache Storm 最近成为了ASF ...

  3. 从Apache Storm学到的经验教训 —— storm的由来(转)

    阅读目录 Storm来源 初探 再探 构建第一个版本 被Twitter收购 开源的Storm 发布之后 Storm的技术演进 构建开发者社区版 离开Twitter 提交到Apache Apache孵化 ...

  4. CQRS之旅——旅程8(后记:经验教训)

    旅程8:后记:经验教训 我们的地图有多好?我们走了多远?我们学到了什么?我们迷路了吗? "这片土地可能对那些愿意冒险的人有益."亨利.哈德逊 这一章总结了我们旅程中的发现.它强调了 ...

  5. 使用Flutter完成10个商业项目后的经验教训

    作者:Łukasz Kosman 和 Jakub Wojtczak 原文:https://medium.com/swlh/lessons-learned-after-making-the-first- ...

  6. 新人入职100天,聊聊自己的经验&教训

    这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果你 打算去国外工作. 对Google的开发流程感 ...

  7. 从面向服务架构(SOA)学习:微服务时代应该借鉴的5条经验教训

    [编者按]本文作者为 Matt McLarty,通过介绍 SOA 的兴衰变化,总结了微服务应该借鉴的5条经验教训.文章系国内 ITOM 管理平台 OneAPM 编译呈现. SOA 的兴衰变化让我们更了 ...

  8. 创建Android Apps的30个经验教训

    这个世界上有两种人-从经验教训中学习的人以及听从别人建议的人.这里是我一路走来学到的一些东西,分享给大家: 在添加任何第三方party之前,请三思:这真的是一个成熟的项目吗? 如果一个东西用户看不到, ...

  9. google开发新人入职100天,聊聊自己的经验&教训 个人对编程和开发的理解 技术发展路线

    新人入职100天,聊聊自己的经验&教训 这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果 ...

随机推荐

  1. Swift5 语言指南(十五) 继承

    类可以从另一个类继承方法,属性和其他特性.当一个类继承自另一个类时,继承类称为子类,它继承的类称为其超类.继承是一种基本行为,它将类与Swift中的其他类型区分开来. Swift中的类可以调用和访问属 ...

  2. MySQL:change buffer

    1. 概念 Innodb维护了一个缓存区域叫做Buffer Pool,用来缓存数据和索引在内存中.其大小通过参数 innodb_buffer_pool_size 控制: change buffer 是 ...

  3. iOS开发笔记(Swift)-通用App安装引导页的实现

    之前一直做的项目都是基于OC开发的,最近开始尝试使用Swift语言来重写整个项目. 本篇文章主要是讲述如何使用Swift来实现常见的通用App安装引导界面. 效果预览: 实现思路: 主要是采用了UIS ...

  4. Java Web——过滤器

    <Java Web开发技术应用——过滤器> 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进 ...

  5. Screen会话命令 Linux

    由于经常在服务器上运行程序,本地不可能一直和服务器保持连接,而且如果本地和服务器的连接断开,在服务器上运行的程序将会终止,为了,查找了一些网络资料,发现screen 会话命令可以保持本地和服务器断开后 ...

  6. Win10上安装Keras 和 TensorFlow(GPU版本)

    一. 安装环境 Windows 10 64bit  家庭版 GPU: GeForce GTX1070 Python: 3.5 CUDA: CUDA Toolkit 8.0 GA1 (Sept 2016 ...

  7. Rpc简单入门

    RPC这个概念大家都应该很熟悉了,这里不在累述了:使用场景可以参考这篇,本篇主要分享下Thrift和Grpc在.Net Core环境下使用入门.Thirft或者Grps 都支持跨语言.跨平台的Rpc框 ...

  8. SpringBoot各类扩展点详解

    一.前言 上篇文章我们深入分析了SpringBoot的一站式启动流程.然后我们知道SpringBoot的主要功能都是依靠它内部很多的扩展点来完成的,那毋容置疑,这些扩展点是我们应该深入了解的,那么本次 ...

  9. NAT转换、VLAN与Trunk(特典:ACL初步)

    一.NAT(网络地址转换) 即公有地址转换为私有地址 私有地址段(非公网地址,即公网不识别) A       10.0.0.0            10.255.255.255 B       17 ...

  10. SQL 必知必会·笔记<5>创建计算字段

    字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一 般称为列,而术语字段通常与计算字段一起使用. 拼接(concatenate) 将值联结到一起(将一个值附加到另一 ...