Interspeech2022 | 一种基于元辅助学习的低资源口语语义理解方法
中国移动研究院首席科学家冯俊兰博士带领人工智能与智慧运营中心语音团队共同撰写的文章《Meta Auxiliary Learning for Low-resource Spoken Language Understanding》被语音国际顶会Interspeech2022接收。
关于Interspeech
Interspeech 是国际最大且最全面关于言语科学与技术的盛会,由国际语言交流协会(International Speech Communication Association)主办,与ICASSP并列为语音领域两大顶级会议。

论文摘要
口语语义理解(SLU)将自动语音识别(ASR)和自然语言理解(NLU)视为一个一体化任务,通常存在数据不足的问题。我们提出一种基于元辅助学习的ASR和NLU联合训练方法,通过仅利用丰富的语音识别标注数据来改善低资源SLU任务的性能。该方法提供了一个灵活的框架来实现低资源SLU训练任务,无需语义标签参与进一步训练。具体而言,我们将NLU模型作为标签生成网络,从文本中预测意图和槽位信息;另一方面,构建多任务网络,基于语音同步训练ASR任务和SLU任务,将标签生成网络的预测值作为语义标签传递给多任务网络中的SLU任务,从而实现在没有语义标签情境下的SLU训练。在公共数据集CATSLU上的实验证明了该算法的有效性,该方法生成了更适合下游任务NLU的ASR假设。
01 背景
口语语义理解(SLU)将ASR和NLU联合训练需要大量包含语义标签的语音数据才能取得理想的效果。一种解决方法是基于迁移学习的方式,基于大规模预训练模型弥补低资源语言语料不足的缺陷,或采用老师-学生模型将资源相对丰富的NLU模型蒸馏给SLU模型。另一种解决方法是采用语音合成的方式构建语音-语义数据对,从而实现对数据进行增广。还有一种方法是引入额外信息作为新的输入或者辅助任务。辅助任务或多任务的方式,仍然需要辅助任务的标签才能进行训练。
我们提出了基于元辅助学习MAXL(Meta AuXiliary Learning)的SLU建模方案,避免了SLU训练过程中语义标签的参与。
02 模型与方法
图一 基于MAXL的SLU建模
如图一所示,我们提出的模型包含两部分:1)多任务网络:同步学习ASR和SLU两个任务;2)标签生成网络(NLU):为SLU任务预测语义标签。多任务网络的输入是语音信号,NLU网络的输入是语音内容的文本标注(语音识别标注文本)。NLU的输出为语义预测结果,通过接口层的处理传递给SLU输出层作为预测目标。在推理阶段,由于接口层使输出结果可导的处理,使SLU无法直接输出可读的结果,因此我们将ASR的预测结果1-best输入给NLU模型得到最终的语义预测。这样建模的ASR结果更适用于下游任务NLU,同时,NLU模型性能也得到提升。
2.1 接口层
标签生成网络的输出是由一系列“意图-槽位键-槽位值”三元组组成的列表,长度不固定且无法预置。但多任务网络的输出长度需要每个批次固定。另一方面,标签生成网络的输出需要支持梯度回传从而实现标签生成网络的更新。因此,在输出端softmax之后不能进行取最大值操作,因为这样会破坏网络求梯度。我们从两个方面考虑了接口层的设计:定长和可导。
如表1所示:
-
List:“[[intent-slot-value]1,[intent-slot-value]2,...]”,NLU网络的最终输出格式,为三元组列表,不定长且不可导。
-
Sequence: “value1 value2 ...”,槽位值序列,可以设计为定长,但是梯度仍无法回传。
-
NER tag: “[1 1 0 1 1 1]”,键值词的位置为1,非键值词为0,长度与序列长度相等,但不支持可导。
-
Softmax:每个槽位值使用softmax输出,可导但定长仍然无法满足。
-
Sum of softmax:sotfmax输出延槽位数量维度进行求和,实现定长且可导。
-
Append intent and slot types: 在每个槽位值前面补充上意图和槽位键分布,同样可导且定长。
表1:两个网络之间接口类型及其属性

2.2 模型训练
模型训练分为两步:在每个epoch内部,首先进行普通多任务学习的训练,ASR标签为人工标注的语音内容,SLU标签为NLU预测的结果。这一步骤使ASR更关注语义相关的部分。损失函数为:

其中,i为批次索引,x为语音输入,y_asr为语音识别文本标签,theta1为多任务网络f的参数,theta2为标签生成网络g的参数。
第二步为NLU网络的更新,通过ASR的损失实现。由于二阶导数的存在,引入Firstorder算法进行近似求解,从而使网络学习速度提升4~6倍。损失函数为:




其中,K为NLU输出维度,N为批大小。
03 实验结果
我们首先对比了所提方法与其他方法,如表2所示,基线系统ASR由6000小时普通话训练得到,NLU模型由CATSLU-MAP文本训练。可以看到,基线系统由于ASR识别结果不理想导致NLU的F1-score也偏低。端到端训练使ASR和NLU性能均得到一定提升。使用CATSLU-MAP数据微调ASR模型可以使CER显著降低,F1值绝对提升4.33%。MAXL是标准元辅助学习的算法,First-order是采用加速训练的结果,可以看到二者均获得了较好的NLU预测结果。最后为了进一步验证NLU的性能,我们对比了直接用真实语义标签进行多任务学习的结果,可以看到First-order仍然取得了相当的结果,这一方面验证了NLU作为标签预测器是可信的,另一方面也验证了用ASR损失训练NLU是有正向收益的。
表2:本文方法与其他方法对比

由表2我们看到即使ASR性能提升有限,NLU性能也有可能获得较大提升,这说明ASR输出更适于下游NLU任务了。为了进一步验证该结论,我们采用训练集得到的ASR输出重新训练了NLU,由表3可以看到该NLU性能已经和用人工标注的ASR文本训练得到NLU性能相似(表2,Fine-tuned)。
表3:训练集ASR性能CER和NLU性能

表4我们对比了不同接口的性能,可以看到几种接口性能接近,但是可导的接口(inter3,inter4)仍然可以获得较好的性能,而且NLU预测网络性能的提升,也说明该网络即使没有语义标签,也从多任务网络的学习中得到了收益。
表4:不同接口性能对比。
(Inter1, Inter2, Inter3, Inter4分别表示Sequence、NER tag、Sum of softmax、Append intent and slot types)

表5显示出预训练对模型的影响,可以看到ASR和NLU有预训练模型会取得更优的效果,尤其NLU模块预训练起极其关键的作用。
表5:未使用预训练模型结果

为了验证该方法在无标数据的作用,我们只使用了一半带语义标签的文本数据进行NLU模型预训练,剩余一半进行无语义标签的MAXL训练。由表6可以看出,在没有语义标签参与训练的情况下,模型语义预测性能仍能得到提升。
表6:只使用一半语义标签进行NLU模型预训练另一半进行无语义标签的MAXL训练结果

04 总结
本文提出了一种基于MAXL的SLU建模方案用于降低模型对带语义标签的语音数据的需求。ASR和NLU的联合训练提高了ASR的质量,并成功实现从有监督任务中为无监督任务提取知识,实现没有语义标签参与训练时NLU性能提升。该结果与我们的假设相一致,即:ASR和NLU之间的作用是双向的,ASR输出会影响NLU性能,同样NLU预测结果也应该反馈给ASR去引导它的预测。下一步我们将尝试将该方法用于更多数据集以及更复杂的网络结构。
供稿 | 九天语音团队
相关文章:
Interspeech2022 | 一种基于元辅助学习的低资源口语语义理解方法
中国移动研究院首席科学家冯俊兰博士带领人工智能与智慧运营中心语音团队共同撰写的文章《Meta Auxiliary Learning for Low-resource Spoken Language Understanding》被语音国际顶会Interspeech2022接收。 关于Interspeech Interspeech 是国际最大且最全面关于言语科学与技…...
File类的用法和InputStream,OutputStream的用法
这里写自定义目录标题一、File类1.构造方法2.普通方法二、InputStream1.方法2.FileInputStream3.Scanner类的应用三、OutputStream1.方法2.FileOutputStream3.PrintWriter类的应用一、File类 1.构造方法 签名说明File(File parent, Stringchild)根据父目录 孩子文件路径&…...
Java多线程——Thread类的基本用法
一.线程的创建继承Thread类//继承Thread类class MyThread extends Thread{Overridepublic void run() {System.out.println("线程运行的代码");} } public class Demo1 {public static void main(String[] args) {MyThread t new MyThread();t.start();//启动线程&a…...
【C++】类和对象练习——日期类的实现
文章目录前言1. 日期的合法性判断2. 日期天数(/)2.1 和的重载2.2 对于两者复用的讨论3. 前置和后置重载4. 日期-天数(-/-)5. 前置- -和后置- -的重载6. 日期-日期7. 流插入<<重载8. 流提取>>重载9. 总结10. 源码展示前…...
[LeetCode周赛复盘] 第 333 场周赛20230219
[LeetCode周赛复盘] 第 333 场周赛20230219 一、本周周赛总结二、 [Easy] 6362. 合并两个二维数组 - 求和法1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6365. 将整数减少到零需要的最少操作数1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6364. 无平方子集计数1. 题目描…...
数字化时代,如何做好用户体验与应用性能管理
引言 随着数字化时代的到来,各个行业的应用系统从传统私有化部署逐渐转向公有云、行业云、微服务,这种变迁给运维部门和应用部门均带来了较大的挑战。基于当前企业 IT 运维均为多部门负责,且使用多种运维工具,因此,当…...
Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题
之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫(2)-Selenium控制浏览…...
如何对项目健康度进行测量?评估项目健康状况
项目驱动变革,大部分公司逐步由运营驱动转变为项目驱动,带来更多重新和商业价值。对组织而言,从商业角度看,项目旨在推动组织从一个状态转到另一个状态,从而达成特定目标。项目的健康情况如何关乎项目和变革的成本&…...
美国原装二手keysight E4980A(安捷伦)2MHZ LCR表
Agilent E4980A、Keysight E4980A、LCR 表,20 Hz - 2 MHz E4980A 是 Agilent 的 2 MHz LCR 表。LCR表是一种电子测试设备,用于测量电子元件的电感(L)、电容(C)和电阻(R)。LCR 表可…...
《clean coder》:关于摆烂,争论和心态
“凡是不能在五分钟之内解决的争论,都不能依靠辩论解决” ---- Kent Beck 作为一个码农,我并不是一个喜欢争论的角色。很长一段时间会陷入一种摆烂的,被动的状态。“既然其他人想要这么做,就这么办吧”。这可能是非专业的行为中最…...
jenkins下载与简单使用
1.jenkins下载 因为我仍然使用的是jdk1.8进行开发,所以我下载的是jenkins2.332.1版本(jenkins2.346.1版本在2022年末不再支持java8,如果项目使用的是jdk11可以继续使用该jenkins版本),更多版本下载请点击jenkins下载 …...
3|物联网控制|计算机控制-刘川来胡乃平版|第3章:计算机总线技术 补充串行总线部分|课堂笔记|ppt
2022年 10月 10日 3.3 外部总线 3.3.2 RS-232-C总线 机械特性...
Blazor入门100天 : 身份验证和授权 (3) - DB改Sqlite
目录 建立默认带身份验证 Blazor 程序角色/组件/特性/过程逻辑DB 改 Sqlite将自定义字段添加到用户表脚手架拉取IDS文件,本地化资源freesql 生成实体类,freesql 管理ids数据表初始化 Roles,freesql 外键 > 导航属性完善 freesql 和 bb 特性 本节源码 https://github.com/…...
阅读源码和查看官方文档,是解决问题最高效的办法。
作为一个工作8年的老程序员告诉你:阅读源码和查看官方文档,是解决问题最高效的办法。不信你来看,这个困扰了读者半天的问题我查了源码和文档后瞬间解决。 前言 上周五有位读者私信我一个问题,说困扰了他半天,研究了一…...
云原生流量管理系统中 Service , Ingress 和 Endpoint 的关系
摘要 Kubernetes(简称 K8s)是一个用于容器编排和管理的开源平台,其中流量管理是 K8s 的重要功能之一。K8s 提供了多种流量管理方式,以便对不同场景下的流量进行控制和管理。以下是 K8s 中常用的流量管理系统: Service:Service 是 K8s 中最基本的流量管理方式,用于提供…...
给你安利几款好用的谷歌浏览器插件
给你安利几款好用的谷歌浏览器插件前言一 Octotree 插件二 GitCodeTree 插件三 SourceGraph 插件四 GitZip 插件五 Enhanced GitHub 插件六 插件下载安装6.1 谷歌应用商店下载6.2 离线安装6.2.1 下载插件6.2.2 安装插件七 移除、启用、停用插件小结前言 GitHub是全球最大的代码…...
JDK定时器Timer原理
前言 前些时间想到利用redis实现延时队列,但是底层的定时器不止如何实现好些,故此研究了一下jdk的Timer。 Timer是一个用于执行定时任务的类,可以单次执行或按指定时间间隔循环执行(直到主动cancel或线程被杀掉)。Ti…...
vue3中使用swiper完整版教程
介绍 在 vue3 中使用 swiper, 实现轮播图的效果;如果组件样式等模块引入不当,很有可能导致,页面无效果;或者想要的箭头或者切换效果异常问题。具体使用方式如下所示: 使用方式 使用命令 npm install swiper 安装 sw…...
某个div的滚动条样式
.item-body,.chart2{/*滚动条整体样式*/&::-webkit-scrollbar {/*高宽分别对应横竖滚动条的尺寸*/width: 10px;height: 1px;}/*滚动条里面小方块*/&::-webkit-scrollbar-thumb {border-radius: 10px;-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);background:…...
Spring Boot框架基础介绍
Spring Boot 是一款基于 Spring 框架的开源应用程序开发工具,它旨在简化 Spring 应用程序的配置和开发过程。Spring Boot 提供了一种简单的方式来创建可独立运行的、生产级别的应用程序,并在需要时进行部署。Spring Boot 在微服务架构和云计算环境下得到…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
