作者 | Hui Liu, Qingyu Yin, William Yang Wang

译者 | Rachel

编辑 | Jane

出品 | AI科技大本营(ID: rgznai100)

【导语】北大、哈工大和加州大学圣巴巴拉分校在 ACL 2019 的一篇论文中联合提出了一个全新的生成性解释框架,该框架能够对分类策略进行学习,并同时提供细粒度的解释。这项研究还提供了解释因子以及最小化风险训练(minimum risk training)方法,以便进行学习并产生更加合理的解释。

模型的可解释问题是学界现在一直在讨论和研究的工作之一,在自然语言处理领域亦是,想搭建一个具有可解释性的系统是一件非常困难的事。目前,现有的研究尝试让模型具有可解释时,也对模型输出或输出与输入间的联系进行解释。但是这种方式忽略了很多细粒度信息(例如标签的文本解释),而且系统也无法产生人类可以阅读的解释。

为了解决这一问题,北大、哈工大和加州大学圣巴巴拉分校在 ACL 2019 的一项工作中联合提出了一个全新的生成性解释框架,该框架能够对分类策略进行学习,并同时提供细粒度的解释。另外,本文提供了解释因子以及最小化风险训练(minimum risk training)方法,这个方法能够进行学习并产生更加合理的解释。本文构建了两个新的训练集,作者在两个数据集上进行了实验,并将框架和一些基线神经网络进行了对比。实验结果显示,本文提出的框架性能在两个数据集上都超越了基线模型,且能够生成简练的解释。

论文链接:

https://arxiv.org/abs/1811.00196

1、介绍

深度学习方法在很多 NLP 任务中都得到了非常好的结果。但由于这些模型对人们而言都是黑箱,其很难让人们完全信任其预测结果。例如,如果一个论文评分系统仅给出评分而不提供明确的理由,用户将很难信任系统的判断。因此,对于 NLP 系统而言,系统的可解释性至关重要,这要求传统的 NLP 模型提供人类可读的解释。

近几年,很多工作都在文本分类中取得了新的进展,但少有对系统的解释能力进行讨论的研究。有学者尝试通过可解释的表示来搭建模型,但该方法仅适用于特定的分类器,无法推广。还有学者尝试使用热图来可视化隐藏元素对预测结果的影响。这些方法具有一定的合理性,但都没有使用可用于解释模型行为的细粒度信息。但对于人类而言,当其对一个产品进行打分时,他/她可能会首先写下一些评价,然后对产品的一些组成部分(如价格、包装、质量等)进行总结或打分,最后基于上述细粒度信息对整个产品进行打分。因此,对于可解释的文本分类模型而言,产生用于对预测结果进行解释的简练的细粒度信息至关重要。

为实现这一目标,本文提出了一个全新的文本分类生成性解释框架,该框架能够在进行分类预测的同时产生预测结果解释的细粒度信息。该框架为生成-判别混合模型,其原理为,基于原文本推测细粒度信息并进行精简,并使用该信息辅助预测分类结果的解释,提升整体模型表现。另外,作者提出了解释因子以及一个最小化风险训练方法,该方法能够生成整个预测结果的合理解释。同时,由于该方法提供了解释和预测间的联系,还能反过来提升模型分类效果。本文是第一个使用抽象的生成的细粒度信息来解释预测结果的模型。

在本文中,作者将文本概要(内容为文本)和打分(内容为数字)称为细粒度信息。作者构建了两个包含这两类信息的数据集用于模型的评测,均从网络爬取获得。第一个数据集为 PCMag,数据集中的每个实例包含三部分:一段关于产品的长评价文本,三段简短的文本评论(从积极、消极和中立角度解释产品的属性),一个整体打分。作者将三段短文本看作长评论文本的细粒度信息。第二个数据集为 Skytrax 用户评论数据集,每个实例包括三部分:一段对于航班的评价,五个关于航班不同方面的打分(座椅舒适度,机舱人员,食物,机舱内环境,机票价值),一个总体评分。对于这一数据集,作者将五个子得分看作飞机评论文本的细粒度信息。

在实验中,作者在两个数据集上对比了本文的框架和一些已有的基线神经网络模型。实验结果显示,本文方法相比于基线模型显著提升了文本分类效果,展示了使用细粒度信息的优势。另外,模型也提供了可令人信服的结果解释。本文的贡献主要有三方面:

  • 首次使用生成的细粒度信息构建文本分类的生成性解释框架,提出了一个解释因子,并介绍了用于该生成-判别混合模型的最小化风险训练方法;

  • 在两个数据集上对比了本文框架和不同的神经网络架构的效果,发现本文方法带来显著提升;

  • 构建了两个新的公开可获取的解释性 NLP 数据集,其中包括可用于文本分类结果解释的细粒度信息。

2、任务定义及符号

本文的研究任务为生成文本分类模型结果的细粒度解释。作者首先讨论了好的细粒度解释的标准。在情感分类中,假设产品 A 包含三个属性:质量、可用性、价格。每一个属性可描述为“高”或“低”。在讨论产品 A 是一个“好”产品还是“坏”产品时,如果模型判断 A 是一个好产品,且指出 A 的质量高、可用性高、价格低,则可认为这些属性值较好地解释了模型的预测结果。反之,如果模型提供的属性值相同但预测 A 是一个坏产品,则认为模型给出的解释较差。因此对于一个文本分类预测结果,需要了解更多细粒度信息以对结果进行解释。另外,作者还希望讨论这些解释是否能够帮助提升分类效果。

本文中,输入文本序列表示为 S{s1, s2, ..., s|s|},预测得到的文本 S 所属类别表示为 yi(i属于[1, 2, ..., N]),对预测结果 yi 的解释表示为 ec 。

3、生成性解释框架

本部分介绍了本文提出的生成性解释框架(Generative Explanation Framework, GEF),图1展示了框架的结构。

图1:GEF 的结构。E 将 S 编码为向量表示 ve 。P 为各个类别提供分布概率 Ppred ,并从 Ppred 中提取真值概率。生成器 G 将ve 作为输入,并生成解释 ec 。分类器 C 和预测器 P 共同预测类别 y 。将 ec 输入 C 时,C 对分布概率 Pclassified 进行预测,之后输出两个真值概率,并用于计算解释因子 EF(S) 。

3.1 基础性分类器和生成器

在文本分类任务中,普遍做法为使用编码器-预测器结构。如图1,编码器 E 接收文本序列 S 作为输入,并将其转换为表示向量 ve 。之后,类别预测器 P 接收 ve 作为输入,并输出预测类别 yi 机器关联概率分布 Ppred 。

一个理想的模型应同时提供预测结果及其解释。一个简单的生成解释的方法即将 ve 输入到一个解释生成器 G ,以生成细粒度解释 ec ,公式如下:

其中,模型使用 softmax 函数将分布概率转换为分类。

在训练过程中,整体损失函数 L 包括两部分:分类损失 Lp 和解释生成损失 Le ,公式如下:

其中,θ 代表所有参数。

3.2 解释因子

上文提到的方法存在一个明显的缺陷:该方法无法在生成的解释和预测之间建立合理解释,即解释和预测结果相互独立。为了生成更加合理的结果解释,作者提出使用一个解释因子来建立结果和解释间的联系。

一些情况下,细粒度信息比输入的原始文本序列更能反映整体结果。因此,作者预训练了一个分类器 C ,该分类器直接将解释作为输入,并学习预测分类 y 。也就是说, C的目标为模仿人类行为,比使用原始文本作为输入的模型更佳准确地预测结果。作者在实验部分证明了这一假设。

作者使用这一预训练分类器 C 为文本编码器 E 提供指导,使其能够生成一个含有更多信息量的向量表示 ve 。在训练过程中,作者首先使用解释生成器 G 得到生成性解释 ec ,之后将 ec 输入到分类器 C 中,得到预测结果 Pclassified 的概率分布。同时,作者将人们可接受的文本解释 eg 输入到分类器中,得到可接受的解释(golden explanation)的概率分布 Pgold ,公式如下:

为了衡量预测结果、生成的解释和可接受解释的生成结果之间的距离,作者从 Pclassified, Ppred, Pgold 中分别抽取了真值(ground-truth),用于衡量最小化风险训练中预测结果和真值结果的差异。

作者将解释因子 EF(S) 定义如下:

该公式包含两部分:

  • 第一部分表示生成的解释 ec 和可接受的解释 eg 之间的距离。作者认为,由于使用了可接受的解释对 C 进行了预训练,当 C 接收了相似的解释时,其应当产生相似的预测结果。在该任务中,作者希望 ec 可以表达与 eg 相同或相似的含义。

  • 第二部分表示生成解释 ec 和原始文本 S 之间的相关性。生成的解释应当和原始文本的预测结果保持一致。

3.3 最小化风险训练

作者使用最小化风险训练(Minimum risk training, MRT )对模型进行优化,以最小化期望损失。对于一个给定的序列 S 和一个可接受的解释 eg , 作者使用 γ(eg, S, θ) 表示参数 θ 的整体预测结果集合, 表示整体预测结果和真值之间的语义距离。因此目标函数可表示如下:

其中 D 表示整个训练集。

在本文的实验中,E(eg, S, θ) 是集合 γ(eg, S, θ) 上的期望,即公式(5)中的整体损失。作者将解释因子 EF(S) 定义为输入文本、生成解释和可接受解释之间的语义距离,因此, MRT 的目标函数可表示为如下公式:

MRT 使用 EF(S) 衡量损失,以使用特定的评估指标对 GEF 进行优化。尽管当输入文本、生成解释和可接受解释的真值非常接近时, LMRT 可取0或接近0,仍然不能保证生成的解释接近可接受解释。为了避免损失的性能退化,作者将最终的损失函数定义为 MRT 损失和解释生成损失的加和,即:

经实验,作者将两损失的权重比例设定为1:1。

3.4 应用实例

由于真实世界的细粒度信息的形式包括文本和数字两种形式,作者在不同形式的细粒度信息上对对 GEF 和 基线模型进行了实验。

  • 实例1:文本解释

为检验 GEF 在生成文本解释上的效果,作者在条件式变分自编码器(Conditional Variational Autoencoder, CVAE)上应用了GEF ,目的为生成具有不同情感倾向(积极、消极和中立)的解释。选择 CVAE 的原因为,其能够生成带情感的文本,且相较于传统 SEQ2SEQ 模型能够捕捉更大的多样性。

图2展示了一个 CVAE + GEF 的结构示例。为节省空间,图中省略了 CVAE 的具体结构,并在补充材料中进行了说明。在该结构中,可接受的解释 eg 和生成解释 ec据包括积极、消极和中立三类评论。分类器为使用双向 GRU-RNN 结构的残差模型。模型的输入为三类评论,输出为预测分类的概率分布。

图2:CVAE+GEF 的结构。分类结果共有4类,本示例中的分类真值为2。作者假设预训练的分类器是一个“完美”的分类器,能在接收 eg 作为输入时将最终标签正确预测为2。因此作者希望向该结构输入 ec 时,同样能够得到结果为2。

  • 实例2:数字解释

作者提出,对产品属性的打分能够在一定程度上解释对产品整体的打分。考虑到 LSTM 和 CNN 在文本分类任务中的表现较好,作者使用 LSTM 和 CNN 模型作为编码器。数字解释的生成同样看作一个分类问题。

4、数据集

作者在 PCMag 和 Skytrax 用户评论数据集上分别进行了实验。数据集的文本均使用斯坦福分词器(Stanford Tokenizer )进行了预处理。

4.1 PCMag 评论数据集

该数据集从 PCMag 的网站爬取得到,该网站提供了电子产品的评论。数据集中的每条数据都包含三部分:一段长评论,三段段评论,一个整体打分。

由于本文目标并非长文本生成,作者过滤了包含超过70个句子的长评论及包含超过75个词的段评论。数据集被随机划分为 10919/1373/1356 个句子对并分别用于训练、开发和测试集。该语料的整体得分分布如表1所示。

表1:PCMag 数据集的整体得分分布

4.2 Skytrax 用户评论数据集

该数据集从 Skytraxs 网站爬取得到,每条数据包含三部分:一段评论文本,五个子项打分和一个整体打分。子项打分在0-5之间,整体打分在0-10之间。作者移除了包含300个字符以上的评论,并将数据集随机划分为 21676/2710/2709 三部分用于训练/开发/测试。打分分布如表2所示。

表2:Skytrax 用户评论数据集的得分分布

5、实验与分析

5.1 实验设置

作者在基础模型和 应用 GEF 的基础模型上使用了相同的实验设置。本文使用 GloVe 对 PCMag 进行词嵌入,使用 Adam 最小化目标函数。模型的超参数设置如表3所示。在分类损失达到一定阈值后,作者停止了对预测器的更新。

表3:实验中的超参数设置

5.2 实验结果

  • 文本解释的实验结果

作者使用 BLEU 分数对生成的文本解释进行评分。表4 显示了 CVAE 和 CVAE+GEF 生成的解释的比较。可以看到, CVAE+GEF 的生成质量更高。

表4:CVAE 和 CVAE+GEF 生成解释的 BLEU 分值比较

作者同样对比了两个模型的分类准确率,表5展示了模型结果。可以看到, CVAE+GEF 的分类准确率更高。因此,作者认为使用细粒度解释能够提高文本分类效果。

表5:PCMag 评论数据集上的分类准确率

  • 数字解释的实验结果

作者使用 Skytrax 用户评论数据集进行了实验。表6展示了模型预测子项打分分类的准确率,本文框架提升了该预测效果,说明生成数字预测的质量也有所提升。

表6:Skytrax 用户评论数据集上的子项数字预测准确率

表7展示了本文模型和基线模型的分类效果,可以发现 GEF 同样提升了分类表现。

表7:Skytrax 用户评论数据集上的分类准确率

5.3 人工评测

为进一步评测模型效果,作者随机选择了100个文本实例,并使用众包评测对模型生成的解释结果进行了评估。表8展示了评估情况,可以看到 GEF 产生的解释更能被人工评测者接受。

表8:人工评测结果

5.4 错误及分析

本部分对 GEF 的缺陷进行了分析。

第一,作者认为,生成的文本解释比可接受的解释短,如表9所示,其原因为较长的解释倾向于产生更多损失。为解决这一问题,可以考虑通过强化学习增加长度奖励/惩罚来控制生成文本的长度。

表9 生成解释示例

第二,生成文本中包含一些 <UNK> 字符。由于本文生成的内容为产品评论的抽象摘要,可能存在一些特定领域的词,由于词语频率较低,对 GEF 而言进行词嵌入和生成都存在困难。一个可能的替代方法为使用复制机制(copy-mechanism)生成特定领域的词。

6、结论

本文尝试使用细粒度信息解释文本分类模型,并提出了一个生成性解释框架 GEF ,该框架可应用于不同模型。GEF 使用了最小化风险训练方法。实验表明,通过将模型和 GEF 框架结合,能够提升原始模型的效果。同时,该框架也提升了模型生成的解释的质量,说明 GEF 能够生成更加合理的结果解释。由于该框架与具体模型无关,其也可应用于自动文摘、文本抽取等工作。

(*本文为 AI科技大本营原创文章,转载请联系微信 1092722531)

福利时刻

入群参与每周抽奖~

扫码添加小助手,回复:大会,加入福利群,参与抽奖送礼!

AI ProCon 2019 邀请到了亚马逊首席科学家@李沐,在大会的前一天(9.5)亲授「深度学习实训营」,通过动手实操,帮助开发者全面了解深度学习的基础知识和开发技巧,现场还将赠送《动手学深度学习》。9大技术论坛、60+主题分享,百余家企业、千余名开发者共同相约 2019 AI ProCon!5折优惠票抢购中!


推荐阅读

  • 机器学习知识点全攻略

  • 开发者华丽转身的新机会

  • 白话中台战略:中台是个什么鬼?

  • 从原理到代码,轻松深入逻辑回归模型!

  • 只需要支付0.5元就可以撤回交易?这下可坑苦DApp了……

  • 鸿蒙 OS 背后神秘人物曝光!

  • 5G基站功耗,到底有多大?

你点的每个“在看”,我都认真当成了喜欢

面向可解释的NLP:北大、哈工大等提出文本分类的生成性解释框架相关推荐

  1. 【NLP】6种用于文本分类的开源预训练模型

    来源 | PURVA HUILGOL 编译 | VK 作者 | Analytics Vidhya [导读]我们正站在语言和机器的交汇处,这个话题我很感兴趣.机器能像莎士比亚一样写作吗?机器能提高我自己 ...

  2. 『NLP学习笔记』TextCNN文本分类原理及Pytorch实现

    TextCNN文本分类原理及Pytorch实现 文章目录 一. TextCNN网络结构 1.1. CNN在文本分类上得应用 1.2. 回顾CNN以及Pytorch解析 1.2.1. CNN特点 1.2 ...

  3. 今晚8点直播 | 详讲NLP的经典应用实践——文本分类

    文本分类问题是企业在 NLP 领域中处理文本数据时经常会遇到的一个问题,很多时候,我们需要将文本信息进行分类,或提相关的接口以供外部进行文本上传,在针对于用户所上传的文档信息就需要进行文档内容的分类, ...

  4. 【NLP】基于机器学习的文本分类!

    作者:李露,西北工业大学,Datawhale优秀学习者 据不完全统计,网民们平均每人每周收到的垃圾邮件高达10封左右.垃圾邮件浪费网络资源的同时,还消耗了我们大量的时间.大家对此深恶痛绝,于是识别垃圾 ...

  5. NLP深度学习:PyTorch文本分类

    文本分类是NLP领域的较为容易的入门问题,本文记录文本分类任务的基本流程,大部分操作使用了torch和torchtext两个库. 1. 文本数据预处理 首先数据存储在三个csv文件中,分别是train ...

  6. 系统学习NLP(十九)--文本分类之FastText

    转自:https://blog.csdn.net/sinat_26917383/article/details/54850933 FastText是Facebook开发的一款快速文本分类器,提供简单而 ...

  7. 系统学习NLP(十八)--文本分类概述

    转自:https://blog.csdn.net/u014248127/article/details/80774668 文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多 ...

  8. 科大讯飞NLP算法赛baseline:文本分类实践+0.79

    比赛题目:学术论文分类挑战赛 比赛链接:https://challenge.xfyun.cn/topic/info?type=academic-paper-classification&ch= ...

  9. 用Flair(PyTorch构建的NLP开发包)进行文本分类

    Flair是一个基于PyTorch构建的NLP开发包,它在解决命名实体识别(NER).语句标注(POS).文本分类等NLP问题时达到了当前的顶尖水准.本文将介绍如何使用Flair构建定制的文本分类器. ...

最新文章

  1. python01-变量,运算符与数据类型+位运算
  2. HBase在淘宝的应用和优化
  3. 【转】使用Core Graphics绘画一个山寨微信icon
  4. Android之Intent 序列化反序列化
  5. 姑苏山塘飞雪披银装[组图]
  6. linux基础,文件目录管理,PATH,cp,mv,cat
  7. PostgreSql 常用 ALTER 语句
  8. 不收费的数据恢复软件推荐
  9. Java 点餐小程序源码带管理后台(免费分享)
  10. java 启动连接hsql
  11. 非度量多维排列 NMDS (Non-metric multidimensional scaling)分析
  12. 华为鸿蒙用不用清理内存卡,华为这6个设置必须要关,否则天天清理内存也没用,关了再用5年...
  13. windows10操作-虚拟桌面与关闭时间线
  14. 鼠标点击右键,反应慢,解决方法!
  15. CSS - 知识清单(自用)
  16. apache mod_rewrite 简略说明
  17. 系统设计开发模式思考
  18. 大型传统企业如何向人工智能转型?
  19. bat批处理文件搞定所有系统问题
  20. 遗传算法实现图像分割(MATLAB)

热门文章

  1. unity, monoDevelop ide 代码提示不起作用的解决方法
  2. 一些链接, 关于不可变数据
  3. 跟着石头哥哥学cocos2d-x(三)---2dx引擎中的内存管理模型
  4. Python 多线程抓取网页 牛人 use raw socket implement http request great
  5. 临危不乱,.Net+IIS环境经常出现的问题及排障。
  6. 20. matlab 中的gtext 函数
  7. 一个下载Windows镜像的地址
  8. 反射拷贝对象的思路:
  9. 开发微信小程序入门前
  10. 几种任务调度的 Java 实现方法与比较