为什么科技互联网公司越来越重视数学?

链接:https://www.zhihu.com/question/376741737

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

数学,有的小伙伴只愿永远远离它,有的小伙伴却为它入迷。我们爱恨交叉的学科,在工作中会起到多大的作用,在如今互联网公司中,是否越来越重视数学,为什么?让我们一起来看看知乎高赞回答。

作者:贾扬清
https://www.zhihu.com/question/376741737/answer/1059438493

先说我的观点:从帮助实际应用的角度来说,懂基础数学,同时愿意上手尝试的人,是最好的综合性人才。具体的说有两点:

  • 基础数学可以提供可以证明的方法突破。

  • 基础数学和工程实践是一个乘法关系,可以相互放大它们的影响。

在最近人工智能的科研和实践当中,很不为大家所知的一点是计算的加速,因此我就举一个计算加速的例子。在卷积神经网络当中,最花时间的一个计算就是卷积计算:它耗费的时间是如此之多,以至于在一个图像识别模型当中,绝大多数(超过90%)的计算量,都是花在卷积上面的。非常多的框架软件,硬件芯片设计,等等,都在解决这样一个问题:我要算一堆乘法和加法,我怎么让每个乘法和每个加法算得更快?更直白点讲,就像用算盘拨算珠,我怎么把我手指头弄得更快?

但是从数学的角度来说。我为什么不能索性少算一点呢?

1.”我可以证明我能少算一点“

这个正是在2015年的时候,Andrew Lavin和Scott Gray做的一件事情:他们通过一个称作Winograd的数学方法,证明说,对于3*3的卷积(这是绝大多数当时模型当中的卷积参数),他们可以将卷积当中的乘法计算量降低到之前的九分之四:也就是说,可以在理论上将计算速度提高2.25倍。

我们辛辛苦苦调了那么多程序,用SIMD,cache locality,等等,都是在挤牙膏,一下子提升2.25倍理论性能,是不是很诱人?

因为Winograd的具体解释相对比较琐碎,所以我用一个它的前身,Strassen的快速矩阵算法,来解释一下。我们都知道,如果我们需要计算两个矩阵的乘积,我们需要计算一系列乘法和加法:

最简单的情形,如果我们需要计算两个2*2的矩阵的成绩,那么通过矩阵乘的定义,可以这样计算:

因此我们需要做8次乘法和4次加法(每一个C矩阵当中的值需要两个乘法和一个加法)。用更加数学的方式来说的话,对于两个n*n的矩阵乘,最简单的算法应该会涉及到n^3次乘法和n^2(n-1)次加法。也即O(n^3)复杂度。也许你会觉得这是个不可思议的事情:这都已经是定义了,那我肯定得把这八个乘法都给算一遍,怎么能省下来呢?

Strassen在他1969年的文章中提到,我们在数学上其实可以做得更好。拿上面的2*2矩阵为例子,我们可以构造一系列很有意思的中间数:

一共用到7次乘法以及10次加法。

这样,我们的C矩阵就可以这样来算:

最终,我们用到了7次乘法和18次加法。通过数学的变换方式,我们将乘法的数量成功降低了八分之一:这个是理论上可以证明的。

(当然,一个显然的问题就是,为什么我们要关注乘法,而不是关注加法数量?这个和实际应用有关系:一般而言,我们认为乘法比加法所需要的计算更加复杂,所以我们会关注乘法的数量;另外,上面的所有计算当中,小写的a/b/c/m都可以从简单的数字变成子矩阵:而子矩阵的乘法(O(n^3)复杂度)比子矩阵的加法(O(n^2)复杂度)要复杂很多,所以减少乘法的数量是对于运算更加有效的。)

我觉得这就是基础数学(或者说,也许这个还不是基础,还有点偏向应用)的好处:在我们埋头做工程的时候,有时候抬起头来一看,哇,数学方法的创新可以形成降维打击。这是最让人兴奋的地方。

2. 基础数学和工程实践是一个乘法关系。

如果你觉得今天所有的矩阵计算都在用Strassen算法,那你就错了:在实际应用当中,Strassen算法还面临着很多其他的挑战:

  • 实际的浮点数是有比特数限制的,Strassen算法因为使用多次加法,数值的稳定性会差。也就是说,“算不准”。

  • 理论上的加速,还需要和硬件关联起来。现在的硬件因为乘法和加法在指令集层面的结合(fused multiplication and addition, FMA)以及指令流水线的缘故,最底层的乘法和加法如果不平衡,反而会造成减速

  • 在通过Strassen算法做矩阵的乘积的时候,还需要考虑具体实现当中的cache locality的问题

如此种种。Winograd也是类似:今天,Winograd出来以后,在现有的深度学习加速库Winograd在许多新的应用当中,因为越来越多地使用到separable convolution,depthwise convoluiton等等,因此,也不一定是任何的convolution都能用上。

应该说,工程实践经常是一个很”脏“的事情:环境不同,需求不同,不一定每一个很空灵的数学成果都能够实际落地下去。这个时候就特别需要”有手感“ - 一方面需要懂数学,一方面要能够懂需求。

不过,最后话说回来,这个问题兴许除了目标导向,“什么有用”之外,还有另一层更长线的原因:数学本身就是一个非常锻炼思维的场景,如果我们需要提升自己的认知水平和技能,那就需要在数学化、逻辑化思维上面多做训练。数学也许没有直接的用处,但是懂数学,触类旁通,这个肯定是有用处的。

作者:Shiva
https://www.zhihu.com/question/376741737/answer/1058562743

作为一个数学系的博士生又去互联网大厂实习过的同学

互联网公司并不重视数学

或者说他们理解的数学跟数学系的理解的数学完全不一样

他们在乎的还是要解决问题

而且他们的问题不简单

非常非常困难

随时随地丢问题出来

可能这个问题需要是数学规划,那个问题需要概率统计,数学系的同学本科学的太浅了,研究生开始就专攻一个方面,他们的问题其实往往我们也解决不了

他们解决不了的问题希望数学家给一个公式解或者确定解,如果你能给,那你就牛逼大发了,至少年薪百万

但问题是他们的大部分问题并不容易,相反非常困难,难到我觉得解决了就可以发paper的地步,或许真的要丘成桐t陶哲轩他们来解决吧

但好的一点就是解决不了也不碍事,他们有工程的办法,比如蒙特卡洛或者暴力求解之类的。

总之就是非常无力,感觉自己学的实际上手路途还很遥远。

作者:苏远
https://www.zhihu.com/question/376741737/answer/1221649837

虽然都叫程序员,但程序员和程序员之间,完全是不同物种。

第一类,称为程序员天龙人,他们名校毕业,师从顶级导师,一年一篇NIPS,CVPR。

他们游走在各大公司,DeepMind,FAIR,Uber ATG,Pony.ai,Airbnb,阿里达摩院,争相高薪聘请。

他们紧扣时事热点,风口上飞翔。人工智能,大数据,云计算,区块链,无人驾驶。。

他们百万年薪,千万融资,福布斯精英榜,成功有如探囊取物。

对于他们来说,数学确实是安身立命之本。

第二类,称之为社畜。

他们整天的工作就是CRUD,写网页,做app。

看着天龙人的成功,幻想只要我努力,就能像他们一样。

殊不知,命运的齿轮,早在那个高考后的下午就注定。

少数几个幸运儿,奋斗成了阿里P8,腾讯T4,他们站在了社畜链顶端,可以和天龙人谈笑风生。

他们开始附庸风雅,大谈数学之美,和自己CRUD的时光做告别。

我在康奈尔的时候,跟教授做过一段时间研究,课题是2D照片的3D重构。

各种矩阵投影变换,物体的建模,不同材质表面的光反射,确实都要用到数学。

可是,大多数互联网公司真的需要用到这些吗?

去招聘网站看下,99%的岗位,需要的无非Java,JavaScript,Python,SQL等。

贾扬清说的没错,对他来说,卷积网络确实是基础中的基础。可是别忘了他的title,清华,伯克利,Facebook,AI 架构总监,阿里副总裁。。。

广大社畜,工作中有几个能用到卷积网络?

以后这个趋势,还会越来越明显。

AI,ML,CV是一条路,CRUD是另一条路。

你以为的数学要求:

离散,统计,线代,拓扑,数论,群论。。

实际工作中的数学要求:

for(int i = 0; i < 10; i++)

大多数互联网公司的数学要求,996三个字认识就行了。

作者:么西么西
https://www.zhihu.com/question/376741737/answer/1068742154

SDE的那些技能,只要人在那个岗位上,早晚是可以基本掌握的(无论如何也掌握不了的早被调岗了),所以35岁的码农不出意外比25岁的强,但和30岁的相比优势就不明显。

但数学基础,没有长期、系统、脱产的学习和实践,是很难掌握的,所以如果你本科出身、工作十几年的领导完全不理解你开会时在说什么,不要惊讶,这都是正常现象。

数学能力在实际工作中很难提高,是因为绝大部分工作都讲究产出和效率,不会留给你大量的时间去研究公式,基本都是要求一两周内就能看到点成果,然后再考虑优化迭代。这时就要求码农有比较好的数学基础,哪怕你不知道那个模型是怎么推导出来的,至少也能在短时间内看出这个模型的核心,到底是真稳定还是纯忽悠。

另外说点现实情况,我见过有些公司拿着N年前的模型一顿猛操,各种优化打补丁,结果被别人拿着github刚扒下来没两天的模型碾压,非常残酷。你这时肯定会问,这些模型都是开源的,他们怎么不自己早点去看?这里的原因其实刚才已经说了,项目进度紧,需要短时间内看到疗效,所以没太长时间研究新东西。那为什么需要很长时间来研究?因为数学基础不够,看不懂。

作者:鄢志杰
https://www.zhihu.com/question/376741737/answer/1059332460

曾经看过一个漫画,说的是化学、物理与数学的区别。时间有些久了,但意思还大概记得:

第一格漫画里画的是两个化学家,其中一个惊呼:“完了!药品的配方算错了!”,结果“砰”的一声,做实验的大楼爆炸了;第二格漫画里画的是两个物理学家,其中一个惊呼:“完了!小行星的轨道算错了!”,结果“砰“的一声,小行星撞上地球,人类灭亡了;第三格漫画里画的是两个数学家,其中一个惊呼:“完了!费马大定理证错了!”,结果呢,什么都没有发生。

这就是数学,它有时是如此重要,而有时却是“无用之美”。当今的科技互联网公司,越来越重视基础数学,正是看中了它所蕴含的最最基础的“源动力”。可以说,数学在很多方面乃是互联网的灵魂。

你若不信,试举几例。

互联网是一个典型的分布式系统,无数的计算机通过网络连接和通讯。那么问题来了:在一个分布式系统中,由于各台计算机自身的时钟是无法做到精确一致的。当计算机A和B分别通过网络向计算机C发送了事件a和b,在C接收到这两个事件后,怎么能知道是a事件先发生、还是b事件先发生呢?这个问题是如此简单,但又是如此重要。如果这个问题无法确定,分布式系统的时间先后次序将会乱作一团。

好在有数学前来帮助。Lamport在1978年的一篇论文《Time, clocks, and the ordering of events in a distributed system》中,用数学的方法证明了一个bound。使用logical clock的概念,使事件的相对时间关系变得有序。这项工作构成了分布式系统中时间这一基本概念的基础,Lamport也因为这一贡献(以及其它一系列贡献)获得了2013年图灵奖。没有数学的贡献,互联网不会是今天的样子。

再拿大家都在使用的淘宝来说,今天,打开淘宝搜索,每一个query背后的分布式处理需要用到数学;如果您使用语音搜索、拍立淘等等AI搜索,背后的深度学习算法无不是数学;当你下单完毕,网购的包裹如何最高效的装箱、并且预测您的快递在何时到达某地,也都需要数学;打开淘宝直播,高清的视频编解码还是需要用到数学。可以说,数学的应用已经超越了普通大众难以理解的分布式系统时钟同步,悄然的融入了我们生活的方方面面。对于互联网科技公司而言,用好数学就意味着更高的效率、更好的服务。

在互联网金融领域,同样的事情也已经发生。在电影《21》(中文名《决胜21点》)中,MIT的天才数学家团队,以记忆、心算及团队合作,借由数学的计算横扫拉斯维加斯,也让“大吉大利,今晚吃鸡”(Winner Winner Chicken Dinner”)的俗语火了起来。今天,已经有不少金融科技公司通过高频交易等手段去操作转瞬即逝的套利机会。区块链技术及其之上的数字货币,发展方兴未艾。数学背后隐藏着巨大的商业机会,今天的互联网科技公司具备将数学与商业链接起来的先天优势,这也正是它们越来越重视基础数学的源动力。

在AI方面,数学模型同样作为基石,支撑了上层应用的突破。拿笔者所从事的语音技术研发来说,从GMM-HMM及其背后的maximal likelihood estimation,到deep neural networks及其背后的stochastic gradient descent,数学模型在语音识别领域的应用不断推动准确率提升,让很多此前难以想象的语音识别应用成为现实。

不难看出,数学仍然是、且必将继续是当代和未来诸多应用技术的基础。在错综复杂、瞬息万变的当下,数学之美带给这个世界更多的确定性。它是如此简单,可以在喧嚣之下让人类洞见本质。它又是无比复杂,即便用0和1也能够去表征万物。

作者:Skyfall
https://www.zhihu.com/question/376741737/answer/1059340678

正如甜草莓博士所说,未知问题被归纳进数学框架就能被提供可靠的解决思路。

因为当一个信息科学(或者大多科学)问题能被正确归纳进数学框架,数学就能以可靠的、定量的方式提供分析/解决思路,甚至可能直接给出答案。可以这么说,数学和数学思维是分析复杂系统/各类行为、解决未知问题的最佳工具。

科技公司华为中兴立身之本就是通信理论的发展,而通信理论的基石就是香农老先生对信息的度量做出的伟大贡献。1948年,香农发表了划时代的论文《通信的数学原理》,奠定了现代信息论的基础。从此以后通信理论变成了组合数学与概率论的沃土。

通信行业向来都是重视数学的,例如我博士期间的培养方案除了通识课外基本都是数学。细数一下数学课有随机过程、泛函分析、信息论、矩阵分析、运筹学、凸优化、机器学习,甚至还要去旁听一下概率图、随机优化与极值理论相关的课程,反观专业基础课只有高等数字通信与通信网。

博士期间培养计划

这也体现了通信理论越往上的研究越偏向数学。为什么这么重要呢?举个例子,

Coded caching

在缓存(Caching)领域,目前编码缓存便是一个数学问题,对于通信理论的模型是非常容易理解的。缓存系统分为两个阶段,一个是数据的放置阶段(Placement phase),在通信链路空闲时期,利用空闲的频谱资源向用户发送大小为M的数据包存在用户的缓冲区(Buffer)里面,这样如果在高峰时期用户请求的数据如果自己缓存区里面有了就不需要再从通信链路里面发送了;二是数据的分发阶段(Delivery phase),在高峰请求时期如何发送数据包才能让每个用户都得到请求的满足,并且还能使链路数据量最小。

如果随机存储,也就是两个用户随机放置A与B文件(假设两个文件大小都为M),通过概率论的知识,可以知道在高峰时期平均还需要发送R=M的数据量。但是通过图二的编码方案,我们在高峰时期只需要发送R=M/2的数据量,节省了一半的链路资源。

这只是一种两用户两文件的简单的编码方案,现实系统面对多基站、多文件、多用户的场景,在这个课题上组合数学、概率论与图论大有可为。这也不难理解为什么越来越多的科技公司需要数学,因为顶级问题的解决其实都源自于数学!

作者:桔了个仔
https://www.zhihu.com/question/376741737/answer/1059339606

个人认为,这是一种长期趋势。“学会数理化,走遍天下都不怕”这句话过了几十年依然没过时,尤其数学,是终身都不能落下的能力。

数学是抽象。利用数学,我们可以把一个问题抽象出来。

数学也是一门语言。语言是我们思考的媒介,而对于问题的探究,数学就是其媒介。如果这句话不好理解,想想你学物理时,是不是感觉都是数学计算?如果上面是解释还是抽象了点,希望这句话更清晰:

数学能力的本质:对世界建模的能力。

再通俗点,对世界准确理解的能力。

这就可以解释,为什么越来越多科技和互联网公司越了来越看重数学能力了,因为:

野蛮生长机会不再,精细化运营是未来趋势。

十年前,中国互联网可以说是野蛮生长的阶段,那时候就是疯狂砸钱拉新,各大产品疯狂补贴,数据分析?晚点再说。

但这个时代已经过去了,现在互联网产品越来越丰富,越来越懂用户。中国互联网行业的层次丰富程度可以说是世界第一。中国人口数量众多,社会形态更多样,用户属性和行为习惯从一线城市到到四五线城市再到小城镇,存在着很大的差异,90后和00后的习惯都不一样,有着诸多个性化需求。

在国外,专门的互联网运营是很少的,互联网运营岗位几乎可以说是中国互联网在人才制度的创新。如果你是运营,面对的是形态各异的指标,常用的方法有设计ABTest(也就是数学中的“变量控制法”)。现在又有“增长黑客”岗位,对数学的要求就更高了,ABTest在满足日益增长的数据规模中,就显得太小儿科了,因此,很多公司希望候选人能把数学能力带进来,去更好的理解数据。

软件工程能力是基础,算法能力是上限——这段话主要针对技术岗位说的。

软件工程能力强的公司能做出一款稳定在线不崩溃的产品,而算法让产品更智能,从而产生更强的用户黏性。除此之外,算法还可以帮助公司走得更远,通过算法,分析用户潜在需求,及时开发新产品,能让公司比别人多走一步,然后抢占某个细分领域的先发优势。

要好好的利用算法,并不是简单的调参就行的,而是要有对算法数学原理的透彻理解,这样才能打造更有竞争力的产品。

可以看出,能让产品最后笑傲江湖的,背后还是数学。

作者:Andy
https://www.zhihu.com/question/376741737/answer/1058361316

作为一个从业人员,我其实对这个问题也算是有一点小小的感悟。

因为公司业务需要,所以我们会和美国的一些公司做API连接。API是啥呢,就是一些自动下单自动连接的对接。这个流程有时候会比较久,而出现这种情况,大部分是由于我们这边的系统逻辑、代码不够全面引起的,但是一般对方公司是不会有这些问题的。

我之前一直不明白为啥我们总会有大大小小的问题,后来问了我们公司一个技术大佬,技术大佬告诉我说,对方的系统代码和逻辑,做的更加宏观,不光光是为了现在,他们的很多东西在十年甚至二十年以后都可以用到。但很可惜,我们的系统就是为了解决现在的问题来弄的。

所以,我们的互联网发展速度的确是很快,但是在一些宏观层面与别人存在的差距,可能就是由于基础数学能力和人员配比上不去所导致的。换句话说,数学能力所带来的不光是写代码的这个能力,而是说数学所带来的理性的、条理的、系统化的思维方式,能让写代码的这个过程变得更加审慎、理性和全面。而不光是写代码,在现在很多互联网公司里,解决问题的时候,都需要用到数学所带来的那种思维模式与基础能力。

其实,去查一下很多互联网公司的创始人或者大佬,你就会发现好多都是学数学或者数学相关专业出身的,这些人也正是在改变互联网,让互联网发展的人。

作者:江神乐
https://www.zhihu.com/question/376741737/answer/1058445184

在讨论这个问题之前,我觉得可以先来简单的看看,互联网公司里一个算法工程师需要哪些基本工作技能,而这些技能和数学有啥关系。

首先最基本的是基础开发能力,这里面涉及的很多,比较重要的两点是单元测试和逻辑复用,前者是保证了程序运行基本无误,后者能让程序被多次利用。换成数学问题,就是需要让你写的公式能正确解题,还能被人看懂。

接下来要说的能力是概率学和统计基础学能力,这两者都是数学学科里比较重要的门类,前者可以理解数据的分布,后者是可以应用于模型检测与计算,都是非常基础且重要的问题。机器学习理论也是重要的一环,这可以构建机器学习系统,掌握思维模式,而想要学习这个则需要把函数、建模等等搞透。还有就是机器学习理论。这些理论,其实光听名字就知道是和数学相关的了。

上面这些都是理论知识啦,把理论做成实践还是需要工具来实现的。算法工程师现在用的比较多的是Python了,这种语言门槛不高,生态也很好,而且其中的统计科学工具也算是很好用。有了语言要用到开发工具,现在主流的开发工具要想用的好,还要对其运行原理有一定理解。这些,也都得数学中的函数学得好,结构思维学得好才能做得好。除此之外,还有架构设计这方面也是一定要掌握的。

上面这些工作技能,基本上都涉及到了数学。你说,企业为啥要重视基础数学。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文(无广告)。

扫描二维码添加小编↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值