SecDr

致力于信息安全科研交流平台

科研心得

| Comments

这些年自己在科研工作中有过困惑和领悟,因此我想利用这个blog把它们写下来。这些问题其实没有标准答案、对错等等,仅仅是一些想法。

我最近参加conference的时候,知道有些同行和学生看过我的这些posts。如果你有什么有趣的问题、评论等,欢迎利用这个blog交流。

part1

Q: 我导师让我看的东西没有什么理论。我喜欢有beauty的事情。我觉得研究也应该有beauty,可是我每天看见的都是杂乱无章的东西,实在没意思。怎么办?

A: 我也喜欢有beauty的东西,包括研究。可是我真正喜欢做的恰恰是把今天看来ugly的东西变成beautiful的东西。这是我认为的scientific contribution. 如果你每天摆弄的已经是beautiful的东西,能有什么contribution呢?比如,LR文法很漂亮地解决了programming language的parsing,还有多少有眼光的学者愿意再研究此问题呢?

门捷列夫元素周期表给后人看多漂亮。可我相信门捷列夫首先看见的是杂乱无章的东西。是他给了我们beauty。漂亮的研究工作就是你能把沙子吞进去,再在把金子吐出来.

Q : 我导师让我找课题。我发现其实到了今天,在system security领域,该做的idea都已经被别人做了。你觉得呢?(Credit: 这个Q&A受到我的实习生王锐与我交谈的启发)

A: 不止一个学生向我谈到这个“发现”。对这个“发现”可以有两种理解。一、system security领域好的课题真的很少了;二、你想到的每个好课题都被别人做过了。有科研经历的人都知道找题一直都是非常难的。要想证明第一种观点,你显然要说明为什么今天(2010年春天)比以往更难找system security topic。是学术界或工业界发生了什么大变化吗?似乎没有。看看2010年的Oakland论文集,论文质量比以往显著下降了吗?似乎也没有。也可能真的在很多年以后回顾system security research的历史,发现2010年春天是个“断层”— 在此之前还算欣欣向荣,在此之后突然终止。但是我会忽略这个可能性。

我觉得更可能的情况是你自己在2010年春天没有找到好的课题,因此有了这个不爽的“发现”。那怎么办呢?我有些建议:一、充分认识到找题就是一件很难的事,要有足够的耐心;二、是不是你的focus太小了?你也许只是在一个specific sub-domain中找。应该拓宽自己的background;三、你找题是不是天天盯着论文集,看看别人缺那块你给补上?这样很难找好的题目。艺术家经常强调深入生活。找题也有些类似 – 应该是来源于对现实事物的观察,向别人展示你独特的视角。如果你能发现一件人们经常看经常用的东西蕴藏着一些一般人没有想到的巧妙之处,别人当然会很欣赏你的科研能力。

Q: 科研在很多时候也就是搞笑。有多少时候科研成果真正有用?无非自娱自乐而已。

A: 我有时有同感,但没有你这么绝对。要知道科研是一种投资,包括积累知识、培养人才。这种投资就象买彩票。买的时候你不知道哪张会中大奖。如果没有科研活动,我觉的人类还会象工业革命之前那么落后,所以可以肯定的是科研活动总体上是推动社会的,而不是纯粹自娱自乐。这好比花了很多钱买彩票,兑奖后发现总体还是赚了的。当然,我们总还是希望少买些中不了的彩票,但这是个research management的问题,是具体的评价奖惩措施的问题,并不会上升到科研对社会的意义这个高度。

其实更重要的一点是:你知道有些人的科研不是搞笑的。如果你有自由选择搞笑或不搞笑,你会选择什么?当然,如果你所在的环境不允许你选择“不搞笑”,那就另当别论了。

Q: 你们微软研究院的研究似乎着眼于非常实际的问题。我们在大学里可能更兴趣有理论意义的问题。这是否是公司与大学的不同目标造成的差别?(Credit: 这个Q&A来自于与一位清华在校博士生的交谈)

A: 我不认为公司研究院“应该”做什么样的研究和大学“应该”做什么样的研究有区别。只要是一流的研究,大家都“应该”做。微软研究院有理论天才,包括Fields Medal winner. 考虑一个课题该不该做,出发点不是说它是理论的还是实际的,而是它是不是top的。

我个人的观点是在system security领域,绝大多数top research是来自实际问题。可能会有理论成分,但最终又回归到实际中去。我总觉得模型、公式、定理都只是一种交流的语言。真正有价值的是观察,思考与实践。另外,美国的顶尖大学的课题似乎也相当结合实际的。

Q: 微软研究院的研究员似乎不太相信数学的力量,似乎不相信理论指导实践这种说法。比如,我提出在搭建实际系统前要建理论模型,进行simulation。他们说没必要,直接搭建实际系统再说。(Credit: 这个Q&A来自于与一位实习生的交谈)

A: 我对你的领域不很了解。如果问我对“理论指导实践”这种说法是否赞同,我觉得因情况而异。到底理论在多大程度上能说明实际?有个很有意思的说法(credit: Emre Kiciman):“理论上说,理论应该吻合于实际;但实际上,它们往往不吻合。”在多大程度上靠理论来指导,似乎是一个经验判断。恰巧你说的这两位不相信理论模型的研究员是圈子里的大牛和中牛,而且这位中牛在博士生期间最有影响的成果之一就是对系统的建模,因此我猜他不算“不太相信数学的力量”的人。我觉得做system research, 没有理论指导也不是什么shame, 倒是practical irrelevance比较要命。

part2

Q: 做好的科研项目需要信心。信心从哪里来?

A: 如果决定选个很好的题目做,信心真的非常重要。不过我觉得真正的信心只有一个来源–自信心。我曾经希望能从导师或其他资深的人那里得到肯定,从而获得信心。现在领悟到这样的信心不会很有意义。你为什么觉得有某个idea非常有希望?大多是因为你有一个直觉,认为其他人没有这样想过。多数情况下你没法用语言表达这个直觉。既然没法表达,别人就很难获得你的直觉。假设我的研究主任现在告诉我这个idea肯定能做出来,那就有两种情况:(i) 如果他能具体列出一二三四条原因证明为什么这个idea一定能做出来,我应该会相当失望,而且不再愿意做这个idea了。你想,我原先很为之激动的idea, 居然三言两语就可以说清楚为什么一定能做出来,那我真正把它做出来又能说明什么?(ii) 如果他不能具体证明这个idea一定能做出来,那么很大程度上他说的仅仅是“我相信你一定做得出来。”实际上这个问题还是推给了我:我自己相信我做得出来吗?

Q: 怎么看待博士学位?

A: 获得博士学位可以算是人生履历的一个挺重要的元素。不说别的,光是花费的时间就够significant,一般是5到6年。我回忆自己获得博士学位的那些年,觉得有很多美好的感觉,自己在科研上确实上了一个层次。这个经历应该会影响我的一生。

不过,获得过博士学位其实和当年当过兵、插过队类似,别把学位本身太当回事。以下分情况讨论几种case:

(1) 博士把博士学位太当回事。我曾经在与几位在大学任教(当然都是博士)的朋友聊天。我们都是研究security的。我们谈到了软件中为什么总是有security bug。不止一位朋友说,“绝大多数programmer水平不高。他们几乎都是学士和硕士。”我不同意这种说法。programming skill与是否有博士学位没有什么关系。(如果非要说关系,我甚至更相信有“反比”关系 — 我相信有一部分博士连Tower of Hanoi和matrix multiplication之类中学生都会的程序也写不出来。)博士如果对“非博士制造”的东西不屑一顾,是不明智的,因为现实世界绝大多数东西是“非博士制造”。头脑被困在象牙塔里的博士很难找到有现实意义的课题,因为他们会觉得这些问题不高深,无非是些“非博士”们没能力在“博士”们的高度看清问题的本质。我觉得想做好的研究,肯定要走出象牙塔,看看复杂、无序和带有各种限制条件的“非博士制造”的现实世界,这才是看清问题的本质。别把博士帽当成孙悟空的头箍来戴。

(2) 准博士把博士学位太当回事。我在做低年级博士生的时候觉得博士学位很值钱。后来,当我在邮箱中拿到博士证书的时候,我感觉到那就是一件除了我家人以外没有人有兴趣看的纪念品。让我真正为之奋斗多年的不是学位,而是对于从事科研工作的能力和勇气的积累。

(3) 非博士把博士学位太当回事。说白了,博士学位仅仅证明了一个人在一个或几个教授指导下做了几年研究,而且合格了。不要对博士学位有更多的解读,比如“很博学”,“很聪明”,“理论造诣很高”,甚至“他/她是计算机博士,你的电脑坏了他/她一定知道怎么修”,等等。

Q: 你导师给你的最有意义的指导是什么?

A: 我的导师在fault tolerance圈子很有名。他是ACM和IEEE的会士。这样的大教授通常很难指望他在具体项目上有什么真正insightful的指导,但是回想那些年,我觉得有两点深刻影响了我的研究。我很感激和佩服他。

第一,很多博士生想夏天去公司实习,他们的导师们不太乐意。理由是“影响科研进度”,“学不到东西”之类。如果导师开恩,一个学生在整个博士生期间也许可以做一两次实习。我的导师恰恰相反。他相信实习非常有益。每年春天,他都给学生们推荐实习机会。最极端的是,每年都有一次全组的会,会上每个人报告夏天将要去哪里实习。说“我不想去实习”的学生要说明为什么,然后他再严肃地教育一番。结果我博士生期间每个夏天都做实习。接触不同的人、做不同的项目,收获很多。尤其是体会到做系统研究应该着手实际问题。这方面公司的研究院有比较明显的优势。

第二,他特别强调要多“看”。他给一个学生an exciting project,往往不是因为他有了什么巧妙的想法,而是因为他找到了(或弄到了)一堆关于实际系统的数据,他很想分析。他曾经让我看securityfocus.com上的bug reports(当时有6500多个),做综合的分析。他觉得这个课题很有意义,我当时觉得太没劲了。我曾问他“我们有什么具体思路呢?有了好的思路后看这些reports才有目的性。”他说“我们还没有什么好的思路,所以我们才要努力地看。我的经验是看得多了就会有思路。”我当时挺不以为然:这叫什么指导?不过我还是坚持下来。渐渐地,我看得越来越快,而且有时一个新的report可以联想到几个旧的,它们不再是完全杂乱无章的。回想这个阶段,我觉得它给我后来的课题打下了基础。我现在相信了“看得多了就会有思路”的说法。 做系统研究,看、想、做和辩都是需要的。为什么我导师特别强调“看”呢?也许是因为不少学生经常忽视它,而陷入到胡想、傻做和穷辩的境地。当你头脑里没有一定数量的活生生的例子,你有什么可想的呢?就算有了一个想法,但你的知识捉襟见肘,你怎么知道它好不好?这种时候,千万别开始做,应该接着看。还有一点,“看”对“辩”很有好处。我在开题答辩时有个教授说,“你提出的方法不太行啊。如果情况是这样这样加上那样那样,你的方法是无效的。”他说的是对的。幸好我对所涉及到的例子比较熟。我很肯定地告诉他,“您说的是对的。不过我看过了大约20个此类例子,没有一个有您说的‘这样这样加上那样那样’的情况。”我觉得他对我的回答是认可的。很多时候,答辩并不是看你想得是否complete,而是你能不能论证它的significance,毕竟我们不是做理论研究的。教授们不太熟悉你的研究领域,因此更可能天马行空地发问。你若没有倚仗自己看的实际东西比他们多,而被他们揪住一起论道,那就有些囧了。

part3

Q: 为什么你建议选题要从实际出发?难道选题不该从内心的兴趣出发吗?

A: 选题当然该从内心的兴趣出发。这点毫无疑问。既然要把兴趣这个词掺合进来,那我的本意就是“建议你培养自己对实际问题的兴趣,这才能找到好的题目。”不过我觉得科研其实是非常personal的一件事。每个人都有各自的原因而兴趣一种特定类型的课题:有人很兴趣高深莫测的东西,也许因为世界上只有很少人懂,而他是其中一个。也有人很兴趣探索艰深甚至无解的难题,而享受每一个progress带来的乐趣。我个人的兴趣是找于现实有密切关系的题。是否高深是否难解都不是影响我兴趣的因素。

当然,还有很大一部分人是为了“灌水”而弄出些高深难解的题目来做,而完全不考虑做出来的东西有没有用。我印象很深的是周星驰的《国产凌凌漆》中的一些“发明”,比如一位安全部研究所的研究员发明的太阳能手电筒(http://www.youtube.com/watch?v=vM3khoMrp-g%EF%BC%8C1%E2%80%9930%E2%80%9D), 以及周星驰一系列“情报员装备”— 手机型的剃须刀,剃须刀型的吹风机,等等 (http://www.youtube.com/watch?v=oPmTuOU0QoY&feature=related)。这些发明不可谓不novel,技术不可谓不先进,但关键是这些东西有什么用呢?唯一的justification就是周星驰说的“作为情报员,外表很重要。”显然太扯了。我有时在读论文(包括在审论文)时有非常类似的感觉。读完introduction的时候,心里说“Wow! Are you serious? You spent so much effort to build this useless stuff?”

Q: 导师说我写的东西不合格,可是英文又不是我的母语,我觉得有些无奈。怎么办?

A: 在我写博士期间第一篇第一作者论文时,我挺认真地写了第一稿。我的导师说我写得很差。我觉得有些委屈。我说我刚来美国不久,英文写作当然不好。导师说的一句话我后来想起来觉得很精辟。他说,“我说你写作不好,不是你英文写作不好。写论文要的是persuasive writing,主要是看你的论据的架构和逻辑性,每句话里使用的词汇和表达方式是否地道倒是次要的。我虽然不懂中文,但你的这篇英文稿,我相信你用中文也写不好。” 后来高年级和工作之后,对导师的观点更有体会。有时也有学生谈到英文写作有困难。我往往会搬出我导师的观点,甚至challenge说,如果你不相信,你就干脆用中文写,看看是不是好文章。如果是,你就完成任务了,翻译任务由我负责。我想如果作为一个导师,只要做翻译工作就可以发很好的论文,应该会偷着乐吧。

part4

Q: 开题是个怎样的过程?

A: 开题对做研究的人来说绝对重要。有些学生对于它究竟是个怎样的过程不见得清楚。我想开题就是为自己的项目定一个蓝图。一个好的项目应该是深度、广度和可行性的结合,而这个蓝图就是在开始具体工作前仔细地思考清楚我要论证什么、论证它有什么意义、什么论据才能论证它(也顺便思考一下为什么我比别人有什么优势更可能做到)。这些问题需要具体的答案,而不能马马虎虎想当然。

有的学生把开题和定方向混淆起来。导师更多时候只是给你一个方向。他(她)今天建议你去研究social network privacy,明天建议张三去研究cloud computing security,后天再让李四去研究new threat on mobile OS。不要以为这就算开题了 - 开题是个费脑筋的探索过程。

Q: 我的不少想法导师说太宽。难道课题的breadth不好吗?

A: 一个开好的题应该能够从“上层”贯穿到“下层”。“上层”就是这个项目的帽子,即主题;“下层”是这个项目的架子,是比较具体的元素。

也许可以设想一个情景,做个换位思考,来理解导师的意见。假设你的团队思考各种方法赚钱。一个年轻人说:“我想去非洲挖黄金,因为如果挖到了,我们就发了!”你会立刻批准吗?应该不会吧。那“去非洲挖黄金”这个课题还需要什么具体的元素呢?我想我至少会问他如下问题:(1)非洲那么大,从哪里挖起?(2)你是用锄头还是挖掘机去挖?(3)计划挖到地面下几尺?挖一立方尺要多少时间? (4)课题分几个阶段?每个阶段判断成功的标准是什么?他如果对这些问题的回答非常含糊,那就可能只想了“帽子”没想“架子”。

在这个例子中,导师的concern并不是针对“去非洲挖黄金”这个帽子本身,而是因为它没有具体的元素支撑。我们可以设想另一种情形 – 这个年轻人回答:“我有可能挖到,因为我相信开罗有一所中学建在某法老的地宫之上[见史料xyz]。我估算它在地下30尺左右。我想从开罗一中操场开始挖。打算雇三个当地人打一口井。如果打到45尺还没有成功,我就转到开罗二中,然后开罗三中,以此类推。”我觉得这样的开题可以算是thoughtful。同样是“去非洲挖黄金”这顶帽子,却让人明白他具体想怎样实施他的计划。虽然他的计划听起来可能有点天方夜谭,但它包含了一套自上而下的思路。

原文地址:科研心得1-4

评论