科研 | 从零开始的科研生活
这半年,从零开始了科研生活,每天在论文和代码海里摸爬滚打。说自己迈入了科研的大门,那是远远不够格的,现在只是一个门外汉伸长了脖颈想往大门里面巴望。
虽然目前仍是硕果一个没有,但我认为科研是不分大小的。用异于一般的学习思维的考量事物,便可称作科研。于此复盘半年的科研生活和思路,自勉之。
科研生活大致可以分为输入和输出(产出),输入大抵是读论文学习,而输出则是项目规划决策。本文大纲如下:
- 输入
- 带着目的做调研
- 数据是普适价值
- 输出
- 看着困难做决策
- 提前反馈链
带着目的做调研
科研的常态便是读文献。一篇文章很长,又要平衡时间利用,所以最早的想法我想先从更高的层次读文章——先读大体,再深入细节。这个思路大致是没什么问题的,但对于一个初学者并不友好。英语阅读习惯的障碍 + 专业术语的缺乏,很大概率 Overlook 一遍文章也不知道它究竟说些什么。
所以我像书虫细嚼每一行文字,不懂的词语去查字典,不懂的术语去查资料,搞懂了再回到论文(什么递归式阅读)。每篇论文边读边做一个思维导图,整理文章的结果和内容。我的思想很朴素,既然专业术语空乏、英语能力不过关,那我就累积阅读量,每个单词都见过了,自然读起来效率越来越高了嘛。
这种阅读思路大概维持了相当一段时间,收益颇深。明显慢慢适应英文的阅读习惯了,精读所有文字也能较快地从少量文章中收获大量相关术语。但这种方式一是时间消耗太大,二是虽然明白了很多专业术语,但仍总能遇到不认识的术语,更可怕的是,即使阅读的时候感觉收获颇多,过几日回过头来印象是所存无几了。
某天学长让我做 Survey,我地把相关文章一股脑地收入 Zotero,兴高采烈地读了一阵,组会前一天做 PPT 准备汇报了,脑中一过嘿怎么感觉什么东西都没有读出来,即使文章上爬满了密密麻麻的标记。
做 PPT 总结的时候,对比不同文章,才开始有感觉——这个领域遇到什么难题?哪些文章做出了什么贡献?一天的收获远远胜过之前一周的工作。虽说没有一周的阅读也不能在一天内总结出文献 PPT,但若节省反复阅读的无效时间岂不是更好嘛!
无脑精读的方法大致存在以下问题:
- 以现在的学术水平,精读是非常昂贵的时间开销
- 世界日新月异,不断有新东西产生,也许永远无法达彻底穷尽某方面的知识,即使是小领域
- 文章有好有坏,时间投资在一篇相对不是较好的文章上并不明智
- 读完没什么印象
综上,无论从现在来看还是放眼未来,无脑精读都不是一个可行的手段。所以要分配阅读的重心,不仅是文章和文章之间要有重心,文章的每个部分之间也要有倾向。倾向的内容就是你的目的,要带着问题来阅读,仔细想想你想要收获什么?目的是 Filter,过滤出文章需要的部分;再将过滤出的内容进一步细筛,这样从浩瀚文献中一步一步筛出想要的东西。
道理很简单,就是即要精读也要泛读,但经过反复试错和迭代得出这么个简单道理,就如独立推导出某某公式定理的喜悦。
数据是普适价值
科研和一般学习还有一个非常大的不同。研究研究,没有确定的东西才需要研究,科研的对象往往是还在发展的领域,而非成熟的理论。一个新兴的事物尚未经过时间的洗礼,各种解释和理论泥沙俱下,难以辨别。更别说人工智能领域解释性本就滞后于实践。
在哲学上,一套思想体系能够自洽并不代表它更优越,自洽只是必要条件。这道理同样适应于其他的一切理论研究,很多时候我只是阅读了一些文章在脑中建立了一套自洽的理论,此后的生活中遇到新鲜东西能便再添上一块砖,甚至对待所有新鲜理论都会带着这么一套理论的先验偏见去观测它。
这个现象是在《智能计算系统》课堂我介绍 Transformer 时察觉的。当时我想侧重分析 Transformer 的可解释性。以往我们说到卷积神经网络的时候,常说因为它引入了图像局部性的 Inductive Bias,说到 Transformer ,常说它引入了全局特点。但是真的就如此吗?卷积核是局部窗口,就代表着会引入局部性吗?局部性到底对于 SOTA 的改良有多少?
《HOW DO VISION TRANSFORMERS WORK?》这篇文章的方法让我耳目一新(你一共肚子里解释性文章没读几篇能不新吗)。这篇文章相比于从原因上解释,反而是直接列出实验中观察到的现象,用傅里叶变换等数学的手段说明 ViT 表现像低通滤波器,而 CNN 表现像高通滤波器。至于什么原因导致了此现象,则着轻笔墨。我记得哲学里检验一个体系似乎也是有某个基石的说法,总之一个理论的成功与否,如果只是在自洽的环里循环永无天日,需要外力介入此环校验,我们不能在自己的相对坐标里考虑事物,要置身在绝对坐标之下。这个普适价值就是数据和数学。
也许在解释性滞后于实验的人工智能领域,去解释模型行为本身就有“先射箭后画靶”的嫌疑,直接列出数据不过多(没什么确凿的数学证明的)解释也许才是更为正确的选择。Data is all your need
看着困难做决策
科研除了输入还得有输出产出。项目思维也同样宝贵。
在做实际项目的时候,一种情况是拥有丰富的经验、明白了各个细节,大家聚一起讨论详尽了就可以照着计划做的;另一种是在设计的时候也并不明晰白会遇到什么困难。就如之前所述,科研对象是新兴的、发展中的,实际情况种往往大多是后者。研究对象领域模糊不清,就极其丰富了决策空间。
类似的,面对广阔的决策空间第一步还是将你的决策空间筛出一部分,就像某些约束条件提出了某些可能解,项目现有的困难使部分决策变为了不可能。项目决策不前时,把项目目前遇到的困难和我们的需求详细列出来。明确了问题后,接着明确在限制条件下一一比较,我们还剩下多少种决策?将大部分不具有可行性的决策剔除后,此时剩下决策可能无法直接比较优劣,便需要下文的思维辅助 ——
提前反馈链
这是我今天组会刚刚得出的经验(哈!大概率会被迭代)。我把项目看作两部分,决策(设计)和评估。数据是科研的普适价值,而评估就是决策到数据的映射函数。决策往往是丰富的、动态的,而评估往往是固定的、静态的。我有很多个思路去做这一件事情,而评估它的方法往往是固定死的,具体量化为某几个数据指标。例如做芯片我可能有很多种架构实现思路,但最后落在数据上就是那几个功耗、面积、算力。
上一周我想着尽快搭出整个系统,组会上老师却指出可以先量化指标再做考虑,我先前也曾想过要把 Design Compiler 的脚本写出来,得到芯片的面积延时等指标,但优先级被置于实现系统之下。现在看来并非是更优的决策。想象一下决策树,在项目越早期做出的决策影响越大,即时补牢才能把亡的羊控制在较低水平。因此,我认为评估方法重要性甚于设计,在搭出系统之前,尽早提前反馈链,弄出测试脚本更为重要。
The Last...
不知不觉又把熬夜记录延长了一天。搞科研真是越搞越感到自身渺小,怀疑和无力是深夜常有的焦虑。前阵子看了 Standford 人生规划课 感觉收益良多,便怀着“进一寸有进一寸的欢喜”继续审视自己的人生。希望门外汉能早些探进大门里看看。
感谢引导我前进的老师和学长们。
—— 23/11/10 于北京中关村