NVIDIA 在 WeNet 中开源 Noisy Student Training 方案-程序员宅基地

技术标签: 智能语音  python  人工智能  

为了改进 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,详细的结果见下表:

Supervised Unsupervised Test CER
AISHELL-1 Only ---- 4.85
AISHELL-1 + WenetSpeech ---- 3.54
AISHELL-1 + AISHELL-2 ---- 1.01
AISHELL-1 (standard NST) WenetSpeech 5.52
AISHELL-1 (standard NST) AISHELL-2 3.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 iteration AISHELL-1 test CER Pseudo CER Filtered CER Filtered hours
0 4.85 47.10 25.18 323
1 4.86 37.02 20.93 436
2 4.75 31.81 19.74 540
3 4.69 28.27 17.85 592
4 4.48 26.64 14.76 588
5 4.41 24.70 15.86 670
6 4.34 23.64 15.40 669
7 4.31 23.79 15.75 694

除了测试集的 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 iteration AISHELL-2 test CER Pseudo CER Filtered CER Filtered hours
0 5.48 30.10 11.73 1637
1 5.09 28.31 9.39 2016
2 4.88 25.38 9.99 2186
3 4.74 22.47 10.66 2528
4 4.73 22.23 10.43 2734

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.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_48827824/article/details/128545713

智能推荐

基于Node.js的校园医疗健康管理系统:寻医问药、疫苗与体检接种功能的设计与实现-程序员宅基地

文章浏览阅读872次,点赞28次,收藏8次。本文介绍了一个基于Node.js的校园医疗健康管理系统的设计与实现,重点探讨了寻医问药、疫苗管理和体检接种等核心功能。实验结果表明,该系统具有良好的稳定性、易用性和可扩展性,为校园医疗健康管理提供了新的解决方案。因此,开发一款基于Node.js的校园医疗健康管理系统,实现寻医问药、疫苗管理、体检接种等功能,对于提高校园医疗服务水平、保障学生身体健康具有重要意义。未来,我们将继续优化系统功能,提升用户体验,并探索与其他校园服务系统的整合,为校园医疗健康管理提供更加全面、便捷的服务。[此处列出参考文献]

Linux中的进程调度算法-程序员宅基地

文章浏览阅读435次,点赞9次,收藏7次。Linux进程间通信是指在Linux系统中,不同进程之间进行数据交换、共享资源或进行协作的过程。总的来说,Linux中的进程调度算法旨在提高系统的性能、公平性和响应能力。不同的调度算法适用于不同的场景,内核会根据系统负载和用户需求动态选择合适的调度策略。在Linux中,进程调度算法是由内核负责的重要部分,它决定了系统如何分配CPU资源给各个进程以及何时执行它们。这些进程间通信方式在Linux系统中提供了灵活且多样化的选择,可以根据具体的需求和场景来选择合适的通信方式。linux进程间通用原理。

rgb颜色查询工具_Photoshop思维导图:颜色相关知识和操作大全-程序员宅基地

文章浏览阅读1.6k次。更多实用资料↑↑↑↑↑文大约4800字,预计阅读时间16分钟。建议先收藏,空闲时仔细阅读,定有收获。记得看文末的思维导图,收藏的同时记得双击屏幕支持一下哦。本文几乎涵盖了PS中用到的所有颜色知识,主要分为四大部分,分别是色彩的属性和互补色概念、颜色的模式及其相互转换、十六进制颜色码、颜色的基础操作(相关工具的使用),都是初学者必看的基础知识。最后总结了一张思维导图,重点知识已经加粗,需要高清版的可..._互补色对照表

kubevirt在360的探索之路(k8s接管虚拟化)-程序员宅基地

文章浏览阅读4.4k次。奇技 · 指南KubeVirt是一个Kubernetes插件,在调度容器之余也可以调度传统的虚拟机。它通过使用自定义资源(CRD)和其它 Kubernetes 功能来无缝扩展现有的集群,..._check volume

Docker 安装 eclipse-mosquitto_docker eclipse-mosquitto-程序员宅基地

文章浏览阅读2.2k次。安装 单机Mqtt:eclipse-mosquitto:2.0.14、设置密码、使用MQTTX测试_docker eclipse-mosquitto

小程序 picker点击底部唤起滚动选择器、picker-view嵌入页面的滚动选择器_picker 底部显示-程序员宅基地

文章浏览阅读1.3k次。picker-view 其中只可放置picker-view-column组件,其它节点不会显示。 必须设置picker-view的宽高 <picker-view value="{{[n,n,n]}}" 依次表示picker-view内的各个picker-view-column选择的第几项(下标从0开始),数字大于 picker-view-column可选项长度时,选择最后一项。 indicator-style 设置选择器中间选中框的样式 indicato_picker 底部显示

随便推点

【Excel】用excel生成矩阵_excel 共现矩阵-程序员宅基地

文章浏览阅读1.3w次。1、使用sql语句生成group by数据,复制到Excel Sheet中例如A B 3B D 4C A 2D B 12、创建新sheet,粘贴上述数据到新sheet2.1 分别选中第一列、第二列,进行操作:数据--》删除重复项,得到矩阵的横坐标和纵坐标的数据2.3 制作矩阵的坐标轴:复制第二列数据,右键单元格:选择性粘贴--》转置2.4 生成数据,例如_excel 共现矩阵

【ESP8266-01】MQTT连接百度云-进阶(物可视)_百度云物可视-程序员宅基地

文章浏览阅读4.7k次。上一章 【ESP8266-01】MQTT连接百度云(天工物接入)ESP8266-01 MQTT连接百度云-进阶(物可视)前言前边我们讲了MQTT连接百度云了,也学会了如何上传数据,那么我们要玩一些更高大上的,让这些数据用模型替代出来,同时看起来也更加的美观,就像下图所示。好了,本章节我们就来学习如何让数据可视化起来。1.创建工程1.1 打开“物联网数据可视化”1.2 创建工作区工作区的名称自行命名;我这里命名为“hello”;1.3 创建仪表盘为仪表盘命名,下边有多个模板可以选择_百度云物可视

蒙特卡洛算法及简单应用_给定曲线和曲线,曲线的交点为:、。曲线围成平面有限区域,用蒙特卡罗方法计算区域-程序员宅基地

文章浏览阅读1w次,点赞10次,收藏69次。基本概念蒙特卡罗方法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用赌城蒙特卡罗命名。基本思想:当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,_给定曲线和曲线,曲线的交点为:、。曲线围成平面有限区域,用蒙特卡罗方法计算区域

java 调用 rar压缩文件-程序员宅基地

文章浏览阅读385次。[code="java"]public static boolean winrar(String winrarfile, String foler) { //winrar软件的安装路径 String rarPath = "C:\\Program Files\\WinRAR\\WinRAR.exe"; String cmd=""; // cmd=r..._java调用winrar提示未知选项mx10385760

有没有一种间隔循环提醒的便签APP-程序员宅基地

文章浏览阅读837次。在快节奏的社会,每天醒来都有一堆事情需要处理。如果不小心把事情忘记了,就会造成很严重的后果。像纸质便签本这种只有记录没有提醒功能的工具,已经不符合现代人的期待。提醒功能强大的记事便签软件,才是我们所需要的。职场上非常流行的便签APP是敬业签,敬业签除了可以记录文本内容,以及上传图片、声音、文件附件外,还可以给每条事项添加提醒时间。在手机敬业签上,在输入框左下角点闹钟图标,或者左滑已保存的内容,都可以添加提醒时间。敬业签的提醒模式是多样化的,可以设置单次提醒、按天/周/月/季度/年/自定义周期重复_循环提醒

Qt学习笔记第一弹 Qt简介及在Windows上搭建Qt开发环境_windows qt-程序员宅基地

文章浏览阅读3.3k次。有的同学可能会问:“笔者大大,不是Qt的学习笔记吗,跟Qt Creator有啥关系?”别急,且听笔者大大娓娓道来。Qt Creator是什么呢?通俗易懂的讲,它是一个用于开发图形用户界面应用程序的软件,细说的话,Qt Creator是Qt被Nokia(这英文是不是看着很眼熟,没错,就是能砸核桃的诺基亚)收购后推出的一款轻量级IDE(集成开发环境),它的设计是为了使开发人员能够利用Qt这个应用程序开发框架更加快速及轻易的完成开发任务。_windows qt

推荐文章

热门文章

相关标签