当前位置: 首页 > news >正文

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. 日期天数&#xff08;/&#xff09;2.1 和的重载2.2 对于两者复用的讨论3. 前置和后置重载4. 日期-天数&#xff08;-/-&#xff09;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. 题目描…...

数字化时代,如何做好用户体验与应用性能管理

引言 随着数字化时代的到来&#xff0c;各个行业的应用系统从传统私有化部署逐渐转向公有云、行业云、微服务&#xff0c;这种变迁给运维部门和应用部门均带来了较大的挑战。基于当前企业 IT 运维均为多部门负责&#xff0c;且使用多种运维工具&#xff0c;因此&#xff0c;当…...

Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题

之前的文章有关于更多操作方式详细解答&#xff0c;本篇基于前面的知识点进行操作&#xff0c;如果不了解可以先看之前的文章 Python爬虫&#xff08;1&#xff09;一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫&#xff08;2&#xff09;-Selenium控制浏览…...

如何对项目健康度进行测量?评估项目健康状况

项目驱动变革&#xff0c;大部分公司逐步由运营驱动转变为项目驱动&#xff0c;带来更多重新和商业价值。对组织而言&#xff0c;从商业角度看&#xff0c;项目旨在推动组织从一个状态转到另一个状态&#xff0c;从而达成特定目标。项目的健康情况如何关乎项目和变革的成本&…...

美国原装二手keysight E4980A(安捷伦)2MHZ LCR表

Agilent E4980A、Keysight E4980A、LCR 表&#xff0c;20 Hz - 2 MHz E4980A 是 Agilent 的 2 MHz LCR 表。LCR表是一种电子测试设备&#xff0c;用于测量电子元件的电感&#xff08;L&#xff09;、电容&#xff08;C&#xff09;和电阻&#xff08;R&#xff09;。LCR 表可…...

《clean coder》:关于摆烂,争论和心态

“凡是不能在五分钟之内解决的争论&#xff0c;都不能依靠辩论解决” ---- Kent Beck 作为一个码农&#xff0c;我并不是一个喜欢争论的角色。很长一段时间会陷入一种摆烂的&#xff0c;被动的状态。“既然其他人想要这么做&#xff0c;就这么办吧”。这可能是非专业的行为中最…...

jenkins下载与简单使用

1.jenkins下载 因为我仍然使用的是jdk1.8进行开发&#xff0c;所以我下载的是jenkins2.332.1版本&#xff08;jenkins2.346.1版本在2022年末不再支持java8&#xff0c;如果项目使用的是jdk11可以继续使用该jenkins版本&#xff09;&#xff0c;更多版本下载请点击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年的老程序员告诉你&#xff1a;阅读源码和查看官方文档&#xff0c;是解决问题最高效的办法。不信你来看&#xff0c;这个困扰了读者半天的问题我查了源码和文档后瞬间解决。 前言 上周五有位读者私信我一个问题&#xff0c;说困扰了他半天&#xff0c;研究了一…...

云原生流量管理系统中 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实现延时队列&#xff0c;但是底层的定时器不止如何实现好些&#xff0c;故此研究了一下jdk的Timer。 Timer是一个用于执行定时任务的类&#xff0c;可以单次执行或按指定时间间隔循环执行&#xff08;直到主动cancel或线程被杀掉&#xff09;。Ti…...

vue3中使用swiper完整版教程

介绍 在 vue3 中使用 swiper, 实现轮播图的效果&#xff1b;如果组件样式等模块引入不当&#xff0c;很有可能导致&#xff0c;页面无效果&#xff1b;或者想要的箭头或者切换效果异常问题。具体使用方式如下所示&#xff1a; 使用方式 使用命令 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 框架的开源应用程序开发工具&#xff0c;它旨在简化 Spring 应用程序的配置和开发过程。Spring Boot 提供了一种简单的方式来创建可独立运行的、生产级别的应用程序&#xff0c;并在需要时进行部署。Spring Boot 在微服务架构和云计算环境下得到…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...