小镇的夕阳|CCF-GAIR 2020,周志华:“数据、算法、算力”人工智能三要素,在未来要加上“知识”|( 六 )


反绎学习的讨论与案例
有几点内容我们来讨论一下 。 首先我们看这个数据部分 。 在反绎学习中 , 这个数据只需要有instance , 不需要有label 。 那么我们靠什么来做监督学习呢?主要就是靠初始分类器以及知识库中的知识 。 可以认为这个监督信息是来自于数据之外的地方 , 所以从这个角度上说 , 反绎学习可以看成是一个很广义的弱监督学习 。 但另一方面 , 如果初始数据中确实是有label的 , 那这个学习过程 , label信息完全可以用上去 。 比方说 , 我们把真的label和反绎出来的label一起用来对分类器做更新等等 。
第二个方面 , 初始的分类器从哪来?这可以有很多的办法 , 比方说类似于深度学习的预训练或者迁移学习 , 做一个任务时可以用另外一个任务的结果做初步模型 。 甚至把数据聚类的结果作为粗糙的起点 , 有时也可以 。 这里的关键是 , 初始分类器未必要准确可靠 , 只不过用它把过程启动起来 。 当初始模型非常粗糙时 , 如果知识库的知识靠谱 , 那就能通过知识库的信息来修正分类器 , 能进行下去 。 如果知识不太精准 , 而初始模型比较好 , 也能往下学 。 如果两者都好 , 当然可以做得更好 。 也就是说 , 至少有一个好就能往下做 。 当然 , 如果数据没有label、初始分类器不靠谱、知识也不靠谱 , 那这样的任务本身就没法做 。
那接下来 , 这个知识库从哪来?这个目前还是需要人类专家来提供 。 最近一些关于知识图谱的工作能提供很多帮助 。 另外 , 有可能初始的知识并不是完美的 , 那么这个过程中 , 也可以通过对数据的学习来对知识做精化 , 所以反绎学习本身也可以认为是一个对知识精化的过程 。
接下来这个过程中涉及到怎么样具体地去做学习 , 去做推理等等 , 这些具体算法机制的设计 。 反绎学习本身是一个框架 , 对里面这些机制细节做不同的设计 , 可以产生出不同特点的反绎学习模型和算法 。
下面就介绍一个简单的例子 , 面对的这个任务是破译长代码 。
第一个是DBA任务 , 左边是训练数据 , 每个数据都是由5个图像组成 , 可以认为它是5位 , 0+0=0是正例 , 1+0=0是反例 。 我们对这5位图像组成的数据学习之后 , 测试数据是右边这样 , 长度要比训练数据长得多 , 而且有些数据特点也不同 , 例如训练数据中的等号总在倒数第二位 , 而测试数据中的等号可以出现在很不一样的位置 。 第二个RBA任务更困难 , 连图像的含义都看不出来 , 图像都是随机生成的 。
实验里这个简单任务本身并不重要 , 重要的是显示出把机器学习和逻辑推理以”相对均衡”的反绎学习方式结合起来 , 虽然仅用了很简单的实现 , 就焕发出令人兴奋的能力 。 今后如果设计出更精致、巧妙的实现方式 , 可能会给我们带来更多惊喜 。
P.S:演讲结束后 , 周志华教授还为《机器学习理论导引》以及《集成学习:基础与算法》两本新书举行了签售会 , 两本书分别出版于2020年6月和8月 , 前者为有志于机器学习理论学习和研究的读者提供一个入门导引 , 后者则系统性地阐述了集成学习 , 两本书在签售会现场引起读者和现场观众的积极反响 。


推荐阅读