首都科学讲堂第678期《应用数学:数学到底有什么用?》
2021年1月16日,首都科学讲堂线上开讲,本次首都科学讲堂邀请了北京大学北京国际数学研究中心副教授董彬,为大家带来题为《应用数学:数学到底有什么用?》的精彩讲座。
应用数学 :数学到底有什么用?
我们为什么要学数学?学好数学又有什么用?其实,“宇宙之大,粒子之微,火箭之速,化工之巧,地球之变,生物之谜,日用之繁,无处不用数学。”同时,数学也是重大技术创新发展的基础。数学实力往往影响着国家实力,几乎所有的重大发现都与数学的发展与进步息息相关。那么,应用数学是什么?数学和应用数学以及人工智能的关系又是什么?
第一讲 什么是应用数学
我们都知道数学,我们都听说过华罗庚、陈景润这样的数学大师,那么,应用数学到底是什么?这里,我引用一下世界知名的应用数学家和力学家林家翘先生的定义。林先生是美国科学院院士,为建设祖国的应用数学,2002年回到中国,在清华大学成立了周培源应用数学中心。
林家翘先生对应用数学的诠释是:应用数学注重主动提出研究对象中的科学问题,通过问题的解决加深对研究对象的认识,或创造出新的知识。应用数学的意义在于揭示自然界和社会实际问题的规律。
应用数学它是不同于纯数学的一门独立的基础学科,应用数学的核心是,用数学方法来解决实际科学问题,但是纯数学的核心是逻辑构架。简单来说,纯数学是数学的核心,它负责完成整个逻辑构架的完善,那么应用数学处于边缘,负责的是整个学科的扩充。在过去的几百年里面,应用数学和纯数学之间相辅相成,互相配合,使数学不断地往前推进和发展。
现代意义上的应用数学源于二战。美国在1942年启动的“曼哈顿计划”,很多著名科学家都在里面作出了卓越的贡献,尤其孕育了一批应用数学家,其中就有数学界的鬼才——冯·诺依曼。他做出了核武器的数值模拟,并且提出了蒙特卡罗方法,这个方法在科学计算和人工智能等诸多领域中被广泛使用。他还发展了微分方程数值解,造就了应用数学中非常大的一个学科——计算数学。
此外,冯·诺依曼还被后人称为“现代计算机之父” 及“博弈论之父”。他提出了现代计算机的逻辑结构,在桥接数学、物理、信息,以及国防的研究中,作出了非常重要的贡献。
在过去,二战时期一直到上世纪90年代左右,应用数学的主体是基于物理的,因为当时很多重要的实际问题都是从物理中来。从上世纪90年代开始,逐渐地出现了基于数据的应用数学,其中一个重要的例子是图像处理。在图像处理领域,应用数学发挥了巨大的作用,一方面推动了图像处理的发展;另一方面,也了解决图像处理中的各种问题,产生了大量的新的数学工具。另一个值得一提的是压缩感知(2005-2015年),它是信息领域的一场革命,其理论基础就是应用数学中的“稀疏逼近”。
2010年到2020年这十年是深度学习和人工智能应用发展的“黄金十年”,然而其面对的最大问题之一是缺乏理论基础,其中数学将会起到至关重要的作用,而人工智能的理论基础也将会是应用数学未来发展的一个重要方向。人工智能的数学基础到底是什么?如何用数学来推动人工智能的发展?在理解、推动人工智能发展的同时,到底能凝练出什么样新鲜的数学问题,把它再带回到数学领域?这些还都是非常前沿的科学研究,是科学家们还在孜孜不倦研究的课题。
第二讲 图像与数学
图像是人类探索自然非常重要的一类工具,进入21世纪之后,图像更是无处不在。科学研究中,使用显微镜可以让我们观察物质和生命体的微观结构;借助望远镜,可以让帮助我们揭开浩瀚宇宙的奥秘;通过卫星遥感,可以让我们方便快捷的观测到地面的情况、对未来天气变化进行预测。在平时生活中,手机拍照非常的方便,拍后可以用各种各样的图像处理软件处理照片。自动驾驶领域中,可以通过相机来实时判断路面状况;视频监控时,也可以根据视频拍摄的图片,做人脸识别等大数据分析。在电脑特效和动画领域,也需要大量的图像处理、渲染及数值仿真模拟,产生各种各样非常逼真的影像。这些内容的实现,全都离不开数学。
这里我们介绍下医院中最常用也是最重要的医学影像之一,CT成像。CT的全称叫Computed tomography,中文翻译为断层扫描技术。其实也解释了CT成像的基本原理:一片一片扫描人体,每次扫描后把得到的数据记录下来。
现代CT设备的成像质量非常高,CT呈现的是一个三维的图像,我们也可以观察其XY、YZ和XZ三个不同截面上的二维图像,从这里面可以清晰地看到人体软组织结构及骨骼上的任何病变。那么,数学在这里面起到了什么样的作用?我们是如何通过数学获得这种高质量图像的?
背后一个最重要的数学工具叫Radon变换(拉东变换),以澳大利亚数学家Radon的名字来命名。想了解Radon变换的话,需要具备微积分的相关知识。简单地说,如果有一个两元的函数就是我们想要重建的图像,虽然CT设备没法直接采集到的每个像素点,但可以采集这个函数在平面上所有直线上的积分。所谓的积分就是:一条直线穿越了函数,直线上面就得到一条相应的曲线,把这个曲线下面的面积求出来,这个结果就是函数沿着这条直线上面的积分。如果把所有的积分数值收集起来,大家所看到的就是CT设备采集到的数据。我们希望通过采集的,把我们想要的CT图像重建出来。
通过Radon变换来描述CT成像是第一个数学问题,就是机器是怎么采集数据的。第二个数学问题就是,我们得到这个数据之后,怎么转换成医生想要的CT图像。这个对应的数学基础就是如何求解大规模的线性方程组。在这里面作出重要贡献的是波兰数学家Kaczmarz,他在1937年描述了怎么用一种迭代方法来求解大规模的线性方程组。采用这种算法,就可以重建出医生想要看到的CT图像。基于Kaczmarz这个迭代算法,曾获得诺贝尔医学奖的科学家Cormack,设计出了一个高效的迭代算法,叫做代数重建算法,从而实现了从采集到的数据,反演得到医生想要看到的CT图像的过程。
CT图像重建至今仍然是一个非常前沿的研究课题,我本人也在CT成像中做了很多工作。我们在不断追求的目标是把X光对人体的伤害降到最低,同时把CT成像的质量提到最高。
下一个例子就是电脑特效与动画。如果我们想要让计算机产生一个特效动画,需要什么样的数学工具呢?
首先,我们要思考一个虚拟的物体或者人,如何在电脑中表达,这就涉及到第一个问题,就是几何体的数学表达。
粗略来讲有两种不同的表达方式,第一种叫三角剖分曲面。一个三角剖分曲面是由众多三角形组成,每一个三角形都是由顶点、边和面组成,这是一个非常精巧的数学结构。用三角剖分可以构建非常复杂的曲面结构,同时也可以在这个曲面上做非常复杂的计算,比如算这个曲面的局部曲率、曲面的表面面积,以及在曲面上求解方程。
另外一种表达叫隐式表达,最有代表性的例子是水平集函数表达。我们想象有一个二元函数,这个函数在x、y和z平面呈现的形态像一个山包,所谓的水平集,就是这个函数值z等于一个固定数值的所有点x,y组成的集合。可以想象你用一个水平的平面去切这个函数,交点组成的集合就是一个水平集。通常我们考虑0水平集,即所有函数值为0的点组成的集合。
有了水平集的表达之后,就可以很方便地去做一些复杂的动画模拟。比如做一个水珠分裂成两个水珠的动画,可以把水珠对应的水平集函数逐渐向下拉,展现的动画形态就是从一个连通的区域(一个水珠)慢慢地断裂,变成两个区域,即实现了一颗水珠分裂成两颗水珠的动画。
如果想生成非常复杂的动画或电脑特效,得让几何体能够动起来。用数学方法,严格来讲叫数值计算,不但能让几何体动起来,而且还能动得非常逼真。比如,电影《终结者》里面的液态机器人,慢慢地被液化;电影《加勒比海盗》中世界尽头的大漩涡,这里面牵涉到的都是对液体的模拟。对液体的模拟,需要用刚才所提到的水平集函数,求解一个非常复杂的微分方程。当然,其他动画效果也大多基于物理规律来求解微分方程,从而做出非常逼真的模拟。
上面提到的这些工作都是一个非常著名的应用数学家、计算机科学家Ronald Fedkiw做出来的,他是斯坦福大学的教授,同时也是我的师兄。我们的博士导师都是加州大学洛杉矶分校(UCLA)著名应用数学家、美国科学院和工程院院士Stanley Osher。因为Fedkiw在流体模拟特效领域作出了卓越的贡献,他获得了2008年奥斯卡技术成就奖。
所以,有时候我跟学生们半开玩笑地讲,做数学的也是有可能获得奥斯卡的。据我师兄Ronald Fedkiw回忆,得奖的时候他非常激动,除了获得荣誉,还因为颁奖人是他心中的女神Jessica Alba,这两个原因都让他对那一刻终身难忘。
第三讲 人工智能与数学
人工智能的大概发展历程是什么?背后到底跟数学有什么样的关系?接下来我将详细介绍一下。
《列子·汤问》曾记载过,3000年前的周穆王时代,已有能工巧匠造出了能歌善舞,活灵活现的“人造人”。更厉害的是,穆王甚至看不出这个“人造人”和真人的区别。这个故事其实也暗含了图灵测试的思想。所谓的图灵测试是,一个人和机器分别被安置在两个密封房间,外面另一个人和他们进行交流,但看不到房间内是人还是机器,如果外面的人无法分辨哪一个房间里是人哪一个是机器,那么说明这个机器已经达到了一定的“人工智能”的水平。
在第一台计算机出现之后,现代意义上的人工智能才成为了可能。第一台电子计算机诞生在1941年,由德国工程师康拉德·楚泽制造。楚泽毕业之后一直在德国的一家飞机制造厂,主要工作就是计算各种各样飞机机翼的受力,这是一个非常复杂的计算过程。而在那个时候,他所能够使用的工具仅仅只是简单的计算尺。繁琐的工作给了大巨大的动力,他设想通过设计一台机器,来替他完成繁琐复杂的计算。虽然它是第一台图灵完备的计算机,但现代意义的计算机,还是在冯·诺依曼奠定了计算机的逻辑基础之后才被制造出来。
1956年,人工智能(artificial intelligence)一词在达特茅斯会议上被提出,会议的发起人John MacCarthy是达特茅斯大学数学系的一名助理教授。上世纪50年代-70年代期间,人工智能一直稳步地向前发展。当时美国发展人工智能的一个很大的动力在于,冷战时期,美国截获了苏联大量情报,亟须设计出一个人工智能算法,能够自动地把俄文翻译成英文。
1974年开始,人工智能进入了第一次寒冬。很多科学家发现,当时机器翻译的算法需要大量人工介入,十分不智能。在图像识别方面,当时的科学家设想可以设计出一个机械臂,可以自动辨识、抓取和移动物体,然而他们发现,仅仅是让机器能够识别物体这个看似简单的任务就遭遇到非常多的困难。第一次寒冬的出现,主要因为大量失败的案例,再加上那个时候计算和存储资源都非常匮乏,所以当时想要真正实现人工智能,其实还不到时候。
1980年-1987年这段时间,人工智能出现了回暖,专家系统的出现,让人们再次看到了人工智能的希望。但好景不长,随着专家系统很快走到了它的极限,人工智能又进入了第二次寒冬。专家系统的主要问题在于更新维护困难,不能像人类一样实现真正意义上的学习,可扩展性比较差。
1993年到2011年左右,人工智能迎来了春天。一是计算机的计算能力大幅度提升。此外,数据采集、传输、存储的能力也在不断地攀升,数据量越来越大。这些都为人工智能的发展创造了必要条件。
还有另外一个非常重要的原因,叫”the victory of the neats”,提出这个说法的是著名计算机科学家Peter Norvig 和 Stuart Russell,意指AI研究人员开始大量地去使用数学工具,也不停地创造新的数学工具。所以说,二战之后一直到21世纪初,数学的长足发展,产生了大量的基础的数学工具,有些可以直接被应用在人工智能的发展中,基于这些数学工具,也可以制造出更多新的数学工具,来帮助人工智能的发展。
我也推荐给同学们两本书,一本是叫Artificial intelligence — A MODERN APPROACH,另外一本是Machines Who Think。它们介绍了人工智能的发展,非常有意思。
前几年,DeepMind公司的AlphaGo战胜人类之后,有不少人批评DeepMind,认为公司花了这么多钱,最后就只是用人工智能在围棋上战胜了人类,它的实际应用的意义在哪里?于是,DeepMind先后在2018年和2020年推出了第一和第二代模型Alphafold。这个模型解决了在科学领域一个非常基础且重要的问题:预测蛋白质的折叠。这个科学问题是Science杂志在2016年列举的本世纪最前沿的120个科学问题中的第58个问题:我们是否能够根据蛋白质的DNA测序来预测它的折叠?即蛋白质在三维空间的形态。
因为现有对于蛋白质测序的数据浩如烟海,而想得到它的三维结构非常困难。冷冻电镜虽然能够看到蛋白质三维形态,但设备本身和维护运行都非常昂贵,采集到数据后,需要对它进行一系列复杂的处理,最后才能得到一个比较高质量的三维结构,整个过程需要花大量的人力和物力。Alphafold的最大价值在于,它可以基于现有的DNA序列和对应的三维结构,使用深层神经网络去预测它们之间的映射关系,实现蛋白质三维结构的快速、准确的预测。
Alphafold预测的三维结构,和实际的生物试验得到的三维结构已经非常接近,这个也使得它成为了在结构生物学中一个全新的、重要的科学工具,是人工智能赋能科学探索的一个重要的例子。
那么,图像识别背后的数学到底是什么?目前,能够真正地解决图像识别这个难题,我们可以使用“人工神经网络”这个源于神经科学的数学模型。
什么是(人工)神经网络?神经网络是由多个神经元链接而成的网络,每一个神经元有很多的边,比如说最中间的神经元,与其相连的那些边把数据输入到这个神经元,同时它也给下一层的神经元输入处理过后的数据,这是对人类大脑神经元工作机制的一个近似。每一个神经元的形式都非常简单,它把输入的信号进行很简单的线性组合,然后经过一个非常简单的非线性函数,得到了该神经元的输出,并且把它输入到下一层的神经元。
尽管每一个神经元它的功能非常简单,是对大脑神经元一个非常粗糙的模拟,但是我们可以把神经元通过线性叠加和复合的方式,把简单的神经元函数叠加起来形成深层神经网络,从而实现非常复杂的功能。在一些复杂的图像识别任务中,我们使用的神经网络的层数可以达到成百上千,所需要训练的参数可能会是亿、百亿、千亿级别。在一些任务中,当神经网络参数量达到这个量级之后,量变引发了质变,使得人工智能系统越来越接近甚至超越人类智能。
但是,现在的很多成功的人工智能模型,在很多情况下还是基于海量的大样本来学习的,然而我们人类从来都不需要从海量的数据中学习知识,这是目前基于深层神经网络的人工智能面临的一个非常大的挑战,即如何从少量的样本中有效的学习知识。此外,人工智能在诸如对肢体的控制、语言理解、情感交流、逻辑思维等方面,还未达到人类4-8岁孩子的水平,可谓任重而道远。
人工智能面临这些挑战的一个重要原因,我认为就是数学基础的薄弱。在这里援引徐匡迪院士2019年的一次讲话,他认为,数学基础薄弱是人工智能产业的一个软肋,他呼吁更多数学家能够投入到人工智能研究中。
我也曾跟很多人工智能领域不同分支的科研工作者进行过探讨,他们是非常希望能够和数学家合作,认为数学会对人工智能的发展作出重要的贡献。只不过,到底使用什么样的数学方法,现有的数学工具到底够不够用,需要提出什么样的新数学工具,才能够更好地解决人工智能里面的各种瓶颈问题——这些都是人工智能理论基础正在研究的前沿问题。
第四讲 我的数学之路
最后,也给大家讲一讲我是怎么走上数学研究的道路的,通过分享求学到做研究工作的经历,谈一谈我在科研中的一些体会,以及对数学的一些感悟。
我的母亲是清华大学化学系的教授,1999年报高考志愿时,我有子承母业的想法,也去学化学。但是,从小到大,我从没有认真思考过我喜欢做什么,只是很自然地想,既然对化学接触非常多,那我也去学化学好了。所以我就报了北京大学化学系。最后很不巧,分数不够,化学系招满了,最后我就被调剂到了数学系。
这种情况现在不可能出现了,因为现在北大数学的分数仅次于光华管理学院。那时的运气比较好,当时数学科学学院的院长张继平发话说:这些学生你们收不下来,那就来数学系。化学系的实验台是有数量限制的,但只要给你一根笔、一张纸,你就可以做数学。当时,我们那一届有很多人就是这样进了北大数学。
这个学年是我从高中进入大学的第一年,大学生活和高中真的非常不一样。大学的老师基本上讲完课就走了,和学生的互动非常有限。如果不积极地去找他提问题的话,他不会特别地关心每一个同学的学习进展。所以进入大学之后,首先要学会规划分配自己的时间,什么时候学习,什么时候锻炼,什么时候休闲娱乐等。
第一年的数学课,包括非常基础的数学分析、线性代数和几何。我不喜欢几何和代数,但是发现函数展开非常有意思。数学分析的授课老师彭立中教授(现已退休),在课堂上超纲讲了关于小波函数的内容,彭立中老师自己一直在做小波的研究。当时在基础课的课堂上,老师们很少会讲超纲内容,彭老师虽然介绍的很简单,但在我脑海中留下很深的烙印,觉得小波函数非常酷,这也为我后来在研究生阶段选择学习和研究小波埋下了种子。
之后,我的大二、大三、大四的生活都非常丰富多彩。当然,这个丰富是在学习以外:比如说音乐和电影,还有篮球和游戏。暴雪是我非常崇拜的一个游戏公司,他们设计游戏时的理念是:精益求精,要么不做,要么就做精品。这种设计理念对我今后的研究也产生了一些影响:要做研究的话,要么不做,要做就做精益求精的研究。
最后,我以“惊人”的成绩本科毕业——基础数学系的第二名,不过是倒数第二名。我反省了一下为什么没有认真地学习数学,我认为主要是没有真正对基础数学本身感兴趣,在学很多抽象概念的时候,我不知道这些抽象的概念到底跟现实的生活有什么样的关系,因此也没有学习数学的动力。
我认为,我人生一个很大的转折点从读研开始,当时我很有幸去到新加坡国立大学攻读硕士。选择方向的时候,我脑子里第一时间想到大一时候,彭立中老师讲数学分析时提到的小波函数。新加坡国立大学的沈佐伟教授在小波方面造诣很深,我很想跟沈佐伟老师去做小波,也非常感谢沈佐伟老师给了我这个学习机会,让我进入到小波这样一个非常有趣的领域。
但是,因为我在本科时候并没有把数学的基础打好,所以我花了漫长的时间去弥补。不过,这时候目的是为了能搞懂小波这个非常酷的数学概念和方法,我学习的动力非常足。研究生毕业时,两年时间我写了三篇论文,相对比较高产,也算正式地入门了科研,然后也体会到了数学学科,特别是做应用数学研究的乐趣。
读博士时我去了UCLA,师从Stanley Osher ,研究图像和数学,即用数学来做图像处理。当时在学习过程中,我最大体会是“出来混总是要还的”,因为我本科时候没有把数学的基础知识打牢,当我真正想用它来做一些我感兴趣的事情时,发现我的数学基础不够。所以,我又进一步地恶补了一把数学。
我在攻读博士学位期间并不是一帆风顺,也遇到了各种挫折,我也曾经萌生硕士毕业就去工业界的想法,但最后还是坚持了下来。我的体会是,如果你能坚持,很多时候成功就在拐角。读博的最后一年时间,也是我的学术成果涌现的一年,但我其实是坚持积累了很长的时间,才看到最后科研成果井喷的那一天,最后四年拿到博士学位。
到这里,同学们可能想问,董老师到底想说什么?这里给大家总结一下。
一是希望同学们尽早思考自己喜欢什么,一定要follow your heart。不要让别人告诉你,你应该干什么,而改变自己的想法。
二是要勇于面对挑战,不要怕失败。有一次我参加一个活动,大家讨论中国科研界为什么少有顶级、领先的大师学者,我在发言时表达的观点是:我们对成功的定义过于单一、对失败的容忍太低。如果所有人都朝着同一个所谓成功的目标去冲,很难产生多元的、多样化的社会。如何做到勇于面对挑战,不怕失败?同学们可以从一间小事做起:就是你在上课的时候,不管是大学还是在哪的课堂,敢不敢问老师问题。我在美国任教的时候,我发现美国学生一个非常典型的特点就是,非常敢问问题,他们从来不怕被别人嘲笑他们“这是简单或是蠢的问题”。因为,一是,你问的这个问题有可能别的同学也有类似疑问,但他们不敢问。第二是,通过问问题和老师进行互动,你不仅能学的更快,也能够慢慢地学会,怎么能够问出越来越聪明的问题。所以说不怕失败,可以从勇于问问题做起。
三是要坚持,要更多的迎难而上,而不是总“打一枪换一个地方”,这样的话实际上是很难做出来一些很重要、很基础的工作。
最后,也可能是最重要的一点是,要学会享受学习和工作过程中的点点滴滴,enjoying little things,为什么?是因为如果大家都向着成功的目标去冲,所谓的成功仅是这个头部的百分之一,甚至千分之一。那么也就是说,99%或999‰点的人做不到所谓的成功。那么我们的人生目标,不应该是向着这1%或是0.1%的成功去看,而是要学会享受自身的提高。现在流行的一个词汇叫“内卷”,我觉得很多内卷就是因为不停地去跟别人比,忘记了享受在学习和成长过程中的快乐。所以最后,希望大家在学习和工作过程中,能够享受其中的乐趣,这样你的心态也会更好,工作和学习也能够推进得更加顺利。