有自监督和有判别力训练的域外意图检测(Out-of-Scope Intent Detection with Self-Supervision andDiscriminative Training)阅读

 发表在ACL2021上面的一篇文章

论文链接:Out-of-Scope Intent Detection with Self-Supervision and Discriminative Training - ACL Anthology

代码链接:https:// github.com/liam0949/DCLOOS

Abstract

在任务型对话中域外意图检测十分重要。在训练阶段,outlier utterances 是任意和未知的,论文中介绍现有的方法主要依赖对数据分布进行假设,例如常用的mixture of Gaussians,但是会导致多步训练或设定规则,例如为离群检测设置一个可靠的阈值。

这篇论文中,作者提出了一种通过在训练中模拟测试场景来训练out-of-scope intent classififier ,这个方法不需要对数据分布进行假设,也不需要额外的处理或阈值设置。

也就是在训练阶段构造了一组pseudo outliers(伪异常值),通过利用inliner features用自监督的方式生成synthetic outliers  和 从其他开放域数据集中采样out-of-scope sentences来获得pseudo outliers

利用pseudo outliers训练一种可直接应用于测试本文任务的鉴别分类器。

Introduction

自然语言理解的第一步是intent detection(意图识别),主要目标是识别用户话语中多种多样的意图,也可以理解为是一个分类任务。然而,在训练过程中定义的意图类有时候会不能涵盖测试阶段的可能的用户意图。因此,范围外(OOD)的(或未知的)意图检测是必不可少的,它的目的是开发一个模型,可以准确地识别已知的(在训练中看到的)意图类,同时检测在训练中没有遇到的范围外的意图类。

在以往的方法中,一般来说,以往的研究方法是通过学习已知意图的decision boundaries(决策边界),然后使用一些可靠的度量来区分已知意图和未知意图来解决这个问题。

eg:margin-based  optimization objective、off-the-shell outlier detection algorithm such as LOF、阈值等。

与之前的工作相比,本篇论文提出通过明确地建模未知意图的分布,构造了一组伪范围外的例子来帮助训练过程。

我们假设在语义特征空间中,现实世界的异常值可以很好地表示为两种类型:几何上接近inliers 的: “hard” outliers 和远离内联的““easy” outliers。这两种离群值在后面有介绍。

通过在训练过程中为未知类构造pseudo outliers,形成了一个(K+1)的分类任务(K个已知类+ 1 未知类别)。

贡献如下:

  1. 提出了一种新的out-of-scope intent detection方法,通过匹配训练和测试任务,来消除训练数据和泛化的测试数据之间的差距。
  2. 提出了构造两种类型的pseudo outliers的方法。一种利用自监督方法,另外一种利用公开的辅助数据集的方法。
  3. 在四个真实世界的对话数据集上进行了广泛的实验,证明论文提出的方法的有效性,并进行了详细的消融研究。

Related Work

Out-of-Distribution Detection(分布外检测)
关于定义,可以参照下面的链接进行了解:
在open-world(开放世界)中分类非常重要。
传统的分类模型都是在一个封闭的世界中进行训练,即假设测试数据和训练数据都来自同样的分布(称作“ 分布内”,in-distribution)。
然而,模型在实际使用中总是会遇到一些不属于封闭世界的类别。
模型应当如何去处理这些数据( 分布外样本,out-of-distribution),是open-world(开放世界)领域所关注的问题。

open-world(开放世界)领域中时常能够见到如下几个任务:

 OD: Outlier Detection, “离群检测”

Outlier Detection(OD,离群检测) 的任务旨在检测出给定数据集中与其他样本显著不同的样本,其中这种不同既可以来源于covariate shift也可以来源于semantic shift。

 AD: Anomaly Detection, “异常检测”

Anomaly Detection(AD,异常检测)任务旨在找出测试集中所有偏离“预设的正常样本”的异常样本。这种偏移可能是来源于covariate shift或者semantic shift。该任务通常假设另一种偏移类型不存在。这两种不同的样本偏移类型对应着“异常检测”的两个子任务:“感知上的异常检测”sensory AD,和“语义上的异常检测”semantic AD。

 ND: Novelty Detection, “新类检测”

Novelty Detection(ND,新类检测 )的任务旨在找出测试集中不属于训练集中任何类别的“新类”样本,检测到的“新类”样本通常会为下一步增量学习(incremental learning) 提供更多的学习样本,或者作为全新的类型进行探索研究。

OSR: Open Set Recognition, “开集识别”

“开集识别”(Open Set Recognition, OSR)要求多分类器同时达到如下两个要求:(1) 对测试集中属于“已知类别“的进行准确分类;“已知类别”代表训练集中存在的类别。 (2)检测出”未知”类别, “未知类别”不属于训练集中任何类别。

OOD Detection: Out-of-Distribution Detection, “分布外检测

定义OOD Detection(分布外检测)任务,和新类识别类似,是在找出测试集中不属于训练集中任何类别的“新类”样本。但是在新类识别的基础上,同时完成多分类任务。相比于“开集识别”,“分布外检测”的训练集可以是单类别的也可以是多类别的。

解决方法

解决“广义分布外检测”中各个任务的方法。因为它们各个任务的目标大体相同,各个任务的解法自然也是相似的。解法基本分为四大类:

· Density-based Methods 基于密度估计的方法

· Reconstruction-based Methods 基于重构的方法

· Classification-based Methods 基于分类的方法

· Distance-based Methods 基于距离的方法

Out-of-Scope Intent Detection (域外意图检测)
.以前的OOD/OOS意图检测的方法通常是基于阈值的,其中模型输出一个决策分数,然后将其与一个预定义的或通过交叉验证选择的阈值进行比较。
相关的工作主要有三个分支。
  1. 使用一个confifidence score,来决定了一个话语超出范围的可能性。eg:
                    m binary Sigmoid classififiers for m known classes
                    respectively and select a threshold to reject OOD
  2. 第二组通过重建损失来识别范围外的句子.eg:  
                    build an autoencoder to encode and decode in-scope utterances
                    and obtain reconstruction loss by comparing input embeddings
                    with decoded ones.
  3. 利用异常值检测算法。                                                                                                                          eg: local outlier factor (LOF)/robust covariance estimators

Methodology

 问题定义部分,给出问题的定义:给定K个类别,未知意图检测模型去预测一句话中的意图,这句话可能包含的是已经知道的意图或者是未知域的意图。可以总结为是一个(K+1)个类别的意图。

论文作者的方法概述:

本质上是通过利用自监督方法和开放域数据来构建域外的样本从而在训练结果形成一个(K+1)-way的分类任务。同时,作者提出的方法并没有对数据分布进行假设。

接下来从representation learning(表示学习)、construction of pseudo outliers(伪异常值的构建)和discriminative training(鉴别性训练)三个方面对论文提出的方法进行阐述。

representation learning(表示学习)

在这一个部分主要是使用到了Bert这一预训练模型,将特殊分类标记[CLS]的d维输出向量作为语句u的表示。公式如下:(公式非常好理解)

 其中:

BERT 的输入可以包含一个句子对 (句子 A 和句子 B),也可以是单个句子(句子A)。其中还包括了一些有特殊作用的标志位:(这个可以查阅资料做一下了解)

  1. [CLS] 标志放在第一个句子的首位,经过 BERT 得到的的表征向量 C 可以用于后续的分类任务。
  2. [SEP] 标志用于分开两个输入句子,例如输入句子 A 和 B,要在句子 A和句子B 后面增加 [SEP] 标志。
  3. [UNK]标志指的是未知字符
  4. [MASK] 标志用于遮盖句子中的一些单词,将单词用 [MASK] 遮盖之后,再利用 BERT 输出的 [MASK] 向量预测单词是什么。
Construction of Outliers(构建异常值)
论文中构造了两种不同类型的 pseudo outliers(伪异常值 用于训练阶段:一种是由自监督产生的 synthetic outliers(合成异常值 ,另一个是很容易获得的open-domain outliers(开放域异常值)。
Synthetic Outliers by Self-Supervision(通过自监督获得的合成异常值)
该方法假设存在的outliers在特征空间中是接近inliers的。基于这个假设提出一个自监督(self-supervised)的方法来生成  “hard” outliers(这里我理解的就是生成的伪异常值)。主要是随机选择两个inliers进行convex combination (凸组合)【此处凸组合是啥我也不清楚】来生成新的 synthetic outliers。

 公式1代表生成的异常值,\theta 是一个从均匀分布中采样的值,公式2代表生成的所有异常值的集合。

Open-Domain Outliers(开放域异常值)

该方法的假设一些容易区分的outliers是远离inliers的,因此在其他kaifang数据集上的样本由于分布不同,可以作为outliers。于是通过模拟真实世界的outliers来构造open-domain outliers。采样的数据集包括SQuaD 2.0,Yelp和IMDB等对话系统数据集。

但是 synthetic outliers在提高训练(K+1)-way的意图分类器的泛化能力方面比open-domain outliers更有效。
Discriminative Training(有判别力的训练)
使用意图标签集训练了一个(K+1)-way的分类器。同时使用了一个多层感知网络作为特征空间中的分类器。【此处我认为可以选择不同的分类器,多层感知网络可能略有些简单,同时要注意这个分类器在论文中提到是需要满足可微条件的】。最终使用一个交叉熵损失来训练模型:

Experiments

Datasets and Baselines
这部分数据集可能以后会用到,码住!
Result  and  Analysis

 Conclusion

我认为本篇论文的方法本质上是一个数据增强(data augment)的方法。主要使用了一个对域内意图(inliers)进行凸组合(convex combination)来构建outliers和采样其他公开数据作为域外意图(outliers)来进行数据增强。

思考:这种增强方法是否可以使用对比学习来代替,尤其是对域内意图进行处理的时候,使用对比学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值