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

论文题目:Joint Slot Filling and Intent Detection via Capsule Neural Networks
作者:Chenwei Zhang, Yaliang Li , Nan Du, Wei Fan , Philip S. Yu
机构:伊利诺斯大学 , 阿里巴巴团队 , 腾讯医疗人工智能 , 清华大学
收录会议:ACL 2019
论文背景
技术编程|ACL 2019 使用胶囊网络联合训练词槽填充及意图检测
文章图片

文章图片

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

文章图片

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

文章图片

WordCaps 包含前向和后向两个 LSTM , 用于学习输入句子的词表示 。
SlotCaps
技术编程|ACL 2019 使用胶囊网络联合训练词槽填充及意图检测
文章图片

文章图片

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

文章图片

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} 就会变大 。


推荐阅读