AlexiaChen / AlexiaChen.github.io

My Blog https://github.com/AlexiaChen/AlexiaChen.github.io/issues
87 stars 11 forks source link

做工程或者科研对数学的正确态度 #95

Open AlexiaChen opened 4 years ago

AlexiaChen commented 4 years ago

可能有人做了几年工程,入门门槛高一点的领域的时候就遇到各种各样的数学,又看不懂怎么办。他们可能脑袋里就会蹦出各种各样的问题,比如:

很多不同领域的业内人士,可能就让这些入门的人直接去补数学,打相应的基础,看书,做题去了。

但是我想说,面对那么多内容的数学,真得能学得完么?其实完全没必要一股脑扎进去补习基础,因为基础是永远打不牢的,不要钻牛角尖,不要深度优先的去学习基础,要广度优先,数学也有API,也有抽象层。我为什么会这么说,因为近一段时间的补数学和密码学,还有结合抽象代数的概念学习线性代数,最重要的我今天在知乎上看到了一位答主的话(多位知名大佬点赞,包括何钦尧),深有感触,答主之前是从事科研的,但是现在转行做了算法工程师。

那位答主说:

如果你不是纯数学专业,请不要研究纯数学,不要花时间研究数学证明,不要做数学上的习题,不要解偏怪难的问题。只理解通法通则,只关心意义和实际用途。对于科研而言,知道什么问题可解什么问题不可解,可解的问题大概要用到什么数学知识,要比具体解这个问题来得重要得多。抓框架,放细节,让数学成为你科研的“灵机一动”,这就够了。至于深入研究,书到用时方能读。不以应用为目的而纯以“打一个牢固的基础”为目的的学习,大概会有两种结果:一是容易烦,学不下去。二是好不容易学下去了,然后长期没用到,全部忘光了。 别干这种傻事。真一本本去看各种数学书籍,你就傻了。真正的研究路数是:掌握基本的数学知识(以知道论文,教材里的数学名词含义为准)后,选择一个领域方向,直接上手搞,搞的过程中如果发现某个应用必须有某个数学背景才能理解,你就快速去补一下,记得找最薄的书补习,不需要太多太深,然后继续看,你就会发现,你即跟上了业界的步伐,数学水平(主要是广度)也有了很大提高,而且学到的东西都比较牢固。

其实我就是这样感觉,入门学习椭圆曲线密码的时候,我只要简单了解,群环域,有限域的概念,其实就可以入门了,没必要从头把《抽象代数》补习一遍,把”基础打牢,再去入门“,搞得我好像要把抽象代数考八九十分一样才可以入门似的。学习本来就是螺旋式,迂回式的步进,我在知乎上也发现一个密码学博士,有些时候他说没把《抽象代数》学好,看论文的时候,有些要时不时的复习下本科的内容,就是这么个道理了。

说个例子,我本科有个同学,考了硕士研究生,毕业了,是做数据挖掘的。他就没抓住过重点,我稍微学个《抽象代数》他也说没必要,说是抽代太难了,要搞懂其中个中关系,没个一年半载是不行的,他话里的意思貌似是要《抽代》学到八九十分那样的程度才可以找得到事情做。其实现实工程真不是这样的,因为工程的应用,你真不需要学到太深太好。多好才算好?基础是永远打不牢的,你可以根据自己的感觉来,基础学到刚刚好就可以,不够的时候再去补嘛。难道大部分人学习椭圆曲线还要去学习黎曼几何吗?还要去看懂费马大定理证明吗?椭圆曲线与爱德华曲线是怎样等价的?为了搞懂怎样等价的,弄懂双有理映射,难道我还要去学《代数几何》吗? 代数几何可是弦理论的基础。记住,不要死抠牛角尖,要懂得适可而止。

当然,我这位同学还说过,计算机科学所用到的数学还达到不了本科数学专业,其实这个就是不了解CS,CS的数学,理论起来,要深的可以很深,很纯数学。浅的也就是概率论,线代,微积分这些。不过嘛,综合下来,计算机,特别是工程领域,涉及的数学,平均下来都不深。另外,我个人认为不要被一些数学名词吓到,不懂就去学就是了。

刚开始学密码学的时候,我觉得好难,那么多数学概念,那么多艰深的数学,怎么学啊。然后一个密码学群里的人就回答:其实密码学就是一些公式,你搞懂一些基础的概念就可以学了,但是这不是意味着你就直接用结论公式就可以了,根据自己的学习进展和水平可以试着推下公式,稍微深入点,一步一步来。

最后,切记,不要以”先打一个牢固的基础,再去入门学习“这样的理念去学习,要迂回式前进。我前BOSS他是搞理论物理的呢,数理基础够好了吧?还是数学竞赛保送。但是有些领域依赖的数学,你稍微多问个为什么,他自己都不一定答的上来。一个是即使回答了你也听不懂,二就是他也回答不了,因为他说过,没办法,任何一个领域深入了就是一大堆东西,但其实拿来一小部分就够用了。