在人类对知识的处理上,或者说对现实问题的抽象上,我们通常有两种做法。
一种是演绎,我们从一个一般性的原理出发,然后把一些特定的结果能够得出来,而且这个得出的过程是有保障的。比方说我们做定理证明,首先拿到一些数学公理,然后基于这些数学公理,把与它们一致的所有别的定理都证明出来。这就是一个“从一般到特殊”的过程,这是演绎。
另一种做法是归纳,就是说我们先看到一些特定的事实,然后我们从特定的事实中总结出一般的规律。其实机器学习做的就是这么一件事。我们看到很多很多的数据,然后希望学习出反映一般规律的模型,这就是“从特殊到一般”。
定理证明可以说是演绎的典型代表,而机器学习是归纳的典型代表。我们今天讲到的这个反绎,不太一样。Abductive这个词在逻辑里有时候翻译成诱导。但是在我们这个框架下,再把它翻译成诱导就不是特别合适,所以我们另译为反绎。反绎学习就大致是把演绎反向嵌入到机器学习归纳过程中去。
反绎是什么意思呢?它是首先从一个不完备的观察出发,然后希望得到一个关于某一个我们特别关心的集合的最可能的解释。直接从这句话来理解可能有困难。那么下面我就先给大家看一个例子,是关于怎么去破译玛雅历法这么一个故事。
大家知道中美洲有一个古老的玛雅文明。他们建立起了非常复杂、精致的历法系统,具体是有三套历法。
左边这三个石柱子上画出了很多的图案,每个图案它会表达一个含义。看中间红色方框中间的5个图像,考古学家知道是对应了玛雅的一个历法叫做长历。这是一组看起来像是IP地址的数字,它实际是不严格的20进制,描述了一个日期,就是玛雅文明认为从创世开始一共经过了多少天。这里面第1个和第4个是什么含义还不知道,所以打了问号,第2个图像对应于18,第3个对应于5,最后一个对应于0。
接下来,蓝色框出来这两位,对应于玛雅的神历。左边这个图像是什么含义还不知道,打了问号;右边这个符号已经知道代表一个东西叫做Ahau。这两位结合起来也代表了一天。其实这两位一个是指月,一个是指日,有点像我们中国天干、地支的搭配,类似于在说“庚月子日”。但仅靠它肯定是不精确的,即便知道“庚月子日”也不知道具体是哪一天,因为历史上有很多的庚月子日,还需要要和别的信息结合起来。
最后这两位是13 Mac,对应玛雅的太阳历,是说这一年第13个月第14天。但是,这是哪一年?仅凭它还不知道。
但是如果这三个历法里的问号都清楚了,那么这一天的定位就非常精确了。现在需要把这三个问号破译出来。我们有一个重要的知识:这三个历法系统,由于它们指的是同一天,那么揭示出来的这三个问号的值一定会使这三个计数达到一致。
那我们看看考古学家会怎么做这个事。拿到这个图像之后,他们首先根据以往破译图像的经验去“猜“ 这些数字是什么。但这很难,考古学家现在只知道这两个红色的应该是同一个数,蓝色的应该是另外一个数,但这个红色的既有可能是1,也有可能是8,也有可能是9。因为玛雅人刻石柱是手工而不是机器做的,每次都有变化。比方说大家看到最上面这个红色的图像,它好像和这个1最左边这个很像,和8的第二个也很像,跟9最右边的这个也比较像。
然后接下来考古学家做什么呢?他们把可能的情况全部展开。比方说如果我们认为红色的这个是1,那我们现在这个蓝色的就有几种可能,2 3 4 5 6 7这些可能都有,例如右边的最下面一行是1.18.5.7.0,这是从观察到的图像得出的猜测。也就是说从观测到的石柱,他们得出了这么几个可能的假设。接下来的一步,他们就要利用所掌握的知识来做判断。
所掌握的知识是告诉我们现在这三个历法系统,它对应的日期应该是同一天。这里恰好找到红色是1、蓝色是6的这一行,对应的破译结果是长历的创世以来第275520天,恰好是神历中一年的倒数第三天,也恰好是太阳历中第13个月的第14天,一切都一致了!于是,这就得到了结果。
这就是反绎的过程。
我们回顾一下,首先它来自一个不完备的观察,有的图像是什么我们知道,有的图像是什么我们不知道。然后基于这个观察,我们得到一个假设。有了这个假设之后,根据我们的知识来找一个最可能的解释。而这个解释就是现在红色,蓝色这个我们当前所关心的集合。这就是反绎的含义。
我们现在回头看一看现在的机器学习。首先我们要有很多instance,这是我们的样本。我们要有很多label,这是关于训练样本的已经知道的结果。我们把它合起来做监督学习,训练出一个分类器。
反绎学习的设置不太一样。我们有一些样本,但只有样本的表现,不知道结果。这就类似于刚才在玛雅这个故事里面我们看到很多图像,但这个图像对应的含义是什么还不知道。反绎学习中假设有一个知识库,这就类似于刚才考古学家所拥有的关于历法的知识。同时我们还有一个初始分类器,这就好比说考古学家一开始看到这个图像,他会猜这个图像到底是什么?那么他凭什么猜呢?是他脑子里面有这么一个分类器。