自AlphaGo战胜人类顶尖围棋手之后,人工智能这一概念真正成为了社会各界关注的焦点,也为各国政府所重视。一方面可以给我们带来诸多便利,比如可能为我们提供医疗、法律、金融等方面的建议或决策,也可能直接操控汽车、无人机,甚至大规模杀伤性武器。但另一方面,它也被用来“做坏事”甚至危害人类。如某些网站利用人工智能算法进行“大数据杀熟”,2017年也发生了全国首例利用人工智能技术进行网络诈骗的案件。2015年德国大众公司甚至发生了机器人“杀人事件”。欧盟已经要求所有算法解释其输出原理[3],这意味着不可解释的算法模型将成为非法使用。
2.可解释是人工智能发展选择
在时下热议的人工智能相关伦理、算法歧视、算法正确性、安全性等问题中,有一个问题被时常提起,即以深度学习算法为代表的人工智能算法的可解释性问题。人类理性的发展历程使我们相信,如果一个判断或决策是可以被解释的,我们将更容易了解其优点与不足,更容易评估其风险,知道其在多大程度上、在怎样的场合中可以被信赖,以及我们可以从哪些方面对其进行不断改善,以尽量增进共识、减少风险,推动相应领域的不断发展。这样的思维范式或许是诞生在人工智能时代之前的稍显过时的思维模式。或许随着科技和社会的发展,未来会演化出新的思维范式,但目前这仍然是我们最成熟、最具共识、最可信赖的思维模式 。
二、可解释性方法概述
17年ICML会议上来自谷歌的科学家给出一个关于可解释性的定义是“Interpretation is the process of giving explanations to Human”。许多模型及应用不可解释性的原因主要来源于对问题和任务了解得还不够充分。那么只要在使用模型的过程中,只要是能够提供给我们关于数据或模型的可以理解的信息,有助于我们更充分的发现知识、理解和解决问题的方法,那么都可以归类为可解释性方法。同时,这篇文章将可解释性方法按进行的过程划分为如下三类:在建模之前的可解释性方法、建立本身具备可解释性的模型和建模后使用可解释性方法对模型作出解释,下面对这三大类方法分别作介绍。
三、建模前:在建模之前的可解释性方法
在建模之前的可解释性方法主要涉及一些数据预处理或数据展示的方法机器学习解决的是从数据中发现知识和规律的问题,如果我们对想要处理的数据特征所知甚少,指望对所要解决的问题本身有很好的理解是不现实的,在建模之前的可解释性方法的关键在于帮助我们迅速而全面地了解数据分布的特征,从而帮助我们考虑在建模过程中可能面临的问题并选择一种最合理的模型来逼近问题所能达到的最优解。
数据可视化就是一类非常重要的建模前可解释性方法。很多对数据挖掘稍微有些了解的人可能会认为数据可视化是数据挖掘工作的最后一步,大概就是通过设计一些好看又唬人的图表或来展示你的分析挖掘成果。但实际上真正要研究一个数据问题之前,通过建立一系列方方面面的可视化方法来建立我们对数据的直观理解是非常必须的,特别是当数据量非常大或者数据维度非常高的时候,比如一些时空高维数据,如果可以建立一些一些交互式的可视化方法将会极大地帮助我们从各个层次角度理解数据的分布。
四、建模中:建立本身具备可解释性的模型
建立本身具备可解释性的模型是最关键的一类可解释性方法,同样也是一类要求和限定很高的方法,具备可解释性的模型大概可以分为以下几种模型。
基于规则的模型,比如我们提到的非常经典的决策树模型。这类模型中任何的一个决策都可以对应到一个逻辑规则表示。但当规则表示过多或者原始的特征本身就不是特别好解释的时候,基于规则的方法有时候也不太适用。
基于单个特征的方法主要是一些非常经典的回归模型,比如线性回归、逻辑回归、广义线性回归、广义加性模型等。这类模型除了结构比较简单之外,更重要的是回归模型及其一些变种拥有非常坚实的统计学基础,上百年来无数统计学家探讨了在各种不同情况下的模型参数估计与修正、假设检验、边界条件等等问题,使得他们在各种不同情况下都能使具有有非常好的可解释性。
基于实例的方法主要是通过一些代表性的样本来解释聚类/分类结果的方法。比如可以为每一个聚类簇中选出代表性样例和重要的子空间。
基于稀疏性的方法主要是利用信息的稀疏性特质,将模型尽可能地简化表示。比如LDA方法,根据层次性的单词信息形成了层次性的主题表达,这样一些小的主题就可以被更泛化的主题所概括,从而可以使我们更容易理解特定主题所代表的含义。
基于单调性的方法在很多机器学习问题中,有一些输入和输出之间存在正相关/负相关关系,如果在模型训练中我们可以找出这种单调性的关系就可以让模型具有更高的可解释性。比如医生对患特定疾病的概率的估计主要由一些跟该疾病相关联的高风险因素决定,找出单调性关系就可以帮助我们识别这些高风险因素。
五、建模后:使用可解释性方法对模型作出解释
建模后的可解释性方法主要是针对具有黑箱性质的深度学习模型而言的, 深度学习的黑箱性主要来源于其高度非线性性质,每个神经元都是由上一层的线性组合再加上一个非线性函数的得到,人们无法像理解线性回归的参数那样通过统计学基础假设来理解神经网络中的参数含义及其重要程度、波动范围。但实际上我们是知道这些参数的具体值以及整个训练过程的,所以神经网络模型本身其实并不是一个黑箱,其黑箱性在于我们没办法用人类可以理解的方式理解模型的具体含义和行为,而神经网络的一个非常好的性质在于神经元的分层组合形式,这让我们可以用物质组成的视角来理解神经网络的运作方式。主要分为以下几类的工作:隐层分析方法、模拟/代理模型、敏感性分析方法。
隐层分析方法:该方法通过对隐层运用一些可视化方法来将其转化成人类可以理解的有实际含义的图像以展示神经网络中每层都学到的概念。我们都知道典型的CNN模型的一个完整卷积过程是由卷积-激活-池化(pooling)三个步骤组成的,也可以通过反池化-反激活-反卷积这样的一个逆过程,并借助特征可视化帮助我们理解CNN的每一层究竟学到了什么东西。此外,文献[]提出了一种网络切割的方法以提取CNN的语义概念。
模拟/代理模型:该类方法是针对黑箱模型,使用蒸馏(Model distillation)技术得到新的可解释模型,训练这两个模型使他们的结果近似。但这类算法也存在很大的局限性,比如模型本身并不能被“蒸馏”,或者原始模型与蒸馏后的模型差异很大导致可解释性模型的意义不再存在。
敏感性分析方法:用于定量描述模型输入变量对输出变量的重要性程度的方法。是令每个属性在可能的范围变动,研究和预测这些属性的变化对模型输出值的影响程度。我们将影响程度的大小称为该属性的敏感性系数,敏感性系数越大,就说明属性对模型输出的影响越大。一般来讲对于神经网络的敏感性分析方法可以分为变量敏感性分析、样本敏感性分析两种,变量敏感性分析用来检验输入属性变量对模型的影响程度,样本敏感性分析用来研究具体样本对模型的重要程度,也是敏感性分析研究的一个新方向。在金融领域,将敏感性分析与局部特征探索方法(主要是树类模型),能够有效解决金融领域普遍存在先验知识不足问题。
机器人公司 机器人应用 智能医疗 物联网 机器人排名 机器人企业 教育机器人 机器人开发 独角兽 消毒机器人品牌 消毒机器人 |