首先祝朋友们中秋节快乐!
因为过去三个月的实习工作很繁忙,这么已经很长时间没有更新了。这个夏天参加了两次会议(CVPR和ECCV),在微软完成了一个新的project,这些经历都给了我新的启发。
不积跬步无以至千里
很多在这个领域做research的朋友抱怨,这个领域在过去相当长的时间没有“突破性”的进展了。在过去,我也一直抱有这样的看法。不过,如果比较最近两年的paper,以及20年前的paper,其实,还是可以看到,在很多具体的方向上,我们都已经取得了长足的进展。很多在当年只是处于雏型阶段的算法和模型,经过整个community这么多年的努力,现在的性能已经接近或者到达实用的水平。
虽然,在每年的各大会议中,非常激动人心的paper很少,可是,如果我们把某个方向过去10年的文章串在一起,我们会发现,这个方向的前沿已经推进了不少。这个过程有点类似于进化。在每年发表的成百上千的paper中,真正有价值的贡献只占很小的比例。但是这小部分的贡献能经历时间的考验,被积淀下来,并且被逐步被广泛地接受。当这样的进展积累到一定程度,整个方向就已是今非昔比。
在这个过程中,不同类型的paper其实发挥着不同的作用。举一个简单的例子,在很多问题的传统模型中,因为建模和计算的方便,都喜欢使用L2 norm来测量与观察数据的匹配程度。而近年来,越来越多的模型开始改用L1 norm来取代L2 norm,并且在性能上获得很大的提高。这样的变化起码经历了10年时间才逐步受到广泛的注意。在较为早期的工作里,部分的researcher在实践中发现似乎用L1 norm性能更好,但是大家并不是一开始就深入了解这背后的原理的。于是,这样的观察也许只散见于不同paper的experiment section或者implementation details里面。随着这种观察被反复验证,就会有人进行系统性的实验比较,使得这些观察形成更为可靠的结论。另一方面,理论分析也随之展开,希望能从更深的层次上来剖析其背后的原理,甚至建立严格的数学模型——于是一个本来只是实验中的heuristic的方法终于具有了稳固的理论根基。这些理论将启发人们提出新的方法和模型。
也许在很多人看来,从L2 norm到L1 norm的变化,只是一字之差,不值一提。但是,这种变化对于全领域的影响非常深远,不仅仅在很多具体的topic上带来性能提高,而且引导了学科的发展趋势——robust fitting, sparse coding / compressed sensing受到热情关注,和这种变化是密切相关的。
我在和一些同学交流的时候,发现有些人特别热衷于解决“根本问题”。壮志固然可嘉,但是,我始终认为,根本问题的解决离不开在具体问题上的积累和深刻理解。这种积累,既包括理论的,也包括实验的。至少,对于像我这样的普通人,我觉得,获得这种积累的唯一途径就是大量的实践,包括阅读paper,建立数学模型,推导求解算法,自己亲手把程序写出来,在实际数据中运行并观察结果。新的idea是思考出来的,但是,这种思考是需要建立在对问题的深刻理解上的。从石头缝里蹦出有价值的idea的概率,和彩票中奖没有什么区别。
什么是有价值的?
每个人对于一个工作的价值会有不同的判断。我在这里只是想说说我个人的看法。Research 和 Engineer 不太一样的地方在于,后者强调work,而且倾向于使用已经proven的方法;而前者更强调novelty——创新是Research的生命。
一直以来,一些paper有这样的倾向,为了显示这个工作的“技术含量”,会在上面列出大段的数学推导,或者复杂的模型图。很多的推导只是把一些众所周知的线性代数结论重新推一遍,或者重新推一下kernel trick,又或者optimization里面的primal dual的变换。可是这些东西再多,在有经验的reviewer看来,只是在做标准作业,对于novelty加分为零。
真正的创新,在于你提出了别人没有提出过的东西。创新的内涵可以是多方面的:
- 建立了新的数学模型,或者提出了新的解法
- 提出的新的应用
- 提出新的框架,用新的方式来整合原有的方法
- 在比较性实验中获得新的观察
- 统一本来分开的领域,模型,或者方法
创新可以体现在从理论,建模,求解和实验的各个环节之中。判断创新与否的关键不在于有多高深的数学,不在于使用了多时髦的方法,不在于做一个多热门的topic,而在于是否make a difference。
另外,我觉得,创新的大小不能绝对而论。有一些在实验中用于improve performance的小trick,也许能被有理论基础的researcher开拓成全新的方法论,甚至建立严密的数学基础。很多paper中都埋藏着这样的金子,等待trained eyes的发掘(可能连paper的作者自己都没有意识到~~)