不少作research的朋友喜欢top-downapproach,包括我本身。就是说,在开始一个topic的时候,在第一时间就设定了大致的formulation,model又或者methodology。至于选择哪一种设定,每每取决于研究者自己的偏好,知识背景,或者对问题的第一反应。算法
接下来的事情就瓜熟蒂落了,推导数学模型和相关公式以及算法步骤,而后设计程序进行实验。固然少不了再拉上几个相关工做,比较一番。若是本身的设计很幸运地有明显的improvement,因而很是满意,开始写paper(在很多状况下,paper的理论部分甚至提早写好了)。但是,若是不work呢?一般你们会采起下面一些方法中的一种或者几种:数据结构
不管如何,你总算把实验搞定了。可是,为何work呢?除了几条曲线,你总得找一些“让人信服”的理由。在我所在的领域,有一些理由几乎是万能的,于是广泛出如今paper里面:app
还有不少,不一而足。整体来讲,就是增长了某方面的复杂性,推广了模型,或者把某些部分变得更加时髦,数学更深。正由于多了东西能够调节,只要花上足够时间去设定参数,仍是有很大机会能找到一组能获得improvement的参数的。但是,这种improvement是否是真正有意义呢?是否是足够significant,以致于所增长的复杂性是值得的呢?性能
咱们的世界老是无限复杂的,和无数的因素相关,这些因素又老是有某种联系。咱们的前辈们留给咱们的最好的方法,就是从问题中分离出最关键的要素,和最重要的关系,而非不断地增长价值不大的因素,创建意义不大的联系。.net
我并非一个彻底拒绝复杂,可是我我的以为对复杂性的增加应该慎重。每增长一个要素,都应该是基于对问题的深刻分析,而不是先入为主的设想和堂而皇之的理由。这不彻底是知识能力的问题,更多的是一种治学态度——是否是愿意安心下来对问题自己进行深刻细致的解剖,找出问题自己的关键所在,而不是脱离问题预先构想某种“漂亮”模型或者“巧妙”方法,而且经过上面所述的种种方法推销出去。设计
研究是一种创新的过程,广拓思路是必须的。可是真正有价值的novelty应该是创建在对问题自己的深刻理解,确实发现了别人忽略的关键因素,或者主流算法的真正不足,而且创造性地提出解决方法。这须要锲而不舍的努力。真正经得起考验的学术价值,源于解决尚未被解决的问题,而不是使用了某种所谓别人没用过的“新颖”方法来解决原本已经解决的问题,又或者给模型加入某个要素来取得非实质性的性能改进。orm
上面所说的这些问题,几乎都发生在个人身上。而汤老师的不少建议,其实正是指出了这些问题,却没有被我认真思考,反而老是觉得只要理论作得高深,模型设计得精巧,就是好的工做。来了MIT以后,更多地阅读一些有历史价值的文章(如今看CVPR反而比较少了),接触一些更加solid的工做。许多有重要贡献的工做,每每未必有很炫的方法和模型,可是,其对于问题自己的深刻发掘和洞察却令我惭愧。get
要作真正的学问,首先要戒除浮躁。数学