在机器学习领域,人们始终对模型的可解释性存在担忧。我们有没有办法写出可解释的模型,建立起人对于机器的信任?
受益于深度学习技术的突破,图像分类、物体检测等传统计算机视觉任务的精度也得到了大幅度的提升。但是由于深度学习模型的复杂性,目前关于深度学习的理论并不完善,这就导致了两大问题:
第一,模型的工作机制对使用者来说并不透明,人们无法解释模型识别正确或错误的原因,因此也就无法从理论上证明模型在实际应用中是否能够达到好的效果,从而在一定程度上阻碍了模型在一些性命攸关的领域中应用(如医疗影像分析、自动驾驶等);
第二,几乎完全基于数据驱动的方式学习模型参数,难以将人们长期以来总结形成的经验和知识融入模型,从而难以对模型学习过程施加有效的约束,使模型在小训练样本、零训练样本等真实条件下的精度远低于人类。
人工智能领域顶级学术期刊 IEEE Transactions on Pattern Analysis and Machine Intelligence(即 IEEE TPAMI,影响因子 17.861)最近接收的论文《What is a Tabby? Interpretable Model Decisions by Learning Attribute-based Classification Criteria》中,华为云联合中科院计算所,针对上述两个问题提出了一种探索性的解决方案,通过利用物体类别之间存在的层级关系约束,自动学习从数据中抽取识别不同类别的规则,一方面对模型的预测过程进行解释,另一方面也提供了一条引入人工先验知识的可行途径。
论文链接:https://ieeexplore.ieee.org/document/8907459
首先,我们通过一组简单的例子来看一下分类学家是如何对动物进行分类的(来自维基百科):
(1)「虎斑猫」是一种体表有条纹、斑点、线条、螺旋图案的「家猫」。
(2)「家猫」是一种小型的、通常体表有皮毛的、肉食性的、被驯化的「猫科动物」;
(3)「猫科动物」是一种具有伸缩自如的爪子、苗条但肌肉强健的躯体、灵活的前肢的「食肉动物」。
图 1. 类别层级结构示意
从上边的例子可以看出来,分类学家在对动物进行分类的时候,采用了一种层级化的方式,在层级中,每个类别都被表示成「父类 + 一些特定属性」的形式,比如有条纹、有斑点、有线条、有螺旋,就是「虎斑猫」相比它的父类「家猫」出来的属性。
实际上,如果对层级做一些压缩操作,每个类别都可以完全用一组特定属性来表示。以「虎斑猫」这个类别为例,经过一级压缩:「虎斑猫」是一种小型的、肉食性的、被驯化的、体表有带条纹、斑点、线条、螺旋图案皮毛的「猫科动物」。可以看到,经过一级压缩后,「虎斑猫」就可以通过「父类的父类 + 更多的属性」来表示了。更进一步,如果经过两级压缩:「虎斑猫」是一种小型的、肉食性的、被驯化的、具有伸缩自如的爪子、苗条但肌肉强健的躯体、灵活的前肢的、体表有带条纹、斑点、线条、螺旋图案皮毛的「食肉动物」。可以看到,经过两级压缩后,「虎斑猫」就可以通过「父类的父类的父类 + 更多更多的属性」来表示了。
以此类推,如果一直将这个压缩的过程进行下去,「虎斑猫」就可以通过「动物 + 虎斑猫具有的全部属性」这种方式来表示了。对于其他动物来说,也是类似的,每种动物都可以表示为「动物 + 这种动物具有的全部属性」。由于每种动物的表示中都含有「动物」这个公共的组成部分,可以将每种动物的表示形式都简化为「这种动物具有的全部属性」。类似的,对于「植物」、「人造物」等等所有物体,都可以完全用一组属性来表示。因此,只要属性定义足够好,完全通过属性就可以准确地区分出来所有可能见到的类别,并且这种分类方式的可解释性非常好,也可以轻松地将新的人工先验知识引入进来。
但是实际中,由于类别数量巨大、海量属性难以定义,不可能通过人工的方式对每个类别的属性进行定义。那么有什么方法可以在不对数据进行额外标注的情况下实现类似的分类方式呢?