机器智能跃迁的三大要素

机器智能的发展与三大要素有关:第一是认知能力,第二是学习能力,第三是处理不确定性的能力。

认知能力即对周围环境,包括人、物及其关系的理解能力——不只是看到,还要能够理解这里正在发生什么和未来可能会发生什么。不过,拥有认知能力不等于拥有学习能力。也许机器完全能够处理眼前的状况,但它能够自己学习与提高吗?不一定。机器学习的未来发展有三种可能:第一种可能是,机器继续在人的帮助下学习,我们通过标注一些结果、内容来训练它们;第二种可能是,我们只通过视频来展现动作,让机器自己学习;第三种可能是,机器从自身生成的样本、从自然界,或者从人类为其构造的例子中学习,并自己根据规则产生大量的例子来练习。这三类学习方法可以组合使用,来训练包含感知、认知和行为能力的机器智能。

处理不确定性的能力则是人类最大的一个优势。比如,你在开车时看到前方有如下场景:左边是一个骑自行车的人,右边是一个小孩,路上有一个球。此时,你需要判断小孩会不会去捡球,如果去捡球的话,汽车该如何避让,而左边骑自行车的人会不会看到,这些都属于不确定性。现在的自动驾驶软件都是根据感知输入做出确定的判断和行动规划的,并不能处理这些不确定性。但未来的机器需要并且能够对这些进行处理。尽管输入的数据中有很多是有噪声的,但我们可以用概率计算的方式来解决。

对于这些被称为自主系统的智能机器,特别是自动驾驶系统和机器人来说,有些场景是有危害的,而且这些场景中都包含大量的可变因素和感知过程的不确定性。既然不能在真实场景中做实验,那就要在模拟器中做。整个训练和测试过程需要大量的计算与存储资源,这也是网络和云计算带来的便利。

机器是否能做到理解?

机器的认知能力在不断增强,现在它们已经能够识别视觉数据里的一些东西,例如人和物体。那么机器能否理解此时发生了什么?让我们来看一个例子(见图1-1),图中的英文字幕描述了其所在的视频场景中正在发生什么。这个英文字幕并不是人写的,而是机器自动生成的,由算法产生。图中显示的只是一条挑选出来的最佳描述,其实算法看到了更多的信息,包括时间维度和视频里的空间维度,因此可以给出更多的信息。我们看到,算法挑选出来的这条字幕已经和场景非常相关了。比如,当只看到一个人的时候,它会描述成“一个人在讲话”;当看到PPT的时候,它会描述成“一个人在演讲”;当看到下面观众的时候,就转而描述成“一个人在一群人面前做一个报告”。所以,机器理解环境场景里发生了什么的能力正在提高,而这项进展不过是在过去两三年内实现的。

图1-1 机器如何理解环境

我们可以预想到在未来,人类会让一台机器去了解某个环境里正在发生什么,这些人之间有怎样的关系,他们想干什么,或者说他们有什么意图。当机器对这些问题都有比较好的把握时,就意味着机器的认知能力已经达到了可用的水平。

关于机器的认知能力,比较关键的一点是它有一个完整的框架(见图1-2)。图中左边是多模态信息的输入,右边是认知结果的输出,底部是知识的输入。在多模态输入这一层,视频、音频和语言文字等都是机器从现场环境中观察到的,属于感知层的输入信息。视觉识别、语音识别和文字识别的作用是较为真实地将当前场景数字化,使其成为语义信息。但这不包括历史信息和机器观察不到的知识。因此,为了让机器能够理解环境,我们需要给它连上知识库和历史信息,把它看不到的东西加进来。这样机器才能够从多模态的输入中融合已经看到过的信息和知识,并加以分析,最终达成对场景的理解。多模态的信息融合和知识图谱整合的框架对于机器认知的发展是非常关键的。关于其中使用的各种算法的选择和发展,许多人类算法工程师发挥了巨大的作用。

图1-2 多模态视频理解框架

机器的认知能力可以支持哪些功能呢?第一点,它可以直接把视频内容(原来是像素和颜色)转化成文字,代表语义,这样就可以进行搜索了。第二点更为重要,它能进一步生成新的语义网络的关系,支持视频内容的问答。例如,你可以问它“这里面有没有人在房间里做报告的部分”,它会帮你找出来。最重要的第三点,就是视觉关系理解。机器可以在不同的视频之间寻找相关性,具有查找相似性的能力,并且可能产生记忆。

从上面的讨论可知,知识图谱对于机器智能的发展非常重要。一方面,我们可以给机器输入固定知识,例如常识和稳定的领域知识。另一方面,机器也可以自己构建知识库。机器人的深度摄像头可以看到颜色,也可以看到深度。它在一个环境里绕一圈,就能给这个环境建立一个三维的场景地图,同时也可以利用颜色数据识别出场景中的人、物体、沙发、墙壁等,从而建立起这个环境的空间知识库,再加上随时间推移记录下来的人物之间的运动和交互关系,就构成了这个环境的动态知识库。如果未来人们生活的每个房间、每个场所都有这样一个动态知识库存在,那就会形成一个高度简洁、可搜索的数字化世界。这个世界与现实世界的关系不是一种在像素级别的一一对应——不是说这儿有一棵树,数字世界里就有一棵所有细节都存在的树,而是一种对现实世界高度抽象的描述。

接下来的一个问题是:如此大量的知识要怎么存放呢?想一想,人类的大脑能存储多少知识?其实不是很多。例如,我的脑中有一些与IT相关的知识,却放不下多少金融知识和医学知识。但这对机器而言是可能实现的。全部的人类知识可以分成两大类:第一类是稳定知识,包含通用知识和领域知识。通用知识是人们从小学开始学习的不变的知识,领域知识则是从大学开始学习的分专业的知识。这些都是比较固定的知识,可以自上而下地构建知识图谱。第二类是动态知识。这类知识不是在常规学习过程中学到的,而是随着整个社会场景发展,甚至是随着人的不同而改变的。想象这样一个场景:当一个机器人或者一辆无人驾驶车在为客户提供服务时,根据它服务的个人或家庭的不同,它会习得截然不同的知识。这些就属于动态知识。动态知识还包括群体性知识。40多岁的人的知识范围,与十几岁的人完全不一样。不同地域的人,他们的知识范围也是不一样的。动态知识是自下向上动态构建的,并且在不停地更新。

机器可以涵盖全部这些知识,但在信息世界中,这些知识不可能都存放在终端内。一是有一些在云端,有一些在终端。因为在服务具体个体的时候,考虑到网络延迟的影响,将所有知识都存放在云端的话,响应度是不够的。这时,我们就要充分利用通信和网络技术发展带来的好处了。你可能听说过边缘计算,它指的是在5G时代可以很好地利用接入网的边缘加入计算和存储的功能。于是我们可以把知识按照访问需要分布式存放在云端-边缘-终端内。云端存放全部稳定知识,终端和边缘存放部分稳定知识与全部动态知识。那么我们要如何在终端、边缘和云端存放知识?以下三个例子会帮助你理解。

第一个例子与自然语言交互相关。你家里可能会有一台小的智能音箱,它通过语音交互帮你提供一些信息。这其实是调用了云端的服务来实现的。有时你会感觉它的响应速度有些慢,这是因为碰上了网络慢的情况。处理请求要从家里的小音箱到达云端的服务器(通常有几十、数百公里的距离),网络速度慢的时候,整个交互过程当然会变慢。如果将你的服务部署在距离你只有几公里远的边缘服务器上,从而进行快速处理的话,那么响应速度会大幅提升。第二个例子与地域性相关。通过边缘计算,我们可以创建与各地方言相关的语音服务和知识库。第三个例子与场景相关。就拿基于语音的生活服务来说,在北京提供服务的知识库和四川、广东的肯定不一样。比如大家都说要吃辣一点的菜,然而每个人所指的辣度是不一样的。这就是与地域性相关、与场景相关的知识,最适合用边缘计算做服务,具体方式是增强与地域人群的相关性,也可以增强服务的适应性。

机器学习的方式

目前,机器学习的常用方式有四种。第一种是无监督学习,需要机器自己去发现数据之间的关系,主要用于聚类。第二种是监督学习,需要有人告诉它这个是什么,这类是什么。打上标签以后,机器可以通过训练把这个中间的识别过程用模型表示出来。第三种是自监督,关联学习。机器不需要人教,而是通过观察几种对象的相关性、前后的因果关系,自动生成一些关联。比如说打方向盘时,车轮就会转,前置摄像头看到的景象都会偏移。关联学习就会发现其中的关系。第四种是强化学习,机器会通过跟环境交互,观察按照当前模型决策产生的一些影响,来优化动作序列或者决策序列。在机器学习过程中,它们会根据数据特点和应用需求来具体问题具体分析,融合使用这几种机器学习的方式。

除了上述学习方式之外,机器学习未来发展的潜力还在于模仿学习和生成式学习。

模仿学习是指不需要人去标注数据,也不需要人去写执行算法,机器能够直接从人的示范中学习。人只要通过示教(直接拖动或者通过视频),做出动作让它看,机器就能自己学习。

生成式学习是指机器从自己生成的样本中学习。机器从自然界中和从人给它构造的例子中获得的数据量不够,但它可以自己根据规则产生大量的例子来练习。机器自己会产生大量真实场景中很少出现的例子。典型的例子是自动驾驶领域,有些场景是有危害的,不可能在真实场景中去实践,那就要在模拟器中做。我们可以在模拟器中模拟极端的场景,还可以在模拟器中反复训练机器。同时,有了实时通信的无线网络,就可以把多个智能机器放在一起,练习它们之间的协同交互。例如,A机器人要把物品递给B机器人,这个过程可以通过编程实现,但是编写的程序泛化能力和适应性都不强。更高级的方法是,通过设置基本的学习方法和奖励规则让机器人在模拟器中学习:A把一个东西抓起来递给B,配合好了就能接住,配合不好东西就会掉落。经过多次练习,它们就知道如何做到完美配合。然后,再把算法转移到真实环境里测试。

图1-3中的例子展示了如何通过人的简单示范,让机器人学会做一件比较复杂的事情。左图的研究员通过拖拉示范,告诉机器人怎样把一个杯子里的球倒进地上的碗里。之后,这个机器人通过在模拟器里反复训练,学会了去做这件事情的方法。更有趣的是,这不是一个固定动作。人在教它的时候,地上的碗是放在固定位置上的。而在机器人练习的过程中,碗的位置是可以改变的,而且位置的改变不是一个固定变量。机器人要自己调整适应,找到将球倒进去的方法。即使机器人已经根据现在的位置规划好了运动轨迹并启动执行,我们临时改变底下小碗的位置,它也能够及时调整自己运动的轨迹。

图1-3 机器人如何模仿学习

用手工编程做出这套控制算法还是很困难的,并且很难考虑到多种场景。但我们可以让机器人通过模仿学习加上强化学习,在模拟器里反复训练,这样它们就可以学会这项技能。

处理不确定性

人类是最擅长处理不确定性的。比如驾驶员在复杂路况下开车时,要不停地处理不确定性。例如前面行驶中的车会不会减速?骑自行车的人会不会转弯?这些是不确定的。现在的计算机系统都是按照确定性在做事,处理人工生成的数据,执行确定的工作流程。但未来的机器要在真实的物理世界中和人、物交互工作,所以未来的机器智能必须能够处理不确定性。


未来的机器智能必须能够处理不确定性。


从计算的角度,我们可以用概率计算的方式来处理不确定性。概率计算的关键在于预测与调整。一个简单的思路是,先根据目标场景的已有数据样本产生一个概率模型,并用它生成一个预测,然后通过观察这个预测与实际发生场景之间的差异去调整概率模型,使之与实际发生的场景相符。这种概率计算的方式计算量很大,以前的机器运行速度很慢,基本没法实现。现在,机器的整体计算能力大幅提高,还可以设计专门的加速硬件,概率计算的方式就变得可行了。

从互联的角度,我们可以通过变未知为已知来处理不确定性。机器之间相互连接的方式有很多种,从有线连接到无线连接。有线连接可分为多个级别(芯片内部、芯片之间、机器之间),利用不同的介质与协议实现不同的数据传输带宽和延迟,让机器之间进行快速可靠的通信。无线连接可以使机器之间跨越空间距离、跨越物理传输介质去传递信号,带来更大的想象空间。有了这些连接之后,人与机器之间、机器与机器之间可以实现无缝通信,各取所长地处理信息,把原本对于个体来说不确定的情况变成确定的。

图1-4展示了一个非常好的例子。右边的4个视频是普通的十字路口摄像头拍摄的视频。以前,这些摄像头被用来检查有没有车闯红灯、有没有套牌车等情况。现在,我们可以利用通信技术同步处理4个摄像头的视频数据,检测车辆、行人及其运动轨迹,从而将这个场景实时重建成左边这个虚拟的、完整的全方位视图,并且实时追踪各个车辆、行人的运行。然后,利用短距离的实时无线通信技术,可以把这些信息发送给进入这个路口的车辆。这样,每辆车都会知道其他方向有什么车可能与它发生碰撞,即使它被公交车、大卡车挡住视线也能看到,因为智能的机器给了它一个“上帝视角”,还给出了预测,这是人类无法做到的。

图1-4 智能交通路口

一个典型的通过计算和连接把未知、不确定性转变为已知、确定性的例子,让我们看到了“技术+网络”可以带来的力量。