CCF-GAIR2020人工智能前沿专场,南京大学计算机系主任、人工智能学院院长、CCFFellow、ACM、AAAI、IEEE、IAPRFellow周志华教授作关于“溯因学习”会议报告的演讲。周志华表示,今天的人工智能热潮得益于机器学习的巨大进步,尤其是深度学习技术在大数据和大计算能力的支持下发挥了巨大的威力。机器学习算法模型在使用更多的数据和计算能力后,所获得的性能增长可能会远远超出算法模型设计者的预期。然而,使模型“更大”的代价很高。因此,他认为,在人工智能的研究中,学术界和产业界进行不同的分工是合适的:把“追求性能”留给产业界,学术界会回归本源,做“探路”和“想想未来”的事情。如何将“机器学习”与“逻辑推理”相结合,是人工智能领域的“制胜法宝”。之前的一些努力都集中在“推理”和“学习”上,而对方并没有发挥出自己的实力。周志华教授提出“AbductiveLearning”,希望让机器学习和逻辑推理在一个框架下更加平衡和充分发挥作用。他说,“现在我们都知道人工智能技术需要数据、算法和算力这三个要素,未来我们需要考虑知识这个要素。知识凝聚了人类的智慧。在过去的十年里,我们都开始从数据驱动的角度来研究人工智能,现在是数据驱动和知识驱动结合的时候了。”以下为周志华教授现场演讲内容,AI科技评论不改初衷整理编辑:周志华:各位专家朋友们大家早上好。感谢CCF及杜子德秘书长的邀请。作为CCF的老会员,很高兴参加这次活动。今天和大家分享的主题是《Abductive Learning(反绎学习)》。人工智能技术的发展需要三个要素:数据、算法和计算能力。几年前,“大数据时代”还是一个热词。大家都知道,大数据本身并不一定意味着大价值。数据是一种资源。要获得资源的价值,必须进行有效的数据分析。如今,有效的数据分析在很大程度上依赖于机器学习算法。今天的人工智能热潮主要是由于机器学习,尤其是深度学习技术的巨大进步,在大数据和计算能力的支持下发挥了巨大的威力。谈到深度学习,我们会谈论深度神经网络。深度神经网络是一个非常庞大的系统,需要大量的数据和强大的计算能力来训练它。人工智能算法模型对算力的巨大需求,也推动了当今芯片产业的发展。例如,用于训练深度神经网络的GPU早期用于动画和渲染。如果没有对深度神经网络如此大的需求,GPU很难有今天这么大的市场,更不用说TPU等新设计了。因此,我们可以看到,人工智能算法模型的发展与算力和芯片的发展具有相互促进的作用。这些要素是相辅相成、相互支持的。1、将“追求性能”交给行业。另一方面,如果你把强大的计算能力和超大数据堆起来,你可能会最大限度地发挥现有机器学习算法模型的能力。能够达到的性能水平甚至可能会让算法研究人员自己感到惊讶。这种“强化奇迹”的“暴力美学”产生了非常强大的模型。比如最近大家津津乐道的目前最大的人工智能模型——GPT3。它使用的训练数据为45TB,模型参数为1750亿个参数,模型大小为700G。在此模型的基础上,自然语言处理中的许多难题都取得了长足的进步。让我们看看这篇关于GPT3的论文。不同于我们学科的一般论文,有很多作者,31位作者。文末有分工介绍。有的作者专门写代码,有的专门调参,有的专门做数据采样,有的专门写论文……流水线的分工简直就是工业化大生产的典范。查看论文中的算法模型,我们可以看到它们都是现有技术,其中的每一部分都不是新的。但是,基于强大的工程组织,它运作良好。核心点是做大,做大,做大。做大就得付出代价。看完这篇文章,你会注意到里面有一句话,说作者在这个作品中发现了一个bug,但是因为成本太高,所以没有再训练。据说培训费用在1300万美元左右,所以即使发现了bug,也忍忍吧。这样的模型可以解决很多问题,带来很大的性能提升。然而,如此高昂的成本也给从事人工智能研究的人们带来了新的挑战。特别值得请教学术界从事人工智能研究的学者思考一个问题:昂贵的成本必须换取收益,模型性能的提升,在工业界可以提升经济效益,有时即使性能提升一两点,回报可能足以弥补投资。但学术界花那么多钱,怎么可能带来足够的回报呢?学术界和产业界在人工智能研究上应该有不同的分工:把对“性能”的追求留给产业界,学术界不需要过多关注“性能”,因为模型的性能提升了几点。学术界意义不大。如果只是发表几篇论文,对不起这么大的投入。当然,我们培养了人才,人才是无价的,但是优秀的人才不用花那么多成本也能培养出来。把对性能的追求留给工业界,学术界何去何从?回到源头,做学术界应该做的工作:“探路”和“思考未来”。只要是全新的探索,如果成功了,就可以指出一条新的路径,即使不成功,也可以指出这条路径不可行,意义重大。一旦确定了路径,进一步的改进和增强就留给了工业界。2“推理+学习”的问题我们在开头说过,人工智能技术需要三大要素:算法、算力和数据。以后还会这样吗?你想添加一些东西吗?这是我们现在要思考的。疫情期间,我们与包括企业、医学专家在内的合作方一起,我们制作的人工智能疫情分析推演模型,为相关部门的疫情防控决策提供了一点帮助。机器学习技术在这项工作中大量使用,但仅靠机器学习就足够了吗?不够!我们利用了许多高水平的医学专家和病毒专家的知识。我们深刻地认识到,如果机器学习技术能够与专家知识很好地结合起来,它可能会发挥出我们意想不到的作用。事实上,人工智能领域一直存在一个“圣杯”问题,就是我们什么时候才能将机器学习和逻辑推理很好地结合起来?如果我们能够得到一个完整的框架,两者能够同时发挥很好的作用,那么这是我们非常希望达到的目标。为什么要考虑这个问题?我们可以先看看。逻辑推理非常容易使用我们的知识,而机器学习相对容易使用数据、证据和事实。但从人类决策的角度来看,很多决策是同时使用知识和证据的。那么两人能好好相处吗?遗憾的是,虽然逻辑推理和机器学习在人工智能史上有很多研究,但两者基本上是独立发展的。例如,从1956年代到90年代,逻辑推理和知识工程是人工智能的主流技术,但那个时候机器学习研究还很冷清。20世纪90年代中期以后,机器学习研究大行其道,但此时逻辑推理和知识工程的研究却冷清了,即使在今天世界上从事这方面研究的人也寥寥无几。如果要将两者结合起来,主要障碍是什么?最主要的是,两者几乎是基于完全不同的表示。逻辑推理我们一般可以认为是基于一阶逻辑规则的表示。这里我们看一个例子,一共有三个从句,第一句:对于任意的X和Y,如果X是Y的父辈,则X比Y年长;第二句:对于任意两个人,X是Y的妈妈,那么X就是Y的父母;第三:LuLu是FiFi的妈妈。现在如果我们问:谁更老?那么如果我们从这样一个逻辑系统马上就可以知道,在第三句中,我们知道Lulu是菲菲的妈妈,那么从第二句中,我们知道她是菲菲的父母。从第一句话就知道她肯定比菲菲大。逻辑推理就是根据这样的逻辑规则所描述的知识来帮助我们做出这样的推理和判断。至于机器学习,则走另一条路。我们会收集很多数据,比如把这些数据组织成这样的表格形式,每一行是一个对象或者事件,每一列是描述它的一个属性或者特性,这就是所谓的“属性值”表示。从逻辑的角度来看,这种表示是命题逻辑的一种非常基本的表示,属性值表可以对应一个逻辑真值表。命题逻辑和硬件逻辑之间有很大的区别。“任意”和“存在”等量词起作用非常重要。一阶逻辑意味着涉及量词。例如,如果将量词“任意”拆开,将每一个可能的X都看成一个样本,就会变成一个无穷大的样本集。如果把一阶逻辑中的谓词,比如“parent”,作为一个属性,那么你会发现每个逻辑子句描述的并不是某个样本,而是样本之间的某种关系。因此,当我们直接把谓词当成一个属性,试图将其展开成一个普通的数据集时,会发现数据集中连一个真正的属性值描述都没有。虽然难度很大,但是谁都知道,如果能够将两者结合起来,或许会有更大的威力,所以历史上一直有很多研究者在努力。我们可以将我们的努力大致归功于两个方向。一个方向主要是做逻辑推理的学者,尝试介绍机器学习中的一些基础技术或概念。这里形成了一大类技术,有很多实践。让我们举一个最简单的例子,比如我们刚才给你看的几个子句。每个逻辑子句都是确定的:要么为真,要么不为真。我们现在可以为每个逻辑子句添加一个权重,在某种程度上我们可以认为它反映了该子句为真的概率。举个例子:如果一个人是大三,另一个是大一,那么第一个人比第二个人年长的概率是80%。通过添加0.8,我们使这个事实成为概率。具有概率权重的结果子句允许一定程度的概率推理。另一个方向是尝试从机器学习的角度引入一些逻辑推理。比如我们看到这样一个条款,如果一个人抽烟,那么他很可能得了癌症。有了这些知识,我们可以在初始化贝叶斯网络时将任何X连接到癌症之间的边缘。也就是说,我们用这个初步的规则帮助我们初始化这个网络。初始化后,原来的贝叶斯网络就可以正常学习了。所以我们可以看看以上两类做法。在第一类中,我们可以看到它把机器学习引入了逻辑推理,但是主体仍然是通过推理来解决问题,所以我们称之为重推理和轻学习。第二种方法基本相反。它把逻辑推理的技术引入到机器学习中,但是后期解决的主要问题是机器学习,所以我们称之为learning-heavy和reasoning-light。总是一端重,一端轻,这意味着一端的技术没有充分发挥其威力。所以我们现在在想,能不能有一种新的机制来帮助我们充分发挥这两类技术的威力呢?我们最近提出了一种新的解决方案,称为AbductiveLearning。3什么是“反解释”?在我们理解溯因学习之前,我们先来了解一下这个溯因是什么意思。就人类对知识的处理,或者对现实问题的抽象而言,我们通常有两种途径。一是扣分。我们从一个普遍的原理出发,然后推导出一些具体的结果,这个推导过程是有保证的。比如我们做定理证明,我们首先得到一些数学公理,然后根据这些数学公理,我们证明所有其他与之一致的定理。这是一个“由一般到具体”的过程,也就是演绎。另一种方法是归纳法,就是先看到一些具体的事实,然后从具体的事实中总结出一般规律。事实上,这就是机器学习所做的。我们看到了很多数据,然后希望学习到一个反映普遍规律的模型,也就是“从特殊到一般”。定理证明可以说是演绎的典型代表,而机器学习则是归纳的典型代表。我们今天谈论的对立面是不同的。Abductive一词有时在逻辑上被翻译为归纳。但是在我们的框架下,翻译成归纳并不是特别合适,所以我们翻译成溯因。归纳学习大致是将演绎反向嵌入到机器学习的归纳过程中。对抗是什么意思?它从一个不完整的观察开始,然后希望对我们特别关注的一个集合得到最可能的解释。直接从这句话看可能很难理解。因此,让我首先向您展示一个有关如何破译玛雅历法的示例。大家都知道,在中美洲有一个古老的玛雅文明。他们建立了一套非常复杂和精巧的历法体系,具体有三套历法。左边的三根石柱上画着很多图案,每一个图案都代表一个意思。看着红框中间的五幅图像,考古学家知道它们对应的是一种叫做长历的玛雅历法。这是一组看起来像IP地址的数字。它实际上是一个松散的以20为基数的系统,它描述了一个日期,这是玛雅文明认为自世界创造以来已经过去了多少天。我不知道第一张和第四张图是什么意思,所以我在上面打了个问号。第二张图对应18,第三张图对应5,最后一张图对应0。接下来这两个数字用蓝色框起来,对应玛雅历法。左边的图不知道是什么意思,所以打上了问号;众所周知,右边的符号代表一种叫做Ahau的东西。这两个结合起来也代表了这一天。其实这两者一个是指月亮,一个是指太阳,有点像我们中国天干地支的结合,类似于说“庚月子日”。但仅仅依靠它肯定是不准确的。即使知道“庚月子日”,也不知道是哪一天,因为历史上有很多庚月子日,需要结合其他资料。最后两个是13Mac,对应玛雅阳历,意思是一年中的第13个月的第14天。但今年是哪一年?它只是还不知道。但如果三个日历中的问号都清楚了,那么这一天的定位就非常精准了。现在我们需要破译这三个问号。我们有一个重要的知识:三个日历系统,由于它们指的是同一天,所以三个问号的揭示值必须使三个计数一致。那么让我们看看考古学家会如何做到这一点。拿到这个图像后,他们首先根据自己以往破译图像的经验,“猜”出这些数字是什么。但这是非常困难的。考古学家现在只知道红色的两个数字应该是同一个数字,蓝色的应该是另外一个数字,但红色的可能是1、8、9。因为玛雅人雕刻的石柱不是机器而是手工制作的,所以每次都有变化。比如你看到最上面那个红色的图,它好像和1中最左边的那个,8中的第二个,9中最右边的那个很像。那么考古学家接下来要做什么呢?它们展现了各种可能的情况。比如我们认为红色的是1,那么蓝色的有几种可能,比如234567。比如右边最下面那一行是1.18.5.7.0,就是从观察到的图像中得出的猜测。也就是说,从观察到的石柱上,他们得出了几种可能的假设。下一步是利用他们所掌握的知识做出判断。我们掌握的知识就是告诉我们三个历法对应的日期应该是同一天。这里我们只找到红色为1,蓝色为6的那一行,对应的破译结果为长历创建以来的第275520天,恰好是神历一年的倒数第三天,也恰好成为阳历的第一天。13个月的第14天,一切都对齐了!所以,这就是结果。这就是演绎的过程。我们回顾一下,首先,它来自于一个不完整的观察,我们知道一些图像是什么,而我们不知道一些图像是什么。然后基于这个观察,我们得到一个假设。有了这个假设,让我们根据我们的知识找到最可能的解释。而这个解释就是我们目前关心的红蓝的集合。这就是绑架的意思。现在让我们回顾一下当前的机器学习。首先,我们需要很多实例,这就是我们的样本。我们必须有很多标签,这些标签是关于训练样本的已知结果。我们将其放在一起进行监督学习并训练分类器。溯因学习的设置是不同的。我们有一些样本,但只有样本的表现,没有结果。这类似于我们刚才在玛雅的故事中看到的很多意象,只是我们不知道这个意象对应的意义是什么。在溯因学习中,假设存在一个知识库,类似于考古学家刚才掌握的关于日历的知识。同时,我们还有一个初始分类器,就像说考古学家一开始看到这个图像,他会猜这个图像是什么?那他为什么要猜?他脑子里就有这样一个分类器。在这个学习中,我们首先将所有的数据提供给初始分类器,初始分类器会猜测一个结果,比如红色的可能是1等等。那么在得到这个结果之后,我们将其转化为知识推理系统可以接受的符号表示。例如,从这些标签中获得A、非B、非C等。那么下一步,我们需要根据知识库中的知识,找出有没有不一致的地方?刚才玛雅历的故事里,第一轮是一致的,但是一般的任务,可能不会这么早就找到一致的结果。如果存在不一致,我们能否找到修改后变得一致的内容?这就是我们要找到的最小的不一致之处。假设我们现在找到了,只要把这个非C改成C,那么得到的事实和知识是一致的。我们只是改变它,那是红色的部分。那么这是一个推演结果。至于推导的C,我们现在要回到原来的标签,改变标签,然后我们将使用修改后的标签和原始数据来训练新的分类器。这个过程可以不断迭代。这个分类器可以替代旧的分类器。这个过程停止,直到分类器不发生变化,或者我们得到的事实与知识库完全一致。可以看到左半边是在做机器学习,右半边是在做逻辑推理。而且,也不是说一头重一头轻,而是两者相互依存,已经加工成这样,这样一个过程。我们今天不会开始对溯因学习的正式描述。4归纳学习的讨论和案例让我们讨论几个要点。首先我们看数据部分。在溯因学习中,这些数据只需要有实例,而不需要标签。那么我们靠什么进行监督学习呢?它主要取决于初始分类器和知识库中的知识。可以认为这种监督信息来自于数据以外的地方,所以从这个角度来看,溯因学习可以看作是一种非常广泛的弱监督学习。但另一方面,如果初始数据中确实存在标签,那么在学习过程中就可以使用标签信息。例如,我们将真实标签和推导标签一起使用来更新分类器等。第二个方面,初始分类器从哪里来?有很多方法可以做到这一点,例如类似于深度学习的预训练或迁移学习。在做一项任务时,可以将另一项任务的结果作为初步模型。即使使用数据聚类的结果作为粗略的起点有时也能奏效。这里的关键是初始分类器不必准确可靠,它只是用来启动这个过程。当初始模型很粗糙时,如果知识库的知识是可靠的,可以通过知识库的信息修改分类器,这个过程可以继续进行。如果知识不是很准确,但是初始模型比较好,可以继续学习。如果两者都好,当然可以做得更好。换句话说,如果至少有一个是好的,你可以继续这样做。当然,如果数据没有标签,初始分类器不可靠,知识也不可靠,那么这样的任务本身是做不出来的。那么,这个知识库从何而来?这仍然需要由人类专家提供。最近关于知识图谱的一些工作可以提供很大帮助。另外,有可能初始知识并不完善,所以在这个过程中,还可以通过从数据中学习来提炼知识,因此溯因学习本身也可以看作是知识提炼的过程。接下来的过程涉及到具体怎么去学习,推理等等,设计这些具体的算法机制。归纳学习本身就是一个框架。这些机制细节的不同设计可以产生具有不同特征的溯因学习模型和算法。让我们介绍一个简单的例子。我们面临的任务是破译长代码。比如上面三行代码,都是以图片的形式呈现的。比如第一行是正例,第二行是负例。你能判断第三行是正例还是负例吗?这里训练数据的长度不同于用于测试数据的长度。此外,事先不知道数据的语义是什么。这有点像破解密码。现在考虑简单的XNOR问题。第一个是DBA任务。左边是训练数据。每个数据由5张图像组成,可以认为是5位。0+0=0是正例,1+0=0是反例。我们学习完这些5位图像组成的数据后,右边是测试数据,长度比训练数据长很多,一些数据特征也不同,比如训练数据中的等号是总是在倒数第二个地方,而测试数据等号可以出现在数据中非常不同的地方。第二个RBA任务比较难,连图片的意思都看不出来,图片是随机生成的。我们使用了一个简单的实现。机器学习部分使用卷积神经网络,逻辑推理部分使用ALP。两种开源代码都可以直接使用。把两者联系起来,中间的优化求解过程和一般的机器学习不太一样。我们在神经网络和统计学习中的优化一般都是采用数值优化,通常是用梯度下降来完成,但是现在我们面临的是Symbolicoptimization,无导数,梯度下降。这里我们使用我们研究团队过去五六年一直在做的零阶优化的方法,不求梯度地做优化。结合这些技术就是这个简单的实现。让我们来看看这个实验的结果。图中蓝色和紫色分别对应基于卷积神经网络和LSTM处理得到的结果。下面的横线对应的是随机猜测,上面的横线对应的是人的水平。对于第一个图中的DBA任务,我们可以看到如果长度在12位以内,神经网络可以比人类做得更好。但是当长度超过12位时,人类的表现优于这些神经网络。橙色部分是溯因学习的结果。将机器学习与逻辑推理相结合后,在这个任务上比普通人要好。右侧的RBA任务类似。在这个更困难的任务上,随着字符串长度的增加,所有方法的性能都在下降,但基于溯因学习的方法仍然高于人类水平。实验中简单的任务本身并不重要,重要的是展示机器学习和逻辑推理在一种“相对平衡”的溯因学习方法中的结合,虽然只是一个非常简单的实现,却能发出令人兴奋的结果能力。未来,如果设计出更精致、更巧妙的实现方式,或许会给我们带来更多的惊喜。有兴趣的话,上面第一篇是发表在《中国科学》上的文章。跳出细节来描述整个框架,易于阅读。二是描述刚才的具体实现。最后做一个简单的总结和展望:我们常说的数据、算法、算力三要素。在未来,我们可能应该考虑知识的元素。知识体现了人类积累的智慧。过去十年,我们从数据驱动的角度研究人工智能。现在可能是时候结合数据驱动和知识驱动了。我们的工作只是非常粗略的初步探索,这里还有很大的研究空间。如果你有兴趣,我相信我们会在这方面做得更好。谢谢!
