RYMCU

关于研究方法论的一些思考

zeeland 1 年前
# 待分类

作者:孟啦啦
链接:https://zhuanlan.zhihu.com/p/461133417
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

临近毕业,慢慢地回顾这五六年的研究生活,试图总结出一些做研究的方法论。刚好最近处于逼着自己写 thesis、之前期望很大的方向做到瓶颈了有点贤者时间、学到的东西又不足以总结写成笔记的形式,于是把自己的一些零零碎碎的思考总结成文,勉强做点输出。

科学研究的世界观

自然科学的目标在于理解自然法则,接着利用这些法则去预测及创造。物理学的目标是前者,工程学的目标是后者,生化我不了解就不多说,纯数学在这个框架外有自己的自留地,应用数学提供纯数学和其他学科的连接。在我读博之前把应用数学简单地看成“简单一点的数学”,显然这种看法非常错误,这是此学科的特征而非目标,混淆特征和目标是危险的。应用数学的目标应当是,理解物理工程界不理解的数学工具、理解数学界不理解的实际问题的建模及重点难点,再试图根据建模的特性选择适合的工具、或根据工具的特性选择适合的建模问题。由于应用数学相当于桥梁的作用,在这个领域自然有偏重数学或偏重应用的研究者。我理想中未来的自己是有此学科的目标在心中、对两方都有所了解再做一些真正有桥梁意义的工作,像我老板一样,他知道“真正有桥梁意义的工作”的难度以及在那之前需要的铺垫,目标明确所以不会被他人对他那些铺垫工作的负面评价影响。其实,人各有志,只要自洽就好。我同办公室的同事进入学术圈的初衷是喜欢解一些有趣的数学问题,他对纯数那种抽象度太高的工作不怎么感兴趣,因此选择了应用数学里面比较数学的概率论。他做得很开心很豁达,不会因为别人谈论抽象数学而动摇、不会因为自己的未来未知而彷徨,他了解自己的兴趣点,并相信无论哪个方向都会有他感兴趣的问题可以做,这就够了。

回到物理数学和工程学。虽说从平常人的角度看,物理学工程学已经高度发展到常人无法企及的位置,生活中很多高科技把原理隐藏在背后让人把它们当黑盒子在用,但其实很多问题都缺乏真正的理解和解决思路,只能靠一些工程学的解决方法。举几个例子:

首先是图像处理,这个领域并没有一统天下的原理。之前优化方法火的时候,大家纷纷定义各种 objective fn,根据图像的特征选择合适的函数(比如人眼不喜欢 blur,图像的边边角角很重要,不能太平滑,因此 TV 函数大火;或图像的多层结构导致 wavelet 火起来)。再因优化与贝叶斯的联系,各种 estimator 加入其中,这时有一些物理学统计学模型了,如低光照下 raw picture 和摄影器材接收的光子数有关,因此统计模型采用 Poisson distribution 做 Poisson noise 的模型,这依然是半物理半工程的建模:没人会把摄影整个过程从接受光子到生成电信号到最终成片的每个步骤对应到模型的每项中,只是把某些关键步骤的统计模型加入其中(比如 Poisson distribution),结果不如意时引入 regularization / prior term(prior 的选取是玄学,如上文中所说基本是 try-and-error 后大家总结出哪些函数好用)。再之后神经网络更玄学,结果很好所以就发展了。总的来说这是很工程的学科,缺乏原理因此寻找好用的模型,比较不同的模型再选择表现好的那个,连如何“选择表现好的”都没有量化的 measure 方法,只能靠人眼选择。优化方法发展到最后不同的优化模型做出的图像人眼看上去没有太大差别,因此很难说这些方法的好坏了,学术文章中自然有些量的比较来 claim 新方法是好的,但我对”这些量是否真的能说明好坏“以及”这些量就差那么一点以至于人眼都看不出区别的结果是否值得做“存疑(当然有些天文学医学图像处理可能有好用的量化标准且很 sensitive 这就另说)。JPEG 标准中一些参数的选取是用不同参数在 test images 试过之后根据人的反馈选择的,由此可见人的选择(所谓 eyeball measure)依然是确认自然图片处理结果好坏的方法。我认为缺乏的是对人眼和大脑处理图像的原理的理解:究竟人眼和大脑如何选择哪个图片更自然,而这个问题很难看到短期内进展的希望,因此只好用工程方法做图像处理。我在这里不是说物理学好工程学不好,而是说这两种研究方法是不同的。物理学假定世界有一种简洁的模式,那么我们需要做的是发现这种模式;而工程学并没有什么“ground truth”这种东西, 任何问题都有多解,只要找到一种可行且效果不错的解就行,而且所谓“效果不错”也是人为决定的,对于一个只需要 1 的误差的问题非要做到 0.00001 的精度并不必要,因此这个领域人的因素更多且结果比原理重要,原理是为了把结果扩展到其他问题或者获得更好的结果。

另外例如火箭发射、卫星拍照、飞机控制、3D 打印等等等等。虽说物理学有模型,但这些模型无法做到很精细:把这么多组件结合的物体当作质点建模显然是不够的。之前欧洲某火箭发射时由于未知原因导致火箭运动过程中有旋转,而旋转耗费能量致其无法达到预定位置;卫星也是一样,当对地球的某点拍照时,由于相机的转动会导致卫星的旋转,由于有控制系统虽然不会真的不受控的旋转但会变得抖动。这些旋转的原理无法通过精确建模理解,只好当作工程学问题引入其他装置(比如加个轮子)抵消旋转。飞机控制也是,很久之前波音的 optimal control 建模数学上的解是 bang-bang theory 给出的,因此那时的飞机控制建议是,需要急速转向时就把控制杆迅速调到最大角度(bang-bang theory 是说最优控制只会在极端值取值),可想而知这样做的结果是什么,因此之后的建议改成尽量平滑地进行调整,可见模型和原理的不精准导致即使有数学最优解也并无太大作用。3D 打印的打印材料控制更加没有物理建模,物理对流体的建模依然是 active research area,因此他们的做法是设计几个模型,做出 prototype 来然后选出最好的。我们做应用数学的,应当正视这种学科间研究方法和目的的差异性,并按此灵活调整自己的研究方法,这样才能做出可能真正有用的东西。

最近和一些人聊天,其实不太喜欢这些言论:machine learning / fractional PDE 这些方向不行,因为研究太不严谨。曾经我也是这种言论的一员。但后来我认真的思索了,科研到底是为什么吸引我。我发现正是“有做出意想不到的连接的可能性“吸引着我。如果前人已经把框架搭好、方法和工具做完善了,我的工作只是把思维模式和方法套用在新的问题上,这其实没什么意思。从这个角度看,那些不完整的领域正是我会感到激动的领域,因为那意味着有可能做一些奠基性的工作。我能接受有人说这些领域不好是因为目前已有工具看不出能做出什么突破、或者即使花很长时间做出一些奠基性但意义不大因为领域太过偏门或者热点转得太快,因此从自身角度不值得花时间在这里,但我不能接受有人说这些领域不好是因为里面的人做的都不数学、大多数人都在水文章。首先不是所有领域都是越”数学“越好的,这点上我部分赞同我老板,依然是理论 vs 应用、难度 vs 有用程度之争,这我会在下面再提到。另外,我认为“领域研究的问题是否有趣有意义及值得做”和“这里的人是如何做研究的”是两个不同方面。诚然大家都在水文章代表这个领域的 journal 的公信力不足、因此如果自己做出好的研究可能反而出版难度更大,而且做 literature review 的难度很大,每有一个 idea 都要抢发压力也大,我不否认这些现实考量。但从另一方面来说,这也代表了这个领域是新生领域,研究模式还是”try & error“的实验模式,这和”抽象化形成理论再做推断“是两种完全不同的模式,有些人看不起某个文章是因为那文章没什么难度没什么新意、只是因为跑了某个关键实验发现结果很好因此出名了,但说实话这就是一个新领域的研究模式:大家都对新的方法缺乏了解,因此进行”try & error“这种试错累积经验,经验形成直觉再形成理论的雏形,在这个阶段试错的成本比做理论小得多,因此大家都在试错也不奇怪。经过一段时间到达瓶颈(现在已经差不多了吧),这时能想到的试错方法都被人做过了,剩下的范围太大而试出好结果的可能性太小,这时理论的重要性就体现出来了:如果有理论就可以指出”做出好结果可能性更大“的试错方向,然后试错积累经验和理论研究交替进行,这是学科发展思路吧。只不过现在 machine learning 暂时没有什么特别 promising 的理论(陆陆续续已经有一些有趣的理论了,期待这些理论可以进一步指导工程发展的方向,要交给时间),大家能试的也差不多了,剩下的都是一些难搞的东西,所以试不出什么好的结果,因此会存在”只报告好结果“的有点灰色地带的现象,但我觉得这种学科氛围还是和自己的志向分开比较好。如果你有什么关于 machine learning 有可能的理论的 idea,现在差不多刚好是时候。

一些关于如何做研究、做什么样的研究的思考

每个人做研究的方法都完全不同。最开始我以为做研究和做题一样,就是努力用手头上的知识解一些没有答案的习题。后来才发现这是做研究的最后一步,前面更难的部分在于提出值得研究的问题、了解已有的解法、提出猜想。值得研究的问题要在积累中慢慢获得;已有的方法可以通过文献调查逐步了解;但提出猜想就是一个考察创造力的过程。最开始我的猜想都是一些琐碎的证明细节,只有当问题 well-formulated 成数学问题之后,我才能用我过往的解题经验来提出一些可行的证明思路。这应该是初步的青蛙研究模式:在某个领域深耕、了解所需的数学证明细节、从这些细节中积累经验和直觉。所以,那时的我遇到了我导师的时候完全听不懂他的思路。他是典型的鸟的研究模式:天马行空地寻找各领域间的联系,从任何可能的联系中挖掘可能的深层数学逻辑。在我和他的交流中,我不止一次地感觉我们在做一些民科的事情:我完全不知道解 PDE 和物理粒子的移动有任何关系、以及这种关系跟我们想做的图像问题优化问题有任何联系。直到我受他影响,开始自学物理,走上了物理民科的道路 2333,我才慢慢理解物理当中蕴含着丰富的直觉。其实不光是物理,任何学科都有自己的一些结论和一些思考模式、建模方式,而这些结论和方法有可能翻译成其他学科的语言从而导出对应的结论和方法。

另外,我最近发现我一个对科研的阻碍是对于正确还是错误的执念。我总是觉得,我国的教育并不是缺少批判精神,而是太注重“不能犯错”。惭愧的说,我在科研的最初曾经一度对我老师产生质疑,因为他很多思路都很 hand-waving,一些理解和推导是错误的,但后来我慢慢发现其实产生 idea 的阶段并不需要那么严谨,而是需要天马行空的想象力。我和我老师在想不出来在他办公室抓头发的时候,他总是会说他要 go wildly 了,然后就开始发散思维。科研卡住时被“正确性”框住是很难前进的,而很多时候我看上去荒谬的思路在经过了一段时间之后我才会慢慢懂得我老师为什么会那样想,那是建立在他对于更多的东西的理解上的某种跳跃。有时错误和正确的思路交织在一起会导致这些想法说出来很荒谬,但一旦将错误的部分去除掉就会得到很创新的正确思路。很多时候一些 idea 出现的时候并不那么合逻辑,但最后的结果好就 ok 了。“产生不合逻辑的 idea”比“在框架下思考而只能想到框架内的东西”要好太多了好吗。

至于什么才是好的、适合我的研究方式,究竟是我这种基于(应用层面)的理论之间的“深层”联系先行、然后再来应用好,还是我老板那种一切以应用为先、有了应用再考虑理论好,我还没得到正确的答案。我唯一能说的是,要对自己诚实,当一个问题的理论不完善时,我们要知道我们需要了解的更多,在这个基础上不要排斥理论,当然也不能操之过急,因为就像 rpg 游戏,前置条件达不到时是无法有效率的学习的;另外,我们还应当了解,衡量一个问题是否有价值的重点依然是其应用,正如很多做数学的对 NN 有顾虑的原因,不是因为 NN 的理论不完善,而是因为 NN 发展太快,如果真的投入时间做它的理论、做完之后 NN 已经没人用了,那么这个理论的意义何在。

每次都会陷入理论还是应用的内心争论。时不时质疑自己,理论真的有用吗?艰深难懂更抽象的理论真的比简单易懂充满计算的理论好吗?我依然没有答案。最近的倾向是,不同的理论会有不同的适用范围,抽象和具体都是需要的,但我认为懂得越多的理论确实是比较好,因为它们提供不同的思考角度,学习一种新理论相当于多一种看待问题的思路,但是需要真的学会学懂才行,否则就会是浪费时间,因为不懂的理论过一阵子不用就会忘记了。因此,不要指责学习新的抽象理论的人,而是需要警惕学到半懂不懂就放下的情况。

另外就是自己的喜好和社会的价值倾向的取舍,这也是老生常谈了。永远记得自己的喜好和社会的偏好很难重叠,在这两者之间做一个取舍,最好不要太偏一边。如果你是用爱发电当我没说,但我知道我自己没办法那样。做取舍之前需要对自己和对社会、学科的规律有一定的了解,可以推断学科走向,在符合走向的大范围下找到和自己喜好的交点,去做那一块的东西,就是 sweet spot。有些做传统方向的人在 funding 的会议上抱怨钱都拨去了某些前沿学科,没有拨给他们的方向,不应该这样云云。但其实资本就是短视且逐利的,即使有些有远见的机关出钱,你让他赞助一个百年之后也不一定有用的研究,也很难吧。这就是矛盾点,出钱的人希望资助一些“有用的”研究,而有用的研究不一定很数学、很难、很抽象。其实数学说实话到目前为止只能解决一些简单问题,物理也是假设自然界有简单的规律,简洁性是数学物理很重要的元素。但现在的时代已经变了,虽然不是很愿意接受,但我已经不确定简洁性是不是那么重要了。物理中的复杂系统、神经网络更偏向 overparameterization,因此简洁真的比复杂好吗?扯远了。总之,承认社会的运作规律、在此规律下找到自己舒服的位置,才是明智之举。

如何产生新想法

看一篇文章,找到几个要素,比如 NN 解 PDE 那一类的文章,要素基本是 PDE 类型(用到的 PDE 相关理论性质)、NN 结构,有些还有训练技巧等。文章是一个解决问题的思路,而这思路往往是几个要素串联起来的,当这些要素结合的好的时候就会是好的文章,如若结合不好,则可能造成这些要素的优点互相冲突,这样的文章就是硬凑出来的文章。读新的文章,可以给我们提供新的关于“要素间可以如何结合”的思路。按照这种思路,结合我们手头上的要素,寻找相似性,就可以激发新的研究 idea。例如文章描述了 A 和 B 如何结合,读的时候发现 A 和我们已经理解的 A‘有相似性,那么可以产生以下几种思路:

  1. 平行迁移法。B 能否和 A’结合?(比如读到在 Euclidean 空间 / KL-div 的算法,可以开始思索如果换一个 metric / inner prod / divergence 会怎样,Newton‘s method, mirror descent, Bregman iteration, Wasserstein-GAN, kernel method 等等,有很多例子。并且 A 和 A'的相似性不一定是平级的,比如点和 delta measure 也有“相似性”,那么看到对 sample 点的算法,可以想想在 prob space 对应什么)。
  2. 抽象法。A 和 A'是否可以是更抽象的 A0 的特例?如果是,是否可以将 B 和 A0 结合?如果可以,A0 是否有其他特例 A‘’,从而导出 A‘’和 B 的结合?这是上一点的进一步。
  3. 反向法。如果文章描述了用 B 如何解决 A,那么是否存在用 A 为工具来解决 B 的思路?比如,优化方法可以用来做 sampling,那么 stochastic 方法是否可以用来做优化?
  4. 反向思考。任何结果都可能有其应用。如果没做出想要的结果,比如想要把一个 convex 优化变成另一个 convex 优化,但其实得到的新的优化问题是 non-convex 的,这种 negative results 也许有其他用处:它可能给出解 non-convex 问题的一种思路。
  5. 以上都是基于文章中有的要素进行相似性联想,其实可以更天马行空的联想。比如 Michael Jordan 之前做 Bregman Lagrangian 解释 Nesterov 的时候,我猜他就是看到了 Nesterov 的 ODE 解释,然后想到 Euler-Lagrange equation 和 optimal control 有关,于是就尝试去凑一个 optimal control 的解释。这就是很难想到的创新性研究,中间的联系就只是 ODE。

以上是以创新性为主的 idea 产生思路。研究除了创新性还有实用性,一个创新的 idea 如果不能说服别人它为什么好,也很难卖出去。在这两者之间取一个平衡很重要。如果需要一些可靠的科研 idea,则需要调查文献了解本领域有哪些方法、这些方法的优缺点是什么。看一个新问题时,发现它有那个关键点没被很好的解决,在手头的工具中找到对相应的关键点有优势的方法,接着就可以尝试了。要积累一些大问题中的关键点,比如做 scientific computing 的关键点是 high-dimension、data、noise(uncertainty quantification),自己小的方向也会有一些关键点,记住这些关键点,看新文章、听 talk 时思考能否与这些关键点结合,这也是听 talk 的提问思路。比如听 machine learning 的 talk,实验部分听别人提问经常是,实验是否有加 noise(他们真的做很多实际问题的人就知道加多少 noise 大概准确度会是多少,这种 sota 经验也是判断对方实验结果好坏的必要积累)、是否能解高维问题、更深的网络的 robustness、data 不足时怎么办、参数选取(神经网络几层之类,这些也是实验经验:几层能达到多少的误差,以此判断方法好坏)、计算时间和误差等等。今天听了一个 machine learning 的理论 talk,很多人提问,都很有启发意义,比如他们会问 regularization 换成其他的行不行、是否能用 speaker 的结论和现有 NN 结合加速计算、convex NN 是否适用、ResNet 是否适用、是否可以 generalize 到更深的网络及困难在哪等等。

总结来说,以上两种创新性和实用性的产生 idea 的思路,分别需要想象力和积累。我相信这些都可以通过训练提升。

最后想谈一下如何对待贤者时间的。研究的过程有起起伏伏,不会一帆风顺,动不动就有贤者时间是很正常的,比如在终于做出一个问题之后、或者像我最近一样一个很有希望的方向做到瓶颈没有达到期望。我最近比较严重,因为学习方面和研究方面之前的方向是重合的,在这个方向遇到瓶颈对自己不满,所以不管是学习还是研究都不是很想碰。这个时候我的调节方法是:1. 花点时间在生活上,找一些其他让自己积极起来的事情比如运动(这种就是直接戳大脑让它开心的粗暴却永远有用的方法)。2. 硬让自己做一些之前不喜欢做的琐碎的工作,比如写烂尾文章或者看一些必须要看但是没兴趣的文献等(话说之前和同事聊天,聊到 thesis 的 survey 部分,我说我不想加 survey 了,因为我对本领域其他方法都不了解。我问他为什么要了解本领域其他方法,他说因为了解了之后更加容易做 connection,我说就是读不下去啊,他说那就是你懒嘛。我沉默了一会觉得他说的对,当然他有找补几句说兴趣也很重要云云,但我不得不承认做研究“需要懂得的”和“自己感兴趣的”是不完全重合的两个集合,所以为了口袋里的工具多一点有时候是有必要学一些需要的但是不感兴趣的东西(为了有上文中“实用性“的研究 idea),只不过需要掌握一个平衡)。拿吃东西打比方吧,瓶颈期就像是刚刚吃完一顿期待了太久的大餐但觉得似乎没有自己期待的那么好吃,这个时候不应该再去找更好吃的大餐吃,而是把注意力转到其他地方饿几顿、或者硬是逼自己吃一些很难吃但必须要吃的东西,减少边际递减效应、在达成指标以及感叹“我竟然能吃下去这么难吃的东西”中找到成就感、同时在对比中感叹之前的大餐是多么好吃,这时就会产生动力以及对下一顿大餐的期待。。。

做研究就是找到自己舒服的平衡点,能够了解自己调节自己,懈怠的时候从新知识中获得动力,冲的太快时调整节奏多思考总结,进而在这条路上心态平衡的长期走下去。希望大家学运昌隆。

后发布评论

nice👍