人工智慧浪潮下的数学教育

魏泽人/任教于国立东华大学,创立花莲—py社群及实做数学粉专/科学月刊第580期

在人工智慧(artificial intelligence, AI)的风潮下,数学科普、教育或者甚至数学本身,微妙地陷入一个尴尬的处境;或者应该说,陷入两个尴尬处境。

▼冯纽曼曾说,如果人们不相信数学很简单,那只是因为他们没有发现生活有多复杂。

我们曾学过的数学,究竟对人生有什么帮助?

第一个尴尬点是,数学的实用性变得十分明显,明显到令人尴尬。学数学的人,常会听到人问:「学数学有什么用?」、「我高中数学都忘光了,还不是活得好好的?」、「工作上好像完全没用到。」、「我写程式这么久了,也没用到什么数学。」

当然,内行人都知道数学在科学、技术、工程中,应用十分广泛。特别在网路时代,网路加密、电脑运算、影像压缩,甚至网页和应用程式的自动排版都得用到数学。即使连照片编修这种属于艺术文化的活动,其中的图层操作就包含了向量概念调色盘会看到16进位及颜色转换的线性变换,更不用说伽马校正、贝兹曲线、高斯滤镜、边界加强、内容感知拉长、内容感知填满等功能,处处都是微积分与线性变换,最后如果要输出JPEG,也少不了傅立叶转换和资讯熵。

生活中没有数学吗?只要知道看哪里,你根本没办法不看到,到处都是密密麻麻的数学。高中生所学习的log与三角函数绝对不是徒劳无功,若没有三角函数及log的帮忙,我们无法像现在这样随时都能轻松地拿出手机拍照,就算不懂数学,数学也能默默发挥功用。然而,若看不到数学,人们可能会活在一个非常无聊的世界,一个很多东西都看不到的世界、失去颜色跟细节的世界。

宝宝知道数学有用,但宝宝很难说清楚。

「那些听不见音乐的,认为那些跳舞的人都疯了的」,在哈利波特的魔法世界中,看不见魔法的人觉得魔法师都是怪胎疯子。我们也许像查拉图斯特拉一样愿意相信一位会跳舞的神,但对于还不能听到音乐的人来说,我们光在那跳来跳出、跟他说音乐有多好听,只会被当成疯子,就像巫师世界不会对看不到魔法的一般群众推广魔法的好处一样。当然,身为数学专业人员,在数学科普推广方面,情况也不是那么一筹莫展。我们尝试了各式各样的方法与理论,来让一般大众了解数学的好处,如逻辑训练、数学游戏等等。读到这里,应该也大致了解数学专业人员在社交场合及招生推广方面的一些困境及努力,常常需要像是「无用之用方为大用」这些论点及观点来循循善诱,说明数学「隐藏」的好处。

▼勒丘恩:「人工智慧完全是数学。」

在这个时代里,数学能为何所用?

深度学习及人工智慧成为显学的今日,情形已经有所不同;原来隐藏的魔法世界就像突然曝光似的,数学的用途变得显而易见。

电脑工程师们重新拿起统计、微积分及线性代数课本,想要了解现代的人工智慧在玩什么把戏。现代人工智慧的领军人物之一勒丘恩(Yann LeCun)说「人工智慧就是数学(artificial intelligence is all about math)」,他给想从深入人工智慧领域大学生的建议是:「如果在『iOS程式设计』及『量子力学』中要选一门课来修的话,选量子力学,且一定要选修微积分一、微积分二、微积分三……、线性代数、机率与统计,和尽可能的多选物理课程。即便如此,最重要的还是要会写程式。」

大众能认同数学的实用性和好处,对数学推广来说,自然是好事;问题是,办到这件事情的人,不是数学家数学老师。除了情况有些困窘外,之前大言不惭「无用之用是为大用」之类的讲法,相形之下更加空虚寂寞,而数学游戏、魔术等等亲民的方式,相形之下也变得太过可爱,甚至有点多余。撇开面子层面,更实际问题是,大部分数学老师不见得清楚人工智慧的进展以及数学在其中扮演的角色然而其实有很多地方能跟数学课程连结。另外一个热门的技术──「区块链(block chain)」也有一堆数学课程内容能够连结,但并非多半数学教师不熟悉。不过在此我们先把重点放在人工智慧这块。人工智慧、机器学习、深度学习里,究竟用到了什么数学呢?

极值问题与梯度下降法

在深度学习相关的数学中,最先被提到的往往是「梯度下降法(gradient descent)」。梯度,即gradient,简单来说就是多变数函数的微分,而梯度下降法广泛用来处理「极值问题」。在深度学习、机器学习中常会设计一个损失函数(loss function),用来评估机器有多接近我们的理想目标。越接近理想的行为,比方说文字与图片辨识得越准确、下棋下得越好、翻译得越正确,那损失函数的值就会越小,如此一来只要找到适当的参数,让损失函数尽量小,那机器就能执行我们希望的行为。

▼梯度下降法示意图(图左)。连锁法则示意图(图右)。齿轮2的转速为齿轮1的0.5倍、齿轮1的转速为齿轮3的3倍,故齿轮2的转速为齿轮3的0.5×3=1.5倍。

这个损失函数一定都是数学上能计算的函数,而这就是数学上标准的极值问题,有很多方法来处理。其实不只是机器学习与人工智慧,许多的科学、工程技术、甚至日常生活问题,都能以极值问题的形式出现。举例来说,当你快乐地计划着出门旅行,就会碰到好几个极值问题:在你收拾行李时,想在有限的包包里塞入最多的物品,就是一个有名的组合极值问题──「背包问题(knapsack problem)」;你想要用最短的路径、时间来参观所有景点,又会碰上另外一个有名的组合极值问题──「旅行推销员问题(traveling salesman problem)」。两个极值问题都以「困难」闻名,属于NP完全问题,在某种理论意义上要完整解决这些问题,至少跟破解RSA密码一样难(一般相信是比破解RSA更难)。

不过这两个问题都是「离散」的极值问题,好在深度学习中,我们要处理的损失函数通常是「连续」的。而微积分就是处理「连续」问题的利器。在谈到数学有多可怕时,「微积分」常常被拿来扮演虎姑婆或者大野狼这种吓人的角色。但就像创立现代电脑与博奕论的数学家冯纽曼(John von Neumann)说的:「如果人们不相信数学很简单,那只是因为他们没有发现生活有多复杂。」,真要比较的话,出门旅行要比微积分复杂而困难得多,因为「连续」是一种规律,而有规律才可能让问题变简单。

连续极值问题中,梯度就是这样被利用的。在数学上,我们知道梯度是函数值上升最快的方向,而反梯度方向则是下降最快的方向,所以我们只要把「损失函数」对我们想调整的「参数」去微分得到梯度,然后就知道要往哪个方向去调整参数、进而让损失函数有效地降低。这样简单到有点天真的想法,真的有效吗?在某些假设下,还真的能让我们找到最好的参数,而深度学习中的损失函数,其实常常不合乎这些假设,就像冯纽曼说的,真实生活比数学复杂,既然没什么办法可言,就闭着眼睛拿梯度下降法来用看看吧!还好,常常也能得到够好的结果。

在这个基础上,将原始梯度下降法做了一些改良,调整每次下坡的幅度,就是现今深度学习大量使用的方式。此外,除了梯度下降法这类的一次微分方法外,利用二次微分的牛顿法及用近似二次微分的拟牛顿法也常常用来解决极值问题。在深度学习中,像是图片画风转移,有时也会利用这些方法。

反向传播算法、合成函数及连锁法则

梯度下降法的确能有效,但前提是要能将损失函数对参数微分,有时函数比较简单一点,像是线性回归或逻辑回归(logistic regression),微分起来还算简单,但深度学习所用的类神经网路(artificial neural network)就复杂多了。当简单的模型不足以应付复杂任务时,我们就需要更复杂的网路。数学上处理复杂事物的一种标准作法,就是分而击之:先将大问题分成几个小问题,然后各个击破。比方说数学归纳法就是典型的例子:有无穷多个式子要证明?不要紧,找出规律、一次只处理一个情况即可;线性代数中的基底也是,将复杂的情形分解成有线情形的线性组合;而合成函数是另外一个例子,用简单的函数组合出复杂的函数。所以在微积分中,我们只要知道基本函数的微分即可。更复杂的函数,只要看成是基本函数的合成函数就行了,借由连锁法则(Chain rule),就能把合成函数的微分计算出来,而神经网路也是这样的概念。逻辑回归或者线性回归太简单、不够用?把这些简单的函数一层一层合成在一起就变复杂了。而微分呢?交给连锁法则就行了。看起来问题解决了,但不是都说深度学习神经网路要靠反向传播算法(Back Propagation)了吗?怎么都没有看到呢?

反向传播算法基本上就是连锁法则。啊,又是一个装潮的时下用语(buzzword)?......【更多内容请阅读科学月刊第580期】