一种基于有监督对比学习的开放服务意图检测方法

文档序号:31629930发布日期:2022-09-24 01:40阅读:123来源:国知局
一种基于有监督对比学习的开放服务意图检测方法

1.本发明属于异常检测和自然语言处理交叉领域,尤其涉及一种基于bert和有监督对比学习的开放服务意图检测方法。


背景技术:

2.在开放意图文本检测领域,通常把意图标签分为两大类,一类是已知的意图标签,这通常有若干个,也被称为ind,而把不属于已知的意图统称为开放类,这也被称为ood,开放意图文本检测任务包含两个相关联的任务,既要对属于已知类的意图文本进行分类又要检测出不属于已知类的开放类文本。
3.传统的意图分类识别遵循封闭世界的设置,其中训练和测试的数据属于相同的意图标签集合。然而,由于真实场景中的开放性和动态环境因素,通常很难提前收集所有的类的标签。因此,来自开放类的事件文本可能被错误地归类到某个已知意图标签中。以多轮对话系统为例,由于新的意图可能会随着业务的变化而出现,因此意图分类器会将开放类的意图文本预测为错误的已知类的意图,这会导致系统做出错误的判断,采取错误的行动导致不可估量的损失。
4.因此,开发一个能够正确分类已知类的意图标签,同时可靠地拒绝开放类的意图文本的模型,对于建立基于意图识别的应用具有重要意义。显然,在这个问题设置中涉及到两个部分,将其命名为:(1)域内(id)分类,指的是用预定义的或已知的意图标签对输入的事件文本进行分类;(2)域外(ood)检测,指的是判断输入的事件文本是否属于任何预定义的标签,即ind标签。现有的解决开放意图检测问题的方法可以归为两类,即不使用开放类样本的无监督方法和使用开放类样本的有监督方法。有监督的开放意图检测方法通常需要在训练集中同时使用ind和ood样本。作为对比,无监督的方法不需要额外的ood样本。在无监督的方法中,一个关键的挑战是如何学习一个有辨别性的特征表征,以达到能够充分分离每个类别的最佳效果。但是如果没有足够的已知类别的数据,学到的圆形或球形决策边界可能会变得比实际的要小,所以更多的ind样本会被归类到ood。而有监督的方法则一般分为两步,首先判断一个事件文本是ind还是ood,然后再进行分类,但是这样会造成错误的传递。


技术实现要素:

5.本发明的目的在于针对现有技术的不足,提供一种基于有监督对比学习的开放服务意图检测方法。
6.本发明基于利用已知ood样本的想法,提出了一种基于有监督对比学习的已知类意图分类和开放类意图检测的联合模型。使用联合学习的原因是ind意图分类和ood意图检测这两个目标是高度相关的,联合训练可以利用从ood检测中学到的知识来帮助提高ind分类的性能,反之亦然。具体来说,本发明为每个输入事件文本联合学习置信度估计和ind分类器。这里,置信度估计被用来区分ind和ood事件文本。
7.本发明的目的是通过以下技术方案来实现的:一种基于有监督对比学习的开放服务意图检测方法,包括以下步骤:
8.s1:首先对原始数据集中的意图事件文本分类,将数据集分为域内in-distribution(ind)样本即已知类样本和域外out-of-distribution(ood)样本即开放类样本。
9.s2:对数据集进行数据预处理,删除文本中多余的空格和标点符号。
10.s3:将步骤s2预处理得到的ind样本进行bert编码,得到整个文本的句向量表示;
11.s4:基于步骤s3得到的句向量表示,通过线性分类层,利用交叉熵损失函数softmax-loss来捕获同一类的特征,得到交叉熵损失
12.s5:基于步骤s3得到的句向量表示,使用有监督对比学习,扩大不同类的特征差异和缩小同一类的特征差异,得到监督对比学习损失
13.s6:基于步骤s4和步骤s5分别得到的交叉熵损失和监督对比学习损失,相加得到微调阶段的整体损失,进行训练优化,得到具有区分度的特征提取器模型。
14.s7:基于步骤s2得到的预处理后的ind样本,通过mix-up操作构造出人工合成的ood样本。
15.s8:嵌入表示,把已知ind样本、已知ood样本和步骤s7中人工合成的ood样本这三部分数据输入步骤s6得到的特征提取器,得到每个样本的句嵌入向量表示。
16.s9:多任务联合优化,包括两个部分,第一部分是多分类任务,从步骤s8输入的样本中筛选出ind样本,进行softmax交叉熵损失进行优化,得到任务损失,其中ind样本包含多个已知意图事件类型。第二部分是置信度学习任务,得到一个样本归属于开放类的置信度损失。将两部分损失相加训练得到开放意图检测模型。
17.进一步地,步骤s1所述的意图事件文本分类,具体是指:原有的意图事件文本都属于已知类意图,使用随机删除的方式,删除一定比例(25%、50%或75%)的已知类标签,并把原先属于这些类的事件文本重新标记为开放类。这样,同时得到还剩下的已知类意图事件文本和重新标记过的开放类意图事件文本。
18.进一步地,步骤s3所述的将步骤s2预处理得到的ind样本进行bert编码,得到整个文本的句向量表示,具体是指:bert模型能够对单词的语义信息进行建模,并整合成这句话的语义信息,之后可应用于各种下游任务。给定一个文本s,对于文本中的每一个单词ti(i=1,2,......,n)输入到bert模型中:
19.xj=mean-pooling(bert(cls,t1,t2...,tn))
20.其中cls表示下游任务的分类标签,n表示文本的长度,mean-pooling表示对bert得到的每个词的语义进行均值处理,最后得到xj表示整个文本的句向量表示。
21.进一步地,步骤s4所述的利用交叉熵损失函数softmax-loss来捕获同一类的特征,具体是指使用交叉熵损失函数优化bert的参数。为了学习每个事件类型的标签信息,使用已知的标签信息作为先验知识来微调模型,并使用一个损失为softmax-loss的线性分类器,得到交叉熵损失
22.进一步地,步骤s5所述的使用有监督对比学习,利用对比损失来扩大不同类的特征差异和缩小同一类的特征差异,具体是指:有监督对比学习利用标签信息使得同属于一个意图事件类型的样本在高维特征上更相近的同时使不同事件类型的样本的特征表示更
具有区分度。对于一个有c个类的多分类任务来说,一个批次内包含m个样本,表示为其中di表示输入的事件文本,yi表示该事件文本所属的事件类型,通过监督对比学习可以得到该任务的监督对比损失
[0023][0024]
其中a(i)={1,...,m}\{i}表示所有的锚点样本的集合,p(i)={p∈a(i):yi=y
p
}是事件标签为i的样本集合,τ是温度超参数,它允许模型去更好地学习困难样本,zi表示bert模块得到的特征表示,za表示不同锚点的特征表示,而z
p
表示事件标签为i的样本的特征表示,e为自然常数。
[0025]
进一步地,步骤s6所述的微调阶段的整体损失通过交叉熵损失与监督对比学习损失相加得到:
[0026][0027]
进一步地,步骤s7所述的通过mix-up操作构造出人工合成的ood样本,具体是指:在模型中,除了ind样本,ood样本也被用于帮助训练。考虑到在某些情况下ood样本的数量较少,本发明通过使用mix-up的类似想法来合成ood样本,进行数据增强。最后,训练的ood样本实际上有两个来源:第一部分是已知ood样本,第二部分是由mix-up生成的合成ood样本。mix-up是一种经典的数据增强方法,本发明再进一步,用它来合成新的ood样本。具体来说,合成的ood样本x
ood
是通过计算产生的:
[0028]
x
ood
=α*xi+(1-α)*xj[0029]
其中xi和xj是来自不同ind事件类型的两个事件文本的向量表示,α是一个从0到1的均匀分布。
[0030]
进一步地,步骤s9所述的多任务联合优化,具体是指:本发明的任务是对ind标签进行正确分类,同时可靠地拒绝ood事件文本。因为首先区分是否为ind样本,然后再对这些事件文本进行分类的方法会造成错误传递。因而本发明通过共享表征和相互补充,联合学习可以在没有错误传递的情况下提高整体性能。本发明在模型的末尾增加了两个并行的部分:一个是预测ind类标签的多分类任务部分,一个是估计网络预测结果可信度的置信度学习任务部分。这两个部分接收相同的输入,即来自bert的输出,然后这两个部分经过不同的mlp(多层感知机)。置信度学习任务的最后一层使用一个sigmoid激活函数在0-1之间调整置信度ci。
[0031]
对于多分类任务,挑选出所有ind样本,然后使用交叉熵ce(...)来计算任务损失
[0032][0033]
其中li表示样本的真实标签,pi表示概率向量,n为ind样本的数量。
[0034]
对于置信度学习任务,低置信度表明,即使预测的类别概率很高,也不能保证多分类任务部分的预测性能。因此,本发明利用置信度进行ood检测,设计了以下策略:
[0035][0036][0037]
其中ci是由sigmoid激活函数产生的置信度;对于ood样本,用1减去ci,得到目标置信度c
′i,否则保留ci作为c
′i;然后使用c
′i的负似然对数作为置信度损失训练完模型后,将归于0;它使ind样本的ci接近于1(ci→
1,li≠0),ood样本的ci接近于0(ci→
0,li=0)。在实际应用中,预先设定一个置信度阈值θ,如果样本的置信度ci小于置信度阈值θ,则将其认为是ood样本,反之则为ind样本。
[0038]
本发明的有益效果是:
[0039]
本发明提供了一种新的联合模型实现了开放意图文本检测,该模型首先学习文本的句向量表示,这些句向量表示使用深度学习模型bert通过交叉熵损失和有监督对比学习损失优化,使得特征表示比原有的方式更适用于分类任务。同时本发明提出了新的简单且有效的数据增强方法:通过对两条已知类意图的文本进行mix-up操作,从而人工合成新的开放类样本。在此基础上,该模型通过联合训练,两个不同的分支:已知类分类分支和开放类置信度检测分支同时优化,同时完成对两个任务的训练。本发明构建的已知意图事件分类和开放类意图检测检测方法具有推理速度快、解释性强、准确率高的特点。
附图说明
[0040]
图1是本发明提出方法的流程图;
[0041]
图2是本发明设计的基于有监督对比学习的开放服务意图检测模型的架构图。
具体实施方式
[0042]
本发明针对开放世界的意图文本进行分类识别,对于属于已知类的意图文本,分辨出其属于具体的哪一个类别,而对于其他意图文本则标注其属于开放类,通过联合学习,进而形成开放意图文本分类模型。本发明可以看作一种面向自然语言描述文本的文本分类技术。基于本发明开放意图文本分类模型可以帮助用户发现、监控意图文本,优化现有服务流程,使其更好地反映企业现实业务。
[0043]
本发明公开一种基于有监督对比学习的开放服务意图检测方法。基于bert、softmax loss、supervised contrastive learning、mix-up以及multi-task learning方法,智能地从所有意图文本中分类出已知类的事件文本和属于开放类的事件文本,得到的分类结果可应用意图分类领域的多个下游任务。本发明能够有效地对事件文本进行分类,解决了意图文本分类中不能区分是否有开放类意图的痛点及难点。本发明首先使用bert,通过交叉熵损失和有监督对比学习损失同时优化句向量表示,获取出得到已知类事件文本的具有区分度的表示,为接下来的任务提供帮助,同时通过mix-up操作,随机选择两个不同已知类的事件文本合成新的开放类事件文本,为有监督学习提供更多的样本,从而提高性能。之后经过一个联合训练框架,其包括两个不同的任务分支,一个是已知类分类分支,它会预测出一个已知类意图标签,第二个是置信度估计分支,它会预测出一个是否属于开放
类意图的置信度,如果置信度超过人工设定的阈值,那么就将其认为是一个开放类意图文本。最终,可以同时获得已知类的意图标签和是否属于已知类的置信度,从而达到实现开放意图文本分类任务的目标。在意图文本分类中,本发明能够在事件文本中实现具有区分度的句向量表示,最后通过两个不同的分支同时优化得到分类结果。
[0044]
下面根据附图和优选实施例详细描述本发明,本发明的目标和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅以解释本发明,并不用于限定本发明。
[0045]
实施例1
[0046]
本发明公开一种基于有监督对比学习的开放服务意图检测方法,意图文本分类在现实世界中存在许多方法,但是都局限于都是已知类意图的情况,本发明基于bert、softmax loss、supervised contrastive learning、mix-up以及multi-task learning方法,智能地从所有意图文本中分类出已知类的事件文本和属于开放类的事件文本,得到的分类结果可应用意图分类领域的多个下游任务。本发明使用bert,通过交叉熵损失和有监督对比学习损失同时优化句向量表示,获取出得到已知类事件文本的具有区分度的表示,为接下来的任务提供帮助。如图1所示,本实施例包括以下步骤:
[0047]
为了体现本发明对各种意图识别任务具有通用性,本实施例以电信客服服务机器人中的意图分类文本数据集作为本发明实施例的数据集。未做处理的原始数据集如表1所示,每条事件文本都对应一个已知类意图标签。
[0048]
表1
[0049]
内容意图标签我想查询一下话费话费查询我想办理宽带宽带办理推荐一下宽带套餐宽带办理我的信号很差请问是什么原因信号查询我的套餐明明是58的,为什么扣了108块话费查询
[0050]
为了体现本发明对开放意图检测的有效性,对于此数据集,随机删除一部分的已知类意图标签,并把属于这些已知类意图的事件文本重新标记,打上“开放类”意图标签,如表2所示。
[0051]
表2
[0052]
内容意图标签我想查询一下话费开放类我想办理宽带宽带办理推荐一下宽带套餐宽带办理我的信号很差请问是什么原因开放类我的套餐明明是58的,为什么扣了108块开放类
[0053]
其中,把“话费查询”、“信号查询”意图标签删除,并且给属于这些意图的样本重新打上“开放类”标签。这样一来,数据集中既有已知类意图样本也有重新打标的开放类样本。
[0054]
如图1所示,本发明提出的模型包含三大模块:表示学习模块、样本预准备模块和联合训练模块。表示学习模块负责从不同角度完全挖掘丰富的具有区分度的句向量表示。然后在具有区分度的句向量表示的基础上,在样本预准备模块人工合成开放类样本,最终
将三部分样本一起送入联合训练模块,最终得到意图分类结果。
[0055]
构建句向量模型,首先将事件文本输入到bert-base模型中,把bert产生的每个字符的单词表示作为词嵌入向量。例如上表2的第一个事件文本,转换完成后的词嵌入为[“我”,“想”,“查”,“询”,“一”,“下”,“话”,“费”]。使用bert-base模型时,从最后一层隐藏层中得到字词嵌入表示,然后对于得到的整个句子的字词向量表示做平均池化得到池化向量xj∈rh作为这个事件文本di的高维空间向量表示:
[0056]
xj=mean-pooling([cls,t1,...,tn])
[0057]
最后可以得到“我想查询一下话费”这句话的池化向量的结果为[0.21,-0.44,0.30,0.65,-0.81,0.32,0.56,0.12]。将“我想查询一下话费”这句话输入到模型中,得到交叉熵损失为{0.62},有监督对比损失为{0.51}。
[0058]
具体来说,使用交叉熵损失函数优化bert的参数,为了学习每个事件类型的标签信息,使用已知的标签信息作为先验知识来微调模型,并使用一个损失为softmax-loss的线性分类器,得到交叉熵损失
[0059]
有监督对比学习利用标签信息使得同属于一个意图事件类型的样本在高维特征上更相近的同时使不同事件类型的样本的特征表示更具有区分度。对于一个有c个类的多分类任务来说,一个批次内包含m个样本,表示为其中di表示输入的事件文本,yi表示该事件文本所属的事件类型,通过监督对比学习可以得到该任务的监督对比损失
[0060][0061]
其中a(i)={1,...,m}\{i}表示所有的锚点样本的集合,p(i)={p∈a(i):yi=y
p
}是事件标签为i的样本集合,τ是温度超参数,它允许模型去更好地学习困难样本,zi表示bert模块得到的特征表示,za表示不同锚点的特征表示,而z
p
表示事件标签为i的样本的特征表示。
[0062]
将两部分的损失相加得到该样本的完整损失为{1.13},重复上述步骤,计算每一个样本的完整损失,最终优化微调模型。在后续步骤中利用此模型来获得样本的高维句向量表示。
[0063]
本发明使用一种数据增强方法mix-up来生成更多的ood样本。具体来说,一个新的合成ood样本x
ood
可以这样被生成:
[0064]
x
ood
=α*xi+(1-α)*xj[0065]
例如,对于两句话的句向量表示为[0.61,-0.23,0.93,0.43,0.32],[-0.22,1.03,0.56.0.76,0.02],并且α是0.2,那么人工合成的ood样本的句向量表示为[-0.05,0.78,0.63,0.69,0.08],这句话也被看作是一条开放类样本,将所有生成的开放类样本一起输入到模型中。最终输入到联合训练模型的样本包括三部分,第一部分是获得的已知类样本,第二部分是重新标记的开放类样本,第三类是上述人工合成的开放类样本。
[0066]
为叙述方便,意图分类数据仍然使用表2,实际中,意图文本数据和构建模型数据
不相同。对于“我想查询一下话费”这句话在表2中是属于开放类的样本,那么就用1减去置信度评估分支的输出0.76,得到输出概率为0.24。如果另外一条样本“推荐一下宽带套餐”的输出是0.87且其属于“宽带办理”业务,那么直接使用0.87作为最后的输出概率。循环遍历所有的样本进行优化,最后得到训练完成的模型用于测试。
[0067]
首先预先设定置信度分支的阈值为θ=0.85,输入一条新的事件文本[查询哪月话费],分类分支的分类预测为[话费查询],而置信度分支的预测结果为[0.93],那么则认为[话费查询]这个预测是可靠的,本发明认定这条样本的标签就是[话费查询]。同样的,如果一个置信度评估分支的预测结果为[0.55],0.55小于设定的阈值0.85,则认为这条事件文本不属于已知类,而是[开放类]意图。循环遍历所有的测试样本,就可以得到每一条样本的最终结果。
[0068]
至此,开放意图检测模型已经训练完成,就可以实现输入一条事件文本,输出这条文本是否属于开放类,如果不属于开放类,则输出属于具体的哪个已知类。
[0069]
实施例2
[0070]
将本发明所述的方法和几种现有方法的处理结果进行对比,结果如表3所示,表3中,doc、msp、openmax、deepunk、adb分别是不同的基线方法,josc是本发明提供的方法;25%、50%、75%分别对应于本发明步骤s1中,删除25%、50%、75%比例的域内样本标签;本发明同时适用于中英文场景,banking、stackoverflow、wos分别代表三个不同的英文数据集。
[0071]
表3
[0072][0073]
表3中,accuarcy、f1为评价指标,分别表示准确率和f1值,可以看到,本发明方法的accuarcy和f1两项指标均普遍高于现有方法。
[0074]
对于本领域的技术人员来说,可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1