图1 从高等数学定积分计算到深度学习卷积模型的思维过程
有卷积,当然就有反卷积。为了能直观地看到深度学习的效果,有研究人员实现了反卷积的可视化[1]——定积分的一些中间计算过程或者定积分的逆运算。所以,反卷积的可视化结果实际上是数学运算中间结果的可视化。当学生在学习高等数学或者数学分析的过程中接触到定积分,老师可以让学生进一步了解深度学习背后的原理。这样一来,学生在学习数学的时候可能会更有兴趣,因为他们会认为这是人工智能计算机视觉领域里知识表示的重要基础。
图2 反卷积的可视化[1]
以上介绍的是人工智能与数学建模相关知识。如果你学的是计算机或者软件专业,或者你喜欢编程并学会了使用一些编程工具,那你可能会想:计算机里的编程和人工智能的知识表示有什么关系?这两者是怎么过渡的呢?对此,我认为有三个方面值得注意:
第一,计算机专业有很多编程课,这些编程课是人工智能的基础,但是千万不要过于强调某种语言。有些学校主张学人工智能就学python语言。这是完全错误的,因为在没有python语言之前,人工智能也是存在的。python语言是一个很好的工具,但只能说它是实现人工智能的一种工具,而不是人工智能唯一指定的语言,我们不应该把它提到很重要的位置。有一些培养应用型人才的院校(如专科院校)希望学生尽快接触工业的应用,那把python作为工具无可厚非,但是千万不要告诉学生python就是人工智能的全部,它只是一个工具而已。
图3 python和人工智能的关系
第二,人工智能的计算机实践本质就是知识的计算机编码实践。我们在本文中反复强调,人工智能的核心是知识的表示。在人类的大脑里,人工智能的知识表示就是数学模型和数学思维。人工智能就是对以计算机为载体的知识表示的实践,也就是对人工智能所需要的知识的计算机编码实践。
第三,我们在学人工智能或者学编程时,除了学习编程知识,还可以尝试从编程的角度去理解人工智能方法的技术效果。但是我们不应该过于依赖某个技术,因为一个技术能解决什么问题取决于这个技术的本质,即它如何表示人工智能所需要的知识。下面对几种常见的数据结构在人工智能中的运用进行介绍。
先来说说在计算机编程中经常会使用的堆栈——一种先进后出的数据结构。人工智能在什么情况下会用到堆栈呢?走迷宫的模型就是一个例子,用堆栈就可以实现让AI走迷宫。再举一个应用更广的例子——机器人的路径规划。现在服务机器人的应用非常普遍,我们经常能在餐饮馆、医院或酒店见到它们忙碌的身影。为了实现预期的功能,要先把服务机器人服务的区域地图输入到它的电脑里。如果服务机器人要走一条路,那它需要做这条路的路径规划。其实在送餐、送药等东西的时候,机器人就已经在电脑里面跑了一个路径规划的算法。这个路径规划算法是允许试错的,而且它试错的过程就是用堆栈完成的,类似于走迷宫。需要注意的是,机器人要先跑最短的路径再跑一条候选路径,因为它要避免现实中突然有个人挡住它,在这种情况下它要现场进行计算,如果算不过来,就会出现“反应迟钝”的情况。我们希望它能很快地绕过障碍,快速反应,这时候它就需要提前进行一些计算。大家可以测试一下家里的扫地机器人,可以故意给它设置障碍物,看它能不能快速地绕过,以此看它的AI强不强。因此,在教学生堆栈的时候,老师可以告诉他们这个数据结构和扫地机器人具有类似的思想。从程序设计的堆栈,到走迷宫,再到包含路径规划的扫地机器人应用,这就是一个从理论到实践再到应用落地的思维过程,学生在学习编程时可以参考这种过程。
图4 从堆栈到走迷宫到机器人路径规划再到扫地机器人应用的思维过程
再来看看树的模型,它同样是一个常见的数据结构。在人工智能的经典教程里有一个名为“N皇后问题”的问题。国际象棋中的皇后可以横着走、竖着走、斜着走,N皇后问题要求在一个棋盘上摆放尽量多的皇后并让她们不互相残杀。一般来说,我们会采用一些搜索算法如A*算法来解决这样的布局问题。在用A*算法之前,我们需要对这个问题的决策空间进行建模,也就是建一棵树的模型。先确定第一个皇后的摆放位置,再确定第二个皇后的摆放位置……以此类推,最后完成整个决策,这是我们求解N皇后问题的过程,也是一棵树的建模过程。老师在讲解N皇后问题时通常会告诉你要使用树的模型。尽管你学习了很多对树的操作,但当你真的需要用树来解决实际问题时,你会用吗?电子白板是一种可实现无纸化办公及教学的新型用具。在教学过程中,讲师可以在电子白板上方直接通过触摸操作电脑。那么,电子白板是如何实现触摸检测的呢?其实红外电子白板四周安装有红外发射灯管和接收灯管,红外发射灯管向对端的接收灯管发射红外线,发射灯管和接收灯管之间形成的光线将构成光网。当有人触摸电子白板时,计算机就能根据笔或手指遮挡的光线计算出触摸位置。那么,我们怎么布局这些光源呢?如果各个光源分布得太近,它们所构成的光网会过覆盖,浪费资源;如果分布得太远,光网的孔洞直径就会很大,产生触摸盲区。这样看来,光源的布局问题可以算是N皇后问题的拓展。从离散数学的树结构,到N皇后问题的决策树,再到光源的AI自动布局问题,其实都是AI的知识表示问题。这个知识表示就是一棵树以及对这棵树的构建过程。
图5 从树结构到N皇后问题的决策树再到光源的AI布局应用的思维过程
除了决策树,博弈树也是一种常见的树模型。井字棋是人工智能中博弈树模型应用的经典例子。相比于国际象棋和围棋,井字棋的棋盘是一个比较有限的空间,所以在有限时间内AI可以把它的博弈树画完。我们在下井字棋时会很容易打成平手,这是因为双方都可以快速遍历这个空间,推算出必胜策略,于是最后打成平手。如果用博弈树去模拟下井字棋的过程,我们会发现这其实是构造了一个人机对弈的人工智能,这个人工智能的知识表示就是一棵博弈树。鉴于博弈树的构建过程,人机博弈中“深蓝”和AlphaGo是如何实现的也就不难理解了。从博弈树到人机对弈,正是一个从理论到实践的过程,其中博弈树就是人工智能的一种知识表示。
图6 从离散数学的树到人机对弈应用的思维过程
此外,在计算机视觉领域中,人工智能可以利用卷积神经网络提取一幅图的特征,然后对它进行识别。其实AI对一幅图的识别要经历一个名为“滑窗过程”的步骤。人类会采用聚焦的方法去看一幅图的内容,因为视觉神经会告诉我们哪些部分是背景,哪些部分是前景。比如我们在看集体照时就会用眼睛扫过一张张人脸,最后找到目标人脸的位置。滑窗过程与之类似,但计算机不是人,它没有聚焦的功能,那它的滑窗过程是如何实现的?这就要用到数组结构了。如果对一维数组的遍历是对一个长表向量的遍历,那么二维数组对应的就是一个平面矩阵,三维数组对应一个方阵,多维数组对应多维空间的一个数据列阵。而图像滑窗可以看成是一个二维的数组,数组的大小可以变动,这是一种在计算机视觉中常用的技巧。深度学习中的图像检测其实就是对一张图片做多次的滑窗遍历,然后在每一次滑窗中调用卷积神经网络进行检测。因此,从数据结构的二维数组遍历,到图像检测的滑窗,再到深度学习的图像目标检测,也是知识表示在人工智能中的应用过程。
图7 从二维数组的遍历到图像检测的滑窗再到深度学习图像目标检测的思维过程
从以上例子可以看出,除了可以用数学建模完成人工智能的知识表示,计算机编程基础课程中的很多模型也可以作为人工智能知识表示的基础。从知识表示的角度看人工智能,你会发现即使没有专门学过人工智能相关课程,你还是有能力开发人工智能的,因为很多知识表示的模型都是你曾经学过甚至用过的。总而言之,通过知识表示可以看到人工智能的本质,并且知识表示的精确程度是人工智能成败的关键。
研究团队介绍
智能算法研究中心(原智能算法实验室,2018年与2020年更名)主要承担国内外重要智能算法类的研究课题,以算法与软件工具包的形式,根据国内外企业、科研与教育机构等单位在智能信息处理方面的需求,解决相关技术难点问题,并从中培养国际化算法研究型人才与算法工程化人才。
实验室必修课
实验室精神
-END-
总编:黄翰
责任编辑:袁中锦
文字:黄翰、梁靖欣
图片:梁靖欣
校稿:何莉怡
时间:2022年03月11日