爱赢平台在哪下载

爱赢平台网站
地址: 北京市朝阳区观音惠园1号楼

 北京市海淀西三环北路50号豪柏大厦C2座18—19层

电话: 010 - 88518768
传真: 010 - 88518513
网站: www.ktj888.com
邮件:ms-gb@www.ktj888.com
邮编:100048

数学对计算机专业重要吗?

【发布时间:2022-01-19 06:26:29】

来源:爱赢平台在哪下载 作者:爱赢体育

  学机器学习的Convex Optimization测度论和泛函是绕不过的,而Convex Optimization可以说是机器学习的入门问题吧。但并不意味着要完整和深入的学习。从零开始完整的学习一个理论可以说是我国高等教育的一般性做法,而事实上如果仅仅只需要达到工程师的水平很浪费时间。但不学也不行,理论也要理解,不学好Convex Optimization很多相关的论文都读不懂的。所以我在德国研究生阶段上的Convex Optimization课是这么个形式,先半个学期老师给大家介绍测度论和泛函,搞清楚基础概念,理论介绍就算完了,在此之前学生都没学过。然后开始讲Convex Optimization和相关算法,到了最后期末,我们已经能够证明一些简单的问题并看懂会用到Convex Optimization的论文了,至此足矣。你要让我简述一下测度论和泛函,那我是说不出来的。并且就算是研究计算机视觉的博士和博士后,大部分数学功底都一般,绝对谈不上数学家,相关理论都是临时学的。他们终究是研究现实问题,数学只是工具,而且他们关注的领域很狭窄,只要学会了相关的理论,基本就通吃了。下文只是谈到了很多可能性,譬如微分几何用于三维表面分析,关注这一方面的研究者或者工程师(譬如做游戏的,搞3D渲染器的,做人脸识别的,三维重建的)只需要学好微分几何就行了,群论图论不需要懂。其实作为研究者需要学习的数学还是有限的,远远称不上是数学家。

  感觉数学似乎总是不够的。这些日子为了解决research中的一些问题,又在图书馆捧起了数学的教科书。从大学到现在,课堂上学的和自学的数学其实不算少了,可是在研究的过程中总是发现需要补充新的数学知识。

  都是很多种数学的交汇场。看着不同的理论体系的交汇,对于一个researcher来说,往往是非常exciting的enjoyable的事情。不过,这也代表着要充分了解这个领域并且取得有意义的进展是很艰苦的。记得在两年前的一次blog里面,提到过和learning有关的数学。今天看来,我对于数学在这个领域的作用有了新的思考。对于Learning的研究,

  Graphical model, Information theoretical models

  其基础性作用不言而喻。Learning研究的大部分问题是在连续的度量空间进行的,无论代数还是统计,在研究优化问题的时候,对一个

  ——当然了,它实际上远不止于此。在这个地方,函数以及其所作用的对象之间存在的对偶关系扮演了非常重要的角色。Learning发展至今,也在向无限维延伸——从研究

  。Kernel Learning 和 Gaussian Process 是其中典型的例子——其中的核心概念都是Kernel。很多做Learning的人把Kernel简单理解为Kernel trick的运用,这就把kernel的意义严重弱化了。在

  这是和实分析关系非常密切的学科。但是测度理论并不限于此。从某种意义上说,Real Analysis可以从

  ——虽然初级的概率论教科书一般不这样引入。在看一些统计方面的文章的时候,你可能会发现,它们会把统计的公式改用测度来表达,这样做有两个好处:所有的推导和结论不用分别给连续分布和离散分布各自写一遍了,这两种东西都可以用同一的测度形式表达:

  ,而且还能推广到那种既不连续又不离散的分布中去(这种东西不是数学家的游戏,而是已经在实用的东西,在Dirchlet Process或者Pitman-Yor Process里面会经常看到)。而且,即使是连续积分,如果不是在欧氏空间进行,而是在更一般的拓扑空间(比如微分流形或者变换群),那么传统的黎曼积分(就是大学一年级在微积分课学的那种)就不work了,你可能需要它们的一些推广,比如

  这是学术中很基础的学科。它一般不直接提供方法,但是它的很多概念和定理是其它数学分支的基石。看很多别的数学的时候,你会经常接触这样一些概念:

  metric space, Cauchy sequence, neighborhood, compactness, connectivity

  。很多这些也许在大学一年级就学习过一些,当时是基于极限的概念获得的。如果,看过拓扑学之后,对这些概念的认识会有根本性的拓展。比如,连续函数,当时是由epison法定义的,就是无论取多小的正数epsilon,都存在xxx,使得xxx。这是需要一种metric去度量距离的,在general topology里面,对于连续函数的定义连坐标和距离都不需要——如果

  的意思。这只是最简单的例子。当然,我们研究learning也许不需要深究这些数学概念背后的公理体系,但是,打破原来定义的概念的局限在很多问题上是必须的——尤其是当你研究的东西它不是在欧氏空间里面的时候——

  通俗地说它研究的是平滑的曲面。一个直接的印象是它是不是可以用来fitting一个surface什么的——当然这算是一种应用,但是这是非常初步的。

  的角度来看,就是相容的局部坐标系统。当然,在全局上,它不要求和欧氏空间同胚。它除了可以用于刻画集合上的平滑曲面外,更重要的意义在于,它可以用于研究很多重要的集合。一个n-维线性空间的全部k-维子空间(k

  一般意义的群论在Learning中被运用的不是很多,群论在Learning中用得较多的是它的一个重要方向

  。定义在平滑流形上的群,并且其群运算是平滑的话,那么这就叫李群。因为Learning和编码不同,更多关注的是连续空间,因为Lie group在各种群中对于Learning特别重要。各种子空间,线性变换,非奇异矩阵都基于通常意义的矩阵乘法构成李群。在李群中的映射,变换,度量,划分等等都对于Learning中代数方法的研究有重要指导意义。

  图,由于它在表述各种关系的强大能力以及优雅的理论,高效的算法,越来越受到Learning领域的欢迎。经典图论,在Learning中的一个最重要应用就是graphical models了,它被成功运用于分析统计网络的结构和规划统计推断的流程。Graphical model所取得的成功,图论可谓功不可没。在Vision里面,maxflow (graphcut)算法在图像分割,Stereo还有各种能量优化中也广受应用。另外一个重要的图论分支就是Algebraic graph theory (代数图论),主要运用于图的谱分析,著名的应用包括Normalized Cut和Spectral Clustering。近年来在semi-supervised learning中受到特别关注。

  赞同@奥术光辉的结论。高端“技术”岗位(管理另说)对数学有要求,而且还不低,可能不需要知道怎么证明,但要知道好多东西的应用和使用范围。

  大多数程序员,都不需要稍微深度的计算机知识,逻辑清晰,举一反三即可,如同@minya Ti所说,但在这个时候,请问你凭什么晋升?无非是

  同时,有很多研究院、公司、部门会有一些必须要深一些的”数学+计算机“知识才能胜任的工作岗位。所谓

  ,计算机知识深入之后都能跟数学挂上边,比如机器学习的很多算法,都用到拉格朗日定理。还有人说微分、积分、极限什么的没用,我读书的时候帮国外一个特定领域的公司开发某个CAD软件,各种NURBS曲线,各种长度、交点、分割的计算,必须会各种积分、微分算法(现成的东西不适合),瞄准的竞争对手的软件当时卖5w$一套(10年前),门槛大部分就在这里。

  ,排名在前面的@陳浩已经给了一些不错建议,不过knuth的时代毕竟过了好多年了,很多新兴的计算机学科要求的东西也不在里面,建议可以从数据挖掘、机器学习等领域入手反向索引哪些数学知识需要学习,

  每每看到这样的提问,我自己的答案总是自动转到程序猿要准备哪些哪些将来活的更好,略感惆怅。生活如此苦逼,还要为青春饭之后的日子做准备,优化的目标太散,可选择的路径太多,转个弯你都不知道会有哪些变化等着你,还不如随自己的兴趣,采用所谓”Follow Your Heart“这样的随机策略,至少自己开心点,数学不数学的,相比没那么重要。

  还是看视频有意思,补充一个”计算机中的数学“,浙大出品,不深,但很有意思,和实际结合比较紧密。计算机中的数学

  「对编程来说数学是它的灵魂」哪里扯淡了?对编程来说数学当然是它的灵魂,对简单的谁写代码不用数据结构?数据结构不是数学的内容吗?

  数学对于计算机专业很重要,你之所以会有「在编程中有用到数学了吗?」这样的疑问,是因为在最开始编程的时候编程中几乎所有关于数学的部分都对你屏蔽起来了,你只要会用就能完成一些工作。

  上上网,打开XX搜索,XX搜索怎么从浩如烟海的网络中找到你要的内容?需要数学来计算吧(图论、概率,线代…)。

  上网在线看视频,为了让你尽量流畅的看视频得编码吧,需要数学来计算吧(行程长度编码、离散余弦变换、线代…)。

  不上网了,打盘Dota,电脑怎么把3D模型显示出来,坐标系之间的转换、光线的模拟、材质的模拟需要数学来计算吧(空间几何、线代…)。

  小兵的人工智能,你点一下鼠标,英雄怎么从A地走到B地,寻路算法是数学吧(离散数学、线代…)。

  网上见到的眼花缭乱的照片的滤镜、phootshop的滤镜,需要数学来计算吧(卷积、线代...)。

  有人会说:「这些东西都有人实现了,你只要会用就好了」之类的。是的,如果你仅仅只是随便写两行Toy Program或者像一个生产线上的组装工人一样不断地把别人的类库加上简单的逻辑组装起来。你当然不需要太多的「数学」。

  但问题是如果你有那么一点点上进心想要写一些有一点点价值的东西、解决一点点尚未解决的问题的时,你会发现大多数情况根本没有现成的东西供你使用。这个时候你只有两个选择:要么默默的蹲在一遍祈祷世界的某个角落里某个人闲的蛋疼帮你写一个库,并且免费的送给你;要么就像个男人一样自己动手实现。在自己实现时,你会发现你能依靠的只有数学。第一个在电脑上显示出3D图形的人如果没有相当的数学功底,连矩阵是什么都不知道,可以么?

  别的不说,举一个我自己的例子。最近要做一个瘦脸的手机应用,有现成的第三方库吗?谁闲的蛋疼去写这个?人脸识别、面部变形的论文倒是不少,全都和线代、概率等等数学有关,没有数学知识能看得懂吗?况且,作为一个手机应用来讲在普通用户看来,瘦脸不过是个非常小的应用,或者是某个应用中非常小的功能而已。

  数学是编程的灵魂,不是说一点数学知识都不会就不能写出一行代码。就像我们说一个人的灵魂一样,并不是说人没有灵魂就活不下去这种虚无缥缈的论断。谈论编程的灵魂就像谈论一个人的灵魂一样指的是一些除了活下去以外,更加重要的东西。

  当然重要啊。四大论(集合论、概率论、图论、谓词逻辑)、计算理论(可计算、复杂性、自动机、lambda演算)。以及抽代、数论等等。

  反之以微积分为基础的高等数学体系不是那么重要,只有有限的方向(比如ml)能用上它。数学也不仅仅指高等数学。

  一般情况下,写程序还是需要有一定的逻辑性的,所以初等数学的内容基本上还是会用得到。倒不是说做某个题目,而是一种逻辑的思维方式。到了大学阶段,微积分,线性代数,离散数学也是计算机系的必修课程,因此还是基本上用得到的。至于数学系的各种方程/分析/代数/几何,甚至硕博期间的各种专业课程,就不一定用的到了,但是在一些相对专业的场景下还是会有这些课程的身影。

  近些年进一些互联网公司也会要求做一些 Leetcode 的题目,难度根据每个公司自行设定。在做 Leetcode 或者之前的一些 OJ 的时候,总会用到各种各样的数据结构和算法。在学习数据结构和算法的时候,其实还是会用到大学数学的不少内容。

  深度学习是近些年的热门方向之一,无论是在计算机视觉,自然语言处理都有着丰富的应用场景。深度学习是以高等数学,线性代数,概率论等课程作为数学基础的,因此在了解深度学习之前,有必要先学习或者复习一些数学上的基础知识。

  《深度学习》这本书的作者是Ian Goodfellow、Yoshua Bengio 和 Aaron Courville三位大牛。这本书的中文版于 2017 年 7 月 22 号上市。该书由众多译者协力完成。《深度学习》这本书从浅入深介绍了基础数学知识、机器学习经验以及现阶段深度学习的理论和发展,不管是人工智能技术爱好者,还是相关从业人员使用这本书都是非常有好处的。另外,读者如果想熟悉一些数学知识,本书也做了一些介绍,包括矩阵,导数等基本内容。读者可以从头读到尾。《深度学习》这本书的一大特点是介绍深度学习算法的本质,脱离具体代码实现给出算法背后的逻辑,不写代码的人也完全可以看。为了方便读者阅读,作者特别绘制了本书的内容组织结构图,指出了全书20章内容之间的相关关系。读者可以根据自己的背景或需要,随意挑选阅读。

  除此之外,还有一本书《动手学深度学习》。本书旨在向读者交付有关深度学习的交互式学习体验。书中不仅阐述深度学习的算法原理,还演示它们的实现和运行。与传统图书不同,本书的每一节都是一个可以下载并运行的 Jupyter 记事本,它将文字、公式、图像、代码和运行结果结合在了一起。此外,读者还可以访问并参与书中内容的讨论。

  全书的内容分为 3 个部分:第一部分介绍深度学习的背景,提供预备知识,并包括深度学习基础的概念和技术;第二部分描述深度学习计算的重要组成部分,还解释近年来令深度学习在多个领域大获成功的卷积神经网络和循环神经网络;第三部分评价优化算法,检验影响深度学习计算性能的重要因素,并分别列举深度学习在计算机视觉和自然语言处理中的重要应用。

  本书同时覆盖深度学习的方法和实践,主要面向在校大学生、技术人员和研究人员。阅读本书需要读者了解基本的Python编程或附录中描述的线性代数、微分和概率基础。

  如果觉得数学知识不太够,可以看这一本《深度学习的数学》。本书基于丰富的图示和具体示例,通俗易懂地介绍了深度学习相关的数学知识。第1章介绍神经网络的概况;第 2 章介绍理解神经网络所需的数学基础知识;第 3 章介绍神经网络的优化;第 4 章介绍神经网络和误差反向传播法;第 5 章介绍深度学习和卷积神经网络。书中使用 Excel 进行理论验证,帮助读者直观地体验深度学习的原理。

  如果想复习一些数学课程,可以读一些数学方面的基础课,例如微积分,线性代数,概率论等课程。程序员直接阅读数学书可能会比较枯燥,但是有人贴心地针对程序员撰写了相应的数学书籍。

  《程序员的数学 第2版》面向程序员介绍了编程中常用的数学知识,借以培养初级程序员的数学思维。读者无须精通编程,也无须精通数学,只要具备四则运算和乘方等基础知识,即可阅读本书。本书讲解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、高斯求和、汉诺塔、斐波那契数列等经典问题和算法。引导读者深入理解编程中的数学方法和思路。

  《程序员的数学2:概率统计》涉及随机变量、贝叶斯公式、离散值和连续值的概率分布、协方差矩阵、多元正态分布、估计与检验理论、伪随机数以及概率论的各类应用,适合程序设计人员与数学爱好者阅读,也可作为高中或大学非数学专业学生的概率论入门读物。

  《程序员的数学3:线性代数》本书用通俗的语言和具象的图表深入讲解了编程中所需的线性代数知识。内容包括向量、矩阵、行列式、秩、逆矩阵、线性方程、LU分解、特征值、对角化、Jordan标准型、特征值算法等。

  除了深度学习之外,机器学习方面的知识点也是非常有必要了解和掌握的。机器学习是计算机科学与人工智能的重要分支领域。周志华老师的《机器学习》这本书作为该领域的入门教材,在内容上涵盖机器学习基础知识的很多方面。全书共 16 章,大致分为 3 个部分:第 1 部分(第 1~3 章)介绍机器学习的基础知识;第 2 部分(第 4~10 章)讨论一些经典而常用的机器学习方法(决策树、神经网络、支持向量机、贝叶斯分类器、集成学习、聚类、降维与度量学习);第 3 部分(第 11~16 章)为进阶知识,内容涉及特征选择与稀疏学习、计算学习理论、半监督学习、概率图模型、规则学习以及强化学习等。

  《统计学习方法(第二版)》全面系统地介绍了统计学习的主要方法,共分两篇。第一篇系统介绍监督学习的各种重要方法,包括决策树、感知机、支持向量机、很大熵模型与逻辑斯谛回归、推进法、多类分类法、EM算法、隐马尔科夫模型和条件随机场等;第二篇介绍无监督学习,包括聚类、奇异值、主成分分析、潜在语义分析等。

  在学机器学习或者深度学习的时候,实战一直是一个重要的环节。《机器学习实战:基于Scikit-Learn和TensorFlow》本书作者 Aurélien Géron 曾经是谷歌工程师,在 2013 年至 2016 年,主导了YouTube的视频分类工程,拥有丰富的机器学习项目经验。作者的写作初衷是希望从实践出发,手把手地帮助开发者从零开始搭建起一个神经网络。这也正构成了本书区别于其他机器学习教程的最重要的特质—不再偏向于原理研究的角度,而是从开发者的实践角度出发,在动手写代码的过程中,循序渐进地了解机器学习的理论知识和工具的实践技巧。对于想要快速上手机器学习的开发者来说,本书是一个非常值得尝试的起点项目。

  整体来看,在不同的阶段会用到不同的数学,在需要数学的时候把相关的课程补上就行了,也不需要一开始就学很多很多的数学课程,在实战中学习也是一种方法。

  。这体现在「无穷」「极限」「连续」「测度」等概念对许多程序员来说是脱离实际的定义,理解不了,甚至排斥。

  所以除非是理论计算机方向,一般程序员需要的「数学」其实是指具体的算法和技巧,可以算是「应用数学」。在此基础上,更重要的是工程思维,解决问题的能力。

  我做计算机模拟和智能系统的。经常发现数学知识不够用了。比如在MAYA中模拟三维空间中一个轮子的转动的时候,涉及到空间坐标变换,隐隐知道是该用什么数学知识,但实际上无从下手。有些计算机的方向本身就与数学结合紧密,数学重要自不需说。计算机基础中的算法课程也需要一定的数学知识。

  但是,但是,做实际应用的编程,很多很多都是不需要高中以上的数学知识的。只要去学,去做,去模仿,就能解决实际问题。

  作为计算机的学生,我(原作者)没有任何企图要成为一个数学家。我学习数学的目的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些。说起来,我在刚来这个学校的时候,并没有预料到我将会有一个深入数学的旅程。我的导师最初希望我去做的题目,是对appearance和motion建立一个unified的model。这个题目在当今Computer Vision中百花齐放的世界中并没有任何特别的地方。事实上,使用各种Graphical Model把各种东西联合在一起framework,在近年的论文中并不少见。

  我不否认现在广泛流行的Graphical Model是对复杂现象建模的有力工具,但是,我认为它不是panacea,并不能取代对于所研究的问题的深入的钻研。如果统计学习包治百病,那么很多“下游”的学科也就没有存在的必要了。事实上,开始的时候,我也是和Vision中很多人一样,想着去做一个Graphical Model——我的导师指出,这样的做法只是重复一些标准的流程,并没有很大的价值。经过很长时间的反复,另外一个路径慢慢被确立下来——我们相信,一个图像是通过大量“原子”的某种空间分布构成的,原子群的运动形成了动态的可视过程。微观意义下的单个原子运动,和宏观意义下的整体分布的变换存在着深刻的联系——这需要我们去发掘。

  在深入探索这个题目的过程中,遇到了很多很多的问题,如何描述一个一般的运动过程,如何建立一个稳定并且广泛适用的原子表达,如何刻画微观运动和宏观分布变换的联系,还有很多。在这个过程中,我发现了两个事情:

  在数学中,有很多思想和工具,是非常适合解决这些问题的,只是没有被很多的应用科学的研究者重视。

  于是,我决心开始深入数学这个浩瀚大海,希望在我再次走出来的时候,我已经有了更强大的武器去面对这些问题的挑战。我的游历并没有结束,我的视野相比于这个博大精深的世界的依旧显得非常狭窄。在这里,我只是说说,在我的眼中,数学如何一步步从初级向高级发展,更高级别的数学对于具体应用究竟有何好处。

  现代数学有数不清的分支,但是,它们都有一个共同的基础——集合论——因为它,数学这个庞大的家族有个共同的语言。集合论中有一些最基本的概念:集合(set),关系(relation),函数(function),等价 (equivalence),是在其它数学分支的语言中几乎必然存在的。对于这些简单概念的理解,是进一步学些别的数学的基础。我相信,理工科大学生对于这些都不会陌生。

  不过,有一个很重要的东西就不见得那么家喻户晓了——那就是“选择公理” (Axiom of Choice)。这个公理的意思是“任意的一群非空集合,一定可以从每个集合中各拿出一个元素。”——似乎是显然得不能再显然的命题。不过,这个貌似平常的公理却能演绎出一些比较奇怪的结论,比如巴拿赫-塔斯基分球定理——“一个球,能分成五个部分,对它们进行一系列刚性变换(平移旋转)后,能组合成两个一样大小的球”。

  正因为这些完全有悖常识的结论,导致数学界曾经在相当长时间里对于是否接受它有着激烈争论。现在,主流数学家对于它应该是基本接受的,因为很多数学分支的重要定理都依赖于它。在我们后面要回说到的学科里面,下面的定理依赖于选择公理:

  在集合论的基础上,现代数学有两大家族:分析(Analysis)和代数(Algebra)。至于其它的,比如几何和概率论,在古典数学时代,它们是和代数并列的,但是它们的现代版本则基本是建立在分析或者代数的基础上,因此从现代意义说,它们和分析与代数并不是平行的关系。

  先说说分析(Analysis)吧,它是从微积分(Caculus)发展起来的——这也是有些微积分教材名字叫“数学分析”的原因。不过,分析的范畴远不只是这些,我们在大学一年级学习的微积分只能算是对古典分析的入门。分析研究的对象很多,包括导数(derivatives),积分(integral),微分方程(differential equation),还有级数(infinite series)——这些基本的概念,在初等的微积分里面都有介绍。如果说有一个思想贯穿其中,那就是极限——这是整个分析(不仅仅是微积分)的灵魂。

  一个很多人都听说过的故事,就是牛顿(Newton)和莱布尼茨 (Leibniz)关于微积分发明权的争论。事实上,在他们的时代,很多微积分的工具开始运用在科学和工程之中,但是,微积分的基础并没有真正建立。

  那个长时间一直解释不清楚的“无穷小量”的幽灵,困扰了数学界一百多年的时间——这就是“第二次数学危机”。直到柯西用极限的观点重新建立了微积分的基本概念,这门学科才开始有了一个比较坚实的基础。直到今天,整个分析的大厦还是建立在极限的基石之上。

  柯西(Cauchy)为分析的发展提供了一种严密的语言,但是他并没有解决微积分的全部问题。在19世纪的时候,分析的世界仍然有着一些挥之不去的乌云。而其中最重要的一个没有解决的是“函数是否可积的问题”。

  我们在现在的微积分课本中学到的那种通过“无限分割区间,取矩阵面积和的极限”的积分,是大约在1850年由黎曼(Riemann)提出的,叫做黎曼积分。但是,什么函数存在黎曼积分呢(黎曼可积)?数学家们很早就证明了,定义在闭区间内的连续函数是黎曼可积的。可是,这样的结果并不令人满意,工程师们需要对分段连续函数的函数积分。

  在19世纪中后期,不连续函数的可积性问题一直是分析的重要课题。对于定义在闭区间上的黎曼积分的研究发现,可积性的关键在于“不连续的点足够少”。只有有限处不连续的函数是可积的,可是很多有数学家们构造出很多在无限处不连续的可积函数。显然,在衡量点集大小的时候,有限和无限并不是一种合适的标准。

  在探讨“点集大小”这个问题的过程中,数学家发现实数轴——这个他们曾经以为已经充分理解的东西——有着许多他们没有想到的特性。在极限思想的支持下,实数理论在这个时候被建立起来,它的标志是对实数完备性进行刻画的几条等价的定理(确界定理,区间套定理,柯西收敛定理,Bolzano-Weierstrass Theorem和Heine-Borel Theorem等等)——这些定理明确表达出实数和有理数的根本区别:完备性(很不严格的说,就是对极限运算封闭)。

  随着对实数认识的深入,如何测量“点集大小”的问题也取得了突破,勒贝格创造性地把关于集合的代数,和Outer content(就是“外测度”的一个雏形)的概念结合起来,建立了测度理(Measure Theory),并且进一步建立了以测度为基础的积分——勒贝(Lebesgue Integral)。在这个新的积分概念的支持下,可积性问题变得一目了然。

  上面说到的实数理论,测度理论和勒贝格积分,构成了我们现在称为实分析 (Real Analysis)的数学分支,有些书也叫实变函数论。对于应用科学来说,实分析似乎没有古典微积分那么“实用”——很难直接基于它得到什么算法。而且, 它要解决的某些“难题”——比如处处不连续的函数,或者处处连续而处处不可微的函数——在工程师的眼中,并不现实。

  但是,我认为,它并不是一种纯数学概念游戏,它的现实意义在于为许多现代的应用数学分支提供坚实的基础。下面,我仅仅列举几条它的用处:

  1)黎曼可积的函数空间不是完备的,但是勒贝格可积的函数空间是完备的。简单的说,一个黎曼可积的函数列收敛到的那个函数不一定是黎曼可积的,但是勒贝格可积的函数列必定收敛到一个勒贝格可积的函数。在泛函分析,还有逼近理论中,经常需要讨论“函数的极限”,或者“函数的级数”,如果用黎曼积分的概念,这种讨论几乎不可想像。我们有时看一些paper中提到L^p函数空间,就是基于勒贝格积分。

  2)勒贝格积分是傅立叶变换(这东西在工程中到处都是)的基础。很多关于信号处理的初等教材,可能绕过了勒贝格积分,直接讲点面对实用的东西而不谈它的数学基础,但是,对于深层次的研究问题——特别是希望在理论中能做一些工作——这并不是总能绕过去。

  随着实数理论的建立,大家开始把极限和连续推广到更一般的地方的分析。事实上,很多基于实数的概念和定理并不是实数特有的。很多特性可以抽象出来,推广到更一般的空间里面。对于实数轴的推广,促成了点集拓扑学(Point- set Topology)的建立。很多原来只存在于实数中的概念,被提取出来,进行一般性的讨论。在拓扑学里面,有4个C构成了它的核心:

  在现代的拓扑学的公理化体系中,开集和闭集是最基本的概念。一切从此引申。这两个概念是开区间和闭区间的推广,它们的根本地位,并不是一开始就被认识到的。经过相当长的时间,人们才认识到:开集的概念是连续性的基础,而闭集对极限运算封闭——而极限正是分析的根基。

  连续函数在微积分里面有个用epsilon-delta语言给出的定义,在拓扑学中它的定义是“开集的原像是开集的函数”。第二个定义和第一个是等价的,只是用更抽象的语言进行了改写。我个人认为,它的第三个(等价)定义才从根本上揭示连续函数的本质——“连续函数是保持极限运算的函数” ——比如y是数列x1, x2, x3, … 的极限, 那么如果 f 是连续函数,那么 f(y) 就是 f(x1), f(x2), f(x3), …的极限。连续函数的重要性,可以从别的分支学科中进行类比。比如群论中,基础的运算是“乘法”,对于群,最重要的映射叫“同态映射”——保持“乘法”的映射。在分析中,基础运算是“极限”,因此连续函数在分析中的地位,和同态映射在代数中的地位是相当的。

  比它略为窄一点的概念叫(Path connected),就是集合中任意两点都存在连续路径相连——可能是一般人理解的概念。一般意义下的连通概念稍微抽象一些。在我看来,连通性有两个重要的用场:一个是用于证明一般的中值定理(Intermediate Value Theorem),还有就是代数拓扑,拓扑群论和李群论中讨论根本群(Fundamental Group)的阶。

  Compactness似乎在初等微积分里面没有专门出现,不过有几条实数上的定理和它其实是有关系的。比如,“有界数列必然存在收敛子列”——用compactness的语言来说就是——“实数空间中有界闭集是紧的”。它在拓扑学中的一般定义是一个听上去比较抽象的东西——“紧集的任意开覆盖存在有限子覆盖”。这个定义在讨论拓扑学的定理时很方便,它在很多时候能帮助实现从无限到有限的转换。对于分析来说,用得更多的是它的另一种形式 ——“紧集中的数列必存在收敛子列”——它体现了分析中最重要的“极限”。Compactness在现代分析中运用极广,无法尽述。微积分中的两个重要定 理:极值定理(Extreme Value Theory),和一致收敛定理(Uniform Convergence Theorem)就可以借助它推广到一般的形式。

  从某种意义上说,点集拓扑学可以看成是关于“极限”的一般理论,它抽象于实数理论,它的概念成为几乎所有现代分析学科的通用语言,也是整个现代分析的根基所在。

  拓扑学把极限的概念推广到一般的拓扑空间,但这不是故事的结束,而仅仅是开始。在微积分里面,极限之后我们有微分,求导,积分。这些东西也可以推广到拓扑空间,在拓扑学的基础上建立起来——这就是微分几何。从教学上说,微分几何的教材,有两种不同的类型,一种是建立在古典微机分的基础上的“古典微分几何”,主要是关于二维和三维空间中的一些几何量的计算,比如曲率。还有一种是建立在现代拓扑学的基础上,这里姑且称为“现代微分几何”——它的核心概念就是“流形”(manifold)——就是在拓扑空间的基础上加了一套可以进行微分运算的结构。现代微分几何是一门非常丰富的学科。比如一般流形上的微分的定义就比传统的微分丰富,我自己就见过三种从不同角度给出的等价定义——这一方面让事情变得复杂一些,但是另外一个方面它给了同一个概念的不同理解,往往在解决问题时会引出不同的思路。除了推广微积分的概念以外,还引入了很多新概念:tangent space, cotangent space, push forward, pull back, fibre bundle, flow, immersion, submersion 等等。

  近些年,流形在machine learning似乎相当时髦。但是,坦率地说,要弄懂一些基本的流形算法, 甚至“创造”一些流形算法,并不需要多少微分几何的基础。对我的研究来说,微分几何最重要的应用就是建立在它之上的另外一个分支:李群和李代数——这是数学中两大家族分析和代数的一个漂亮的联姻。分析和代数的另外一处重要的结合则是泛函分析,以及在其基础上的调和分析。

  如果说古典微积分是分析的入门,那么现代代数的入门点则是两个部分:线性代数(linear algebra)和基础的抽象代数(abstract algebra)——据说国内一些教材称之为近世代数。代数——名称上研究的似乎是数,在我看来,主要研究的是运算规则。一门代数,其实都是从某种具体的运算体系中抽象出一些基本规则,建立一个公理体系,然后在这基础上进行研究。一个集合再加上一套运算规则,就构成一个代数结构。在主要的代数结构中,最简单的是群(Group)——它只有一种符合结合率的可逆运算,通常叫“乘法”。如果,这种运算也符合交换率,那么就叫阿贝尔群 (Abelian Group)。如果有两种运算,一种叫加法,满足交换率和结合率,一种叫乘法,满足结合率,它们之间满足分配率,这种丰富一点的结构叫做环(Ring),如果环上的乘法满足交换率,就叫可交换环(Commutative Ring)。如果,一个环的加法和乘法具有了所有的良好性质,那么就成为一个域(Field)。基于域,我们可以建立一种新的结构,能进行加法和数乘,就构成了线性代数(Linear algebra)。

  代数的好处在于,它只关心运算规则的演绎,而不管参与运算的对象。只要定义恰当,完全可以让一只猫乘一只狗得到一头猪:-)。基于抽象运算规则得到的所有定理完全可以运用于上面说的猫狗乘法。当然,在实际运用中,我们还是希望用它 干点有意义的事情。学过抽象代数的都知道,基于几条最简单的规则,比如结合律,就能导出非常多的重要结论——这些结论可以应用到一切满足这些简单规则的地 方——这是代数的威力所在,我们不再需要为每一个具体领域重新建立这么多的定理。

  抽象代数有在一些基础定理的基础上,进一步的研究往往分为两个流派:研究有限的离散代数结构(比如有限群和有限域),这部分内容通常用于数论,编码,和整数方程这些地方;另外一个流派是研究连续的代数结构,通常和拓扑与分析联系在 一起(比如拓扑群,李群)。我在学习中的focus主要是后者。

  对于做Learning, vision, optimization或者statistics的人来说,接触最多的莫过于线性代数——这也是我们在大学低年级就开始学习的。线性代数,包括建立在它基础上的各种学科,最核心的两个概念是向量空间和线性变换。线性变换在线性代数中的地位,和连续函数在分析中的地位,或者同态映射在群论中的地位是一样的 ——它是保持基础运算(加法和数乘)的映射。

  在learning中有这样的一种倾向——鄙视线性算法,标榜非线性。也许在很多场合下面,我们需要非线性来描述复杂的现实世界,但是无论什么时候,线性都是具有根本地位的。没有线性的基础,就不可能存在所谓的非线性推广。我们常用的非线性化的方法包括流形和kernelization,这两者都需要在某个阶段回归线性。流形需要在每个局部建立和线性空间的映射,通过把许多局部线性空间连接起来形成非线性;而kernerlization则是通过置换内积结构把原线性空间“非线性”地映射到另外一个线性空间,再进行线性空间中所能进行的操作。而在分析领域,线性的运算更是无处不在,微分,积分,傅立叶变换,拉普拉斯变换,还有统计中的均值,通通都是线泛函分析:从有限维向无限维迈进

  在大学中学习的线性代数,它的简单主要因为它是在有限维空间进行的,因为有限,我们无须借助于太多的分析手段。但是,有限维空间并不能有效地表达我们的世界——最重要的,函数构成了线性空间,可是它是无限维的。对函数进行的最重要的运算都在无限维空间进行,比如傅立叶变换和小波分析。这表明了,为了研究函数(或者说连续信号),我们需要打破有限维空间的束缚,走入无限维的函数空间——这里面的第一步,就是泛函分析。

  泛函分析(Functional Analysis)是研究的是一般的线性空间,包括有限维和无限维,但是很多东西在有限维下显得很trivial,真正的困难往往在无限维的时候出现。在泛函分析中,空间中的元素还是叫向量,但是线性变换通常会叫作“算子”(operator)。除了加法和数乘,这里进一步加入了一些运算,比如加入范数去表达“向量的长度”或者“元素的距离”,这样的空间叫做“赋范线性空间”(normed space),再进一步的,可以加入内积运算,这样的空间叫“内积空间”(Inner product space)。

  1、所有的有限维空间都是完备的(柯西序列收敛),很多无限维空间却是不完备的(比如闭区间上的连续函数)。在这里,完备的空间有特殊的名称:完备的赋范空间叫巴拿赫空间(Banach space),完备的内积空间叫希尔伯特空间(Hilbert space)。

  3、在有限维空间中,所有线性变换(矩阵)都是有界变换,而在无限维,很多算子是无界的(unbounded),最重要的一个例子是给函数求导。

  4、在有限维空间中,一切有界闭集都是紧的,比如单位球。而在所有的无限维空间中,单位球都不是紧的——也就是说,可以在单位球内撒入无限个点,而不出现一个极限点。

  5、在有限维空间中,线性变换(矩阵)的谱相当于全部的特征值,在无限维空间中,算子的谱的结构比这个复杂得多,除了特征值组成的点谱(point spectrum),还有approximate point spectrum和residual spectrum。虽然复杂,但是,也更为有趣。由此形成了一个相当丰富的分支——算子谱论(Spectrum theory)。

  6、在有限维空间中,任何一点对任何一个子空间总存在投影,而在无限维空间中, 这就不一定了,具有这种良好特性的子空间有个专门的名称切比雪夫空间(Chebyshev space)。这个概念是现代逼近理论的基础(approximation theory)。函数空间的逼近理论在Learning中应该有着非常重要的作用,但是现在看到的运用现代逼近理论的文章并不多。

  基本的泛函分析继续往前走,有两个重要的方向。第一个是巴拿赫代数 (Banach Algebra),它就是在巴拿赫空间(完备的内积空间)的基础上引入乘法(这不同于数乘)。比如矩阵——它除了加法和数乘,还能做乘法——这就构成了一 个巴拿赫代数。除此以外,值域完备的有界算子,平方可积函数,都能构成巴拿赫代数。巴拿赫代数是泛函分析的抽象,很多对于有界算子导出的结论,还有算子谱 论中的许多定理,它们不仅仅对算子适用,它们其实可以从一般的巴拿赫代数中得到,并且应用在算子以外的地方。巴拿赫代数让你站在更高的高度看待泛函分析中 的结论,但是,我对它在实际问题中能比泛函分析能多带来什么东西还有待思考。

  最能把泛函分析和实际问题在一起的另一个重要方向是调和分析 (Harmonic Analysis)。我在这里列举它的两个个子领域,傅立叶分析和小波分析,我想这已经能说明它的实际价值。它研究的最核心的问题就是怎么用基函数去逼近和构造一个函数。它研究的是函数空间的问题,不可避免的必须以泛函分析为基础。除了傅立叶和小波,调和分析还研究一些很有用的函数空间,比如Hardy space,Sobolev space,这些空间有很多很好的性质,在工程中和物理学中都有很重要的应用。对于vision来说,调和分析在信号的表达,图像的构造,都是非常有用的工具。

  当分析和线性代数走在一起,产生了泛函分析和调和分析;当分析和群论走在一起,我们就有了李群(Lie Group)和李代数(Lie Algebra)。它们给连续群上的元素赋予了代数结构。我一直认为这是一门非常漂亮的数学:在一个体系中,拓扑,微分和代数走到了一起。在一定条件下,通过李群和李代数的联系,它让几何变换的结合变成了线性运算,让子群化为线性子空间,这样就为Learning中许多重要的模型和算法的引入到对几何运动的建模创造了必要的条件。因此,我们相信李群和李代数对于vision有着重要意义,只不过学习它的道路可能会很艰辛,在它之前需要学习很多别的数学。

  最后,再简单说说很多Learning的研究者特别关心的数学分支:概率论。自从Kolmogorov在上世纪30年代把测度引入概率论以来,测度理论就成为现代概率论的基础。在这里,概率定义为测度,随机变量定义为可测函数,条件随机变量定义为可测函数在某个函数空间的投影,均值则是可测函数对于概率测度的积分。值得注意的是,很多的现代观点,开始以泛函分析的思路看待概率论的基础概念,随机变量构成了一个向量空间,而带符号概率测度则构成了它的对偶空间,其中一方施加于对方就形成均值。角度虽然不一样,不过这两种方式殊途同归,形成的基础是等价的。

  在现代概率论的基础上,许多传统的分支得到了极大丰富,最有代表性的包括鞅论 (Martingale)——由研究赌博引发的理论,现在主要用于金融(这里可以看出赌博和金融的理论联系,:-P),布朗运动(Brownian Motion)——连续随机过程的基础,以及在此基础上建立的随机分析(Stochastic Calculus),包括随机积分(对随机过程的路径进行积分,其中比较有代表性的叫伊藤积分(Ito Integral)),和随机微分方程。对于连续几何运用建立概率模型以及对分布的变换的研究离不开这些方面的知识。

  不会数学不能阻挡你学习编程,但如果你想成为更高级的开发者或者设计师,你不会数学将寸步难行,或者说你永远都走不到技术尖端。

  N年前我也以为自己数学不是什么问题,也是那时候没有机会学习。进入程序这个行业已经尽10年,但我发现数学不深入,你的思维的深度和广度将很受限。

  离散数学,概率,统计学,数据结构,等等,这些都是学好编程的坚实基础,我不得不承认学习数学是需要一定天分的,在中国这种应试教育下,虽然好多人看起来数学不错,但真正懂得思想并善于去学扩散思路的人少之又少,好多书都只是将公式。。。

  如果你想把编程上升到一个高度,这个高度不用太高,你或多或少离不开数学,看看那些数据结构吧,如果你只想停留在用别人的东西的基础上,只是用而不是去组合和创造新的东西,那数学你不用深入学习了。

  再问学习英语对编程有用吗?你能举一个不懂英语又是程序大牛的人吗?至今我没有看到过。。。或许说你眼里的程序大牛跟我的标准不太一样。

  软件开发是管理复杂度的工作,而不是数学计算或者数学证明。数学工作在软件开发中是相当局部化的工作,因此可以转交给专家完成。软件开发和数学的关系类似画家和颜料化学家的关系。

  另外,数学是一个巨大的体系。有无数分支。就拿计算机科学的开创者图灵来说,他的 Turing Machine 和判定性理论关注于 mathematic logic。这在当年是一个非常小众的领域。你说数学大牛一辈子几乎不接触 mathematic logic 也不是不可能。其实哥德尔提出不完备定理之后,很多数学家就对 mathematic logic 失去兴趣了。可是他们也不用象有些知道了相对论的经典物理学家那样自杀,数学天地分外广阔。

  另外,很多计算机语言确实是有一定数学功底的人发明的,特别是逻辑学和一些语言理论。但是发明和使用是不同的。比如说,希尔伯特就想证明一些数学公理体系的一致性,可是太难了。可是欧几里德几千年之前就说:我就

  早期的计算机是数学家们研究出来的模型,计算机这门学科能成型,可以说基本是数学那边衍生过来的。现在国外很多大学的计算机科学部,稍微历史悠久点的,你都能发现它们一开始(甚至现在)也一般是隶属于数学部下面的。

  现在由于这门学科已经相对成熟,有更多的人可以掌握这门科学的入门级知识,当然也意味着不需要那么高深的数学知识。但那仅仅是编程的粗浅层次。

  如果你学到计算机比较高深点的水平,会发现不会数学真的什么都干不了。比如你学图像处理,就需要很强的线性代数的概念。比如你搞计算机安全,你就需要研究密码学,这东西可是非常非常数学的。

  我现在读研正在学一门“自然语言处理”的课,要大量使用机器学习中的理论。发现不懂统计学概率学或者线性代数,简直就是寸步难行。我说我“不懂”,其实我大学本科以及高中都是理工科的,数学其实也学了不少,比平均大学生要多多了,但是在学习机器学习中所要使用的大量前沿的概率学理论和定律,还是让我在数学专业的同学面前瞬间矮了一大截。打个比方说各种统计学中的取样方式,各种概率学中的定律(如Dirichlet process),数学专业的人都懂就我不懂。

  当然了,所有这些对学习者的逻辑能力也是要求很高的,只是说后几种不像前几种一样需要特别牛的数学。

  补充,有用。比如说矢量和矩阵,和几何变换的对应关系。在3d 中相当重要啊,我这几天被三角形面上的切线空间给折磨的简直晕了!!!大脑要不够用了!尤其是模型空间,世界空间,摄像机空间,前面几个还对应着有一个变换,而切线空间就是根据线性关系进行推算而已,就是一个线性方程组的解而已,和这几个搅和在一起,简直是乱了。。。

  虽然你在实践时,可能常年用不到什么显式的数学知识。但是这玩意,相当于一个天花板,制约着你的上届。

  从莱布尼茨创建微积分到柯西的极限观点破解二次数学危机打好微积分地基然后到黎曼积分体系的建立,可以说是就像牛顿奠定了经典物理一样的贡献。但是数学分析的大厦仍然飘着一朵乌云,这时候以测度为基础的勒贝格积分横空出世,至此实变函数应运而生。所高等代数就是实数的欧几里得扩展到复数的酉空间内做的一系列线性变换。从有限纬度扩展到无线纬度就有了泛函分析,结合实变函数拓展到整个空间有了以算子为代表的巴拿赫空间希尔伯特空间,有了调和分析,李代数、李群论,有了抽象(近世代数),数值分析……以微积分、测度为核的概率统计随机过程有了大发展,比如鞅论,伊藤随机微分……越来越觉得以极限,微分,积分,微分方程,级数为最初体系的微积分发展起来的现代数学的魅力。看看什么决策树、贝叶斯、支持向量积、最近邻、聚类……到哈希加密,RSA,计算几何……不都是数学的应用,计算机往深了研究就是看数学积淀啊。计算机不是理科是一个工科,是一门应用类学科。另外计算机科学太基础的我就不说了,举个例子,对于数据结构和算法这类基础的东西里面知识点也是图论,数论,组合数学的应用……

在线客服
请Q我吧:10892204
请Q我吧:1011057695
请Q我吧:17206935
请Q我吧:2893423048
在线客服