前言

昨日在utown吃完午饭,走进无人售货的超市,正前方的货架上挂着蓝色、黑色两款卡套。我忽然想到领取博士生校园卡已半年,平日里把卡片揣在兜里,它的边缘已经有些磨损了。与同济的校园卡相比,NUS的校园卡不具有储值功能,主要用于门禁和出示。无论如何,考虑到它还会陪伴若干年的时光,我买了一个黑色卡套。卡片装上去后,又像是崭新的一样了。

也许每个人的博士生涯都是不同的。于我而言,目前为止,它是极其规律的,规律是持久而稳定的,却不意味着必须是单调和乏味。这就像计算机,简单的逻辑经过精妙的组合,能够演化出无穷无尽的内容。日复一日的循环,日子也就过得很快——学习、研究、休息、吃饭、运动、健身、交流、陪伴。

计算机科学中有一种经典的“机制(mechanism)与策略(policy)分离”的系统设计原则。简单来说,“机制”提供一系列的基础操作,“策略”则是调用这些基础操作组成计划、实现意图的主观能动。所谓“分离”,意味着机制不应该过度迎合特定策略、甚至去规定策略;策略本身不需要去以机制的实现为目标,也不必过度受机制所限制。机制是稳定的,策略是灵活的。两者是对立统一、互相推进、协同成长的。这是我推崇的一种生活原则——当然,也包括读博这样一种生活。

于是,我在这样的自我打造的系统里度过了半年,直到看到边缘有些磨损的校园卡,想到这半年的有趣难得,决定写下一点什么。

关于中英掺杂的表述

首先,我想描述并解释一下这样一种现象——搞科研或者在海外留学的人们常常会中英掺杂着说话,甚至写作(非正式)。我接触这样的表述方式始于2021年在绿盟研究院时和申文博老师的一次论文合作。一开始的感觉是惊讶,但准确。在飞速发展的计算机科学和人工智能领域,很多名词在中文、在当下并无普遍认可的译法,直接使用英文便会省却许多时间。另一方面,中文和英文的优势各有不同,既体现在思维上,也体现在表达上。具体场景下,择长者以用之,确实能够提高沟通效率。考虑到这是一篇随笔,后文中也可能会出现这样的混搭写法。无论读者是谁,我想表达的是,这种写法并无恶意。

从工业界到学术界

之前,在绿盟星云实验室,我主要做云安全的风险、防御研究和安全产品孵化工作。刘文懋博士的指导和建议,帮助刚刚走出校园的我建立了对信息安全工业界的认识,并完成了从学生到信息安全从业者的转变。

2019年我刚毕业的时候,绿盟的江苏分公司和南京研究所都还没有成立,我在绿盟南京办事处和其他部门的同事一起工作。星云的主要成员分布在北京、西安两地。一次,刘博从北京来南京出差,回京前找我聊天,让我多读一读公司各种产品的白皮书。一开始我并不理解,认为自己做的是“云安全”,其次是“研究”,读白皮书什么的,没有必要。直到后来我陆续把各种产品的白皮书都读了一遍,挨个梳理了它们的功能、原理、架构设计,才体会到这样做的好处。作为一个全品类安全公司,绿盟的产品白皮书确实蕴含了大量信息,这些信息能够帮助一个初出茅庐的年轻人对一个行业建立起初步认识。

后来,做云安全产品研究时,我也会去找业界其他公司的白皮书读一读。这些都是公开可得的资料,也许还会有一些夸大的成分,但是不影响基本的判断——功能的基本原理、产品的架构设计,结合自己的已有知识,大体是能够推断出来的。这与博士生读论文很像——论文也时常会有overclaimed的成分,但不影响整体的合理性。

除此之外,刘博还很支持前沿探索和开源项目。这帮助我在安全研究和产品孵化之间找到平衡点,并且能够对云安全领域有比较广泛的了解。回过头来看,这种平衡是很清晰、很难得的——除了公司内部项目外,我和星云的同事们一起写了本关于云原生安全的书,做了两项云原生安全的技术研究和一个开源项目,分别在CIS、KCon和OpenInfra Days Asia会议上进行了分享。这些活动让我认识了不少安全行业的朋友,有了更多的交流。2021年,在刘博的支持和联系下,我和申文博老师团队一起写了一篇容器安全的综述论文。这是一次十分难得的机会,也是我第一次用Overleaf写论文。

总体而言,在绿盟的时光十分快乐充实。无论是南京办事处还是北京总部,无论是自己部门还是其他部门,同事们都很好相处,技术氛围和研究氛围都很浓厚。从初来乍到到稳扎稳打,后来,我也面试、招进来过优秀的同道,如来冰、建军和佛忠等,一起做了很多有意义的事情,此处略去不讲。

带着这些经历和经验,我来到NUS,同时期待着自己的独特背景能够给学术研究带来某些优势。事实上,工业界的经验确实为我带来了一些帮助,但完全不是以一开始认为的形式出现。有一次,在梁老师的组会上,我收集了很多工业界顶会的议题来分享,被师兄质疑,他说你如果决定读博,就要趁早扔掉这些东西。虽然那时候我还没有想清楚自己要不要读博,但是这种否定还是让我比较失落。一方面,能够站在Blackhat、Defcon这样的会议上演讲是我的梦想;另一方面,一些学术界成果也会在这些会议上分享。后来,我还专门做了一个小项目来统计、展示那些既发表在学术会议上、又在工业界会议上演讲的成果,这是后话。

那时候,我还不知道学术界、工业界的关注点和要解决的问题有什么不一样,也不知道一个好的学术研究是什么样;那时候,我也读过一些学术顶会的论文——它们经常用一些十分高深的方法去解决一些十分高深的问题。解决问题的最终产物是我熟知的——挖到了漏洞,检测到了攻击,或者实现了恶意软件的判定。在这一点上,学术界和工业界似乎合同归一。后来,当我逐渐熟悉了自己的研究领域,回过头来和曾经的同事交流,提出了那些曾让我眼花缭乱的技术方法,确认它们确实并未在工业界有效落地。原因是复杂的,gap是存在的。只不过,这个gap是双向的。就我个人的双重经历而言,工业界和学术界各有各的长处和问题,也有共同的特点和不足。我更倾向于以一种兼容的态度,尝试将工业和学术中的有益部分融合。在一些终极课题上,两者并无二致。

慢慢地,我读的论文比以前多不少了,更加熟悉学术研究的方法和流程,也陆续有一两篇论文被会议接收。虽然会议依然不是顶会,我欠缺的东西也有很多,但是前路已经不是那么迷茫了。此时回首,我感觉自己读博以来经历了三个阶段——最开始,自己想idea时想一出是一出,没有学术taste,也不清楚它是不是一个重要的问题;再后来,我发现想的idea已经被别人几年前的顶会论文做过;现在,我想到的idea常常会和去年、今年甚至arXiv上的论文撞车。我不知道这个过程坚持下去会怎样,也许idea撞车的情况是科研的常态,也许论文被拒更是。但是,就像这三个阶段一样,我意识到自己在进入“前言”中提到的那个系统、那个循环,也慢慢地在学术上变得自信,在生活中取得平衡。

从工业界到学术界,这确实是一段我未曾想过的旅程。旅程得以成行,要感谢这一路上支持我的许多人。越往后走,见到的世界越大,我越感觉到爱人、亲人、朋友、老师、领导,甚至心怀善意的陌生人的支持是多么重要。这份感激暂且留存在心,激励我也去支持、帮助别人,然后出现在若干年后的博士论文致谢里。

有益的科研习惯

读博之前,我用了很长一段时间来决定要不要读博,其中一个原因就是对未知生活和前程的恐惧。网络上,各种各样关于博士生活多么惨的文章已经非常多了。很多人回忆起来,似乎那都是一段孤独而艰难的时光。当然,这也可能是幸存者偏差导致的。无论如何,确定了读博,那就尽量让自己的博士生活过得好。

个人而言,我习惯于制定计划和按计划实施,虽然时间已经多次证明后者往往无法保质保量,但是这确实削减了不确定性,增加了自己的定力,并且通常有“求其上者得其中”的效果。下面,我想回顾、总结一下这半年养成的一些科研习惯。我并不确定它们是不是正确、最优,也不知道未来自己会不会改变,但是目前的眼界和判断让我坚持着。未来谁知道呢,不变的只有变化本身。

一、合作而非对抗

想了想,还是把这一点放在第一位,因为它至关重要。没有人是一座孤岛,我也不喜欢孤军奋战。我们的生活是由人组成的——爱人、亲人、朋友、同学、老师、领导、下属……读博没有什么特殊,也是人生中的一段旅程。人和事,很大程度上决定着读博生活是否快乐。除非是极端情况,否则我更推崇和而不同、求同存异、真诚相处。对于一个异地求学的博士生来说,同学和老师是这几年中相处时光最多的人,大家是来一起合作的,不是来互相对抗的;是来相互成就的,不是来相互掣肘的。要清楚明白的合作,要互相鼓励支持。

这里,我想引用《士兵突击》相关素材来补充表达我的意思。首先是bilibili博主“宇文数学-”制作的解读视频《不是一个兵王的故事》中的一段:

坚持是许三多在部队学会的第一项能力。坚持分很多种,有一种我们比较熟悉,就是把全世界推到自己的对立面,把所有投来的目光视为毒箭,做事为打脸,怨恨当源泉。许三多的坚持是一种内省,而不是对抗。他不需要预设敌人来保持斗志。

其次是《士兵突击》中袁朗在淘汰成才时说的一段话:

理由(是)你太见外,任何个人和团体,很难在你的心里占到一席之地。你很活跃,也很有能力,但你很封闭。你总是在自己的世界里想自己的,做自己的。成才,我们这伙人不只是为了对抗,你的战友,甚至你的敌人,需要你去理解,融洽,和经历。

成才,你经历的每个地方,每个人,每件事,都需要你付出时间和生命,可你从来都没付出感情。你总是冷冰冰地把他们扔掉,那你的努力是为了什么?为一个结果虚耗人生?你该想的不是怎么成为一个特种兵,是善待自己,做好普通一兵。

最后是成才在离开老A基地回五班前和许三多的对话:

许三多,当了三年兵。你能想起……每一天吗? - 能啊。每一天。

我昨天拼命地在想,什么都想不起来。能想起咱们家想起咱们俩,其他全空白。我怀念钢七连,又臭又硬的钢七连,我的七班,可想不起他们,我把自己想哭了,可想不起一张脸一件事。你是一棵树,我是电线杆,为了出人头地,我把所有的枝枝蔓蔓全部砍光。 - 不是的。

是的。离开家乡的时候,你把自己打开,我把自己关上。 - 不是这样的。

是这样的。现在,我回去找我的枝枝蔓蔓。

合作而非对抗。合作就要精诚合作,就要负起责任。合作的目的是更好地把事情做成。

二、平衡

我喜欢在各种事情之间寻求平衡——研究、运动、健身、休息之间的平衡,忙碌和“与亲人联络”之间的平衡,各个不同研究项目之间的平衡,等等。不过,我确实很多时候也不能做到平衡得很好,只是尽力去做。我知道,有很多人不喜欢这样的平衡,更喜欢在事物的一端持续投入。我也知道,我不喜欢这样。

三、多读论文

毫无疑问,多读论文,读好论文。个人感觉,论文读多了,学术taste慢慢就有了。这个领域有哪些代表性(state-of-the-art,简称SOTA)的工作?进展到了哪一步?这篇论文的新颖性(novelty)如何?它与已有工作对比起来效果如何?论证是否科学合理(reasonable)?

事实上,读论文读多了,对一个领域更了解了,也就会经常看出一些论文的问题,甚至有的存在明显问题的论文已经被顶会接受并且出版了。于是,我们经常会在读完一篇论文后,心生疑问——这也能发出来?常见的问题如下:

  • 看起来作者像没有做任何文献梳理就声称自己是这方面的第一篇工作。
  • 作者说他/她超出了许多SOTA工作很多,好!让我来看看他/她是如何超越那几篇我认为的SOTA的!结果…作者并没有引用那几篇。这个现象在有些我认为非常好的研究团队的论文中也会出现。作者好像“恰好”没有调研到那几篇论文一样。
  • 为什么有的论文的排版完全不符合要求也能被接收(例如,会议A最终发布的某篇论文使用的是会议B的排版)?
  • 作者对这个领域的问题有着很明显的无知,存在着明显的事实错误,只是在套用模型(读最近的某篇AI for security的论文有感)。
  • 作者在论文中承诺论文接收后就会开源,可两年过去了,怎么还没动静?

无论如何,读论文是有好处的,而且读多了,也会发现很有意思。

四、记录科研日志

我开始连续记录科研日志的时间不长,从今年五月份起,到现在也就是三个月的时间。这个东西很有意思——目前我没有发现它显式的用处。但是,它让我很安心,一方面能够知道自己每天做了什么,另一方面,就像硬盘一样,我能够把大脑内存中的程序状态保存到这里,完全放松,直到第二天再恢复相关上下文。

人间修行,如是而已

总体而言,目前为止,我还是比较喜欢当下的生活,知足并知不足,有方向,有机会,也有努力。虽然偶尔也会懊悔,也会不甘,也会遗憾,也会疲惫,但是这些确实让生活更加有滋味和意义。我经常跟彭老师开玩笑说,干啥事都是一种修行。做家务是一种修行,做饭洗菜洗碗也是一种修行(题外话:有的时候真的能“洗到”一些不错的研究idea)。健身、运动、研究,诸事皆然。

读博亦然,我乐在其中。