论文-深度自可解释模型

Self-explaining deep models with logic rule reasoning
参考:https://www.techbeat.net/talk-info?id=729

1.背景:

深度学习有高的预测性能,但可解释性不足,目前已经不少方法通过后处理来提供解释,但还是会有不安全感,但自可解释(通过正向传播同时预测和解释)是由自己给出,不是第三方近似给出,我们可以信任这个解释,且它可以融合用户反馈。
但自解释还不够,只有它,模型只从模型本身的角度进行解释,没有将解释映射到人很容易理解,且觉得非常合理的空间去,因此要用logic rules
本文将深度模型升级为具有逻辑规则推理能力的自我解释版本,SELOR。

贡献:

  1. 工作表明,人类的精确性是自我解释模型无缝连接人类逻辑和模型决策逻辑的关键。基于逻辑的解释能够实现高人类精度,同时实现高预测性能。
  2. 提出了一种逻辑规则推理框架,通过自然地将人类先验、规则置信度建模和规则生成作为模型预测的重要部分,将给定的深度模型升级为可自我解释的版本。方法可以在不依赖强大的外部知识(例如关于规则的实例级指导、知识图或少量规则候选)的情况下实现高人类精度。
  3. 数值实验和用户研究证实了我们的框架在保持预测性能的同时,在人类精度和对噪声标签的鲁棒性方面的关键优势。

2.思路

2.1概念

human precision: 定义为人看到解释的时候,能不能自然想到模型给出的预测是什么,是积极正面的情感还是消极的,或者其他的task label。
low human precision:
is,an->positive sentiment
high human precision:
awesome->positive sentiment

2.2 怎么保证自可解释模型和人的决策逻辑一致?

专家->成本高,且不易拓展,和人一样可能会有偏见。
人在高层次指导,让模型根据数据自由学习。
由于人类很难为每种解释提供指导,因此更希望模型能够基于人类对全局一致性(解释形式与人类推理逻辑一致,人规定形式,连接词,长短等等)的指导自动保证局部一致性(模型在所有可能的逻辑规则里面进行挑选,选出能让模型预测准确性高,且human precision也高的规则)。

2.3 模型

对黑盒模型来说
输入一个句子,然后用深度学习模型得到这个句子的embedding,最后用一个预测层把隐向量映射到预测结果。
论文-深度自可解释模型_第1张图片
本文是将黑盒模型的预测层换成一个antecedent generator
论文-深度自可解释模型_第2张图片
antecedent:是规则的前一部分,是前提,即我们在什么情况下可以使用这个rule
我们使用这个规则前提是句子里面含有了awesome和tasty,在这个前提下可以得出结论,是正向的情感
antecedent generator就是在所有可能的rule的第一个部分里面挑选了一个作为解释,所有可能的候选项:所有符合我们刚刚人规定形式的都是备选项。
怎么挑选:看后续优化过程。

替换后: 不是将隐向量映射到结果,而是将隐向量映射到一个解释上去。
得到解释做预测:用第二部分:consequent estimator,给定了antecedent以后,会找到所有符合这个antecedent的实例,即找到所有既含有awesome也含有good的句子,然后去看一下他们的标签,发现它们百分之90都是正面情感,因此得到结论,是正面情感,有90%的概率。
论文-深度自可解释模型_第3张图片
antecedent 和consequent组合在一起即得到logic rule。

最后优化的还是交叉熵损失,希望最大化真实标签的概率,在这个过程中可以找到更好区分正负样本的规则。
论文-深度自可解释模型_第4张图片
awesome and good->pos(90% prob) 小的loss
而is and an->pos(50% prob) 大的loss

优化用反向传播的方法,把导数从label端往input端传,优化较简单,不用引入强化学习等方法。
注:

2.3.1 gumbel somftmax的trick:

用RNN decode的时候将softmax替换成gumbel softmax来进行解码,可以做到用近似的方式估计decode出来的解释反传的导数,可以保证尽管进行了decoding,变成了一个01的one-hot向量去指示一个词(比如awesome)是否被选出来,但是这整个过程仍然是可以反向传导的。

2.3.2 consequent estimator怎么进行导数计算?

用深度模型估计,操作时首先用random方式sample出一些antecedent出来,在这些antecedent上面,我们可以用刚提到的第二步的方法计算出它的consequent(先找到antecedent对应的样本,再去看他们的label是什么,知道了awesome是90%正向),得到这些consequent以后,把它当做训练数据,去训练consequent estimator。
一开始生成完了antecedent(eg awesome and good)以后,实际上是一个01的向量,然后将这个01的向量乘以它对应的embedding,awesome有一个embedding,good有一个embedding,乘完了以后输入neural consequent estimator,后续像deep learning一样处理得到consequent。
设计awesome的embedding的trick:awesome的embedding由所有含有awesome这个词的句子的embedding平均得到。
可以反向传播,还可以解决规则空间很大的问题,有了neural consequent estimator以后,可以只在sample出来的一些规则上计算consequent,对其他没有sample的rule可以用神经网络本身的泛化能力去计算一个consequent.
对噪声的处理: 假设一些规则出现次数特别少,consequent计算会非常不准确,比如很多词在一起,其出现次数会很少,consequent会引入噪音。
对neural consequent estimator扩展,不仅得到awesome 90%pos,还数一下有多少instance含有awesome和good(即coverage),1100个则consequent比较准确,5个则不一定。
coverage融入模型建模: 将neural consequent estimator拓展,变成一个muti task的问题,同时预测实际上的consequent以及coverage,然后综合到一起得到最终的consequent y.

论文-深度自可解释模型_第5张图片
公式:
n趋于无穷,最终consequent就是p head,当n趋于0,consequent则是均匀分布

2.4 对解释模型框架

论文-深度自可解释模型_第6张图片
自可解释:
把解释alpha作为隐变量引入模型,作为隐变量是因为没有GT标记
第一个约束:引入人类先验,规定alpha的形式等
第二个约束:解决alpha多的问题,alpha不能特别多,保证预测的结果通过比较稀疏的解释就能看懂。
第三个约束:要求预测的y要完全依赖解释alpha的信息,而不参考输入(防止进行模型预测时进行作弊,y直接从x预测)和人类先验(应该只影响解释的生成,和预测无关)。第三个以后,alpha到y要保证所有符合条件的antecent都要都这样的结果y,不过拟合。

论文-深度自可解释模型_第7张图片
通过alpha到y的consequent estimation过程是和x无关的来达到人类精度。
和人类似:
前半部分潜意识,不可解释,后半部分意识到,可解释。
后面的consequent estimation每一步都是可理解的,相当于在黑盒模型中嵌入一个用户界面,用户界面人都可以操作,可以删除词,新加规则,降低规则权重等,操作通过反向传播体现到黑盒模型中。

对解释alpha:
既是局部也是全局,局部是说它是对每个x合适的解释,全局在于它的正确性是通过整个训练数据测试过,通过后面的consequent estimation保证的。
这样拆分,既可以利用深度模型的能力,又可以保证模型的可解释性。

你可能感兴趣的:(论文,人工智能,算法,自然语言处理,深度学习)