所有文章 > 正文

ACL 2019 | 使用胶囊网络联合训练词槽填充及意图检测

作者: 徐家兴

时间: 2020-07-16 10:53

自然语言理解任务(natural language understanding, NLU)可以被分为词槽填充(slot filling)以及意图检测(intent detection)两个子任务。

论文题目:Joint Slot Filling and Intent Detection via Capsule Neural Networks
作者:Chenwei Zhang Yaliang LiNan Du Wei FanPhilip S. Yu
机构:伊利诺斯大学,阿里巴巴团队,腾讯医疗人工智能,清华大学
收录会议:ACL 2019

论文背景

img_1128-q8hmQCKDeP.png

我们知道,通常自然语言理解任务(natural language understanding, NLU)可以被分为词槽填充(slot filling)以及意图检测(intent detection)两个子任务。例如,用户输入一个自然语言句子,词槽填充在词语层面标注出每个词的类型,意图检测则在句子层面对其意图进行分类。
目前词槽填充常被作为序列标注问题进行处理,使用RNN/CNN学习得到词表示,再使用CRF来推测词槽类型。已有的一些将两个任务联合训练的工作是将词槽填充中RNN的最后一个隐藏层或者注意力权重求和,用来训练句子层面的意图检测。其存在的问题是没有考虑到词语、词槽以及意图之间的层级关系。
本文提出了CapsuleNLU,使用带有动态路由(dynamic routing)的胶囊网络(capsule neural network)在词槽建模以及意图建模之间建立联系,其主要贡献有以下三点:(1)通过层次化的胶囊神经网络结构,将话语,语段和意图之间的层次关系封装起来。(2)提出一种具有rerouting功能的动态路由方案,以实现联合插槽填充和意图检测的协同效果。(3)在两个真实的数据集上展示本文模型的有效性,并与现有模型以及商业NLU服务进行比较。

论文模型

img_1129-XXyR87RjMI.png

如图所示,本文提出的模型中包含三种类型的胶囊结构:
1. WordCaps用于学习基于上下文的词表示。
2. SlotCaps通过动态路由按照插槽类型对单词进行分类,并通过汇总属于该插槽的单词来为每种插槽类型构造表示形式。
3. IntentCaps根据slot表示以及话语上下文确定话语的意图标签。 一旦IntentCaps确定了意图标签,推断出的话语级别意图就可以通过重新路由模式帮助从话语中重新识别插槽。

WordCaps

img_1130-LY7EZtsI2D.png

WordCaps包含前向和后向两个LSTM,用于学习输入句子的词表示。

SlotCaps

img_1131-cw8HpULAka.png

SlotCaps可以通过动态路由来识别插槽,而不是通过不直接考虑单词间依赖性的顺序标记进行插槽填充。按协议进行的routing明确地对胶囊之间的层次关系进行建模。 例如,仅当单词表示形式与插槽表示形式具有高度一致性时, routing-by-agreement 机制才会将低级特征(即WordCaps中的词表示)发送到SlotCaps。其具体算法如下图所示:

img_1132-Xsv4gXmOmY.png

b_{kt}表示对数优先级概率,初始化为零,即WordCap中的第t个单词同意被路由到SlotCaps中的第k个词槽胶囊。在每次迭代(第3行)期间,通过汇总该词槽类型{p_{k|t} |t∈T}的所有预测向量,并乘以从b_{kt}(第5-6行)获得的一致性值c_{kt},来计算每个时隙表示v_k。其中将加权函数squash(·)应用于加权和s_k以获得每种词槽类型的v_k。一旦在当前迭代中更新了词槽表示形式v_k,b_{kt}就会变大。

img_1133-SLFh8zhw4z.png

当点积p_{k|t}·v_k大时。也就是说,当预测矢量p_{k|t}与时隙表示v_k更相似时,点积较大,表明该词更有可能路由到第k个时隙类型(第7行)。更新的更大的b_{kt}将在下一次迭代中导致第t个词和第k个词槽之间的一致值c_{kt}更大。另一方面,当p_{k|t}和v_k之间不一致。通过无监督的迭代算法获知的协议值可确保迭代迭代后,WordCaps的输出被发送到适当的后续SlotCaps。

img_1134-AfUQcxRYDe.png

词槽填充部分的损失函数使用的是常见的交叉熵(Cross Entropy)

img_1135-AFXMfsLwFO.png

IntentCaps

img_1136-Jha4Yd0ffd.png


IntentCaps同样使用动态路由来进行意图检测,其中对数优先级概率q_{l|k}表示SlotCap中的第k个词槽胶囊同意被路由到IntentCaps中的第l个意图胶囊。之后的计算和更新方式与SlotCaps完全一致。

img_1137-yMXpUGnCCp.png

意图检测部分使用Max-magrin损失函数进行优化。

Re-Routing
动态路由协议显示了诸如词槽之类的低级特征如何帮助构建诸如意图之类的高级特征。 高级特征还可以作为指导,辅助低级特征的学习。 例如,IntentCaps中的AddToPlaylist意图激活向量还可以在填充SlotCaps中的Sungmin单词期间,帮助增强现有的词槽,例如ArtistName。

img_1138-1UVIGTmPhz.png

本文中Re-Routing的实现方式是在更新SlotCaps的b_{kt}时在原来的基础上引入IntentCaps的输出u_z

论文实验
本文在SNIPS、ATIS数据集上对CapsuleNLU进行了评估,作为baseline的模型有:CNN TriCRF, RNN, Attention BiRNN, Slot-gated Full Atten (gate function in LSTM), DR-AGG (使用动态路由为文本分类聚合词层面的信息), IntentCapsNet (使用多头自注意力机制从句子中获取中间语义信息),此外,本文还与DialogFlow, Waston Assistant, Luis, wit.ai, snips.ai, recast.ai, Amazon Lex等商业NLU服务进行了对比实验。

img_1139-qgZaYYaZKR.png

结果表明,本文提出的的方法优于之前的一些工作,刷新了联合训练词槽填充与意图检测的SOTA,与一些商业NLU服务的效果也比较接近(需要注意的是,本文模型中并未引入GloVe、ELMo、BERT等预训练模型,其词表示全部通过WordCaps学习得到)。

上表中CapsuleNLU w/o Intent Detection仅在WordCaps与SlotCaps之间使用了动态路由,CapsuleNLU w/o Joint Training在训练词槽填充时使用L_slot进行优化,使用词槽表示训练意图检测任务,并使用L_intent进行优化。

img_1140-Sbxzh4pECo.png


点击ACL 2020,查看更过相关论文。

相关阅读:
ACL2020开幕在即!这些是你需要提前知道的数据

引用量 TOP 10 的ACL历届会议“最佳论文”

SIGIR 2020 | MOOC异构信息网络中基于图卷积网络的知识点推荐

[关于转载]:本文为“AMiner”官网文章。转载本文请联系原作者获取授权,转载仅限全文转载并保留文章标题及内容,不得删改、添加内容绕开原创保护,且文章开头必须注明:转自“AMiner”官网。谢谢您的合作。

二维码 扫码微信阅读
推荐阅读 更多