门外汉复盘半年科研生活

发布时间 2023-11-10 03:00:30作者: DevilXXL

这半年,从零开始了科研生活,每天在论文和代码海里摸爬滚打。说自己迈入了科研的大门,那是远远不够格的,现在只是一个门外汉伸长了脖颈想往大门里面巴望。

虽然目前仍是硕果一个没有,但我认为科研是不分大小的。用异于一般的学习思维的考量事物,便可称作科研。于此复盘半年的科研生活和思路,自勉之。

科研生活大致可以分为输入和输出(产出),输入大抵是读论文学习,而输出则是项目规划决策。本文大纲如下:

  • 输入
    • 带着目的做调研
    • 数据是普适价值
  • 输出
    • 看着困难做决策
    • 提前反馈链

带着目的做调研

科研的常态便是读文献。一篇文章很长,又要平衡不同工作的时间,所以最早的想法我想先从更高的层次阅读文章,先读大体,再深入细节。这个思路大致是没什么问题的,但对于一个初学者并不友好。英语阅读习惯的障碍 + 专业术语的缺乏,很大概率 Overlook 一遍文章也不不知道它究竟说些什么。

所以我像书虫细嚼每一行文字,不懂的词语去查字典,不懂的术语去查 Blog 或是 文章,搞懂了再回到论文(什么递归式阅读)。每篇论文边读边做一个思维导图,整理文章的结果和内容。我的思想很朴素,既然专业术语空乏、英语能力不过关,那我就累积阅读量,每个单词都见过了,自然读起来效率越来越高了嘛。

这种阅读思路大概维持了相当一段时间,收益颇深。明显慢慢适应英文的阅读习惯了(最直观的反馈就是雅思阅读能上 8.5 了),精读每一部分的文字也能较快地从少量文章中收获大量相关术语。但这种方式一是时间消耗太大,一篇文章,彻底精读要消耗好几天的时间才能完成,另一点是虽然明白了很多专业术语,但仍然总是能遇到不认识的术语,更可怕的是,即使阅读的时候感觉收获颇多,过几日印象是所存无几了。

某天学长让我做 Survey,我高高兴兴地把相关文章一股脑地收入 Zotero,兴高采烈地读了一阵,组会前一天做 PPT 准备汇报了,脑中一过嘿怎么感觉什么东西都没有读出来,即使密密麻麻的标记爬满了文章。

做 PPT 总结的时候,对比不同文章的内容,才慢慢有感觉这个领域有什么问题,哪些文章有什么创新点。一天的收获远远胜过之前一周的工作。虽说没有一周的阅读也不能在一天内总结出文献 PPT,但若节省反复阅读的无效时间岂不是更好嘛!

无脑精读的方法大致存在以下问题:

  1. 以现在的学术水平,精读是非常值得考虑的时间开销
  2. 世界日新月异,不断有新东西产生,也许永远无法达到穷尽小领域所有术语和技术那天
  3. 文章有好有坏,时间投资在一篇相对不是较好的文章上并不明智
  4. 读完没什么印象

综上,无论从现在来看还是放眼未来,无脑精读都不是一个可行的手段。所以要分配阅读的重心,不仅是文章和文章之间要有重心,文章的每个部分之间也要有倾向。倾向的内容就是你的目的,要带着问题来阅读,仔细想想你想要收获什么?目的是 Filter,过滤出文章需要的部分;再将过滤出的内容进一步细筛,这样从浩瀚文献中一步一步筛出想要的东西。

道理很简单,就是即要精读也要泛读,但经过亲身试错和迭代得出这么个简单道理,就如独立推导出某某公式定理的喜悦。

数据是普适价值

科研和一般学习还有一个非常大的不同。研究研究,没有确定的东西才需要研究,科研的对象往往是还在发展的领域,而非成熟的理论。一个新兴的事物尚未经过时间的洗礼,各种解释和理论泥沙俱下,难以辨别。更别说解释性本就滞后于实践的人工智能领域。在哲学上,一套思想体系能够自洽并不代表它更优越,自洽只是基本条件。这道理同样适应于其他的一切理论研究,很多时候我只是阅读了一些文章在自己的脑中建立了一套自洽的理论,此后的生活中遇到能够加入这个体系的便再添上一块砖,甚至对待所有新鲜理论都会带着这么一套理论的先验偏见去观测它。

这个现象是在《智能计算系统》老师让我介绍 Transformer 时察觉的。当时我想侧重分析 Transformer 的可解释性。《HOW DO VISION TRANSFORMERS WORK?》这篇文章的方法让我耳目一新(你一共肚子里解释性文章没读几篇能不新吗)。我们说到卷积神经网络的时候,常说因为它引入了图像局部性的 Inductive Bias,说到 Transformer ,常说它引入了全局特点。但这篇文章相比于从原因上解释,反而是直接列出实验中观察到的现象,用傅里叶变换等数学的手段说明 ViT 表现像低通滤波器,而 CNN 表现像高通滤波器。至于什么导致了此现象,则着轻笔墨。我记得哲学里检验一个体系似乎也是有某个基石的说法,总之一个理论的成功与否,如果只是在自洽的环里循环永无天日,需要外力介入此环校验,而且是普适的评判标准,这个普适价值就是数据和数学。

也许在人工智能理论本身滞后于实验的领域,去解释模型本身就有先射箭后画靶的嫌疑,直接列出数据不过多(没什么确凿的数学证明的)解释也许才是更为正确的选择。

看着困难做决策

科研除了输入还得有输出产出。做项目的思维也同样宝贵。

就如之前所述,科研对象是新兴的、发展中的。在做实际项目的时候,一种情况是拥有丰富的经验、明白了各个细节,大家聚一起讨论详尽了就可以照着计划做的;另一种是在设计的时候也并不明晰会遇到什么困难。而实际情况大多是后者。研究对象领域模糊不清,就极其丰富了决策空间。

类似的,面对广阔的决策空间第一步还是将你的决策空间筛出一部分,就像某些约束条件提出了某些可能解,项目现有的困难使部分决策变为了不可能。项目决策不前时,把项目目前遇到的困难和我们的需求详细列出来是我近期钟爱的方法。明确了问题后,接着明确在限制条件下我们还剩多少种决策,此时决策可能是无法直接比较优劣,便需要下面的思维辅助 ——

提前反馈链

这是我今天组会刚刚得出的经验(哈!大概率会被迭代)。我把项目看作两部分,决策(设计)和评估。数据是科研的普适价值,而评估就是决策到数据的映射函数。决策往往是丰富的、动态的,而评估往往是固定的、静态的。我有很多个思路去做这一件事情,当评估它的方法往往是固定死的,具体量化为某几个数据指标。做芯片我可能有很多种架构实现思路,但最后落在数据上就是那几个功耗、面积、算力。

我上一周想着尽快搭出整个系统,老师却指出可以先量化指标再做考虑,我先前也曾想过要把 Design Compiler 的脚本写出来,得到芯片的面积延时等指标,但优先级被置于实现系统之下。现在看来并非是更优的决策。想象决策树,在项目越早期做出的决策影响越大,即时补牢才能把亡的羊控制在较低水平。因此,我认为评估方法重要性甚于设计,在搭出系统之前,尽早提前反馈链,弄出测试脚本更为重要。

The Last...

不知不觉又把熬夜记录延长了一天。搞科研真是越搞越感到自身渺小,怀疑和无力是深夜常有的焦虑。前阵子看了 Standford 人生规划课 感觉收益良多,便怀着“进一寸有进一寸的欢喜”继续审视自己的人生。希望门外汉能早些探进大门里看看。

感谢引导我前进的老师和学长们。

—— 23/11/10 于北京中关村