基于知识蒸馏的口语理解模型研究与实现

2021-04-20 02:23侯晓龙周培林邹月娴
电子技术与软件工程 2021年2期
关键词:意图标签口语

侯晓龙 周培林 邹月娴

(北京大学深圳研究生院现代数字信号处理实验室 广东省深圳市 518055)

1 引言

近年来人工智能技术发展十分迅速,基于深度神经网络(DNN)的自然语言处理技术取得了长足进步,并获得广泛且成功的应用,多个商业场景中的人机对话系统就是典型案例。例如,常见的天猫精灵、小爱同学等智能音箱产品给用户提供音乐播放、天气查询、聊天等服务;阿里小蜜、京东JIMI 等在线智能客服机器人,能及时解决用户购物过程中遇到的问题,加速成单转化和提升用户体验,同时大幅降低企业客服人力投入。因此,人机对话系统具有巨大的商业价值。

一个完整的人机对话系统包括以下五大模块:语音识别(Automatic Speech Recognition,ASR)、口语理解(Spoken Language Understanding,SLU)、对话管理(Dialogue Management,DM)、自然语言生成(Nature Language Generation,NLG)和语音合成模块(Text-To-Speech,TTS)。其中,口语理解是对话系统的关键组成部分,意图识别与槽位填充是口语理解的两个重要子任务。意图识别旨在从用户表达中识别出用户的意图,其实质为文本分类问题。槽位填充则是从用户表达中提取出为了完成某项任务所需要的语义概念,其实质是序列标注问题。这两个子任务的性能好坏直接影响到人机对话系统能否正确理解用户的意图以及做出正确响应。因此针对意图识别和槽位填充模型性能提升的研究,有助于提升人机对话系统的整体性能表现,具有重要的科研及工业应用价值。

目前,针对口语理解中的意图识别与槽位填充任务,主要有两种技术路线:一是分别对意图识别和槽位填充进行独立建模,另一类方法是对这两个任务进行联合建模。实际场景中,意图与槽位信息是有关联的。如在语音助手场景中,用户意图是打车的语句通常会带有目的地槽位信息。而独立建模的方法导致他们的监督信号和语义信息没有被充分共享和利用。随着研究的深入,基于大规模数据获得的预训练模型展现出强大的表征能力并在多个自然语言处理任务上表现出色。已有研究表明,基于预训练模型和意图识别与槽位填充联合建模提升了口语理解的性能。但由于预训练模型的复杂结构及庞大参数量,严重阻碍了其线上应用。为此,本文采用“教师-学生”知识蒸馏框架,开展对基于BERT 的意图识别与槽位填充联合学习模型的压缩方法研究,在口语理解数据集ATIS 和SNIPS 上,所获得的蒸馏口语理解模型参数量不到教师模型的三分之一,推断速度是原基线模型的6.7 倍和8.6 倍,而性能在大多数指标上无明显下降。

2 相关工作

2.1 意图识别与槽位填充独立建模方法

2.1.1 意图识别

意图识别旨在从用户的表达语句中识别出用户的意图,其实质是文本分类问题,主要方法包括:

2.1.1.1 基于规则模板的意图识别方法

此类方法首先从用户表达中归纳总结出不同的用户意图,提取出各种意图表达的规则,然后使用规则模板匹配的方法从用户表达中识别用户意图。此类方法虽然实现简单,计算效率较高,但由于同一意图往往对应多样的用户表达,使得基于规则模板的意图识别方法存在维护成本高、泛化能力差等问题,因此通常只适用于冷启动阶段。

2.1.1.2 基于传统机器学习的意图识别方法

基于传统机器学习的意图识别方法,首先对用户的表达文本进行分词、去停词等预处理操作,然后使用BOW、TF-IDF、Word2Vec 等模型提取文本特征,最后使用一个分类器来完成意图的分类。常用的分类器包括:决策树、支持向量机、XgBoost 等。此类方法相较规则模板的方法有更好的泛化性,但是严重依赖于人工提取的文本特征。

2.1.1.3 基于深度神经网络的意图识别方法

随着深度神经网络在自然语言处理领域的发展,越来越多的研究者将卷积神经网络(Convolution Neural Network,CNN)[1]和循环神经网络(Recurrent Neural Network,RNN)[3]应用于意图识别。2014年,Kim 等[1]提出一种基于TextCNN 的文本分类模型。该模型首先对由句子中的词向量构成的矩阵做卷积、池化操作,然后通过一个文本分类器对得到的句子表征进行分类。虽然基于TextCNN的方法在以意图识别为代表的文本分类任务上取得了良好性能,但该方法忽略了句子中的词序信息,很难发现文本中的复杂模式。因此,2015年Ravuri[2]提出用RNN 和长短期记忆网络(Long Short Term Memory,LSTM)[4]来建模文本中的长距离依赖,并通过利用LSTM 最后一个时间步的隐状态信息,来完成意图分类。

2.1.2 槽位填充

槽位填充旨在从用户的表达中提取出为了完成某项任务所需要的语义概念,主要的方法包括:

2.1.2.1 基于字典、规则的槽位填充方法

此类方法首先构建槽位词库、以及槽位词抽取的规则模板。然后通过字符串匹配、规则模板匹配的方法抽取槽位信息。此类方法实现简单,但存在维护成本高、泛化性差的问题,只适用于系统冷启动阶段。

2.1.2.2 基于传统机器学习的槽位填充方法

典型的方法是使用条件随机场(Conditional Random Fields,CRF)[5]。CRF 是在给定一组输入序列条件下,求另一组输出序列条件概率分布的模型,广泛应用于序列标注任务,2007年Raymond 等[6]提出了使用CRF 来建模槽位标签间的依赖及约束关系,有效地提高了预测的准确度。

2.1.2.3 基于深度神经网络的槽位填充方法

2013年Yao 等[7]提出了使用RNN 来做槽位的提取,在训练的时候使用语义标签作为标签,而不是单词。这种方法没有直接依赖于中间的槽值,仅依赖于输入的单词序列,实现比较简单。而且通过RNN 模型学习到了适合任务的词嵌入,这使得模型性能上显著超越了CRF。2014年Yao[8]提出了RNN 和CRF 结合的模型来进行序列标注,在RNN 的基础上,融合CRF 的元素信息,通过转移特征显示建模输出标签的依赖关系,可以有效提升RNN 序列标注的性能。2015年Simonnet[9]的研究表明,通过在基于LSTM 的编码-解码框架中引入自注意力机制(Self-Attention)[14],可以进一步改善槽位填充的性能。

2.2 意图识别与槽位填充联合建模

现有研究表明,意图识别和槽位填充这两个任务之间存在关联性。因此在构建口语理解模型时,可以对二者进行联合建模,即利用意图的监督信号和语义信息来提升槽位填充任务的性能,从而进一步改善口语理解模型的整体表现。例如,在订票场景中,从用户的口语表达中识别到的订票意图可以辅助槽位填充模型识别出发地、目的地、时间等槽位信息,从而提高槽位填充的准确度。目前,意图识别与槽位填充联合建模的典型方法包括:

2.2.1 基于RNN 和注意力机制的联合建模方法

2016年Liu 等[10]在RNN 中引入注意力机制来联合建模意图识别和槽位填充任务。该方法在ATIS 数据集上意图识别与槽位填充任务都达到了当时最好的性能表现。

2.2.2 基于槽位门控单元和注意力机制的联合建模方法

在Liu 等[10]提出的基于注意力机制的口语理解模型的基础上,2018年Goo 等[11]进一步引入了槽位门控单元以显式地建模槽位与意图间的关系。该方法强化了意图信息对槽位填充任务的辅助作用,不仅可以更充分的捕捉用户口语输入中的复杂模式,而且具有良好的泛化性。

2.2.3 基于BERT 预训练语言模型的联合建模方法

2019年Zhang 等[12]提出了基于BERT 预训练语言模型的口语理解联合建模方法,该方法选择BERT 作为特征提取器,获得用户表达的上下文语义表征,并使用意图增强机制来充分建模意图与槽位的语义相关性。实验结果表明,此方法在多个数据集上都达到了最好的性能。

2.3 预训练模型

很多研究工作表明,通过对大规模无监督语料进行预训练,可以学习到通用的语言学知识和高质量的上下文文本表征,这对于下游的各类自然语言处理(Natural Language Processing,NLP)任务非常有帮助。其中,BERT(Bidirectional Encoder Representation Transformers)[13]是预训练模型的典型代表,采用了Transformer 的多层双向编码结构,可以捕捉句子的上下文依赖关系并具有强大的文本表征能力。BERT 的输入由词嵌入,位置嵌入和段嵌入三部分组成,其输出包括文本的句子级和词级表征。另外,根据训练语料规模的不同,Google 发布了BERT-Base 和BERT-Large 版本,BERT-Base 包括12 层的Transfomer,其参数量达到了 1.1 亿。BERT-Large 包含24 层Transfomer,其参数量为3.3 亿。

2.4 模型压缩与知识蒸馏

得益于BERT 强大的文本表征能力,BERT 在很多下游NLP 任务中取得了SOTA 的结果,但由于复杂的网络结构及巨大的参数规模,很难把这些模型部署在资源有限的环境中。为此有很多工作[15]专门研究如何对复杂模型进行压缩,包括对模型裁剪、稀疏化、量化加速,而知识蒸馏[16]也是其中一种常用方法。知识蒸馏是使用一个“教师-学生”框架,将结构复杂、参数规模巨大、学习能力强的教师模型学到的知识“蒸馏”出来,传递给结构简单、参数量小的学生模型,从而得到一个速度快、能力强的蒸馏模型。

3 基于知识蒸馏的口语理解模型

本文首先提出了一个基于BERT 的口语理解联合模型,在该模型中使用自注意力机制来获取各时间步的上下文表征,并引入了门控机制来显式建模意图信息对槽位填充任务的指导作用。然后,本文将模型压缩技术应用到口语理解领域,采用知识蒸馏框架对模型进行蒸馏压缩,最终得到一个轻量级、推断速度与性能俱佳的高效口语理解模型。

3.1 基于BERT的口语理解联合模型

如图1所示,本文设计并构建了一个基于BERT 的口语理解联合模型。给定用户的输入语句,该模型首先利用BERT 分别提取句子级和单词级表征,并将句子级表征输入一个意图分类器获取当前表达的意图;然后,通过对单词级表征进行Self-Attention 并结合使用Slot-Gate 来控制意图信息的引入,输出与BERT 词级表征逐元素相乘来实现意图信息和槽位信息的交互,并将交互后的单词级表征输入到CRF 模块以建模预测标签之间的约束关系,最后,输出各个词对应的槽位标签。

3.1.1 BERT 编码

把用户表达语句通过WordPiece编码并在首尾加上[CLS]、[SEP]这两个特殊字符,得到词嵌入,拼接上位置嵌入、段嵌入,输入到BERT 模型中。给定输入词序列 x=(x1,x2,…,xT),BERT 的输出是H=(h1,h2,…,hT)。

3.1.2 意图识别

通过BERT 编码输出的第一个特殊字符[CLS]隐状态信息得到整个句子的语义表征,然后再通过一个意图分类器(IntentClassifier)对用户意图进行分类,

其中,h1是[CLS]对应的隐状态,可以代表整个句子的语义信息,Wintent和bintent是分类器模型前向传播网络的权重矩阵及偏置参数。

3.1.3 门机制和自注意力机制

意图信息(Intent)的引入有助于槽位填充任务,但相较于句子中非槽位词,意图信息更有利于槽位词的提取。如果把意图信息作用于句子中的每个词,可能会导致一些非槽位词被错误地预测为槽位词。因此我们设计引入一个由线性变换结构组成的槽位门(Slot-Gate)来控制意图信息的引入。

首先,使用自注意力机制(Self-Attention)[14]对BERT 输出生成每个时间步上的下文感知表征st,然后拼接意图向量vintent输入到Slot-Gate 中得到门向量vt,通过逐元素相乘建模BERT 输出与门向量间的交互,得到各时间步最终的隐状态输出ot,公式表达如下所示:

3.1.4 槽位填充

在得到ot后,如果直接通过softmax 函数输出各个标签的概率,概率最大的标签为当前词的槽位标签。但这样设计存在如下问题:softmax 只是在每一时间步找出预测概率最大的标签,这些概率最大的标签的计算相互独立的。这样模型无法学习到输出标签之间的转移关系及序列标签的约束条件,会导致出现一些不合理的预测,如B-ORG 之后下一个词的标签为I-PER。为此,本文创新地在模型中引入CRF 层来学习序列标签的约束关系,以提高预测结果的合理性。公式表示如下所示:

3.1.5 联合学习目标

图1所示为本文设计的基于BERT 的意图识别与槽位填充联合学习模型。为了训练该模型,本文使用最小化交叉熵损失,学习目标是最大化条件概率 p(yintent,yslot|x),公式表示如下所示:

其中,x 是输入的单词序列,p(yintent,yslot|x)是给定输入x 时最大化的意图和槽位条件概率分布。

3.2 基于知识蒸馏的口语理解模型压缩

基于BERT 的口语理解联合模型,采用自注意力机制(Self-Attention)获得上下文表征,并使用槽位门(Slot-Gate)来控制意图信息的引入,有效提升了口语理解的性能。但由于使用BERT 导致模型存在网络结构复杂、参数规模大,推断速度慢的问题。为此,为了进一步提高模型的效率,本文基于“教师-学生”知识蒸馏框架(如图2所示),试图将结构复杂、参数规模巨大、学习能力强的教师模型中学到的知识“蒸馏”出来,传递给结构简单、参数量小、学习能力弱的学生模型,从而提高学生模型的学习效果,达到模型压缩的目的。

3.2.1 教师模型

本文所设计的教师模型是基于BERT 构建的口语理解联合模型,如图1所示。教师模型在口语理解数据集ATIS 和SNIPS 可以取得不错的效果,但由于BERT 模型结构复杂、参数规模巨大,导致其在线推断速度较慢,比较难部署到真实的线上业务场景,尤其是在一些低资源、高性能要求场景,如:移动设备、可穿戴设备场景。因此,我们需要构建轻量级的学生模型,通过教师模型对学生模型进行指导学习。

3.2.2 学生模型

本文设计的学生网络,和教师网络采用的是相同的模型结构,如图1所示。不同的是教师网络使用了包含12 个Transformer层的BERT,记作MT12。学生网络使用包含1 个Transormer 层的BERT,记作MS1。为了进行实验对比,也设计了包含2 个Transformer 层的学生网络,命名为MS2。

3.2.3 训练策略

本文设计的模型训练框架如图2所示。基于该“教师-学生”知识蒸馏框架,口语理解联合模型的训练步骤如下:

Step1.在训练集上对教师网络MT12进行训练,得到一个效果最优的教师模型,记作Teacher12。

Step2.使用Teacher12预测输出作为学生网络MS1的“软标签”,与MS1预测输出得到的损失为蒸馏损失,记作Ldistill。

Step3.使用数据中的类别“硬标签”与MS1预测输出得到的损失为交叉熵损失,记作LCE。

Step4.蒸馏框架使用Ldistill和LCE组成的损失函数,并最小化该损失作为训练目标,损失函数如公式(8)至(12)所示。

Step5.通过以上步骤对学生网络MS1进行训练得到的模型为蒸馏模型,记作KD1。

Step6.重复Step2 到Step4,对学生网络MS2进行训练,得到KD2。

Step7.为了对比蒸馏模型KD1、KD2和独立训练的学生模型间的性能差异,对学生网络MS1和MS2进行独立训练,得到学生模型Student1和Student2。

其中,Ldistill代表教师模型与学生模型知识蒸馏的损失,LCE代表学生模型输出与数据样本分类硬标签之间的交叉熵损失,α 是两部分损失的平衡参数,T 代表温度,piT代表在温度为T 时教师模型的输出,qiT是学生模型的输出,yi代表第i 个样本真实的分类硬标签,zs和zt分别代表学生模型和教师模型输出的Logit 值。

4 实验结果分析

4.1 数据集

在口语理解任务中,比较常用的两个数据集是ATIS 和SNIPS。ATIS(Airline Travel Information System)数据集是航班预订的语音记录数据,训练集有4978 个样本,测试集有893 个样本。在训练集中,一共涵盖21 种意图和120 种语义槽。SNIPS 数据集是由SNIPS 公司于2018年开源的口语理解数据集,其训练集、开发集、测试集中分别包括13084、700、700 个样本,涉及7 种用户意图和72 种槽位。

4.2 模型参数

教师模型Teacher12、学生模型Student1和Student2的隐藏层维度均为768,模型的优化器采用BertAdam,学习率设置为5e-5。知识蒸馏过程中,软硬标签均采用交叉熵损失函数,平衡参数α 为0.5,温度T 为8,所有实验均采用小批量训练方法,批大小设为128。

4.3 实验结果

口语理解任务中包括意图识别和槽位填充两个子任务,意图识别和槽位填充分别使用准确率和F1 值作为评价指标,整个口语理解任务使用句准确率作为评价指标。

实验结果如表1所示。在ATIS 数据集上,蒸馏模型KD1句准确率为0.86,略低于教师模型Teacher12的0.887,但参数量相比教师模型减少了72%,在89560 个样本(20 倍的ATIS 训练样本)上进行推断总耗时仅为3 秒,是教师模型推断速度的6.7 倍。同时蒸馏模型KD1的槽位F1 值、句准确率均优于单独训练的学生模型Student1。蒸馏模型KD2句准确率为0.882,较蒸馏模型KD1提升2.2%,表现接近教师模型,意图准确率、槽位F1 值及句准确率各指标均优于单独训练的学生模型Student2。在SNIPS 数据集上,蒸馏模型KD1句准确率为0.781,比教师模型Teacher12低了0.125,比单独训练的学生模型Student1高0.045。蒸馏模型KD2句准确率0.827,比教师模型低0.074,比单独训练的学生模型Student2高0.043。推断速度方面,KD1和KD2在261680 个样本(20 倍的SNIPS 训练样本)上的总耗时分别为34s 和58s,是教师模型推断速度的8.6 倍和5 倍。蒸馏模型在槽位F1 值、句准确率均优于单独训练的学生模型。

为了验证注意力和门机制对于知识蒸馏在口语理解任务上应用的影响,我们去掉教师网络MT12中的Self-Attention 和Gate 模块,实验结果如表2所示。对比表1和表2的实验结果可以发现,在去掉Self-Attention 和Gate 模块后,教师模型Teacher12、蒸馏模型KD1的句准确率有一定程度下降,在SNIPS 数据集上蒸馏模型KD1降幅最大,下降了4.2%。

此外,现有研究[8]表明,对于槽填充任务,建模标签间的依赖关系可以有效提高预测的准确度。因此,我们去掉教师网络MT12中的CRF 模块,测试了CRF 对模型性能的影响,实验结果如表3所示。对比表1和表3的实验结果可以发现,在去掉CRF 模块时,教师模型Teacher12、蒸馏模型KD1和KD2的槽位F1 值、句准确率有一定程度下降,在SNIPS 数据集上蒸馏模型KD1的句准确率下降最大,下降了3.5%。

从实验我们可以看出,通过教师模型对学生模型指导训练得到的蒸馏模型,虽然性能上不能超越教师模型,但参数量相比教师模型减少三分之二,在ATIS 和SNIPS 数据集上的推断速度是分别是教师模型的6.7 倍和8.6 倍,且在意图识别准确率、槽位F1 值、句准确率指标上也接近教师模型,在ATIS 数据集上表现尤为明显。

图1:基于BERT 的口语理解联合模型,输入的语句是“play the most popular puretone”.

图2:“教师-学生”知识蒸馏框架

5 结束语

基于BERT 的口语理解联合模型虽然显著提高了口语理解的性能,但由于其存在参数量巨大、推理速度慢等问题,往往难以在实际业务场景中应用。而且大部分联合模型在槽位填充任务中没有充分利用到意图信息。针对以上问题,本文设计了一个基于BERT的意图识别和槽位填充联合学习模型,使用自注意力机制(Self-Attention)获得上下文表征,并通过槽位门(Slot-Gate)来控制意图信息的引入。在此基础上,提出了基于“教师-学生”的知识蒸馏训练方法,采用教师模型输出“软标签”作为学生网络监督信号,结合“硬标签”监督信号,对学生网络进行指导训练,得到一个参数规模小的口语理解蒸馏模型。实验结果表明,口语理解蒸馏模型获得了与教师模型接近的意图识别和槽填充性能,相比于教师模型,其参数量降低三分之二,推断速度在ATIS 和SNIPS 数据集上分别为教师模型的6.7 倍和8.6 倍。此外,在后续的研究工作中,我们将重点关注端到端的口语理解任务,并进一步探索知识蒸馏技术在该任务上的有效性。

表1:教师模型、学生模型、蒸馏模型性能

表2:教师模型、蒸馏模型性能(无Attention 和Gate)

表3:教师模型、蒸馏模型性能(无CRF)

猜你喜欢
意图标签口语
原始意图、对抗主义和非解释主义
陆游诗写意图(国画)
制定法解释与立法意图的反事实检验
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
提高口语Level 让你语出惊人
标签化伤害了谁
口语对对碰
基于多进制查询树的多标签识别方法
燕山秋意图