数学与软件工程那些令人惊讶的相似性

在我读研究生第一年,我对于数学有了一次顿悟,这改变了我对整个机器学习领域的看法与思路。当时我选择研究的方向是机器学习。这是一个交叉学科的领域,结合了计算机科学、统计学和其他很多的数学学科,比如优化方法和线性代数。需要学的内容非常多,所有的研一的学生都在努力地消化吸收这些海量的概念。

一天晚上,我坐在办公室里试图去对线性代数有所悟。虽然我有一本很好的教材—基尔伯特·斯特朗所著的《线性代数入门》—作为我的引导,但我一直没办法取得进展。我看着各种各样的定义,特征分解、乔丹正规型、矩阵翻转等等,就在想:“为什么?为什么这些都看着那么诡异?为什么翻转要这么定义?真正地仔细想想,为什么所有这些矩阵运算都用现在这个方式来定义?”

就在我无望地盯着满屏的数学符号的时候,突然脑海里一道灵光闪现。我意识到:数学是一种设计!在此之前,我一直把数学当成一种宇宙真理一样的学习。它完美超然、且几乎凡人所不可知。但在那夜之后,我意识到数学也仅仅是一个人类创建的工具。数学是被设计出来的,就像软件编程是被设计出来的一样,也使用了很多类似的设计原理。这些原理也许不那么明显,但都是可以被理解的。从那个时刻起,对我而言数学从不可知变为合理。

数学是由对象、运算以及一些简化形式构成的系统。它被设计来对真实世界的现象进行建模。与所有的设计类似,它也有一定的自由度。这一系统可以这样设计,当然也可以那样设计。一个矩阵在极坐标体系里可以被设计为一个圆球。只要运算是一致的,这种设计就没有关系;它仅仅就是一个简化的缩写。在某个时间点,某个人制定了这些设计。他们挑选了这些对象与运算方式,并指定了组织在一起的规则。如果设计得比较好,那么基于这些基本的决定,很多有用的、可被证明的特性就出现了。这整套系统就可以被用来对我们所处于的这个世界进行建模:比如抛物在空间里的运行方式,声波穿过以太的方式,或者股票价格的涨跌。现实世界包含了层层堆叠的复杂性。设计良好的数学系统则给出了干净简洁的工具来表征每一层的现实世界。

线性代数被设计来表征线性方程体系。而线性方程则被设计来表征线性关系,即一个对象被写成其他对象相乘的和的关系。在线性代数的缩写里,一个线性关系被表征为一个线性算子,即一个矩阵。线性算子被设计得很简单,因此他们的效应就可以被完全的分析。线性算子可以做两件事:旋转和增缩。这里,在几何与代数的交界处,一些神奇的事情发生了。代数里的乘和加运算被转化成了向量空间里的向量的旋转和增缩。这样就可以让我们用代数的方法来分析线性算子的几何效应,即把矩阵分解成它的组成部分:需要旋转多少、需要扩展或是压缩多少以及在哪个方向上进行。


来源:Alice Zheng授权使用

数学所包含的某些设计原则也展现在软件工程里面。以抽象代数为例,抽象代数本质上就是一个对象层级设计的实践。它的目的是用近可能少的原料,并一次加入一个或几个原料,来查看会得到什么有趣和有用的产出。一个“群”被定义成一些元素与一个运算的集合(运算必须要满足一定的条件来保证它的行为不会太奇怪)。一个“环”则是一种特殊的群,它具有两种可以被泛化成加与乘的运算。一个“域”则是一种特殊的环,它具有四种运算(可以被泛化成加、减、乘、除)。这种定义立刻就听着像是软件工程里的概念:这是一个对象的层级结构,“域”继承自“环”,而“环”则继承自“群”!


来源:Alice Zheng授权使用

现在让我们看看实数系统。这是另外一个层级化对象设计的例子,但细节上有一些有趣的变化。让我们从自然数开始。其实自然数就是我们用手指头数数的扩展。接着,让我们以零点为中心加入自然数的镜像——负数。这样我们就获得了整数的概念。再把整数结合上加法和乘法运算,我们就得到了一个上面所说的“环”。如果再结合上乘法和除法,我们就生成了有理数,也就是得到了一个“域”。如果故事就此为止,我们会有一个不错的结果:我们有一堆数和一些运算。对这些数运用我们的运算,我们还是会得到同样类型的数。好耶!但不幸的是,我们的几何学家邻居会来敲门,并问:“圆形的面积是什么样的数?直角三角形的斜边长度是什么数?”这些数看起来并不是某两个整数的比例值。


来源:Alice Zheng授权使用

上述的这些发现打开了无理数的泄洪闸,搅乱了我们设计的干净整齐的数的系统。有理数和无理数都是有用的数,因此最好能有一个表达方式来统一处理两者。但是,源于那个烦人的“无穷”的概念,这两种数是如此的不同。无理数是无限长的,因此很不容易处理;而有理数是有顺序的,且可数的;无理数是无法数的。我们整整花了几千年来找到一个解决方法去统一处理有理数和无理数。现在最佳的提议是用有限小数方式表示:每个实数都可以被认为是无穷数列的等价类。整个数的系统的结构都是层级化的,而且大部分的元素实际上都没办法被有穷图灵机计算。到头来,我们可说实数其实完全不“真实”存在,它们都是被构造出来的。

上述这些只是实际在用的数学设计的一小部分例子。我们的文化在灌输一个很奇怪的理念,即数学是很难的,数学看起来是太抽象、太难学、太难理解,所以几乎无法学会。但换个角度来看,数学和软件工程有着令人惊讶的相似性。这两个学科都会使用自己的行话与表示法。但一旦我们理解了这些行话后,我们就可以看到数学的灵与肉了。理解数学的设计原则可以引领我们进入这个充满层级对象和变换表现的世界。在对于数学有更多的了解后,就可能帮助我们产生更多的数学与软件工程学交叉的想法。甚至我们也能开始去对数学的设计做修改,产生新的数学设计。想想,现在的实数系统已经非常得古老和笨拙了。是时候来点新的东西了!

原文发布时间为:2016-11-26

本文来自合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

时间: 2024-11-06 07:29:48

数学与软件工程那些令人惊讶的相似性的相关文章

10种令人惊讶的方式你的日常生活中正在收集数据的大数据野兽

10种令人惊讶的方式你的日常生活中正在收集数据的大数据野兽 原文:http://www.bloomberg.com/slideshow/2014-06-03/10-surprising-ways-your-daily-life-is-feeding-the-big-data-beast.html 无处可逃 大数据是你日常生活中,不管你喜欢与否的重要组成部分 - 甚至是意识到这一点. 当你去看医生,去到你的手机上工作或获得方向,有一个很好的机会,有软件在那里悄悄地收集和分析这些信息.并根据不同的情

暴雪官方公布2009年十大令人惊讶的事件

Top10. 魔兽世界官网和论坛出现广告 今年的早些时候,暴雪决定在其官方网站和论坛中加入广告,令很多人感到惊讶.加入广告会带来潜在的安全风险,而且这些广告还不是暴雪的广告,是来自第三方的广告.过去的一年中还出现了一到两次错误,包括一起在官方论坛上发布卖G广告事件. Top9. Ozzy Osbourne受邀参加BlizzCon 2009 当然,对于像BlizzCon这样的重大活动来说在头版头条上公布邀请OzzyOsbourne来表演没什么好惊讶的.过去的几年里,BlizzCon会邀请一个喜剧演

NodeJS无所不能:细数10个令人惊讶的NodeJS开源项目

在几年的时间里,NodeJS逐渐发展成一个成熟的开发平台,吸引了许多开发者.有许多大型高流量网站都采用NodeJS进行开发,像PayPal,此外,开发人员还可以使用它来开发一些快速移动Web框架. 除了Web应用外,NodeJS也被应用在许多方面,本文盘点了NodeJS在其它方面所开发的十大令人神奇的项目,这些项目涉及到应用程序监控.媒体流.远程控制.桌面和移动应用等等. 1.NodeOS NodeOS是采用NodeJS开发的一款友好的操作系统,该操作系统是完全建立在Linux内核之上的,并且采

Uber令人惊讶的大数据使用方式

Uber是一款提供出租车预定服务的手机应用,自2009年在旧金山推出以来取得了巨大的成功.该公司立足于大数据,与传统出租车公司相比,他们利用数据的方式更有效.这是他们能够取得成功的一个重要原因.Uber的整个商业模型就是以大数据众包原则为基础.他们有一个巨大的司机数据库,其中包含了他们提供服务的城市中的司机信息.当乘客有搭乘请求时,它可以立即匹配出最合适的司机.Bernard Marr是一名全球公认的大数据专家.近日,他撰文介绍了大数据在Uber的两个重要应用. 第一个是"峰时定价(Surge

“屌丝”马云的9个故事:考北大数学得1分

屌丝马云的9个故事:考北大数学得1分马老板以286亿美元身价超过李嘉诚成为亚洲首富.你可知道,在成为首富前,马云实打实的是一个屌丝:出生于普通人家,教育背景相当一般,在第三次参加高考之后,才被杭州师范学院录取,首份工作月工资不到100元--当马云还是屌丝时,他和我们有什么不同?近日,由史玉柱.冯仑.任志强.赵薇等十二位超级大佬合著的畅销书<近观马云>上市,里面透露了不少马云还是屌丝时的真实故事.1.挣第一笔钱2500元高兴地把钱抛向天空上市当天:钱多了怎么花,我还真没想过.赵薇在<近观马

《软件工艺》—第1章软件工程的悖论

第 1 章 理解软件工程软件工艺为了看清软件工程适用(以及不适用)的范畴,我们首先需要对软件工程有一个深入的理解.为了理解软件工程,我们首先需要了解在早期的软件工程文献中提到的那些项目.稍做研究,你就会发现一个令人惊讶的事实:这些文献中几乎没有对商用软件的报告.在所有的案例中,绝大多数都是大型国防项目或者小型科研项目.在这两类项目中,开发者通常都需要面对极其严峻的硬件/软件条件:而在现代的商用项目中,环境通常会宽松得多. 一个非常典型的例子就是美国国防部于1969年至1975年间开发的SAFEG

传奇数学家拉马努金留下的数学神谕,解开了多年悬而未决的神秘难题

◆ ◆ ◆ 序 印度数学奇才斯里尼瓦瑟· 拉马努金在短短的一生中写下了大量论文,虽然多数文章在生前未得以发表,但借助其中一些文章中的全新见解,数学家肯恩· 小野解开了长久以来悬而未决的神秘数学难题. 拉马努金在1920年去世,时年32岁.他留下了数本笔记,里面有超过3 000条有关数字规律的深刻表述.他的文章(上图)一直启发着数学家们.图片来源:<环球科学> 1984年,一个周六的上午,还在读高中的肯恩·小野(Ken Ono),打开了家中的信箱,信箱中有一封信,宣纸一样薄的信封上贴着色彩绚丽的

“屌丝”马云的9个故事:报考北大数学1分

"屌丝"马云的9个故事:报考北大 数学1分"马老板"以286亿美元身价超过李嘉诚成为亚洲首富.你可知道,在成为首富前,马云实打实的是一个"屌丝":出生于普通人家,教育背景相当一般,在第三次参加高考之后,才被杭州师范学院录取,首份工作月工资不到100元--当马云还是屌丝时,他和我们有什么不同?近日,由史玉柱.冯仑.任志强.赵薇等十二位超级大佬合著的畅销书<近观马云>上市, 里面透露了不少马云还是屌丝时的真实故事.1.挣第一笔钱2500元

揭秘深度学习成功的数学原因:从全局最优性到学习表征不变性

近年来,深度学习大获成功,尤其是卷积神经网络(CNN)在图像识别任务上的突出表现.然而,由于黑箱的存在,这种成功一度让机器学习理论学家颇感不解.本文的目的正是要揭示深度学习成功的奥秘.通过围绕着深度学习的三个核心要素--架构.正则化技术和优化算法,并回顾近期研究,作者为深层网络的若干属性,如全局最优性.几何稳定性.学习表征不变性,提供了一个数学证明. 论文:Mathematics of Deep Learning 论文链接:https://arxiv.org/abs/1712.04741 摘要: