当GNN遇见NLP(八):GL-GIN: Fast and Accurate Non-Autoregressive Model for Joint Multiple Intent Detection

全文的标题是GL-GIN: Fast and Accurate Non-Autoregressive Model for Joint Multiple Intent Detection and Slot Filling。
在这里插入图片描述

Introduction

在对话系统中,意图识别与槽填充可以说是两个最基本的任务,前者可以看做是文本分类;后者则是序列标注。目前越来越多的方法对二者进行联合提取,但是目前的联合模型严重依赖自回归方法,导致了两个问题:推理速度慢和信息泄漏。如图:
在这里插入图片描述
(a)表示自回归方式,同Seq2Seq类似,当前位置的slot必须根据前一个决定,因此是一个one-by-one的输出模式,因此时间复杂度很高。
因此,本文提出了一种全局-局部图交互网络(GL-GIN),其中提出了一个局部时隙感知的图交互层来建模时隙依赖,以缓解不协调的时隙问题,同时引入了一个全局意图时隙图交互层来建模话语中多个意图和所有时隙之间的交互。
本文的具体贡献如下:

  1. 第一次尝试探索联合多重意图检测和槽填充的非自回归方法。
  2. 提出了一种全局-局部图交互网络,其中局部图用于处理不协调的槽问题,而全局图用于模型序列级意图-槽交互。
  3. 框架不仅达到了最先进的性能,而且大大加快了槽解码速度。
  4. 本模型可以与预训练模型结合,从而进一步提升性能。

Problem Definition

下面介绍一些符号与定义:

  • 输入序列: x = ( x 1 , . . . x n ) x={(x1,...xn)} x=(x1,...xn)
  • 多意图分类:多标签文本分类任务,根据输入序列预测多个标签: o I = ( o 1 I , . . . o m I ) o^I=(o_1^I,...o_m^I) oI=(o1I,...omI)
  • m m m:给定句子中意图的数量
  • n n n:句子的长度

Approach

在这里插入图片描述
如图所示,模型分为三个部分:Self-attentive Encoder,Token-Level Intent Detection Decoder以及Slot Filling Decoder。其中,以Slot Filling Decoder最为复杂。

Self-attentive Encoder

这个结合了BiLSTM以及Self-Attention,没有什么好说的,最后将二者的输出拼接在一起:
在这里插入图片描述
其中 H H H是BiLSTM的输出, C C C是Self-Attention的计算结果:
在这里插入图片描述
其中 E = { e 1 , . . . e n } ∈ R n × 2 d E=\{e_1,...e_n\}\in R^{n×2d} E={e1,...en}Rn×2d。接下来的decoder操作都在encoder的输出 E E E的基础上完成。

Token-Level Intent Detection Decoder

在意图识别的时候使用了一个比较好玩的token级别的意图检测,首先还是使用一个BiLSTM对encoder的输出做进一步的操作:
在这里插入图片描述
h t I h_t^I htI被用于做意图识别:
在这里插入图片描述
然后,句子级别的意图可以根据 I t ∈ R n × k I_t\in R^{n×k} ItRn×k计算, k k k表示意图的数量:
在这里插入图片描述
这个公式的意思是,加入 I t I_t It每一个对应token的概率如果要比0.5大,那么就累加1,最终的累加和要是比句子长度的一半要大,那么就代表当前意图 k k k是这句话的意图。所以 I ( i , k ) I_{(i,k)} I(i,k)表示的是token i i i 对意图 k k k的贡献大小。

Slot Filling Decoder

Slot-aware LSTM

依旧是使用BiLSTM先进行操作:
在这里插入图片描述
首先将意图向量与encoder的输出进行拼接,原文中没有给出,不过可以推断 I t ∣ ∣ e t ∈ R n × ( 2 d + k ) I_t||e_t\in R^{n×(2d+k)} ItetRn×(2d+k)。这样得到slot-aware隐藏表示。

Global-locally Graph Interaction Layer

全局-局部图交互层由两个主要部分组成:一个是局部槽感知图交互网络,用于模型跨槽依赖;另一个是全局意图-槽图交互网络,用于考虑意图和槽之间的交互。
Local Slot-aware Graph Interaction Layer。每个字槽用一个顶点表示,每个顶点都用相应的槽隐藏表示进行初始化,每个槽在一个窗口内部与其他槽进行连接,由此构建出一个slot之间交互的图。槽之间的信息聚合使用GAT:
在这里插入图片描述
这里的 l l l就是GAT的层数。
Global Slot-Intent Graph Interaction Layer。不使用自回归的重点在这里,所有预测的多个意图和序列槽连接起来,就能实现并行输出槽序列。在这里,一共有 n + m n+m n+m个节点, m m m代表预测的意图。输入的槽的特征是上一步槽之间卷积得到的特征:
在这里插入图片描述
而意图节点的特征由 o I o^I oI变换得到:
在这里插入图片描述
ϕ \phi ϕ表示线性变换。而边的情况比较复杂,一共有三种类型的边:

  • 槽-意图。每个槽连接所有预测的多个意图。
  • 槽-槽。通过共现窗口构建。
  • 意图-意图。所有意图之间均存在边连接,然后为了去拟合意图之间的联系,用GAT能够很好地学习。这与多标签任务建模标签之间的联系是一样的道理。

然后,这个联合了槽与意图的异构图的更新方式如下:
在这里插入图片描述

Slot Prediction

在这里插入图片描述
最终使用得到的槽全局表示进行预测,这个 g t [ S , L + 1 ] g_t^{[S,L+1]} gt[S,L+1]融合了意图与槽的特征。

Joint Training

损失函数是两个任务的联合损失:
在这里插入图片描述
在这里插入图片描述
其中 N S N_S NS是槽标签的个数。最终的损失函数:
在这里插入图片描述

Experiments

数据集

在这里插入图片描述

实验结果

在这里插入图片描述

速度比较:

在这里插入图片描述

消融试验

在这里插入图片描述
其中,主要消融的部分是和GAT有关的不同组件。

可视化

在这里插入图片描述
可以看到基于GAT的注意力能够很好地捕捉槽与意图之间的关系。

Case Study

在这里插入图片描述
可以见到GL-GIN很好地识别出来了时间槽。

Effect of Pre-trained Model

基于预训练模型能够很好地提升效果:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五月的echo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值