最近这段时间,我反复在想一个问题:什么才是好的创新?
当我们有了一个科研选题,拿去和同行、专家讨论时,往往会被追问一连串犀利的问题。其中最经典的莫过于:“你的这个选题,创新点到底在哪里?”
你会发现,自己很可能会这样去回答:
“我做了更专门的场景。”
“我把别人的方法迁移到了这个问题上。”
“我换了一个结构,效果更好了。”
这些回答不能算错,很多工程进步,本来就是这样积累出来的。但如果目标是做一篇高影响力的工作,只停留在这一层,往往是不够的。
于是我开始重新思考一个问题:真正有分量的创新,和这种以局部改进为主的创新,到底差别在哪里?
一、ResNet 打动我的,是它如何把问题说清楚
带着这样的疑问,我最近开始重新回看一些领域内的经典工作,比如 ResNet。
ResNet 的残差结构,在做 AI 领域科研的人里都很熟悉。但比“知道它是什么”更重要的,是理解它为什么会以这样的形式出现。
因此,我开始反复读它的 introduction,去体会这个 idea 是如何被提出来的。
ResNet 最值得学的,不只是它提出了残差结构,而是它先把问题说清楚了。
它抓住了一个非常关键、也有些反直觉的现象:按直觉来说,网络越深,表示能力应该越强;但在 plain network 里,层数加深以后,模型不仅测试效果未必更好,连训练误差都会变高。
ResNet 没有停留在“深层网络不好训”这个经验判断上,而是把问题进一步推进成了一个更清晰的命题:既然更深的模型理论上应当包含一个不差于浅层模型的解,为什么训练过程却找不到它?
关键就在这里:它把一个模糊的经验困惑,推进成了一个更清晰的优化问题。
一旦问题被这样重述,后面的解法就显得很自然了:不再让若干层直接去拟合目标映射,而是去学习相对于输入的残差。如果理想映射本来就接近恒等映射,那么学习一个“偏移量”,或许会比直接学习完整映射更容易。
这样再看 shortcut,它的意义就不只是“多连了一条路”,而是把原来难以优化的问题,改写成了一个更容易训练的形式。
这也是 ResNet 给我最大的启发之一:伟大的创新,不来自更复杂的技巧,而来自对问题更清晰、更本质的刻画,以及由此导出的解法。
很多经典工作都是如此。它们看似简单,不是因为浅,而是因为已经直接碰到了问题的关键。
所以,看经典论文时,应当反复咀嚼它的 introduction,去体会一个伟大的 idea 是如何诞生的——如何从现象中发现问题,如何从细节中揪出“魔鬼”,如何找到那个根治的解药……
二、创新的水平,取决于把问题理解到了哪一层
很多时候,我们一看到问题,就会很自然地停在第一层。
面对一个问题,第一反应常常是直接对现象做修补:换结构,改优化器,调参数,尝试各种技巧。
这当然可能带来改进,但很多时候,它仍然只是对现象的直接响应,而不是对现象成因的解释。
以ResNet为例,“训练困难”首先只是一个经验观察,而不是问题的充分定义。
如果继续往下追问:为什么更深的模型更难优化?为什么理论上存在的解,训练中却到不了?进一步说,这种困难究竟来自参数化方式、优化空间,还是目标表述方式本身?
当问题被推进到更本质的一层,对应的解法方向也可能随之改变。
三、小结
所以我现在越来越觉得,所谓创新,很多时候不是“加改换拼”的能力,而是“重新定义问题”的能力。你能不能从一个习以为常的现象里,看出一个真正值得追问的问题,往往决定了一个工作最后能走多远。
科研如此,其他领域亦是如此。
如果说更好的创新来自对问题更深一层的理解,那么接下来的问题就是:
在实际研究里,我们怎么判断自己看到的是表面,还是根因?
怎么区分一个工作是在做工程修补,还是在触及更深的科学问题?
(来源:微信公众号“博弈之翼”)
