细数语音识别中的几个former

随着Transformer在人工智能领域掀起了一轮技术革命,越来越多的领域开始使用基于Transformer的网络结构。目前在语音识别领域中,Tranformer已经取代了传统ASR建模方式。近几年关于ASR的研究工作很多都是基于Transformer的改进,本文将介绍其中应用较为广泛的几个former架构。 

 

1. Conformer

💡 Motivation & Method

Transformer模型擅长获取基于内容的全局信息但是对高细粒度的局部特征效果不佳,而CNN擅长获取局部特征信息对于全局信息则需要更多的层。他们希望将CNN和Transformer优势结合起来对音频序列的局部和全局依赖关系进行建模。

🌌 Model architecture

Conformer也是编码器-解码器结构,其中encoder由两个类似夹心饼干的前馈层组成,多头自注意力模块和卷积模块夹在两个前馈神经网络中间,紧接着Layernorm层。在本篇论文中,仅使用1层LSTM作为decoder。

卷积模块(CNN)

conformer的卷积模块包含点向卷积,GLU激活层,1-D深度卷积,Batchnorm,然后是swish激活层,其结构如下所示:

前馈模块(FFM)

前馈模块,第一个线性层使用4的扩展因子,第二个线性层将其投影回模型维度。使用了swish激活和pre-norm残差单元。

📊 Experiment results

在参数量相当的情况下Confomer可以达到比ContextNet更低的WER。当Conformer参数量为30.7M时,其WER甚至优于参数量为139M的Transformer结构。

🧮 Ablation Studies

本文一系列的消融实验验证了如下的几个结构和参数的最优配置

  • 马卡龙风格的FFN优于残差结构的FFN

  • 深度卷积优于轻量卷积

  • 多头注意力头heads数目为4最好

  • CNN卷积核大小32最佳

模型最终在LibriSpeech test clean/test other测试集上分别获得了1.9%和3.9%的WER。

2. Branchformer

💡 Motivation & Method

受Conformer启发,他们想提出了一种更灵活、可解释和可定制的encoder替代方案。Branchformer具有并行分支,可用于对端到端语音处理中的各种范围依赖关系进行建模。在每个encoder层中,一支使用self-attention来挖掘全局依赖关系,另一支使用带有卷积门控(cgMLP)的MLP模块来提取局部关系。

🌌 Model architecture

如下图所示,左边为encoder的总体结构。右边为Branchformer的结构。它由两个平行的分支组成。一个分支利用注意力捕获全局信息,而另一个分支利用带有卷积门控的MLP提取局部信息。

📊 Experiment results

3. EfficientConformer

💡 Motivation & Method

受Conformer启发,他们想在有限的计算预算下降低Conformer体系结构的复杂性。为了降低Conformer的复杂度,EfficientConformer进行了如下的优化:

  • 使用渐进式下采样引入到Conformer编码器中

  • 提出了一种名为分组注意力的新型注意力机制。增加grouped操作将自注意力模块的计算复杂度从O(n2d)降低为O(n2d/g),n为时间维度,d为隐层维度,g为group_size

🌌 Model architecture

EfficientConformer结构如下所示,它将原始的Conformer blocks分解为三步,前两个步在N个Conformer Block之后叠加Downsampling Block,沿着时间维度进行下采样;最后一步叠加N个Conformer Block,不再叠加Downsampling Block。

卷积模块(CNN)

上面是Conformer的CNN模块,下面是EfficientConformer的CNN模块。序列下采样是使用跨行深度卷积执行的。将DepthwiseConv的stride设置为大于1的值,从而实现时间维度下采样。因为下采样后输出的shape比输入的shape小,因此残差模块需要增加Pointwise Projection模块将输入和输出映射到相同的维度。

多头注意力模块(GMHA)

首先将Q、K、V的维度变换为(n/g, d*g),其中g为group_size,再进行attention计算,最后将维度变换为原始的(n, d)。变换后,注意力模块的计算复杂度可降低为O(n2d/g)

📊 Experiment results

4. Squeezeformer

💡 Motivation & Method

他们发现Conformer架构的设计选择并不是最优的,它存在如下的一些问题:

  • Conformer学习到的网络深层相邻语音帧的特征表示具有很高的时间冗余性。

  • 马卡龙结构以及背靠背多头注意力(MHA)和卷积模块过于复杂。这种复杂性使得很难在专用硬件平台上有效地部署模型进行推理而且对ASR效果是没必要的。

  • 微观层面上的一些组件不够简洁且对ASR效果没帮助

在重新研究了Conformer的宏观和微观结构(宏观是指整体结构、微观指一些小的组件)的设计选择后,提出了Squeezeformer:

  • Temporal U-Net 结构: 结合Temporal U-Net,下采样层将网络中间的采样率减半,上采样层在最后恢复采样率以保持训练稳定性。

  •  MFCF block 结构: 作者推荐采用self-attention + ffn + conv module + ffn (MFCF)的组合替代标准Conformer中ffn + self-attention + conv module + ffn(这里的1/2也被取消)。

  • 微观架构改动: GLU被替换为Swish;同时作者推荐adaptive scale + PostLN的方式,代替单纯的PreLN或PostLN;subsampling中部分conv被替换为depthwise conv

🌌 Model architecture

Conformer结构(左)和Squeezeformer(右)结构包括用于采样率下采样和上采样的Temporal U-Net结构,仅使用层后归一化的标准transformer风格块结构,以及深度可分离的子采样层。

📊 Experiment results

条形图和线形图分别表示librisspeech test-other数据集上的WER和FLOPs。对于每次改进,都保持FLOPs差不多情况下对比Squeezeformer比Conformer模型降低1.40%的WER。

在LibriSpeech-960hr上进行实验。最后三列中包括了单个NVIDIA Tesla A100 GPU上的参数数量、FLOPs和吞吐量(Thp)

5. Zipformer

💡 Motivation & Method

受Conformer、Squeezeformer启发,他们想提出一种更快,更高效的内存,性能更好的Transformer。

  • 类似u-net的编码器结构,其中中间层以较低的帧速率运行,不同层选择不同分辨率;

  • 用更多的模块重组块结构,在块结构中重用注意力权重以提高效率;

  • 将LayerNorm改进为BiasNorm用以保留一些长度信息;

  • 使用功能比Swish更好的SwooshR和SwooshL激活函数。还提出了一个新的优化器,称为ScaledAdam,它按每个张量的当前规模缩放更新以保持相对变化大致相同,并且还显式学习参数规模。

🌌 Model architecture

前面两个blocks用的是50Hz(20ms)这个比Squeezeformer要高,后面的才变低。就是说有更多的采样率种类。

MHSA通过两步学习全局信息:使用点积运算计算注意力权重,并使用这些注意力权重聚合不同的帧信息。这两步复杂度较高。因此,作者将MHSA分解为两个独立的模块:多头注意力权重(MHAW)和自我注意力(SA)。通过使用一个MHAW模块和两个SA模块,更有效地执行两次注意力计算。此外,还提出了一个新的模块非线性注意力(NLA),以充分利用已计算的注意力权重来学习全局信息。

📊 Experiment results

🧮 Ablation Studies

6. Paraformer

💡 Motivation & Method

自回归解码效率很低。为加快推理速度,设计了非自回归(NAR)方法,以实现并行生成。目前NAR存在以下问题:

  • 由于输出令牌的独立性假设,单步NAR的性能不如AR模型,特别是在大规模语料库中。

  • 改进单步NAR存在两个挑战:一是准确预测输出令牌的数量并提取隐藏变量; 其次,增强对输出令牌之间相互依赖关系的建模。

  • 旨在改进单步NAR模型,使其在大规模语料库上获得与AR模型相当的识别性能

为了解决上述问题,Paraformer的作者提出了如下的解决方案:

  • 采用一个预测器(Predictor)来预测文字个数并通过Continuous integrate-and-fire (CIF)机制来抽取文字对应的声学隐变量。

  • 受Glancing language model(GLM)启发,设计了一个基于GLM的 Sampler模块来增强模型对上下文语义的建模。

  • 设计了一种生成负样本的策略来进行最小词错误率训练,以进一步提高性能。

自回归与非自回归结构如下所示,Transformer模型属于自回归模型,也就是说后面的token的推断是基于前面的token的。不能并行,如果使用非自回归模型的话可以极大提升其速度。

🌌 Model architecture

Paraformer可以分为5个部分,包括Encoder, Predictor, Sampler, Decoder 和Loss function。

  1. Encoder 与自回归模型保持一致,可以为 Self-attention、SAN-M 或者 Conformer 结构

  2. Predictor 为2层 DNN 模型,预测目标文字个数以及抽取目标文字对应的声学向量指导解码

  3. Sampler 依据输入的声学向量和目标向量,生产含有语义的特征向量。(推理时不用)

  4. Decoder 结构与自回归模型类似,为双向建模(自回归为单向建模)

  5. Loss function 部分,除了交叉熵(CE)与 MWER 区分性优化目标,还包括了 Predictor 优化目标 MAE

📊 Experiment results

在Aishell-1上的实验结果表明Paraformer以牺牲一点点精度为代价的情况下,将RTF提升了近10倍。

7. 总结

  • Conformer: 解决语音全局和局部信息的建模。提出的方案是CNN学习局部信息,Transformer学习全局信息,使用夹心饼干的方式结合两者。结果确实比transformer更好了。

  • Branchformer:提出了另一个CNN和Transformer结合的结构,Conformer是串行夹心饼干,它则是并行结合。

  • EfficientConformer:Conformer在深层的时间尺度上下采样提升效率。

  • Squeezeformer:从数据角度证实了时间维度上的冗余,使用U-Net对中间层降采样,从实验角度证明夹心饼干结构是次优。

  • Zipformer:使用了更多种采样率对transformer进行降采样。

  • Paraformer:使用非自回归方式建模。用实验证实了Transformer中的全局信息用token数量和token之间的关系就可以代替。

根据学术界和工业界的研究现状,目前大家主要解决的两个问题:

  • 提升ASR推理效率;

  • ASR-Encoder如何更好地学习语音中全局和局部信息

最后,谈一下个人对ASR任务一些可能的工作方向:

1、如何ASR中的去冗余

去冗余的操作有利于语音识别中的效果和推理效率。语音信号包含信息冗余(除语义信息外其他信息,生理、心理)。另一方面,包含时间冗余(短时不变性)。从信号中摒除冗余有助于关注到需要的语义相关信息。就目前来说FBANK+CNN简单有效地提取到语义局部信息,降采样(从粗到细)可以降低时间维度上的冗余。结合语言学知识或许有更简单有效的表征方式等待探索。

2、ASR研究范式

可以从ASR研究范式中学到什么。早期ASR研究范式是专家知识驱动的。语言学规律指导建模。现在的ASR研究范式是数据驱动的,使用大模型大数据以任务为导向学习。前者依赖人的经验总结,而人的经验必然有很多遗漏是粗糙的。后者依赖数据,仍未达到最优。那应该如何逼近最优呢?数据->原理->模型,利用大数据大模型中间结果分析重新细化和更正语言学理论,再利用规律重设计和精简网络。

参考文献:

[1]. Gulati, A., Qin, J., Chiu, C.-C., et al. Conformer: Convolution-augmented Transformer for Speech Recognition[C]// Interspeech 2020, 5036-5040.

[2]. Peng Y, Dalmia S, Lane I, et al. Branchformer: Parallel mlp-attention architectures to capture local and global context for speech recognition and understanding[C]//International Conference on Machine Learning. PMLR, 2022: 17627-17643.

[3].  Burchi M, Vielzeuf V. Efficient conformer: Progressive downsampling and grouped attention for automatic speech recognition[C]//2021 IEEE Automatic Speech Recognition and Understanding Workshop (ASRU). IEEE, 2021: 8-15.

[4].  Kim S, Gholami A, Shaw A, et al. Squeezeformer: An efficient transformer for automatic speech recognition[J]. Advances in Neural Information Processing Systems, 2022, 35: 9361-9373.

[5].  Yao Z, Guo L, Yang X, et al. Zipformer: A faster and better encoder for automatic speech recognition[J]. arXiv preprint arXiv:2310.11230, 2023.

[6]. Gao, Z., Zhang, S., McLoughlin, I., Yan, Z. (2022) Paraformer: Fast and Accurate Parallel Transformer for Non-autoregressive End-to-End Speech Recognition. Proc. Interspeech 2022, 2063-2067.

[7]. EfficientConformer https://zhuanlan.zhihu.com/p/573133117

[8]. Squeezeformer https://zhuanlan.zhihu.com/p/581923274

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

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

相关文章

python 基础知识点(蓝桥杯python科目个人复习计划25)

今日复习内容:基础算法中的进制转换 1.任意进制转十进制 (1) 基数:表示奇数数字符号的个数 10进制:0--9,基数为1016进制:0--9,A--F,基数为16 (2&#xff…

计算机找不到ucrtbased.dll无法运行程序,分享5种有效的解决方法

当计算机系统在运行过程中无法找到ucrtbased.dll这个特定的动态链接库文件时,可能会引发一系列的问题和故障现象。ucrtbased.dll是Windows操作系统中一个至关重要的组件,它包含了C运行时库的核心函数,对于许多应用程序特别是基于Microsoft Vi…

【论文+App试玩+图像到视频】2311.Animate-anyone:上传1张图片为任何人制作动画(用于角色动画的一致且可控的图像到视频合成)(暂未开源)

项目主页:https://humanaigc.github.io/animate-anyone/ 论文: Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation 摩尔线程复现代码:https://github.com/MooreThreads/Moore-AnimateAnyone 摩尔windows一…

第9章 多线程

第9章 多线程 学习目标 了解进程和线程的区别 能够理解并发与并行的区别 能够使用继承类的方式创建多线程 能够使用实现接口的方式创建多线程 能够说出实现接口方式的好处 能够解释安全问题的出现的原因 能够使用同步代码块解决线程安全问题 能够使用同步方法解决线程安全问题…

多维时序 | Matlab实现WOA-TCN-Multihead-Attention鲸鱼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测

多维时序 | Matlab实现WOA-TCN-Multihead-Attention鲸鱼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现WOA-TCN-Multihead-Attention鲸鱼算法优化时间卷积网络结合多头注意力机制多变量时间序列预测效果一览基本介绍程序设计参考资料 效…

C++核心编程:C++ 中的引用 笔记

2.引用 2.1 引用的基本使用 - 作用&#xff1a;给变量起别名 - 语法&#xff1a;数据类型 &别名 原名 #include<iostream> using namespace std; int main() {// 引用基本语法// 数据类型 &别名 原名int a 10;// 创建引用int &ref_a a;cout<<&qu…

2024017期传足14场胜负前瞻

2024017期赛事由亚洲杯2场、英总杯2场、德甲2场、意甲4场、西甲4场组成。售止时间为1月28日&#xff08;周日&#xff09;19点00分&#xff0c;敬请留意&#xff1a; 本期深盘场次同样适中&#xff0c;1.5以下赔率3场&#xff0c;1.5-2.0赔率6场&#xff0c;其他场次基本皆是平…

【鸿蒙】大模型对话应用(一):大模型接口对接与调试

Demo介绍 本demo对接阿里云和百度的大模型API&#xff0c;实现一个简单的对话应用。 DecEco Studio版本&#xff1a;DevEco Studio 3.1.1 Release HarmonyOS API版本&#xff1a;API9 关键点&#xff1a;ArkTS、ArkUI、UIAbility、网络http请求、列表布局 官方接口文档 此…

vue3使用vue-diff插件实现文本对比

前面介绍过vue3通过monaco-editor实现文本对比功能 但因为业务需要自定义左右两侧文本的底色及高亮颜色&#xff0c;考虑换一个插件&#xff1a;vue-diff 1、下载插件&#xff1a; npm i vue-diff1.2.4 2、main.js中引入并注册插件&#xff1a; // Diff对比 import VueDiff f…

ZYNQ AC7020C的“点LED”实验

一、创建 Vivado 工程 1、启动 Vivado 2、在 Vivado 开发环境里点击“Create New Project”&#xff0c;创建一个新的工程 3、弹出一个建立新工程的向导&#xff0c;点击“Next” 4、在弹出的对话框中输入工程名和工程存放的目录。需要注意工程路径“Project location”不能有…

Zookeeper3.5.7基础学习

文章目录 一、Zookeeper入门1、概述2、特点3、数据结构4、应用场景 二、Zookeeper 安装部署1、本地模式安装1.1 基础操作1.2 配置参数解读 2、集群部署2.1 集群安装2.2 选举机制(面试重点)2.3 ZK 集群启动停止脚本 三、ZK客户端相关操作1、客户端命令行操作1.1 命令行语法1.2 z…

【第七在线】数字化转型:智能商品计划管理的核心要素

随着科技的快速发展&#xff0c;数字化转型已经成为企业适应市场变化、提高运营效率的必由之路。尤其在服装行业&#xff0c;快速的市场反应和精准的供应链管理显得尤为重要。其中&#xff0c;智能商品计划管理作为数字化转型的核心要素&#xff0c;正在重塑整个行业的竞争格局…

【RH850U2A芯片】Reset Vector和Interrupt Vector介绍

目录 前言 正文 1. 什么是Reset Vector 1.1 S32K144芯片的Reset Vector 1.2 RH850芯片的Reset Vector 2. 什么是Interrupt Vector 2.1 S32K144芯片的Interrupt Vector 2.2 RH850芯片的Interrupt Vector 3. Reset Vector等价于Interrupt Vector吗 4. 总结 前言 最近在…

$monitor和$strobe都看的是啥

注&#xff1a;本文来自硅芯思见 在编写测试平时&#xff0c;经常会用到$monitor和$strobe监测某些信号&#xff0c;并且使用格式上与$display比较类似&#xff0c;但是它们之间还是存在差异的&#xff0c;它们在当前仿真时间槽&#xff08;time-slot&#xff09;中被执行的区间…

常见电源电路(LDO、非隔离拓扑和隔离拓扑结构)

一、常见电路元件和符号 二、DC-DC转换器 DC-DC转换器&#xff1a;即直流-直流转换器&#xff0c;分为三类&#xff1a;①线性调节器&#xff1b;②电容性开关解调器&#xff1b;③电感性开关调节器&#xff1b; 2.1线性稳压器&#xff08;LDO&#xff09; 2.1.1 NMOS LDO…

如何将前后端分离(vue2+SpringBoot)项目部署到腾讯云服务器

如何将前后端分离&#xff08;vue2SpringBoot&#xff09;项目部署到腾讯云服务器 目录 如何将前后端分离&#xff08;vue2SpringBoot&#xff09;项目部署到腾讯云服务器 1、在选中目录地下新建2个文件夹 2、将打包好的前端项目和后端jar包上传到相应的目录下 3、将路径切…

Gin 应用多实例部署session问题、session参数与刷新

文章目录 一、Gin Session 存储的实现方案二、memstore&#xff1a;基于内存的实现2.1 基本使用2.2 关键参数 三、使用redis&#xff1a;多实例部署3.1 使用redis优势3.2 基本使用 四、信息安全的三个核心概念五、Gin Session 参数5.1 参数介绍 六、Session 自动刷新 一、Gin S…

语图奇缘:林浩然与杨凌芸的哲学漫画大冒险

语图奇缘&#xff1a;林浩然与杨凌芸的哲学漫画大冒险 Language Odyssey: The Philosophical Comic Adventure of Lin Haoran and Yang Lingyun 在一个充满逻辑谜题和言语陷阱的城市——逻言市&#xff0c;住着两位热衷于探索语言奥秘的年轻人&#xff0c;林浩然和杨凌芸。林浩…

一篇文章带你了解C++中隐含的this指针

文章目录 一、this指针的引出二、this指针的特性【面试题】 一、this指针的引出 我们先来定义一个日期类Date&#xff0c;下面这段代码执行的结果是什么呢&#xff1f; class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}v…

2024新版68套Axure RP大数据可视化大屏模板及通用组件+PSD源文件

Axure RP数据可视化大屏模板及通用组件库2024新版重新制作了这套新的数据可视化大屏模板及通用组件库V2版。新版本相比于V1版内容更加丰富和全面&#xff0c;但依然秉承“敏捷易用”的制作理念&#xff0c;这套作品也同样延续着我们对细节的完美追求&#xff0c;整个设计制作过…