分享

来自MIT人工智能实验室:如何做研究?—RoboticFan(机器人爱好者)

 金牧场 2007-08-28
来自MIT人工智能实验室:如何做研究?
作者:柳泉波   文章来源:MIT  点击数: 5903   更新时间:2006-5-12 19:53:58  打印此文

 

8. 程序设计

并不是所有的AI论文都包含代码,而且本领域的很多重量级人物从来没有写过一个重要的程序。但是为了初步的近似AI工作原理,你必须会程序设计。不仅仅是很多AI研究工作需要编写代码,而且学会程序设计能给你什么是可计算的什么是不可计算的直觉,这是AI对认知科学贡献的主要来源。

在MIT,本质上所有的AI程序设计都使用Common Lisp。如果还不知道,赶快学吧。当然,学习一门语言并不能等同于学习程序设计;AI程序设计包含的一些技术与那些在系统程序设计或者应用程序设计中用到的大不相同。开始学的时候,可以先看看Abelson和Sussman的Structure and Interpretation of Computer Programs》,并做一些练习。这本书与AI程序设计本质上并不相干,但是包含了一些相同的技术。然后读Winston和Horn写的Lisp书第三版,书里有很多优雅的AI程序。最后,进行实际的程序设计,而不是阅读,才是最好的学习程序的方法。

学习Lisp程序设计有很多传统。有些人习惯一起写代码,这取决于个性。还有的人寻找机会直接向有经验的程序员学习,或者请他对你的代码进行评价。阅读别人的代码也是很有效的方法。如果可以向高年级同学要他们的源代码。他们可能会有些抱怨,说自己的编程风格差极了,程序实际上并不能工作云云。

不管怎么样,最后你获得了源代码。然后你要仔细地通篇阅读,这很费时间。通常阅读并完全理解别人代码所花的时间与你自己编程完成的时间是一样多的,因此要计划好在你的头一个或者头两个学期用数周的时间去阅读别人的代码。你将从中学到很多以前不曾想到在课本中也没有的技巧。如果你读到了大段大段不可理解没有注释的程序,你就会明白不应该如何写代码了。

在软件工程课里学习到的那些知识在AI程序设计中依然有用。要给代码加注释。使用正确的数据抽象。将图和你的代码隔离开,由于你使用的语言基本上是Common Lisp,因此可移植性很好。诸如此类。

经过头几年的学习后,应该写一些自己的标准AI模块,如:

.. 真值维护系统 .. 规划器 .. 规则系统 .. 不同风格的解释器 .. 具有流程分析的优化编译器 .. 具有继承特性的框架系统 .. 几种搜索方法 .. 基于解释的学习器

任何你感兴趣的东西都可以尝试用程序实现。你可以抓住问题的实质,在几天之内完成一个功能版本。

修改已有的程序是另外一种有效的方法,前提是你已经写过这样的东西,并且确实了解其工作原理,优缺点以及效率等问题。

不象其他通常的程序员,AI程序员之间很少相互借阅代码。(演示代码例外)。这部分由于AI程序很少有真正起作用的。(很多著名的AI程序只在作者论文所提到的那三个例子上起作用,虽然最近这种情况已经有所改善)。另外一个原因是AI程序通常是匆忙凑成,并没有考虑一般化的问题。使用Foobar的“标准”规则解释器,开始时很有效,不久就会发现缺少一些你需要的功能,或者不够有效率。虽然可以对代码进行修改满足自己的需要,但记住理解别人的代码是很耗时的,有时候还不如自己写一个。有时候构建一个标准包的工作本身就可以成为一篇论文。

像论文一样,程序也有可能过于追求完美了。不停重写代码以求完美,最大化的抽象所有的东西,编写宏和库,与操作系统内核打交道,这都使得很多人偏离了自己的论文,偏离了自己的领域。(从另外一方面,或许这正是你需要将来谋生的手段)。

9. 导师

在MIT,有两种类型的导师,教学导师和论文导师。

教学导师的工作比较简单。每一位研究生都被分配了系里的一位老师作为教学导师。教学导师的作用是作为系方代表,告诉你对你的正式要求是什么,如果你的进度慢了敦促你,批准你的课程计划等。如果一切顺利的话,你每年只需要见教学导师两次,在注册日那天。从另一方面讲,如果你遇到了困难,教学导师替你向系里反映或者提供指导。

论文导师是监督你研究的人。选择论文导师是你读研期间最重要的选择,比选题都重要得多。从更广的意义上讲,AI是通过师傅带徒弟的方式学习的。有很多领域的技术方面或者研究过程方面的非正式知识,只能从导师那里学到,在任何教科书上都找不到。

很多AI教员都是行为古怪的人,毕业生也如此。导师与研究生的关系是非常个性化的,你的个人特点必须与导师的配合得很好,这样你们才能合作成功。

不同的导师具有不同的风格。下面是一些需要值得考虑的因素:

.. 你需要多大程度的指导?有些导师会给你一个定义良好的适合做论文的问题,对解决方法进行解释,并告诉你如何开展工作。如果你陷在某个地方了,他们会告诉你如何开展下去。其他的导师属于甩手型,他们可能对你的选题毫无帮助,但是一旦你选好题目,他们对于引导你的思路具有非常大的作用。

你需要考虑清楚自己适合独立工作还是需要指导。

.. 你需要多大程度的联系?有的导师要求每周与你见面,听取你工作进展的汇报。他们会告诉你应该读的论文,并给你实际的练习和项目做。其他的导师每学期与你的谈话不会超过两次。

.. 你能承受的压力有多大?有些导师施加的压力是很大的。

.. 需要多少情感支持?

.. 听取导师意见的认真程度如何?大多数导师会相当正式的建议你的论文题目。有些导师是值得信赖的,他们给出的建议,如果按照执行,几乎肯定会做出一篇可接受程度的论文,如果不是令人兴奋的论文的话。其他的则一下子抛出很多思路,大部分是不切实际的,但是有一些,或许会导致重大突破。

如果选了这样的一位导师,你首先得把自己当作一个过滤器。

.. 导师提供了什么类型的研究组?有些教授会创造环境,把所有的学生聚集在一起,即使他们做的不是同一个项目。很多教授每周或者每两周与自己的学生们会面。这对你有用么?你能与教授的学生和睦相处么?有些学生发现他们更能与其他教研组的学生建立良好的工作关系。

.. 你想参与大的项目么?有些教授将大系统分解,每个学生负责一部分。这给了你与一组人讨论问题的机会。

.. 你想被共同监督么?有些论文项目包含了多个AI领域,需要你与两个以上的教授建立密切的工作关系。虽然你正式的论文导师只有一位,但是有时候这并不反映实际情况。

.. 导师愿意指导其研究领域之外的论文题目么?你是否能与导师一起工作,比你做什么本身更重要。

MIT的机器人系就曾指导过量子物理学和认知建模方面的论文;推理方面的教员指导过视觉方面的论文。但是有些教员只愿意指导自己研究兴趣领域内的论文。这对于那些欲获得终身职位的年轻教员来说尤其如此。

.. 导师会为了你跟体制作斗争吗?有些导师会为了你跟系里或者某些有敌意的实体作斗争。有时候体制对某些类型的学生不利(特别是对于女学生和怪癖的学生),因此这一点很重要。

.. 导师愿意并且能够在会议上推荐你的工作吗?这是导师工作的一部分,对你将来工作意义重大。

上述这些因素,不同学校的情况很不相同。与大部分学校相比,MIT提供了多得多的自由。

找论文导师是你研究生一年级最主要的任务。研一结束时,或者研二学年开始阶段,你必须有一个论文导师。下面是一些诀窍:

.. 查阅实验室的研究总结。其中有一页左右的篇幅描述了每个教师以及很多研究生目前在做什么。 .. 如果你对某些教师的研究工作感兴趣,查阅其最近的论文。 .. 在第一学期,与尽可能多的教师交谈。去感受他们喜欢做什么,他们的研究和指导风格是什么。 .. 与预期导师的研究生交谈。要保证与导师的多个学生交流,因为每位导师在与不同的学生交流时有不同的工作方式和交流效果。不能被一个学生的看法所左右。 .. 很多教师所在研究组的会议对新同学都是公开的。这是非常好的了解导师工作方式的途径。

作为一门学科,AI不同寻常的一点是很多有用的工作是由研究生完成的,而不是博士——他们忙着做管理去了。这有几个后果。一是某个教师的声望,是否会获得终身聘用,在很大程度上取决于学生的工作。

这意味着教授有很强烈的动机吸引最好的学生为自己工作,并给与有效的指导和足够的支持。另外一个后果是,由于大部分学生的论文方向是由导师形成的,因此整个领域的方向和发展很大程度上取决于导师选择什么样的研究生。

当选定了导师,决定了自己对导师的要求后,要确保导师知道。不要由于交流不好,浪费时间于自己并不想做的项目上。

不要完全依赖你的导师,要建立自己的网络。找一些能定期评审你的工作的人是很重要的,因为研究时很容易走火入魔。网络中的人可以包括自己实验室或者外单位的研究生和老师。

在与其他学生、老师甚至自己的导师的关系中,很可能会碰到种族主义者,性别歧视,同性恋或者其他令人尴尬的事情。如果你不幸碰到了,去寻求帮助。MIT的ODSA出版了一本叫做“STOP Harrassment”的小册子,里面有很多建议。《Computer Science Women's Report》,可在LCS文档室找到,也与之相关。

实验室中有些同学只是名义上由导师指导。这对于那些独立性很强的人来说很好。但是如果你已经完成了某项导师指导的工作,除非你确保没有导师也行且自己有牢靠的支持网络,否则就不要这么干。

10. 论文

做毕业论文将占据研究生生活的大部分时间,主要是去做研究,包括选题,这比实际的写作耗时更多。

硕士论文的目的是为做博士论文练兵。博士水平的研究如果没有准备好的话,是很难进行的。硕士论文最本质的要求是展示自己的掌握程度:你已经完全理解了本领域最新进展,并具备相应的操作水平。并不需要你对本领域的最新知识有所拓展,也不要求发表你的论文。然而我们实验室的论文总是比较大气的,因此很多硕士论文实际上都对本领域的发展作出了显著的贡献,大约有一半都出版了。这并不一定是好事情。很多人精力都集中于硕士的工作,所以MIT有这样的名声:硕士论文的质量往往比博士论文高。这有悖于硕士工作本来是为博士研究作准备的原有目的。另外一个因素是所做研究要对领域有所贡献,至少需要两年,这使得研究生学习时间之长令人难以忍受。现在或许你感受不到匆忙,但当你已经在实验室呆了七年后,你肯定迫不及待地想逃出去。硕士从入学到毕业平均时间是两年半,但是,计算机系强烈鼓励学生提前毕业。如果某个硕士生的题目过于庞大,可将之分解,一部分来做硕士论文,另一部分给博士生作博士论文。

想要了解硕士论文研究是什么样的,读几本最新的硕士论文。记住比较好的论文是那些出版的或者成为技术报告的,因为这标志着该论文被认为是扩展了领域的最新知识——换句话说,他们的论文远远超出了硕士论文的水平。还要读一些通过的但是没有出版的论文,所有通过的论文都可以在MIT图书馆中找到。

博士论文必须对最新知识有所拓展,博士论文的研究必须具备可出版的质量。MIT的泱泱气质又表现出来了,很多博士论文在几年内都是某个子领域的权威工作。对于MIT的博士论文来说,开创一个新领域,或者提出并解决一个新问题,并不是什么了不起的事情。虽然,这并不是必需的。

一般来说,需要两到三年的时间来做博士论文。很多人花一到两年的时间跟硕士生活说再见,以及选题。这段时间可以去尝试一些别的事情,例如做助教或者在某个非AI领域打下坚实的基础或者组织个乐队。

博士论文的实际写作时间大约是一年。

选题是论文工作中最重要最困难的部分:

.. 好的论文题目不仅能够表达个人观点,而且可与同行交流。 .. 选择题目必须是自己愿意倾注热情的。个人远景观点是你作为一个科学家的理由,是你最为关切的意象,原则,思路或者目标。有多种形式。或许你想造一台可与之交谈的计算机,或许你想把人类从计算机的愚蠢使用中拯救出来,或许你想展示万物都是统一的,或许你想在太空发现新生命。远景观点总是比较大的,你的论文并不能实现你的远景,但是可以朝着那个方向努力。 .. 做论文时,最困难的就是如何将问题消减至可解决的水平,同时规模又足以做一篇论文。“解决AI的宽度优先”是常见毛病的一个例子,题目太大太虚了。你会发现需要不断的缩小题目的范围。选题是一个渐进的过程,不是一个离散的事件,会持续到你宣布论文已经完成那一刻为止。实际上,解决问题通常比精确地描述问题要容易得多。如果你的目标是一个五十年的工程,那么合理的十年工程是什么,一年的呢?如果目标的结构庞大,那么最核心的部件是什么,如何最大程度的了解核心部件? .. 一个重要的因素是你可以忍受多大程度的风险。在最终的成功和风险之间需要权衡。这也并不总是对的,AI中有很多研究者尚未涉及的想法。 .. 好的论文选题有一个中心部分,你确信肯定可以完成,并且你和你的导师都同意这已经满足毕业要求了。除此之外,论文中还有多种扩展,有失败的可能,但如果成功了,会增加论文的精彩程度。虽然不是每一个论文选题都符合这个模式,但值得一试。 .. 有些人觉得同时在多个项目中工作可以在选题的时候选择可以完成的那个。这确实降低了风险。另外一些人则愿意在做任何工作之前,选一个单独的题目。 .. 可能你只对某个领域感兴趣,这样你的选题范围就狭窄得多。有时候,你会发现系里的老师没有一个人能够指导你选择的领域。可能还会发现好像那个领域没什么很自然的选题,反而对别的领域有好想法。 .. 硕士选题比博士选题更难,因为硕士论文必须在你所知不多没有足够自信时就完成。 .. 博士选题需要考虑的一个因素是是否继续硕士阶段所研究的领域,可能拓展或者作为基础,或者干脆转到另外一个领域。待在同一个领域事情就简单了,可能只需要一到两年就毕业了,特别是如果在硕士阶段的工作中已经发现了适合做博士论文的题目。不足之处在于容易定型,改换领域则能增加知识的宽度。 .. 有的论文题目很新奇,有的则很普通。前者开创了新领域,探索了以前未曾研究过的现象,或者为很难描述的问题提供了有效的解决方法;后者则完美地解决了定义良好的问题。两种论文都是有价值的。 选择哪一种论文,取决于个人风格。 .. 论文的“将来的工作”部分,是很好的论文题目来源。 .. 无论选什么样的题目,必须是前人未曾做过的。即使是同时有人做的工作,也不好。有很多东西可作,根本无需竞争。还有一种常见的情况,读了别人的论文后感觉很惊慌,好像它已经把你的问题解决了。 这通常发生在确定论文题目过程中。实际上往往只是表面类似,因此将论文送给某个了解你的工作的高人看看,看他怎么说。 .. MIT AI实验室的论文并非全是有关人工智能的;有些是有关硬件或者程序设计语言的,也行。 选好题后,即使有点虚,你必须能够回答下列问题:论文的论点是什么?你想说明什么?你必须有一句,一段,五分钟的答案。如果你不知道自己在干什么,别人也不会严肃对待你的选题,更糟糕的是,你会陷在选题——再选题的圈子里而不能自拔。

开始作论文研究后,一定要能够用简单的语言解释每一部分的理论和实现是如何为目标服务的。

记住,一旦选好了题目,你必须与导师就论文完成的标准达成清晰的一致。如果你和他对论文具有不同的期望,最后你肯定死得很惨。必须定义好“完成测试”的标准,像一系列的能够证明你的理论和程序的例子。这是必须做的,即是你的导师并不这么要求。如果环境发生了根本的变化,测试也要随之改变。

首先尝试论文问题的简化版本。用实例检验。在形成理论抽象之前,要完整的探究具有代表性的例子。

做论文的过程中,有很多浪费时间的方式。要避免下列活动(除非确实跟论文相关):语言表达的设计;用户接口或者图形接口上过分讲究;发明新的形式化方法;过分优化代码;创建工具;官僚作风。任何与你的论文不是很相关的工作要尽量减少。

一种众所周知的现象“论文逃避”,就是你突然发现改正某个操作系统的BUG是非常吸引人也很重要的工作。此时你总是自觉不自觉的偏离了论文的工作。要记住自己应该做些什么。(本文对于部分作者来说就属于论文逃避现象)。

11. 研究方法论

[本部分内容比较少,请添加]

研究方法学定义了什么是科研活动,如何开展研究,如何衡量研究的进展,以及什么叫做成功。AI的研究方法学是个大杂烩。不同的方法论定义了不同的研究学派。

方法是工具。使用即可,不要让他们来使用你。不要把自己陷于口号之中:“AI研究需要牢靠的基础”,“哲学家只会高谈阔论,人工智能则需要拼搏”,“在问为什么之前,先搞清楚计算的是什么”。实际上,要在人工智能领域取得成功,你必须擅长各种技术方法,还必须具备怀疑的态度。例如,你必须能够证明定理,同时你还必须思考该定理是否说明了什么。 很多优秀的AI篇章都是巧妙地在几种方法论中取得平衡。例如,你必须选择一条在太多理论(可能与任何实际问题都无关)和繁琐的实现(把实际的解决方法表达得语无伦次)之间的最佳路线。你经常会面临区分“干净”和“肮脏”的研究决策。你应该花时间将问题在某种程度上形式化吗?还是保持问题的原始状态,此时虽然结构不良但更接近实际?采用前一种方法(如果可行的话)会得到清晰确定的结果,但这一过程往往是繁琐的,或者至少不会直接解决问题。后者则有陷入各种处理的漩涡之中的危险。任何工作,任何人,必须作出明智的平衡。

有些工作象科学。你观察人们是怎样学习算术的,大脑是如何工作的,袋鼠是如何跳的,然后搞清楚原理,形成可检验的理论。有些工作象工程:努力创建一个更好的问题解决器或者算法。有些工作象数学:

跟形式化打交道,要理解属性,给出证明。有些工作是实例驱动的,目标是解释特定的现象。最好的工作是以上几种的结合。

方法具有社会性,看看别人是如何攻克类似难题的,向别人请教他们是如何处理某种特殊情况的。

12. 情感因素

研究是艰苦的工作,很容易对之失去兴趣。一个令人尴尬的事实是在本实验室读博的学生只有很少比例最后获得学位。有些人离开是因为可以在产业界赚到更多的钱,或者由于个人的原因;最主要的原因则是由于论文。本节的目标是解释这种情况发生的原因,并给出一些有益的建议。

所有的研究都包含风险。如果你的项目不可能失败,那是开发,不是研究。面对项目失败时是多么艰难啊,很容易将你负责的项目失败解释为你自己的失败。虽然,这实际上也证明了你有勇气向困难挑战。

在人工智能领域很少有人总是一直成功,一年年地出论文。实际上,失败是经常的。你会发现他们经常是同时做几个项目,只有一些是成功的。最终成功的项目也许反复失败过多次。经历过很多由于方法错误的失败之后,才取得最终的成功。

在你以后的工作生涯中,会经历很多失败。但是每一个失败的项目都代表了你的工作,很多思想,思考方式,甚至编写的代码,在若干年后你发现可用于另外一个完全不同的项目。这种效果只有在你积累了相当程度的失败之后才会显现出来。因此要有最初的失败以后将会起作用的信念。

研究所花费的实际时间往往比计划的要多得多。一个小技巧是给每个子任务分配三倍于预期的时间(有些人加了一句:“..,即使考虑了这条原则”)。

成功的关键在于使得研究成为你日常生活的一部分。很多突破和灵感都发生在你散步时。如果无时无刻地都潜意识的思考研究,就会发现思如泉涌。成功的AI研究者,坚持的作用一般大于天资。“尝试”也是很重要的,也就是区分浅薄的和重要的思路的能力。

你会发现自己成功的比例是很随机的。有时候,一个星期就做完了以前需要三个月才能完成的工作。

这是令人欣喜的,使得你更愿意在本领域工作下去。其他一些时候,你完全陷在那里,感觉什么也做不了。

这种情况很难处理。你会觉得自己永远不会做出任何有价值的东西了,或者觉得自己不再具备研究者的素质了。这些感觉几乎肯定是错误的。如果你是MIT录取的学生,你就是绝对合格的。你需要的是暂停一下,对糟糕的结果保持高度的容忍。

通过定期设置中短期的目标,例如每周的或者每月的,你有很多工作要做。增加达到这些目标的可能性有两种方法,你可以把目标记在笔记本中,并告诉另外一个人。你可以与某个朋友商定交换每周的目标并看谁最终实现了自己的目标。或者告诉你的导师。

有时你会完全陷在那里,类似于写作过程的思路阻塞,这有很多可能的原因,却并无一定的解决方法。 .. 范围过于宽泛了,可尝试去解决流程中的子问题。

感谢Inkel提供文章来源

参与讨论:

http://www./robot/bbs/dispbbs.asp?boardid=41&id=3674

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多