我认为“systematic”是非常重要的思想,其重要程度容易被低估。本文旨在记录我的思考,既是对我个人的提醒,也想和小伙伴们交流。
“systematic”的要素 我搜到的systematic的定义是“done or acting according to a fixed plan or system; methodical”。这个定义太简略了,我个人理解有以下要素:
vision and roadmap 首先就是要有发展远景和发展规划。我们拿做研究来举例,好的研究者应该要有心中的蓝图,知道自己多年后要实现的终极目标,每一篇文章,应该是这个终极目标的准备工作或者部分结果。我想需要避免的就是“无助于实现长远研究目标的,ad hoc的工作”。
基于这样的原则,我们就可以产生一些价值判断。比如看起来不够硬核的文章。有一些同学会称之为“灌水”,但是在我看来,如果你清楚地知道这个文章的定位是更高的工作的准备,比如就是帮助自己学习某一个新东西,或者训练低年级学生的研究能力,那么这个文章就是值得的。
当然,vision和roadmap也是不断迭代的,它会随着我们得到新的结果/证据,以及外部环境的变化,而不断更新。重要的是一定要有,并且在其指导下工作。
machinery 我想注重“一整套机器”而非“解决孤立的问题”,我可以举几个例子。
第一个例子是数学中的公理化体系,比如基于测度论的概率论。我们从最基本的东西出发,利用已有的结果,去得到更高的结果,这些结果组成了一个巨大的机器。我们不断利用这个机器去得到新的结果,而这些新的结果又会成为机器的一部分。到最后我们可以得到非常nontrivial的结果,如果不是依靠这个机器,这些结果是绝对不可能达成的。事实上历史上有很多例子,为了解决某一个问题(获得某一个结果)而发明了一整套机器,而这套机器不但可以有条不紊地解决这一个问题,还可以解决别的问题。
第二个例子是DeepMind的一些工作。我发现DeepMind还是很重视搭建machinery的。他们的终极目标是AGI,在对某些问题的研究中,他们觉得relational inductive biases within deep learning architectures是关键要素,因此他们造了一套工具,也就是graph networks,而且做得尽可能general而不是限制在某一个问题。为了方便自己未来的实验,他们写了对应的库。再此之后,他们用graph network的同一套工具做了很多应用性的工作,比如traffic prediction, AlphaFold 2等等,而graph network本身也在各种应用中得到进化,比如引入attention。其实我相信这些应用工作都是他们发展的中间结果,他们想利用这些问题帮助他们建造更好的机器。
我们可以总结一下,machinery强调的是,从某一个小问题出发,抽象出核心要素,搭建一整套机器(而不是把目光局限于这一个问题),用这套机器再去解决更多问题,并在解决问题的过程中不断丰富完善这个机器。
scalability and sustainability 现在的风气非常流行抓住风口赚一波,流行短期效益,而轻视发展的规模化和可持续。
在这方面,我要推荐《Software Engineering at Google》这本书。它一定程度上总结了Google的方法论,试图回答how to scale。不仅仅是在技术层面,也包括文化、管理层面,对非软件工程的从业者也有启发。这本书存在本身,也说明Google真的很强调方法论的总结。
methodology 我想注重“方法论”而非“个人经验或灵感”。如果不能总结成方法论,那么个人的经验和灵感就很难迁移,也就很难有scalability和sustainability。所以一定要有“按照方法论的指导去工作,并不断迭代方法论”的意识。
我想从“方法论”的角度,聊一聊今年全国二卷的作文题,也就是《红楼梦》的那个。事实上,我个人认为这个作文题极好,比我当年高考前后的江苏卷风花雪月不知道高到哪里去了,也比某备受吹捧的欧洲国家作文题的辩经不知道高到哪里去了。因为这个题目讨论的就是关于创新与发展的方法论:移用、化用、独创。它非常务实,又非常general,我无比希望有人能在我18岁的时候教我这种方法论。
第一步,移用,简单说就是抄。要抄得心安理得,要抄得大大方方。哪怕抄得很生硬也没有什么不好,毕竟你啥也不懂,抄就是最好的学习。在抄的过程中积累经验,领悟抄的东西的精髓。
第二步,化用。在对抄的东西不断深入的理解中,知道它的优势和局限性,做一些修改,应用到自己的问题里。
第三步,独创。在不断地化用中,结合自身的实际情况,量变产生质变,最后就有了独创。我们从小被教育要独创,轻视移用和化用,但是哪有无源之水,所有的独创都是能找到脉络的,移用和化用是通往独创的最有效途径。闭门造车,或者在虚空中苦苦思考如何创新,是没有意义的。
个人的学习工作是不是这样的?
企业的技术研发和商业创新是不是这样的?
国家的政治经济文化军事的发展是不是这样的?
这是多么general的方法论啊!所以我要吹爆这个题目!
我打算以后再单独写一篇讨论这个事情。
“systematic”的陷阱 我在这里先罗列一些可能的陷阱,以后有时间再添加。(基于“快速迭代”的原则,我并没有等全部写完再发出来)
1,机械教条与路径依赖,丧失中枢而只剩下无意识的、incremental的优化。这一点我听说Google就有这个倾向。
2,systematic可以帮助、引导思考,但是有些时候也会限制想象。所以我建议two-phase thinking,第一个phase是完全抛弃方法论,天马行空地思考,第二个phase是在框架下思考。两个phase交替进行会比较好。
先到这里了,以后有想法再改。