理论与应用之争——一个回归视角

  今天的学术界和工业界、理论界和应用界大多处在一个对喷和互相鄙视的状态,学术和理论认为另外两边是下游、简单、低端的,工业和应用认为另外两边是空中楼阁、虚空索敌、毫无意义、浪费资源。可能各行各业都是。从业者可能是屡见不鲜了,但对于初出茅庐的学生,这可能是非常困惑的行为,会使你陷入人生意义和价值的怀疑和争斗,甚至虚无和抑郁。
  仅希望本文能够为处于困惑中的孩子提供一个视角。
  我主要从计算机科学这个领域出发,但别的领域应当大同小异。

  至少我在做理论计算机科学科学(TCS)的时候,总会有这么一个声音:“你是不是在做一些对生产建设发展毫无作用的事情?”
  这是一件很致命的事情。作为一个坚定的社会主义建设者,我们的价值来源在于自我实现与贡献社会的统一。可是我们做的事情确实谈不上对传统意义的贡献:TCS 的工作不能延长人类的寿命,不能治病救人,不能解决世界饥荒问题,也不能直接推动生产力发展,我们只是在探索知识的边界,追求人类智慧的内核——这是古代贵族做的科学,贵族自有闲情逸致做做学问,但我们在花国家的钱,以此为工作,谋了社会福利。我们凭什么赚这个钱?这应当是一份工作吗?我们人生的意义何在?

  这个问题折磨了我很久,听过很多老师的回答,也浏览了无数知乎。仍然会是不是感到困惑。

  今天大概算是得到了一个我认为合理的答案。

  \

  本质上,这是由于两边都在套用一种旧时代的产学研结合路线去理解对方。

  比如讲这么一个故事,对事实有所改编。
  时间回到上世纪,这时候计算机方面的很多科技还是空白,人们并不懂太多计算机科学,生产力也不算很高,需求也很简单。
  有一天,一位计算机科学家想出了一个最短路径算法,可以用 $O(n^2)$ 的复杂度求某个点到另一个点的最短路径。这是计算机科学的重大突破。
  恰好有一家公司,想做一个车载导航系统。他发现这个最短路算法很符合需求,于是一拍即合,做了个小型设备,载入地图,然后跑最短路算法,这就实现了自动快速选择从起始地到目的地的最短路径。这个产品卖得很好。
  这就是早期的产研合作,是一个非常简单的链条:研究者给出算法,公司将其实现。

  但是十年后,各自都有了不一样的发展。
  对于这家公司来说,导航的需求变得复杂了:地图不再是简单的图模型,起点和终点可以是地图的任意一点,不同的道路收费不一样,车流量不一样,红绿灯不一样,路况实时更新……最后统计发现,现在卡脖子的技术,是各种复杂的权值加在路上,他需要能处理复杂权值的最短路算法。
  对于计算机科学家来说,他发现他的算法可以继续改进,变成了 $O(n \log n)$ 的最短路。这催生了一些有超大规模的图的公司,他们得益于最短路技术的运算效率的突破,产品落地,于是计算机科学家拓展了合作网。但是他并没有考虑复杂权值最短路的 setting。
  那这家公司和计算机科学家的 connection 就危了,供给和需求不匹配,矛盾了。为了维持这个 connection,也考虑到复杂权值最短路的 setting 是一个将来的需求,计算机科学家招了一个学生对这个题感兴趣,由学生来做这个题。

  再过了许久,公司的需求更复杂了,需要做行人导航、自行车导航等各种新导航路线。而计算机科学家则用最短路的算法改进了最小费用最大流,成功推广了费用流的应用。于是他继续去用这个技术做更多的题,学生毕业以后成立了一个校企合作研究所,专门负责用老师的框架处理公司的需求。
  再过了许久,这个研究所也跟很多公司合作了,研究所也发现很多公司有共同的需求,要做分布式最短路,只有解决共同需求才能同时维持跟所有公司的合作,因此研究所重心放在了分布式最短路的课题。那家导航公司要提供多样化选择方案,要做次短路算法,于是自己成立了一个研究部门,专门为自己的业务服务。

  大家再回过头一看,发现都不理解对方了。计算机科学家觉得那公司总是在搞一些有的没的的 setting,这种 setting 解决了对于别的题目毫无帮助;而导航公司则发现你这个人怎么对最短路进行代数研究了,搞一堆代数性质,对自动预测塞车路段有任何帮助吗?没这个功能,那导航就有严重的智能缺陷。
  前者开始抱怨后者提供的横向都是些对科学毫无帮助、浪费时间的事情;后者开始喷前者在做的都是不切实际、浪费经费的研究。

  到底谁错了?
  其实只是这条产学研的链条,由最开始的很短的小链,变成了大规模的长链,曾经仅有的产和研两个端点,不停地分化,各自分化出了下属机构,各机构也有了自己的目标,久而久之,不同的目标演化出了不同的价值取向。当一个领域逐渐成长,做大做强,这是必然的变化方向。
  这种情况下,产和研本就隔得很远,本就应当在做不同的事。仍然以小链的思维去评判意义所在,觉得算法应该拿来就能用,就会出问题。
  学术界,或者说做理论的,需要更通用的框架,或是在一般性问题上更好的解,又或是提出新 idea 催生新的领域。比如 TCS 里你发 STOC/FOCS/SODA,你的题要是加上一长串的定语,肯定就很难中,setting 太专了就不是 broad interest 了。这也是我们在做题时会有的一个思维方式,一个题做着做着发现 bounded degree 能做了,bounded treewidth 能做了,很多特殊图都能做了,那就该往上走了,去总结更普适的规律,再往下深入某个特殊图那是水文章。
  工业界,或者说做应用的,反过来需要契合实际,以自家产品为考核目标,去做专门的适配和优化。它跟上面的思路是相反的,普适的算法能做我的产品,但是效果肯定不够好,我要考虑我这个图是不是 bounded treewidth 的,是不是稀疏的,这个图还有什么特殊性质我得深究下去,这是一直往下走的。
  今天社会的普遍提倡叫“以企业需求为导向进行科研”,实际上针对的也是大链条上中间以及偏企业端的多数科研机构,它们所处的位置决定了它们的定位如此。但是对于大链条的另一端则不然,企业的需求归根结底是企业自己的事,这一端的科研力量本就不是拿来解决企业个别需求的,它可以说是拿来解决企业通用需求的,或者说是激发、创造企业需求的。企业端拿这个标语去绑架科研端的人,那是过河拆桥,企业有今天这个需求还得感谢当初这是一条小链条的时候科研端的贡献,却不见得做导航的公司给 Dijkstra 付过工钱(x
  同样地,理论端也不必抱怨大势不在自己领域,本来这端就是很小的一端,掀起风浪需要更长的传导过程。
  探讨下一步的产学研结合,也是需要注意到这个事实,直接简单地让高校老师做企业的题是不切实际的,让消费端企业从头开始布局基础研究,现状就是总是会附加很多业务需求而不具备普适性。

  只有一点比较蛋疼,就是资源不够,做不到两端都支持。
  这条链条做大做强开始分化,科研端就失去了盈利能力,而把盈利能力集中在产品端了,纯理论科研端只能靠国家经费输血。“以企业需求为导向进行科研”也有一定的先把蛋糕做大的理念。
  其实是不是应该考虑企业端回馈一下整个链条才对呢,同一条链一起长大过来的,分工合作了而已,本是同根生啊(

  光说做理论有没有用,这个还是容易举出反例的。比如前些日子我都看到有人想要学习最长公共子序列的 $O(n^{1.5})$ 的算法。如果你并没有关注计算复杂性的发展,对计算复杂性还停留在“P、NP、图灵机”的概念上,你不会意识到这是不可能的。
  但是始终还是要有一个思维体系去回答所有的 TCS 方向的存在价值。

  曾经在知乎上浏览过怎样的 TCS 是健康的发展,是做到快成纯数的那种,还是要能做偏应用的那种。有个回答是:健康的 TCS,能容得下也应当容下这两批人同时存在。
  把这句话延伸出去可以得到一句正确的话和一句不那么正确的话。
  正确的话:一个健康的领域,应当两头都要有,两头都很有意义,两头都应当得到充分的支持,而不是一山不容二虎的争斗。这就好比人体分化出了不同的细胞,脑细胞说肌细胞不够聪明,肌细胞说脑细胞没有力量,这没有意义。
  不那么正确的话:一个好的研究课题,应当兼有理论和应用,既有其独特的理论价值,也能推向落地做出真正的产品。说没那么正确也是因为上面说的大链条的存在,一整个领域被分化得很开,这样的题目总是有点四不像的。如果恰好找到了这么一个课题,可以说是幸运的,因为这代表着发现了一个新诞生的小链条,你有机会成为某个领域的开山鼻祖了。