细数语音识别中的几个former

news2024/11/16 23:44:28

随着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.coloradmin.cn/o/1415087.html

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

相关文章

拦截器的简单使用

拦截器的简单使用 拦截器的使用创建拦截器preHandle 目标方法执行前执行postHandle 目标方法执行后执行afterCompletion 视图渲染后执行 拦截器使用场景返回值注册拦截器运用拦截器 拦截器的使用 创建拦截器 首先,我们需要创建一个拦截器器的类,并且需要继承自HandlerIntercep…

java分布式锁(详解)

本地锁 浏览器把100w请求由网关随机往下传,在集群情况下,每台服务都放行10w请求过来,这时候每台服务都用的是本地锁是跨JVM的, 列如这些服务都没有49企业,此时有几个服务进行回原了打击在DB上面,那后期把这…

一种基于YOLOV5框架的新型轻量级雾天行人车辆实时检测算法(XM-YOLOViT)

💡💡💡本文摘要:提出了一种基于YOLOV5框架的新型XM-YOLOViT雾天行人车辆实时检测算法,有效解决了密集目标干扰和雾霾遮挡问题,提高了复杂雾天环境下的检测效果。 1.XM-YOLOViT原理介绍 XM-YOLOViT框架图 摘…

04.领域驱动设计:了解聚合和聚合根,怎样设计聚合-学习总结

目录 1、概述 2、聚合 3、聚合根 4、怎么设计聚合 4.1 聚合的构建过程主要步骤 第 1 步:采用事件风暴。 第 2 步:选出聚合根。 第 3 步:找出与聚合根关联的所有紧密依赖的实体和值对象。 第 4 步:画出对象的引用和依赖模型…

数据结构·双向链表

1. 双向链表的结构 我们之前提到过,双向链表的全称是:带头双向循环链表。带头就是相当于一个“哨兵位”,用来标记链表的开始,它存储的数据是无效的,但是它将存储有效的前驱节点和后继节点的地址,带头链表的…

【Linux】进程通信——管道

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 🌎推荐文章:【LeetCode】winter vacation training 目录 📋进程通信的目的📋管道匿名管道pipe函数创…

【DeepLearning-9】YOLOv5模型网络结构中加入MobileViT模块

一、神经网络的前中后期 在神经网络中,特别是在深度卷积神经网络(CNN)中,“网络早期(低层)”、“网络中期(中层)”和“网络后期(高层)”通常指的是网络结构中…

sqli-labs靶场(1-6关)

1、第一关 测试id1 id1加一个引号报错,两个引号正常,应该是字符,还有回显 猜测字段长度 id1 order by 3 -- id1 order by 4 -- 字段长度为三,接下来确定位置:id1 and 12 union select 1,2,3 -- 查出库名,及版本号id1 …

用C语言实现贪吃蛇游戏!!!(破万字)

前言 大家好呀,我是Humble,不知不觉在CSND分享自己学过的C语言知识已经有三个多月了,从开始的C语言常见语法概念说到C语言的数据结构今天用C语言实现贪吃蛇已经有30余篇博客的内容,也希望这些内容可以帮助到各位正在阅读的小伙伴…

深度学习(6)--Keras项目详解

目录 一.项目介绍 二.项目流程详解 2.1.导入所需要的工具包 2.2.输入参数 2.3.获取图像路径并遍历读取数据 2.4.数据集的切分和标签转换 2.5.网络模型构建 2.6.绘制结果曲线并将结果保存到本地 三.完整代码 四.首次运行结果 五.学习率对结果的影响 六.Dropout操作…

N-141基于springboot,vue网上拍卖平台

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plusredi…

一张图区分Spring Task的3种模式

是的,只有一张图: fixedDelay 模式cron 模式fixedRate 模式

2024/1/28周报

文章目录 摘要Abstract文献阅读题目引言方法The ARIMA modelTime delay neural network (TDNN) modelLSTM and DLSTM model 评估准则实验数据描述实验结果 深度学习AttentionAttention思想公式步骤 Attention代码实现注意力机制seq2seq解码器Model验证 总结 摘要 本周阅读了一…

腾讯云幻兽帕鲁4核16G/8核32G/16核64G服务器配置价格表

腾讯云幻兽帕鲁服务器4核16G、8核32G和16核64G配置可选,4核16G14M带宽66元一个月、277元3个月,8核32G22M配置115元1个月、345元3个月,16核64G35M配置580元年1个月、1740元3个月、6960元一年,腾讯云百科txybk.com分享腾讯云幻兽帕鲁…

uniapp组件库fullScreen 压窗屏的适用方法

目录 #平台差异说明 #基本使用 #触发压窗屏 #定义压窗屏内容 #注意事项 所谓压窗屏,是指遮罩能盖住原生导航栏和底部tabbar栏的弹窗,一般用于在APP端弹出升级应用弹框,或者其他需要增强型弹窗的场景。 警告 由于uni-app的Bug&#xff0…

深度强化学习(王树森)笔记04

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

探索IOC和DI:解密Spring框架中的依赖注入魔法

IOC与DI的详细解析 IOC详解1 bean的声明2 组件扫描 DI详解 IOC详解 1 bean的声明 IOC控制反转,就是将对象的控制权交给Spring的IOC容器,由IOC容器创建及管理对象。IOC容器创建的对象称为bean对象。 要把某个对象交给IOC容器管理,需要在类上…

基于springboot+vue的在线教育系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

如何看待程序员抄代码还拿着高薪这一说法?

程序员的工资构成:会复制粘贴值1块,知道去哪复制值5K,知道粘贴在哪值10K,粘贴完了能跑起来值15 有人说:能带领一伙人复制粘贴值20k。 有人说:能写一个自动复制粘贴的系统值30k。 有人纳闷问到&#xff1a…

兄弟DCP-7057黑白激光多功能一体机加粉后清零方法

硒鼓加粉机器上清零,方法如下: 打开安装硒鼓的前盖。按“清除”键,显示“更换硒鼓”。不用管提示,接着按“启用Start”,再按“”,屏幕上显示“01”。继续按“”,直到屏幕上显示“11”。按“OK”…