与我的导师蔡登老师的问答整理

我的导师 浙江大学蔡登教授是一位国际知名的机器学习学者。关于蔡老师,我在之前的一些文章中也有提到:

蔡老师学术水平极高,读博期间就发表过非常多很有影响力的论文(虽然现在那些topic已经不是很热门了),也经常能一眼看出组里同学许久也看不出来的问题要点;有很好的学术准则,绝对不会抢夺学生的成果,也坚决不参与学术圈一些拉帮结派的事情;人品非常好,很为学生考虑,而且几乎把自己工作方面的全部精力都用在了学生身上;授课水平极高,而且以前即使有身体问题仍然一直坚持在授课一线上教授高质量的课程十多年,直到不久前身体问题恶化了实在无法授课了才不得不离开讲台;做事情很有自己的方法论,而且各方面能力(如学术、授课、演讲、工程等等)非常完善,几乎都是我认识的人中最强的;还是一位很照顾家庭的好男人和好父亲。总之,蔡老师不仅是我的学术导师,更是我的人生榜样;在我眼中他是一位真正的计算机科学家,也是一位脱离了低级趣味的高尚老师。能成为他的学生是我的幸运。

身为蔡老师学生中最菜的一员,我时常会有关于各种问题的困惑;我又享受工位就在蔡老师对面的天然地理优势,故有困惑时就可以直接问蔡老师,而蔡老师的回答在我看来可以说都是金玉良言,我经常觉得非常有价值而分享给朋友们。这篇文章就是整理一些这样的问答,这样以后我分享给朋友的时候就可以直接贴链接了>_<

关于如何把数理基础学扎实

我:蔡老师,我想问您一个问题,我看您的数理基础学得非常扎实,但我自己就学得不太扎实,您有没有这方面的建议?

蔡老师:现在都是研究生了,你估计也没有大块时间去补基础了。如果有时间的话,你可以用一些top的课程与教材来学,并且完成他们的作业。不过在现在这个阶段,更多的还是你碰到了某一小块知识需要补或者学,这个时候呢,我建议你先去网上找好的资源,然后用好的资源来学习。现在网上的资源非常多,好的资源也非常多,你稍微花点时间去找,基本上都能找到那种讲得非常清楚的资源的。学完之后,如果容易写代码的,那你就写代码实现一下,不过数理基础的东西一般可能没啥代码要写。之后你再找背景相似的同学,讲给他们听,把他们讲懂。其实自以为学懂了,和把别人讲懂,这中间还有非常大的gap(差距)。你如果能把背景相似的同学完全讲懂了,那你也就算是学得比较扎实了。

注:我后来才注意到,蔡老师建议的这种学习方法其实被很多人提出过,最有名的当属费曼,所以这种学习方法也被称为费曼学习法。不过我后来问过蔡老师,这类方法他是不是从别的地方学来的,他告诉我他都是自己总结出来的。

关于如何给talk(演讲)

我:蔡老师,我想问一问您有什么给talk的建议吗?我觉得自己给talk的能力还不太行,而您这方面的能力非常强,所以想向您求教一下。

蔡老师:给talk的话,首当其冲的就是逻辑。这个其实就像写paper一样,你要让前后逻辑衔接很流畅很自然,让观众觉得接受起来很容易,所以逻辑是最重要的。我感觉你这方面应该问题不大,你paper写得挺不错的。除了这个以外,我觉得还有两点是你可能需要注意的。第一是要考虑talk的时间,不同时间长度的talk,肯定是有不同的侧重点的,需要注意的是不要想着在一个talk里放太多东西而导致讲不清楚;重要的不是talk里讲了多少东西,而是讲的东西是否重要、有意义,而且一定要讲清楚。第二是要考虑到受众,你得想想你的听众是谁,并且针对他们设计内容和slide。比如你如果给一些不了解你这个研究领域的本科生做talk,那你就要多花些功夫把背景、问题等等讲清楚,可能还要结合一些例子;但如果是给同领域的小同行讲,那前面的背景和问题定义就可以少讲点,甚至有时候可以不讲,而后面的细节可以多讲点。做技术talk这种东西,你基本不可能做出让所有人都appreciate(喜欢)的slide,所以一定要考虑受众来设计。

关于如何讲课

这是我讲课之前,蔡老师给我的叮嘱。

蔡老师:班级里有些学生反应很快、非常聪明,有些学生反应相对慢一些,可能理解没那么快。你千万不能看到那些学得很快的同学理解了,就自己往下讲了:你的目的是让班上几乎所有认真听课的同学都听懂,而不是让最聪明的同学听懂。那么如何验证学生们是否听懂了呢?你需要设计一些问题,在课上时不时地提问,检验一下他们的理解情况,如果问题没回答出来,那说明你之前讲得可能还不太清楚,你还得再讲讲。通过提问让学生们参与到课堂中,也是一种提高他们专注度的方法。还有一个是,你要鼓励他们随时提问,这样也更能帮助你把东西讲清楚。另外就是要注意讲课的宗旨,讲多讲少不是那么重要,重要的是一定要把东西讲清楚。

关于批判性思维

我:蔡老师,关于critical thinking(批判性思维),我觉得我还差得很远,您这方面我觉得非常厉害,您有没有培养这方面能力的建议?

蔡老师:这个的话,我可以给一个简单的小技巧,就是你读大部分paper时候,可以用一种相对defensive(防御式)的方式去读。你可以预先认为这篇paper全是fake(假)的,然后去读这篇paper,看看它的逻辑、论述、实验等能不能convince(说服)你。

关于认真授课

我:蔡老师,我好奇一个事情,想问一下您。就是说,您这么多年来一直坚持上课,而且花大量精力在备课上,来讲出一门高质量的课程。其实现在在国内,这样做的老师非常少了,因为授课质量并不是评价体系中的一部分,尤其像您这样的名教授会这么做的就更难得了。我想问一下,您这么做的motivation(动机)是什么?

蔡老师:先说授课质量吧。其实在美国的话,授课质量是教职体系中非常重要的一环。然后你应该也能注意到,这两年授课质量也在慢慢变好,我感觉未来应该会朝好的方向发展的。说回我花精力备课和把东西讲清楚,这个可能也有一些性格原因吧,我这个人的性格是,如果在讲台上被学生问住了,或者东西没给学生讲清楚,我会觉得比较难受。所以为了不让自己难受,我就会准备得自己觉得每个细节都清楚,并且觉得在课上能给几乎所有同学都讲清楚。

关于做research

这是我一个月前离开浙大时,问蔡老师的问题。

我:蔡老师,关于我做research这件事情,您有什么建议可以给我的吗?

蔡老师:我觉得能给你的建议就是,多听各种talk,来自各种背景各种方向的talk,了解不同方向的工作以及这些工作的思路。先博,后渊。有机会的话和给talk的人交流讨论,很多idea都是要思维的碰撞才能激发出来的。不过在国内做research的话,可能与给talk的人直接交流的机会相对少一些。

关于学习方法

我:蔡老师,我感觉您不管是学习,还是research,还是给talk什么的,都很有一套方法论,而且我感觉这些方法都非常得好!这些东西,是您从哪里学来的吗,还是您自己总结出来的?

蔡老师:应该说并没有从哪里学来的吧,基本都是自己总结出来的。

我:这也太厉害了吧!这都是怎么总结出来的?

蔡老师:我可以举一个例子。我不知道你是怎么做实验的,我讲一下我怎么做实验的,我是有一套方法来管理实验的。我07年(蔡老师博士三年级)发了很多paper(我数了一下,中了的就有12篇一作,这12篇被引加起来3000左右),没有一套方法来管理实验,是不可能发得出来这么多paper的。当时我在uiuc读书,做实验的时候,我一个人有24台机子可以做实验。为了管理实验以及实验结果方便,我自己就弄了个脚本,可以在一台机子上控制所有的机子跑实验,然后弄了个matlab脚本,每台机子跑完之后用ftp的方式把实验结果发回来,这样我做实验就很方便了。这个事情是,如果没有这套方法,那我做实验就很麻烦,我就很不满意,就开始思考我期望要一个什么样的解决方案,后来我去看matlab的一些功能,发现有ftp功能,我就觉得可以利用这个功能来实现我的需求。所以你应该怎么去总结这些方法呢?你需要时不时地思考现在的方法是不是有不足之处,不足之处在哪里,你要对现在的方法产生不满,然后你再去思考什么样的方法会更好,慢慢地就会总结出适合自己的好方法的。

总结

对于蔡老师的各方面的能力以及做事情的方法,我是佩服得五体投地。而且蔡老师向来是毫不藏私地分享给大家。我觉得蔡老师的这些观点都非常有价值,因此也咨询了他能不能替他分享出来,让更多的同学受益,他很爽快地一挥手说你分享就是了。如果之后还有我认为值得分享的问答,我也会继续更新到这篇文章中~

Avatar
Jinming Hu
Invited Lecturer

My research interests include machine learning, data mining, deep learning, computer vision, operating system, and database.