SLU文献
整理口语理解相关文献
口语理解(Spoken Language Understanding SLU)一般是指对说话人语义进行捕获,被认为是构建对话系统的关键技术
其一般被分为两个子任务:1.意图检测 2.槽填充

如本例中,意图识别判断出意图为WatchMovie,而槽填充则标注出电影类型
处理意图检测的基本方法,将其看作文本分类问题,利用文本分类的方法 CNN [ Xu and Sarikaya, 2013],RNN [Ravuri and Stolcke, 2015],而槽填充任务则视为序列标注,使用的有 CRF [Raymond and Riccardi, 2007], RNN [Xu and Sarikaya, 2013] ,LSTM [Ravuri and Stolcke, 2015]
最开始两个任务被视为互相独立的,但其实二者是有关联的,因此有人开始考虑两个任务联合起来
1.《A Survey on Spoken Language Understanding: Recent Advances and New Frontiers》
这是一篇综述,由 Libo Qin, Tianbao Xie 等人完成,其将文章中的结果和数据放在了GitHub上
文章开始指出随着深度学习的发展,在ATIS,SNIPS两个数据集上准确率和F1值已经非常高,从而并发出疑问是否SLU已经完美的实现了

这显然是否定的,作者从三个角度进行叙述
- 对现有SLU方法进行分类和总结
- 总结了SLU领域内的数据
- 分析现有SLU局限性和面临的挑战
1.分类

1.1 独立模型
独立模型对两个子任务进行分别训练,如图(a)
文章还总结了不同的独立模型在ATIS数据集上的表现,并指出由于两个任务之间没有联系导致共享的知识出现泄露

1.2 联合模型
由于两个子任务之间有明确的关系,因此可以利用联合模型来利用共享知识,这里的联合模型又分为隐式和显式
隐式联合模型中仅有共享编码器模块如图(b)其没有对交互进行显式建模导致其可解释性差,性能低
显式联合模型,则引入了交互模块如图(c)这种方式可以明确的控制两个任务之间的交互,这里又可以分为单向交互和双向交互
其中单向的主要考虑从意图检测到槽填充的信息流,下图为联合模型在ATIS和SNIPS数据集上的表现

1.3 预训练模型
预训练模型在NLP领域取得了非常不错的结果,这点在SLU上也是一样,预训练模型可以提供丰富的语义特征,有助于提高SLU任务的性能
2.新领域和挑战
2.1 基于上下文的SLU
有时完成一个对话是需要用户和系统之间来回多轮对话,这就需要考虑上下文,与单轮SLU不同,面向多轮对话的SLU会存在歧义问题
其主要面临两个挑战:1.语境信息整合:正确区分不同对话历史对当前话语的联系并将其整合到语境信息中。2.远距离障碍:一些对话有非常长的历史,模拟远距离的历史对话并滤除无关噪音是值得研究的
2.2 多意图SLU
多意图SLU即一句话包含有多个意图,根据Gangadharaiah and Narayanaswamy [2019] 的调查发现在亚马逊数据中有52%都是多意图,因此多意图在真实场景中更实用
其主要面临的问题是:1.多个意图和槽之间的交互,这里与单个意图的SLU有很大的不同。2.缺乏数据
2.3 中文SLU
中文SLU面临着分词的挑战以及如何将分词信息结合到模型中
2.4 跨领域SLU
面临领域知识如何转移以及目标领域没有训练数据时如何将源域中的知识迁移过去等挑战
2.5 跨语言SLU
将训练好的模型拓展到其它语言中
2.6 低数据SLU
目前面临着1.如何在低数据中充分利用两个任务之间的关系。2.缺乏基准
2.《A survey of joint intent detection and slot-filling models in natural language understanding》
这也是一篇综述主要是总结联合模型,但篇幅比上一篇要长许多,是由HENRY WELD,XIAOQI HUANG等人完成的
文章一开始给出了意图检测和槽填充两个任务的发展历程
意图检测

槽填充

接下来文章细致的讲述了每个任务中面临的问题
意图检测:
- 模糊的解释:在特征空间中决策边界的划分,在短文本中由于信息的不充分和不遵循正确的语法使得边界更难确定,文章[Ren and Xue 2020] 给出了一种方法,通过一次训练三个样本(标准样本, 正样本, 负样本)来确定边界
- 缺乏标记的数据或小训练集:迁移学习,无监督训练
- 多领域、多语种:多层集成,对抗训练
- 新兴意图检测:检测并分类新出现的意图。[Xia et al. 2018]以胶囊为基础进行新意图检测
- 看不见的意图:n-gram
- 短文本:集成学习
- 其它特征工程:DBN,语法特征
- 不平衡数据:ATIS在意图方面不平衡
- 来自不同意图的词的共现:有可能一个词同时出现在不同意图中
- 对上下文时间信息建模:引入上下文
- 组合产生意图:比如play_music可以由play和music两个组合而来
- 增加模型泛化性:模型组合
- 多意图查询:一句话有多个意图
槽填充:
- 标签间的依赖:一些标签之间是有依赖关系的,如B-FromCity和B-ToCity这两个标签有很大可能出现在一个句子中,引入CRF或使用编码解码模型
- 长距离依赖:延时神经网络和Transformer模型
- 标签偏执问题:CRF
- 学习常见单词:一个句子周围的词通常都是相似的
- 低资源数据集
- 梯度衰减和爆炸:LSTM
- 数据稀疏:DBN
- 持续学习:引入新的训练数据而不需要重新学习
- 不平衡数据:深度增强学习
- 看不见的标签:弹性条件随机场
- 多任务学习
- 延伸到人与人的对话
3.《A CO-INTERACTIVE TRANSFORMER FOR JOINT SLOT FILLING AND INTENT DETECTION》
Libo Qin 和 Tailu Liu等人写的
作者指出目前的联合模型主要分为两大类,第一类是共享编码器的隐式建模,第二类是显式的使用了意图信息来指导槽填充任务
这两类第一种只是隐式的建模,第二种只考虑了单向信息流
因此作者提出了这个模型,其构建了两个任务之间的双向连接,其使用的是Co-Interactive Transformer,其与普通Transformer不同的地方在于多了一个协同交互模块,用于建模两个任务之间的关系

其先用Bi-LSTM作为编码器,获取得到句子的隐藏状态 \(H = \{h_1, h_2,\dots,h_n\}\)之后对其执行标签注意力,这里的标签注意力是意图和槽填充分开计算的,且这里的注意力计算中是将其后面的解码器的参数weights拿过来当W(没有想明白为什么,应该和标签注意力机制有关需要看一下相关文章)接着就是注意力机制,其中I为意图,S为槽 \[ A=softmax(HW^V)\\ H_v=H+AW^V\\ V\in\{I\ or\ S\} \] 之后就是Co-Interactive Attention Layer \(H_S\)和\(H_V\)被送入该部分,在这一部分两个任务将互相影响
和Transformer一样其使用了不同的映射矩阵将\(H\)映射成为\(Q\ K\ V\)之后利用意图的\(K_I\)作为\(keys\)把槽的\(Q_S\)和\(V_I\)作为\(queries\)和\(values\) \[ C_S=softmax(\frac{Q_SK_I^T}{\sqrt{d_k}})V_I \\ H^{\prime}_S=LN(H_S+C_S) \] 其中\(LN\)是layer normalization函数
接下来就是Feed-forward Network Layer
首先将\(H_S\)和\(C_S\)拼接在一起,并按照时间步拼接前后的向量,并送入\(FFN\)层 \[ H_{IS}=H^{\prime}_I\oplus H^{\prime}_S\\ h^t_{(f,t)}=h^{t-1}_{IS}\oplus h^{t}_{IS}\oplus h^{t+1}_{IS}\\ FFN(H_{f,t})=max(0,\ H_{(f,t)}W_1+b_1)W_2+b_2 \] 随后将\(FFN\)结果和之前得到的\(H^{\prime}_V\)相加并经过归一化送入解码器模块,在意图检测部分,使用了最大池化和全连接,在槽填充部分使用了全连接和槽填充
最后作者进行了一系列对比试验,得出显式的双向交互模块可以得到更好的效果,其实验结果如下

4.《A Deep Learning Model with Data Enrichment for Intent Detection and Slot Filling》
Sławomir Dadas, Jarosław Protasiewicz等人写的
这篇文章关注的是如何拓展数据集,其利用随机变异和启发式规则将小数据集拓展,并且在槽填充任务上取得更好的效
其使用的启发式规则是
1.将相同有槽标签的词汇替换
list flights from philadelphia to dallas on friday → list flights from los angeles to detroit on monday
2.随机替换成外部单词
show me all the types of aircraft → show me all the kinds of airplane.
3.顺序变换
list airports new york → new york list airports
实验:作者做了一系列对比试验,其原始数据是训练集的子集,分别为100% - 10%,然后在其上拓展50%,100%,200%

实验结果:

作者发现其在槽填充任务上拓展数据集总是比原数据集好一些,且在小数据集上改善效果更明显
5.《A Joint Model of Intent Determination and Slot Filling for Spoken Language Understanding》
作者是Xiaodong Zhang 和 Houfeng Wang
其主要是构建了一个联合模型

作者在Embedding层引入了窗,将前后词的词向量拼接在一起,于此同时还引入了实体标签之后就是经过双向GRU,隐藏状态被用于槽填充,并对其进行最大池化,用来预测意图
其意图部分的损失函数是交叉熵:\(\mathcal{L}^u(\theta)=-log\ y^u(l^u)\)
槽填充部分使用的是Max-Margin \[ \Delta(l^s,\widehat{l}^s)=\sum_{t=1}^{T}1\{l_t^s\neq\widehat{l}^s_t\}\\ \mathcal{L}^s(\theta)=max(0,s(\widehat{l}^s,\theta)+\Delta(l^s,\widehat{l}^s)-s(l^s,\theta)) \] 其最后的总loss就是两个相加,但是在槽填充项有一个比例系数
最后结果如下:

6.《A Novel Bi-directional Interrelated Model for Joint Intent Detection and Slot Filling》
作者是Haihong E, Peiqing Niu等人

在经过LSTM层后,作者引入了注意力机制得到\(C_{slot}\)和\(C_{inte}\)接着送给SF-ID网络,其分为了两种模式SF-First和ID-First
在SF-First结构中SF先执行,其SF结构利用了\(C_{slot}\)和\(C_{inte}\)并计算了两个之间的相关系数\(f\): \[ f=\sum V*tanh(c^i_{slot}+W*c_{inte}) \] 利用\(f\)计算增强向量\(r^i_{slot}=f \cdot c^i_{slot}\)并将其送入ID网络
\[
r=\sum_{i=1}^T \alpha_i \cdot r^i_{slot}\\
\alpha_i = softmax(e_{i,j})\\
e_{i,j}=W*tanh(V_1*r^i_{slot}+V_2*h_j+b)\\
r_{inte}=r+c_{inte}
\] 在得到\(r_{inte}\)后将其送入SF网络用于替代最开始的\(C_{inte}\),之后两个子网之间可以反复交换信息,在完成迭代后其增强向量\(r_{slot},r_{inte}\)和LSTM的隐藏向量相拼接再利用CRF和softmax进行预测槽值和意图
如果是ID-First则与之前的计算类似只是替换成初始的\(c_{slot}^j,h_i\) \[ r=\sum_{i=1}^T \alpha_i \cdot h_i\\ \alpha_i = softmax(e_{i,j})\\ e_{i,j}=W*\sigma(V_1*h_i+V_2*c^j_{slot}+b)\\ \] 其实验结果如下:



适当的迭代次数是可以提高模型性能的
7.《A Stack-Propagation Framework with Token-Level Intent Detection for Spoken Language Understanding》
Libo Qin, Wanxiang Che等人
这个文章比较新颖的地方在于引入了字符级别的意图
作者一上来解释了多任务框架和联合模型的区别

对于多任务框架其两个任务之间没有显式的传递信息,而联合模型可以在确保可微的情况下实现信息的显式传递
作者提出的模型结构如下:

其先经过一个带Self-Attention的双向LSTM层,对原始数据进行编码得到最后的向量\(E\)
接下来就是字符级别的意图检测,其将意图检测视为标注模型,对于输入的序列\(x=(x_1,\dots,x_T)\)得到一个意图标记序列\(O^I=(O_1^I,\dots,O_T^I)\)最终整个句子的意图是全体字符投票得出的
这里的字符级别意图解码器利用的是单层LSTM进行解码:\(h^I_i=f(h^I_{i-1},y^I_{i-1},e_i)\)之后将\(h_i^I\)线性变化做softmax得到意图分布\(y^I_i\) \[ y^I_i=softmax(W^I_hh^I_i)\\ o^I_i=argmax(y^I_i)\\ o^I=argmax\sum_{i=1}^m\sum_{j=1}^{n_I}\alpha_j[o^I_i=j] \] 而在槽填充部分使用的是相同的解码器:\(h^S_i=f(h^S_{i-1},y^S_{i-1},y^I_i\oplus e_i)\)
其实验结果如下:

其结果表明该方法可以有效
8.《Balanced Joint Adversarial Training for Robust Intent Detection and Slot Filling》
Xu Cao, Deyi Xiong等人,主要关注的是联合模型中的对抗训练问题

未经过对抗训练的模型可能因为小的扰动而发生判断错误
文章使用的联合模型是这样的

其使用的是FGM对抗训练
9.《BERT for Joint Intent Classification and Slot Filling》
Qian Chen,Zhu Zhuo,Wen Wang
将BERT应用于联合模型

