NVIDIA 在 WeNet 中开源 Noisy Student Training 方案

news2024/11/10 7:39:57

为了改进 Noisy Student Training 在非目标领域 ASR 上的性能,英伟达提出新型数据筛选方法 LM Filter。其利用不同解码方式的识别文本之间的差异来作为数据筛选条件,是一个完全无监督的筛选过程。在 AIShell-1 上与无数据筛选的基线相比可以有 10.4% 的性能提升;在 AIShell-2 上可以取得 4.72% 字错误率。

目前该工作已投稿 ICASSP 2023,论文预览版可见:https://arxiv.org/pdf/2211.04717.pdf

代码已开源在 WeNet 社区,详见:

https://github.com/wenet-e2e/wenet/tree/main/examples/aishell/NST

Noisy Student Training 简介

半监督学习一直在语音识别领域受到广泛关注。这两年,Noisy Student Training (NST) 刷新并保持了 Librispeech 上 SOTA 结果[1],并且在数据量相对充沛的情况下,增加无监督数据仍然可以提升性能,因此有大批学术界和工业界的从业者在关注和改进该方法。

NST 可以看作是 Teacher Student Learning 的改进版本,它是一个自我迭代的过程。首先,我们使用有监督数据训练好一个 teacher  模型,使用这个模型在无监督数据上做 inference 得到伪标签。接着将带伪标签的无监督数据和有监督数据混合到一起,来训练 student 模型,在训练的时候通常会加入一些噪声来使得模型更加鲁棒,例如语音上常用的 SpecAug。我们让 student 成为新的 teacher,以此类推。这个过程如下图所示。

 

Motivation

NST 并没有在中文 ASR 任务中得到广泛研究,尤其是在有监督数据的领域与无监督数据的领域不匹配的情况下。

噪声和领域在 ASR 中起着重要的作用,来自社交媒体的大量无监督数据并不总能匹配任务所需的领域。因此,我们需要适当的数据筛选策略(Data Selection Strategy)来去除噪声并选择接近目标领域的数据。

常见的数据筛选策略

ASR 中最常见的数据筛选方式是置信度分数(Confidence Score),它根据置信度来选择合适的阈值来选择出可信的文本。但是,在具有大量领域不匹配的无标签数据的情况下,这种方法不一定可行。

近期有另一种新颖的无监督数据筛选的方式被提出[2],作者使用额外的对比语言模型(Contrastive Language Model)用作数据筛选,从而更好地改进目标域 ASR 任务。

在本文中,我们提出了一种新型的数据筛选策略,称之为 LM Filter,它可以利用模型差异性来筛选出更有价值的非目标领域的数据,来提高 NST 的性能。这种方法有以下的好处:

  • 不需要额外的数据筛选模型。模型的差异可以从不同的解码策略(例如加不加语言模型)中获得。

  • 不需要标签来进行数据筛选,是一个完全无监督的筛选过程。

  • 训练 NST 所用的时间和资源更少,并且它可以在更少的迭代中更快地收敛。

LM Filter

一个发现

在一开始,我们在中文数据集上做了标准的 NST 迭代,我们将 AISHELL-1 作为有监督数据,AISHELL-2 作为无监督数据,没有使用任何筛选策略。我们计算生成的伪标签的 CER 为8.38%,这个结果是相当好的。

但是,当我们把无监督数据替换成具有不同领域和噪声更大的 WenetSpeech 数据集时,伪标签的 CER 急剧增加到 47.1%,这样的数据不足以用作训练及迭代。因此我们提出 LM filter 来提高 NST 在非目标域数据上的性能。

有用的定义

我们的假设是,如果语言模型认为这个句子不需要任何进一步的修改,那么这个句子就有更高的概率是一个正确的伪标签。在这里,我们介绍两个定义和示例,以更好地理解 LM Filter 的工作原理,我们定义:

  • CER-Hypo 为 student 模型的 greedy search 解码得到的 Hypothesis 与带语言模型解码的 Hypothesis 之间的 CER。

  • CER-Label 为 student 模型 Hypothesis 和真实标注之间的 CER。

举个例子

下图列出了两种情况。在 Case 1 中,greedy decoding 和带语言模型解码的 Hypothesis 的差异是1个字符(“数”和“诉”),所以CER-Hypo=16.67%。在这种情况下,CER-Label也是16.67%(“申”和“胜”)。

在 Case 2 中,这个句子比上个例子中的句子更具挑战性。Student 模型仅学习了部分声学特征,但解码结果大部分是错误的。在这种情况下,LM 倾向于进行更多修改。故而,CER-Hypo 和 CER-Label 两者在这种情况下都非常高。

CER-Hypo 和 CER-Label 的相关性

大量的 case 表明 CER-Hypo 和 CER-Label 具有很强的正相关性,具有较低 CER-Hypo 的句子往往具有较低的 CER-Label。我们的 LM Filter 使用 CER-Hypo 作为阈值(例如10%)来过滤掉高 CER-Label 的数据。

我们还观察到,相似领域的无监督数据,更有可能得出更低的 CER-Hypo 值。例如,在 WeNetSpeech 的无监督数据中,领域为广播新闻的数据往往具有较低的 CER-Hypo,然而电视剧综艺等非目标域更有可能被 LM Filter 过滤掉。

实验结果和分析

我们使用 AISHELL-1 作为有监督数据,AIShell-2 和 WeNetSpeech 分别作为无监督数据进行实验。模型结构为16层的 Conformer。实验使用 WeNet 工具,并且代码已经贡献到 WeNet 社区。如何在 WeNet 里面使用 LM Filter 做 NST 也会在下一小节做介绍。

Baselines

我们有使用不同的数据以下几组基线实验:

  • 有监督训练:

    • AISHELL-1

    • AISHELL-1 加上有标注的 WeNetSpeech

    • AISHELL-1 加上有标注的 AISHELL-2

  • 标准 NST:

    • AISHELL-1(有监督数据)和 WeNetSpeech(无监督数据)

    • AISHELL-1(有监督数据)和 AISHELL-2(无监督数据)

分别在 AISHELL-1 的测试集上计算 CER,详细的结果见下表:

SupervisedUnsupervisedTest CER
AISHELL-1 Only----4.85
AISHELL-1 + WenetSpeech----3.54
AISHELL-1 + AISHELL-2----1.01
AISHELL-1 (standard NST)WenetSpeech5.52
AISHELL-1 (standard NST)AISHELL-23.99

从结果中可以看出,由于 AISHELL-2 与AISHELL-1 的领域和噪声环境一致,进行有监督训练时的 CER 非常低。并且在使用 AISHELL-2 作为无监督数据,进行一次标准的 NST迭代时,CER 有明显的一个下降。但是我们将无监督数据换成 WeNetSpeech 时,CER 不降反增:从 4.85% 提高到 5.52%。

LM Filter 的有效性

在有监督的 AISHELL-1 数据和无监督的 WenetSpeech 数据上,并且使用 LM Filter 的性能见下表。在经过7次 NST 迭代后可以达到4.31%的最佳 CER。与有监督的基线相比,CER 可以减少 11.13%。

# nst iterationAISHELL-1 test CERPseudo CERFiltered CERFiltered hours
04.8547.1025.18323
14.8637.0220.93436
24.7531.8119.74540
34.6928.2717.85592
44.4826.6414.76588
54.4124.7015.86670
64.3423.6415.40669
74.3123.7915.75694

除了测试集的 CER 外,我们还使用以下三个指标来评估伪标签的质量:Pseudo CER,即伪标签本身的 CER;Filtered CER 和 Filtered hours,即过滤后的无监督数据的 CER 和数据时长。

在第一次 NST 迭代后,LM Filter 可以将 Pseudo CER 从 47.1% 降低到 25.18%,这使得伪标签可以满足进一步的训练。Pseudo CER 和 Filtered CER 随着迭代次数的增加而减少,而 LM Filter 也允许更多的无监督数据进入 NST 迭代。这表明 LM Filter 可以逐渐学习噪声信息,而我们的 student 模型可以更多地利用非目标域的数据。

多轮迭代

为了夯实我们数据筛选策略的有效性,我们在 AISHELL-1 + WeNetSpeech 上做了多轮标准 NST 的迭代,以及加上 LM Filter 之后的对比图。此外,也在AISHELL-1 + AISHELL-2 上做了多轮迭代。详细的结果见下图。

 

图a. 可以明显看出,不加任何数据筛选的情况下,7轮迭代后的 CER 与 baseline 相比没有明显变化;而我们的 LM Filter 可以有 10.4% 的性能提升,并且模型训练时间较短、收敛更快。Pseudo CER 逐渐下降,筛选后的数据大小在每次训练迭代后也逐渐增加(见图d.下)。

大数据上的性能

我们在 AISHELL-2 上也进行了相关实验,结论与 AISHELL-1 一致,结果见下表。

# nst iterationAISHELL-2 test CERPseudo CERFiltered CERFiltered hours
05.4830.1011.731637
15.0928.319.392016
24.8825.389.992186
34.7422.4710.662528
44.7322.2310.432734

Recipe in WeNet

我们在 WeNet 中已经贡献了使用 LM Filter 来进行 NST 训练的代码:

Quick Start

如果你想要快速地复现上述实验,你可以直接运行下面的命令,该命令会训练初始的 teacher 模型,并进行两次 NST 的迭代。:

bash run.sh --stage 1 --stop-stage 2 --iter_num 2

在训练好初始模型后,我们会自动开始解码,得到无监督数据上的伪标签。接着根据伪标签的 CER_hypo 选择合适阈值进行数据筛选。将筛选好的无标签数据和有标签数据打包,生成用于训练的新的 datalist,从而进行新一轮的 NST 迭代。更加详细的参数和配置,可以参考 run.sh 或者 run_nst.sh

LM Filter 的实现

在 WeNet 中,我们是通过 local/generate_filtered_pseudo_label.py 这个脚本来实现 LM Filter 这个功能。通过传入 --cer_hypo_threshold 这个参数来配置相应的阈值,并且选择出满足条件的半监督数据。

在选完满足条件的数据之后,我们还提供 local/generate_data_list.py 来自动生成用于下一轮 NST 训练的数据列表。在生成训练用的数据列表时,可以通过配置 --pseudo_data_ratio 来动态调整有监督数据和无监督数据的比例。

最后,欢迎大家 cite 文章、试用 recipe 和提 issue~

References

  1. Y. Zhang, J. Qin, D. S. Park, W. Han, C.-C. Chiu, R. Pang, Q. V. Le, and Y. Wu, “Pushing the limits of semi-supervised learning for automatic speech recognition.,” CoRR, vol. abs/2010.10504, 2020.

  2. Z. Lu., Yongqiang W., Y. Zhang, W. Han, Zhehuai Chen, and Parisa Haghani, “Unsupervised Data Selection via Discrete Speech Representation for ASR,” in Proc. Interspeech 2022, 2022, pp. 3393–3397.

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

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

相关文章

PYNQ-Z2 开发板

1. 官方手册写的挺全,了解一下PYNQ-Z2 设置指南 https://pynq.readthedocs.io/en/latest/getting_started/pynq_z2_setup.htmlPYNQ-Z2 Reference Manual v1.0 https://www.mouser.com/datasheet/2/744/pynqz2_user_manual_v1_0-1525725.pdfpynq(Python O…

单分散PEG之Amino-PEG24-acid;CAS:196936-04-6氨基-二十四聚乙二醇-羧酸

Amino-PEG24-acid氨基-二十四聚乙二醇-羧酸196936-04-6 中文名称:氨基-二十四聚乙二醇-羧酸 英文名称:Amino-PEG24-acid 分子式:C51H103NO26 分子量:1146.35 CAS:196936-04-6 外观:粘稠液体或者固体粉末&a…

数据的存储(3)浮点数的存储

tips 1. 2. 浮点数内存存储方式与整型是截然不同,不可被整型思维带偏了 我用一个例子来理解浮点数在内存当中的表示方法,先上一个十进制浮点数13.5 1. 利用二进制的权重化为二进制浮点数 二进制权重表小数部分如下: 那么13.5&…

Vue好难理解怎么办?

Vue学习笔记分享给你,希望对你有些帮助,另外推荐2个安装 VScode 中的 Vue 插件 Vue 3 Snippets Vue 3 Snippets - Visual Studio Marketplace 这个插件包含了所有的 Vue.js 2 和 Vue.js 3 的 api 对应的代码片段。插件的代码片段如下表格所示&#xff0…

Jetson nano 入手系列之4—外围设备:开机键+PWM风扇

Jetson nano 入手系列之4—外围设备:开机键PWM风扇1.外接按键开机2.PWM可调速风扇2.1 jtop工具2.2 PWM风扇2.3 PWM风扇的控制2.3.1 手动控制2.3.2 自动控制参考文献本系列针对亚博科技jetson nano开发板。 Jetson nano 入手系列: Jetson nano 入手系列之…

《MySQL系列-InnoDB引擎11》InnoDB关键特性-刷新邻接页

InnoDB 关键特性 InnoDB存储引擎的关键特性包括: Insert Buffer (插入缓冲)Double Write (两次写)Adaptive Hash Index (自适应哈希索引)Async IO (异步IO)Flush Neighbor Page (刷新领接页) 这些特性为InnoDB存储引擎带来了更好的性能以及更高的可靠性。 刷新邻接…

极光笔记 | 当前最佳实践:Header Bidding 与瀑布流混合请求技术

通过这篇文章您讲将了解:Header Bidding 的发展史Waterfall、Header Bidding 的逻辑及优劣势为什么说 Header Bidding 与瀑布流混合请求技术是当前最佳实践PART 01、Header Bidding 的起源Header Bidding(头部竞价,又称 Pre-Bidding 或 Advan…

PaddleSports:“AI+体育”端到端开发套件及落地实践

本系列根据WAVE SUMMIT2022深度学习开发者峰会「开源开放 生态共建」论坛嘉宾分享整理。本文整理自「开源开放 生态共建」百度研究院的资深研究员卢飞翔的主题演讲——PaddleSports:“AI体育”端到端开发套件及落地实践。百度3DAI智慧体育团队针对数据、算法、产品三…

C++语法基础课 习题5 —— 字符串

文章目录例题1. 760.字符串的长度(fgets函数)重点!2. 761.字符串中数字的个数3. 763.循环相克令4. 765.字符串加空格(getline函数auto用法)重点!5. 769.替换字符 重点!6. 773.字符串的插入(substr函数)重点!7. 772.只出现一次的字符(难题)习题…

Python逆向进阶教程笔记(1)

视频地址:Day1初识JS逆向 混淆与无混淆数据加密方案解析实战-36Kr数据加密解析 (AES数据逆向)_哔哩哔哩_bilibili 未完待续 一、排错 1.1) 目的:抓页面借口,简单请求会被拦截 1.2) 网址:乌海市公共资源…

OSPF-MGRE实验(1.3)

要求: 1、首先为每个路由器配置接口ip和环回ip实现第一个目标 r1: [r1]interface GigabitEthernet 0/0/0 [r1-GigabitEthernet0/0/0]ip add 16.1.1.1 24 [r1-GigabitEthernet0/0/0]int gi0/0/1 [r1-GigabitEthernet0/0/1]ip add 61.1.1.1 24 [r1-Gigab…

java File类详细

目录 File创建 1.File(String pathname) 2. File(String parent,String child) 3.File(File f,String child) file类的使用 基本操作: 文件夹的操作 File创建 1.File(String pathname) …

一起快速了解单片机入门知识吧!

从事计算机和电子信息技术行业的都熟知单片机一词,但是你真的了解单片机吗?单片机的种类有哪些?单片机有什么特点?单片机的工作原理是什么?下面一起来了解单片机知识吧!在学习单片机知识前,我们…

多数据库学习之SQL Server查询表自增主键字段信息SQL

多数据库学习之SQL Server查询表自增主键字段信息SQL前言概念SQL样例方式一:系统内置存储过程查找方式二:通过INFORMATION_SCHEMA模式下系统视图获取方式三:通过sys模式下系统视图获取参考链接前言 Microsoft SQL Server简介 Microsoft SQL S…

Zookeeper详解(三)——开源客户端curator

开源客户端curator (true re de) curator是Netflix公司开源的一个zookeeper客户端,后捐献给apache,curator框架在zookeeper原生API接口上进行了包装,解决了很多zooKeeper客户端非常底层的细节开发。提供zooKeeper各种应用场景(比如&#xf…

CSS3 动画案例

文章目录变形效果案例照片墙过渡效果案例鼠标移动显示内容图片文字滑动效果白光闪过效果手风琴效果动画案例脉冲动画loading效果灯光闪烁动画代码变形效果案例 照片墙 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>&…

ESP IDF:观察者Observer用例实现

ESP IDF:观察者 Observer用例实现 #include <stdio.h> // #include #include // using namespace std; //抽象的英雄 抽象的观察者 Observer class AbstractHero { public: virtual void Update() 0; }; std::list<AbstractHero*> mlist; std::list<Abstr…

Linux:vim工具

文章目录一.vim简单介绍1.1vim使用1.2vim常见的模式二.vim中的指令2.1set nu/set nonu(调出/取消行号)先导&#xff1a;下面这些命令都是在命令模式下运行2.2yy/p(复制/粘贴)2.3dd(剪切)2.4u/ctrl r(撤销/把撤销撤销)2.5shift g/g g(光标定位末尾/光标定位第一行)2.6shift 4/sh…

Docker高级篇_mysql主从复制、redis集群

目录Docker复杂安装详说安装mysql主从复制安装redis集群3主3从Redis集群&#xff08;基于哈希槽分区&#xff09;主从容错切换迁移主从扩容主从缩容Docker复杂安装详说 安装mysql主从复制 1.新建主服务容器3307 docker run -d -p 3307:3306 --privilegedtrue -v /zhoujmi/my…

Spring Framwork_01

Core Container(核心容器):管理对象的技术 1.Beans 2.Core 3.Context 4.SpEL Core&#xff1a;核心工具包&#xff0c;包括字节码操作cglib、asm&#xff0c;资源的抽象Resource&#xff0c;对象实例化化工具等等。 Beans&#xff1a;Bean 的定义、Bean 的创建以及对 Bean 的解…