基于Siamese网络的zero-shot意图分类

news2024/11/18 19:57:32

原文地址:Zero-Shot Intent Classification with Siamese Networks

通过零样本意图分类有效定位域外意图

2021 年 9 月 24 日

意图识别是面向目标对话系统的一项重要任务。意图识别(有时也称为意图检测)是使用标签对每个用户话语进行分类的任务,该标签来自预定义的标签集。

分类器在标记数据上进行训练,并学习区分哪个话语属于哪个类别。如果一个看起来不像任何训练话语的话语来到分类器,有时结果会很尴尬。这就是为什么我们也会对“域外”话语进行分类,这些话语根本不属于域。

img

意图分类器对话语进行分类。在这里,示例领域是机票预订和“嘿,兄弟,你是机器人吗?”是一个域外的话语。作者图片

问题是用户和我们开发人员生活在不同的语言中。开发人员希望留在语义丛林中的安全农场(所谓的领域),但用户并不十分了解分类器或聊天机器人NLU是如何工作的(他们也不必知道)。你不能指望用户保持在正确的语义领域,相反,你应该赋予你的聊天机器人处理良好话语的技能。

img

你的安全语义农场在口语的野性。你永远不知道从野外来的是什么!作者图片

在这篇文章中,我们将讨论如何通过检测哪些话语属于域,哪些话语不在域内来保持域的完整性,Chris是我们的司机语音助手。首先,我将介绍Chris域和话语,然后我们将讨论什么zero-shot学习文本分类与Siamese网络。

Chris Domain and Data

Chris是司机的语音助手。我们的Chris是一个驾驶助手,由德国自动实验室制造。Chris可以发送/阅读短信,WhatsApp消息,打电话给电话联系人,播放音乐,导航,响应天气查询和聊天。

img

img

我们的 Chris,在左边。Chris和他的能力,在右边。图片来自德国汽车实验室网站。

Chris是一个以任务为导向的会话代理,因此用户的话语通常简洁而切中要害。这些是典型的用户话语:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
play music
some music please
stop the music
send a message
send a message to Tess
send a whatsapp
read my messages
do I have any new messages
display the latest message
start the navigation
show navigation
show the map
stop the navigation
nearest gas station
find a parking spot
read it
no cancel
cancel
yes
next
no next
tell me the time
how is the weather today

意图名称由子域名和动作名称组成。以下是与上述话语相对应的一些意图名称:

1
2
3
4
5
6
7
8
9
10
11
music.play
music.pause
messages.write
messages.read
navigation.start
navigation.stop
universals.accept
universals.reject
universals.next
misc.time
misc.weather

域外话语呢?下面是一些例子:

1
2
3
4
5
6
7
8
9
10
11
hey siri
launch siri
wake up siri
open my instagram
share my video on instagram
delete my facebook account
play my audibooks
set an alarm
show alarms
please delete all alarms
open the doors

这是完全正常的用户要求一些功能,你的聊天机器人根本没有。例如,打开车门根本不在克里斯的技能范围内。尽管UX团队在每个包装中都包含了关于Chris技能的指导方针,但用户可能会跳过它..这就是为什么您的聊天机器人NLU应该始终准备好处理广泛的域外话语,用户要求的是他们可以想象到的聊天机器人可以实现的能力,而不是用户手册中写的那些。

简短的话语乍一看可能很“容易”,但也有一些挑战。语音识别错误可能会给人带来困难,特别是在短的话语中,因为语义上至关重要的单词可能会从话语中丢失(例如“play music”中的“play”)。此外,语音引擎必须在正确的时间开始倾听,否则它可能会错过一个单词,短的话语,如“yes”,“no”,这对解决上下文至关重要。从WER的角度来看,仅仅缺少3个字母并不是一个严重的ASR错误,但如果您的代理多次要求用户批准,则可能会给用户带来挫败感。所有的语音机器人都有声学和语义方面的挑战,永远不要低估使用语音的挑战。

什么是zero-shot文本分类?

零短文本分类是在一组类标签上训练分类器,并用分类器在训练集中没有看到的类标签来测试分类器的任务。NLP最近的工作集中在更广泛的背景下的zero-shot学习,zero-shot学习NLP现在意味着训练一个模型来完成它没有明确训练的任务。GPT-3是一个zero-shot学习者,吸引了相当多的关注。

在zero-shot分类中,我们用一些视觉线索或类名向分类器描述一个看不见的类。对于zero-shot文本分类,通常使用意图名称来描述意图的语义。当我第一次开始做Chris NLU时,数据是用于“常规”意图分类的。然后我开始尝试,并找到了我们的类命名方案**域。动作(音乐)。玩,导航。开始等等)确实非常适合zero-shot学习。

将标签和话语嵌入到同一空间

zero-shot文本分类的常用方法是将意图名称和话语嵌入到同一空间中。这种zero-shot算法可以像我们人类一样,通过语义组来学习意图名称和话语之间的语义关系。这根本不是一个新想法,研究人员使用单词向量来表示固定维度的文本和意图名称(例如在Veeranna at all.2016)。通过Transformers的发明,密集表示经历了一场革命,现在我们有了更多高质量的句子和单词Embeddings。

在我们的研究中,我们首先使用平均池词向量来表示话语,然后使用BERT对我们的话语进行编码来生成话语向量。首先让我们看看当我们使用词向量时意图名称是如何与话语结合在一起的。我们使用了100维手套向量。我们通过平均一个话语的词向量来生成句子Embedding。为了得到标签的Embedding(例如music.play),我们平均了域(music)和动作(play)的Embeddings。在为所有话语生成Embedding之后,我们使用t-SNE将数据集转换为二维(出于可视化目的)。下面的散点图显示了所有数据集的话语和意图名称,具有相同意图的话语用相同的颜色表示:

img

Chris的话语,每种颜色都代表一种意图。

这就是话语和意图名称的排列方式:

img

Embedding意图名称和话语到同一空间

如果我们放大一点,我们会看到意图名称和相应的话语确实非常一致:

img

放大到上面的视觉效果

数据集的话语创建了一个相当漂亮的散点图,没有太多的异常值,相同的意图的话语与意图名称组合在一起。

如果我们想用BERT嵌入话语和意图名称呢?这对话语很有效,但意图名称不是真实的句子和简短的表达。BERT是针对完整句子进行训练的,对于像我们的意图名称这样的简短表达可能不太有效。在这种情况下,我们可以通过BERT为话语创建768维Embeddings,并通过词向量为意图名称创建100维Embeddings。为了将它们嵌入到相同的空间中,我们需要计算一个投影矩阵φ,将768个模糊的话语向量投影到100维意图向量上。由于我们有标注的数据,我们可以通过回归来学习投影矩阵。(尽管包含正则化以防止过拟合很重要)。然后我们有一个类似于上面的视觉对齐。

用于zero-shot文本分类的Siamese网络

上面的探索性数据分析告诉我们,意图名称和话语之间的语义相似性是非常明显和可学习的。然后我们可以要求Siamese神经网络学习意图名称和话语之间的相似性。

传统的意图分类器输入一个话语并生成一个类标签。通常我们用LSTM或BERT对话语进行编码,然后将编码后的话语输入到Dense层并得到一个类标签:

img

传统的意图分类器。by作者

我们的zero-shot意图分类器会学习标签和话语在语义上是否相似。我们使用了Siamese网络架构,这对于计算语义相似度非常有用。我们的Siamese网络输入一个意图名称和一个话语;输入相关或不相关的输出。

架构与我在我之前的SiameseNN文章中描述的相同。该体系结构包括

  • LSTM/BERT层对话语和标签进行编码
  • 然后是距离层,计算话语和标签之间的语义距离
  • 最后是一个Dense层,将距离向量压缩为二进制值

该体系结构仍然是一个文本分类器,但此时输入数为2,输出向量维数仅为1。输出为二进制,0表示标签与话语不相关;1表示该话语属于该标签的类。

img

Siamesezero-shot意图分类器。作者图片

我们可以向Siamese分类器询问任何我们想要的标签(即使分类器以前从未见过这个标签),只要我们能为标签提供一个良好的Embedding。这对于域外的话语来说是很好的,因为即使你没有任何标记好的类数据或只有几个例子,Siamese zero-shot分类器仍然可以决定一个话语是否与Chris域相关或与域不相关。

Siamese网络用于语义相似已经有很长一段时间了,但是玩一些技巧可以让我们毫不费力地获得zero-shot意图预测模型。有时候,这个想法一直就在你面前,但你必须从不同的角度去看待它。

在本文中,我们继承了一种全新的方法来解决“传统”的意图分类问题。首先,我们对Chris的话语进行了语义分组。然后,我们刷新了关于Siamese网络的知识。最后,我们看到了如何使用Siamese网络进行zero-shot分类。

我希望所有的读者都喜欢我们的Chris的能力和数据,并希望在更多的Chris文章中见到你。在那之前,请保持关注和健康❤️

参考文献

  • Language Models are Few-Shot Learners, https://arxiv.org/abs/2005.14165
  • Are Pretrained Transformers Robust in Intent Classification?
    A Missing Ingredient in Evaluation of Out-of-Scope Intent Detection https://arxiv.org/pdf/2106.04564.pdf
  • Detecting Out-Of-Domain Utterances Addressed to a Virtual Personal Assistant https://www.microsoft.com/en-us/research/wp-content/uploads/2014/09/IS14-Orphan2.pdf
  • Using Semantic Similarity for Multi-Label Zero-Shot
    Classification of Text Documents , https://www.esann.org/sites/default/files/proceedings/legacy/es2016-174.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1478943.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode41题:缺失的第一个正数(python3)

这道题写的时候完全没有思路,看了很久的题解,才总结出来。 class Solution:def firstMissingPositive(self, nums: List[int]) -> int:nums_set set(nums)n len(nums)for i in range(1, n 1):if i not in nums_set:return ireturn n 1

百度SEO工具,自动更新网站的工具

在网站SEO的过程中,不断更新网站内容是提升排名和吸引流量的关键之一。而对于大多数网站管理员来说,频繁手动更新文章并进行SEO优化可能会是一项繁琐且耗时的任务。针对这一问题,百度自动更新文章SEO工具应运而生,它能够帮助网站管…

STM32串口DMA发送接收(1.5Mbps波特率)机制

数据拷贝过程中不需要CPU干预,数据拷贝结束则通知CPU处理。 以115200bps波特率,1s传输11520字节,大约69us需响应一次中断,如波特率再提高,将消耗更多CPU资源 高波特率场景下,串口非常有必要使用DMA。 关…

【IC验证】数据类型

一、思维导图 二、代码 (1)字符串 字符串的结尾不带空标识符null,\0。是动态存储方式,因此不用担心存储空间被用完。 编辑.SV文件使用 gvim 文件名 运行仿真使用 vcs -sverilog -full64 string_type.sv 和./simv命令如果是字…

C++:对象的内存模型:

类的大小: 类的存储区域可划分为:公共区域(静态成员、成员函数)、成员数据 公共区域(静态成员:所有成员均摊静态成员的大小后约等于没有、成员函数) 我们可以计算的为普通数据成员的大小&…

Docker更新Springboot的部署

1.docker停止原来运行的myweb项目 docker stop myweb 2.查看所有容器(包括停止的) docker ps -a 3.删除停止的容器 docker container prune -f

分巧克力(蓝桥杯)

文章目录 分巧克力题目描述二分算法 分巧克力 题目描述 儿童节那天有 K位小朋友到小明家做客。 小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 N块巧克力,其中第 i 块是 HiWi 的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出 K …

VL53L8CX驱动开发(1)----驱动TOF进行区域检测

VL53L8CX驱动开发----1.驱动TOF进行区域检测 概述视频教学样品申请源码下载主要特点硬件准备技术规格系统框图应用示意图区域映射生成STM32CUBEMX选择MCU 串口配置IIC配置LPn 设置X-CUBE-TOF1串口重定向代码配置Tera Term配置演示结果 概述 VL53L8CX是一款8x8多区域ToF测距传感…

ThreeDWorld(TDW)学习(待更新)

目录 前言 1.TDW 2.transport challenge 总结 前言 因为挑战赛了解到tdw仿真平台。 想了解的请点击: GitHub - threedworld-mit/tdw: ThreeDWorld simulation environment GitHub - chuangg/tdw-transport-challenge-starter-code 1.TDW ThreeDWorld (TDW)是一…

vscode——远端配置及一些问题解决

vscode——远端配置 安装Remote -SSH插件配置config本地变化一些问题缺失核心关闭vscode自动更新 尝试写入管道不存在hostname -I 查出来的ip连不上 我们之前大概了解了vscode的本地设置,我们之前提过,vscode是一款编辑器,在文本编辑方面有着…

QT集成Protobuf

1.定义protobuf package ImageRender;message MessagePadding {required int32 left 1;required int32 top 2;required int32 right 3;required int32 bottom 4; }2.通过protoc.exe编译proto文件 一般可以写一个bat来执行命令: %~d0 cd %~p0rem The following…

OD(13)之Mermaid饼图和象限图

OD(13)之Mermaid饼图和象限图使用详解 Author: Once Day Date: 2024年2月29日 漫漫长路才刚刚开始… 全系列文章可参考专栏: Mermaid使用指南_Once_day的博客-CSDN博客 参考文章: 关于 Mermaid | Mermaid 中文网 (nodejs.cn)Mermaid | Diagramming and charting tool‍‌⁡…

[云原生] K8s之pod进阶

一、pod的状态说明 (1)Pod 一直处于Pending状态 Pending状态意味着Pod的YAML文件已经提交给Kubernetes,API对象已经被创建并保存在Etcd当中。但是,这个Pod里有些容器因为某种原因而不能被顺利创建。比如,调度不成功(…

Sora 原理与技术实战笔记一

b 站视频合集 【AIX组队学习】Sora原理与技术实战:Sora技术路径详解 Sora 技术报告(OpenAI) huggingsd 文生图视频系列的一个开源项目 最强视频生成模型Sora相关技术解析 惊艳效果: 长视频高清视频融合能力同一场景的多角度/镜头…

C++ 之LeetCode刷题记录(三十六)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 16. 最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你…

Linkedln领英账号限制问题|通过代理IP安全使用Linkedln

LinkedIn是跨境外贸必备的拓客工具,世界各地的许多专业人士都使用领英来作为发布和共享内容的主要工具,这使得它成为跨境出海必备的渠道工具。 但是不少做外贸的朋友都知道,领英账号很容易遭遇限制封禁,但如果善用工具&#xff0…

力扣262 行程和用户

如何计算特定时间段内非禁止用户的出租车行程取消率。这个问题可以通过SQL查询来解决,我们需要关联Trips表和Users表来筛选出符合条件的行程记录,并计算取消率。 目录 题目描述 思路整理 完整代码及解释 题目描述 表:Trips -----------…

flutterrow换行,2024年最新Android面试点梳理

计划 以人为镜可以明得失, 看到了自己的不足就要针对性地做一些改变. 以下思路转变要切记: 1.核心思想, 从项目出发, 打牢基础, 逐步深入; 2.上班期间不再惦记其他知识的学习, 专心研究项目上需要的知识/碰见的问题, 否则只会三心二意, 项目上的技术点做不深入, 其他知识点也…

电子科技大学课程《计算机网络系统》(持续更新)

前言 本校的课程课时有所缩减,因此可能出现与你学习的课程有所减少的情况,因此对其他学校的同学更多的作为参考作用。本文章适合学生的期中期末考试,以及想要考研电子科技大学的同学,电子科技大学同学请先看附言。 第一章 计算…

数据结构-----再谈String,字符串常量池,String对象的创建、intern方法的作用

文章目录 1.字符串常量池1.1. 创建对象的思考2.2. 字符串常量池(StringTable)1.3. 再谈String对象创建1.4. intern方法 1.字符串常量池 1.1. 创建对象的思考 下面两种创建String对象的方式相同吗? public static void main(String[] args) {String s1 "hel…