DIET:Dual Intent and Entity Transformer
标题:《DIET: Lightweight Language Understanding for Dialogue Systems》
中文:用于对话系统的轻量语言理解方法
时间:2020年5月
作者:RASA
简介:这个是RASA团队针对对话系统中NLU任务,设计的一种新框架,名叫Dual Intent and Entity Transformer (DIET,双重意图与实体Transformer ) 。成果是,DIET在不利用pre-trained embeddings.的情况下,达到了可比的性能,即large pre-trained models对NLU任务似乎没有什么优势。我们的方法比微调的BERT还好。
代码:https://github.com/RasaHQ/DIET-paper
学习资料:
- https://blog.rasa.com/introducing-dual-intent-and-entity-transformer-diet-state-of-the-art-performance-on-a-lightweight-architecture/
- https://www.youtube.com/watch?v=vWStcJDuOUk&list=PL75e0qA87dlG-za8eLI6t0_Pbxafk-cxb
- https://www.youtube.com/watch?v=KUGGuJ0aTL8&list=PL75e0qA87dlG-za8eLI6t0_Pbxafk-cxb&index=3
1. Introduction
本文,我们提出DIET——一个用于意图分类和实体识别(intent classification and entity recognition)的多任务框架。考虑两方面的embeddings,一是pre-trained word embeddings from language
models,二是sparse word and character level n-gram features。我们的特点是有能力将两种特征以plug-and-play方式结合起来。实验显示,尽管不使用pre-trained embeddings, 仅使用sparse
word and character level n-gram features, DIET依然能超越SOTA的NLU性能。而在增加pre-trained embeddings和sentence embedding的情况下,性能可以进一步提升。我们的最好性能优于微调BERT,且速度是后者6倍。
DIET代表Dual Intent and Entity Transformer,是一种多任务transformer 架构,可以同时执行意图分类和实体识别。它由多个组件组成,这使我们可以灵活地交换不同的组件。例如,我们可以尝试使用不同的word embeddings,例如BERT和GloVe。
许多预训练语言模型非常笨拙,因为它需要强大的计算能力,并且推理时间很长,因此尽管它们具有出色的性能,但它们并不是为对话式AI应用程序设计的。因此,大规模的预训练语言模型对于构建对话式AI应用程序的开发人员而言并不理想。
DIET之所以与众不同,是因为:
- 它是一种模块化体系结构,适合典型的软件开发工作流程;
- 在准确性和性能方面,能达到大规模的预训练语言模型的效果;
- 改进了现有技术,胜过目前的SOTA,并且训练速度提高了6倍。
2. Related Work
2.1 transfer learning
- fine-tuning a large pre-trained language model like BERT may not be optimal for every downstream task
- we study the impact of using sparse representations like word level one-hot encodings and character level n-grams along with dense representations transferred from large pre-trained language models.
2.2 Joint Intent Classification and Named Entity Recognition
3. DIET architecture
问题:
- Embedding Layer怎么实现的?
数据集要求:the input text、label(s) of intent(s) 、label(s) of entities.
FFNN Characteristics
关于架构中所有FFNN的两个特别说明:
- 首先,它们没有完全连接。从一开始,FFNN的dropout 率约为80%。这使得FFNN更轻巧。
- 其次,所有FFNN具有相同的权重。All the FFNN post sparse features share weights (W1) and all the FFNN post merging the output of the two paths share another set of weights (W2).
Featurization
在每一个句子结尾加一个__CLS__
的special token。每个token都有它的嵌入,可以是sparse的,可以是dense的。通过线性层统一维度。
Transformer
自己实现一个小型的(2层)的Transformer来编码context。
NER
用Transformer输出向量,接一个CRF层进行NER。
Intent Classification
over all possible intent labels,将label嵌入与CLS对应的隐藏向量计算dot-product similarity。
- 训练阶段:最大化正标签的相似度,最小化负标签的相似度
- inference阶段:dot-product similarity在所有inten label上的rank
Masking
我们假设添加一个以重建MASK输入的训练目标,应该可以作为一个正则化器,帮助模型从文本中学习到更多一般的特征,而不仅要从分类中获得区分性。
Total loss
Batching
使用balanced batching策略来减轻类别不平衡,因为某些意图可能比其它意图更为频繁。 另外,还在整个训练期间增加批次大小,作为正则化的另一个来源。
4. 实验评估
在本节中,我们首先描述实验中使用的数据集,然后描述实验设置,然后进行消融研究以了解体系结构每个组件的有效性。
4.1 数据集
4.2 实验设置
- 使用 NLU-Benchmark 数据集的第一个fold来选择超参数。 为此,我们从训练集中随机抽取 250 个语句作为验证集。
- 训练 200 多个epochs的模型(在一台具有 4 个 CPU,15 GB 内存和一台 NVIDIA Tesla K80 的计算机上)。
- 使用 Adam(Kingma 和 Ba,2014)进行优化,初始学习率为 0.001。
- batch size大小从 64 增加到 128(Smith 等人,2017)。
在 NLU-Benchmark 数据集的第一个小份上训练我们的模型大约需要一个小时。 在推断的时候,我们需要大约 80 毫秒来处理一条语句。
4.3 在 NLU-Benchmark 数据集上的实验
为了获得该模型在该数据集上的整体性能,我们采用 Vanzo 等人 (2019)的方法:分别训练 10 个模型,每个小份一次,将平均值作为最终得分。
Micro-averaged precision、召回率和 F1 得分用作指标
意图标签的 True positives、false positives 和 false negatives 的计算方式与其它任何多类分类任务一样。 如果预测范围和正确范围之间重叠,并且其标签匹配,则该实体被视为 true positive。
表1显示我们在 NLU-Benchmark 数据集上表现最好的模型的结果。 我们性能最好的模型使用稀疏特征,即词符级别的 one-hot 编码和字符 n-gram 的 multi-hot 编码(n ≤ 5)。 这些稀疏特征与 ConveRT 的密集嵌入相结合(Henderson 等人,2019b)。
性能最好的模型没有使用MASK损失
我们在意图方面的表现优于 HERMIT,绝对值超过 2%。 我们的实体 F1 微观平均得分(86.04%)也高于 HERMIT(84.74%)。 HERMIT 报告的实体精度值相似,但是,我们的召回率要高得多(86.13% 相比 82.04%)。
4.4 NLU-Benchmark 数据集上的消融研究
我们使用 NLU-Benchmark 数据集来评估模型体系结构的不同组成部分,因为它涵盖多个领域并且在三个数据集中拥有最多的意图和实体。
Joint training的重要性:为了评估意图分类和命名实体识别这两个任务是否受益于joint优化,我们针对每个任务分别训练了模型。 表2列出使用 DIET 仅训练单个任务的结果。 结果表明,与实体识别一起训练时,意图分类的性能略有下降(90.90% vs 90.18%)。 应该注意的是,意图分类单任务训练的最佳性能配置对应于使用没有 transformer 层5 的 ConveRT 嵌入。 但是,当单独训练实体时,实体的 micro-averaged F1 分数从 86.04 %下降到 82.57%。 检查 NLU-Benchmark 数据集,这可能是由于特定意图与特定实体的存在之间的强相关性。 例如,几乎所有属于 play_game 意图的语句都有一个名为 game_name 的实体。 同样,实体 game_name 仅与意图 play_game 一起出现。 我们认为,这一结果进一步表明拥有像 DIET 这样的模块化和可配置架构的重要性,以便处理这两项任务之间的性能折衷。
不同特征组件和MASK的重要性:如第3节所述,不同预训练语言模型的嵌入都可以用作dense特征。 我们训练多种变体来研究每种变体的有效性:仅sparse特征,即word级别的 one-hot 编码和character n-gram 的 multi-hot 编码(n ≤ 5),以及与 ConveRT、BERT 或 GloVe一起使用的组合。 此外,我们在有和没有MASK损失的情况下训练每种组合。 表3中显示的结果显示意图分类和实体识别的 F1 分数,并表明多种观察结果:
- 当使用sparse特征和mask损失,而没有任何预训练的embeddings时,DIET 的性能具有竞争力。 在目标和实体上增加mask损失都会使性能提高绝对值约 1%。
- 具有 GloVe 嵌入的 DIET 也具有同等的竞争力,并且在与sparse特征和mask损失结合使用时,在意图和实体上都将得到进一步增强。
- 有趣的是,使用上下文 BERT 嵌入作为dense特征的效果要比 GloVe 差。 我们假设这是因为 BERT 主要是在各种文本上预训练的,因此在转移到对话任务之前需要微调。 由于 ConveRT 专门针对会话数据进行微调,因此使用 ConveRT 嵌入的 DIET 的性能支持了这种假设。
- sparse特征 和 ConveRT 嵌入的结合在意图分类上获得了最佳的 F1 得分,并且在意图分类和实体识别方面都比现有最好结果高出 3% 左右。
- 与 BERT 和 ConveRT 一起用作dense特征时,增加mask损失似乎会稍微影响性能。
与微调 BERT 比较:我们评估将 BERT 应用到 DIET 的特征流水线中并对整个模型进行微调的有效性。 表4显示使用冻结 ConveRT 嵌入的 DIET 作为dense特征和单词、字符级稀疏特征在实体识别上表现优于微调的 BERT,而在意图分类方面表现持平。 此结果尤为重要,因为在所有 10 个 NLU-Benchmark 数据集上微调的 DIET 中的 BERT 需要 60 个小时,而使用 ConveRT 嵌入和稀疏特征的 DIET 则需要 10 个小时。
4.5 ATIS 和 SNIPS 上的实验
为了将我们的结果与 Chen 等人 (2019)比较,我们使用与以下相同的评估方法 Chen 等人 (2019)和 Goo 等人 (2018)。 他们报告意图分类的准确性和实体识别的 micro-averaged F1 分数。 同样,可以像在其它任何多类分类任务中一样获得意图标签的 true positives、false positives 和 false negatives。 但是,只有当预测范围与正确范围完全匹配并且其标签匹配正确时,实体才算为 true positive,定义比 Vanzo 等人 (2019)更严格。 所有实验在 ATIS 和 SNIPS 上均进行 5 次。 我们将这些运行结果的平均值作为最终数字。
为了解 DIET 超参数的可移植性,我们采用在 NLU-Benchmark 数据集上性能最佳的 DIET 模型配置,并在 ATIS 和 SNIPS 上对其进行评估。 表5中列出 ATIS 和 SNIPS 数据集上的意图分类准确性和命名实体识别 F1 得分。
由于采用了更严格的评估方法,因此我们使用 BILOU 标记模式对数据进行标记(Ramshaw 和 Marcus,1995)。 表5中的 ∗ 指示使用 BILOU 标记模式。
值得注意的是,DIET 仅使用稀疏特征而没有任何预训练的嵌入,即使这样其性能仅比 Joint BERT 模型低 1-2%之内。 利用 NLU-Benchmark 数据集上性能最佳模型的超参数,DIET 在 ATIS 和 SNIPS 上均获得与 Joint BERT 竞争的结果。
参考:https://natural-language-understanding.fandom.com/wiki/Named_entity_recognition#BILOU
Similar but more detailed than BIO, BILOU encode the Beginning, the Inside and Last token of multi-token chunks while differentiate them from Unit-length chunks. The same sentence is annotated differently in BILOU:
B - 'beginning' I - 'inside' L - 'last' O - 'outside' U - 'unit'
如:
Minjun U-Person is O from O South B-Location Korea L-Location . O
DIET:Dual Intent and Entity Transformer相关推荐
- 《强化学习周刊》第37期:视觉深层框架、Transformer World模型、注意力增强强化学习...
No.37 智源社区 强化学习组 强 化 学 习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,其研究进展与成果也引发了众多关注.为帮助研究与工程人员了解该领域的相关进展和 ...
- LIVE 预告 | TransGAN:丢弃卷积,纯Transformer构建GAN网络
自2014年Ian J. Goodfellow等人提出以来,生成对抗网络(GAN,Generative Adversarial Networks)便迅速成为人工智能领域中最有前景的研究方向之一. 而另 ...
- Android总结篇系列:Activity Intent Flags及Task相关属性
同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 ...
- 图解Reformer:一种高效的Transformer
作者:Alireza Dirafzoon 编译:ronghuaiyang 导读 在单GPU上就可以运行的Transformer模型,而且几乎不损失精度,了解一下? 如果你一直在开发机器学习算法用 ...
- Block Recurrent Transformer:结合了LSTM和Transformer优点的强大模型
转载:Deephub Imba 在以前的文章中,我们讨论过Transformer并不适合时间序列预测任务.为了解决这个问题Google创建了Hybrid Transformer-LSTM模型,该模型可 ...
- 论文介绍《CrowdFormer: An Overlap Patching Vision Transformer for Top-Down Crowd Counting 》
paper [ijcai2022] CrowdFormer: An Overlap Patching Vision Transformer for Top-Down Crowd Counting co ...
- NLP-生成模型-2019:TransformerXL【对Vanilla Transformer的改进:片段级递归机制、相对位置编码】【超出固定长度上下文的注意力语言模型】
<原始论文:Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context> 一.概述 一句话简介:Tran ...
- 文章阅读:Dual Attention Network for Scene Segmentation
原文地址:Dual Attention Network for Scene Segmentation 概述 多尺度上下文融合的问题: 虽然上下文融合有助于捕获不同比例的对象,但它无法利用全局视图中对象 ...
- xml文件报错:The reference to entity “characterEncoding“ must end with the ‘;‘ delimiter.
目录 一.问题描述: 二.报错原因: 三.正确写法: 四.其他: 一.问题描述: 在xml文件中的mysql链接URL报错:The reference to entity "characte ...
最新文章
- Grunt手表错误 - 等待...致命错误:观看ENOSPC
- 清华团队率先抵达摩尔定律最后节点,0.34nm栅长晶体管研究登Nature,打破斯坦福纪录...
- DL之MobileNetV2:MobileNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- MaxCompute(原ODPS)使用总结-初级篇
- java用thinkpadx1_还用老的办公本? 处理文件速度怎够用
- 山寨版 颈椎病治疗秘籍
- Php xml 目录,PHP-PHP+xml的无限分类树目录的方法?
- linux编译寻找包含的头文件,Linux编写内核模块编译时找不到头文件
- Android TextView文字横向自动滚动(跑马灯)
- AC内WLAN漫游配置实例
- 整理数组去重与数组排序等方法
- C# 提取字符串中的数字,去除字符串中的重复字符逗号分隔
- 最新win7/win10/XP系统下载_「装机系统」_百度云
- c++项目 生成dll文件
- 廉租房租赁合同范本(通用模板)
- 淘宝客小程序制作(3)-API编写及部署
- 论文阅读《A Large Dataset to Train Convolutional Networks for Disparity, Optical Flow, and Scene Flow Es》
- 古罗马的幽灵--斗兽场
- RabbitMQ入门(简介、搭建环境、五种工作模式)介绍
- Editplus文件在linux下乱码,EditPlus中文乱码怎么办-解决EditPlus中文出现乱码的方法 - 河东软件园...
热门文章
- Etcd 架构与实现解析
- Hystrix文档-实现原理
- 【Python】青少年蓝桥杯_每日一题_1.11_奇偶数
- c语言间接级别不同_例9:C语言实现成绩的等级判别
- micropython解释器原理_了解一下 MicroPython 的项目整体架构
- php读文阻塞,php socket编程 读完成后写阻塞
- 数据中心胶体电池的使用寿命
- UPS远程监控系统的设计与实现
- Tool之ADB:ADB工具的简介、安装、使用方法之详细攻略
- DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能