摘要
本文研究了自动语音识别(ASR)中预训练模型的性能-效率权衡问题。我们聚焦于 wav2vec 2.0,并形式化了多种影响模型性能和效率的架构设计。基于所有观察结果,我们提出了 SEW(Squeezed and Efficient Wav2vec)这一预训练模型架构,在多种训练设置中在性能和效率两个维度上都取得了显著改进。例如,在 LibriSpeech 的 100h-960h 半监督设置下,SEW 相比 wav2vec 2.0 实现了 1.9 倍的推理速度提升,同时词错误率相对降低了 13.5%。在相似的推理时间下,SEW 在不同模型规模下将词错误率降低了 25–50%。
1. 引言
近年来,利用无标签音频数据进行自监督预训练,以学习通用特征表示的研究受到广泛关注,这些特征随后会在特定任务的标注音频上进行微调(Zhang et al., 2020b;Wang et al., 2021b;Xu et al., 2020a;Pepino et al., 2021)。这一趋势与自然语言处理(NLP;Devlin et al., 2018;Liu et al., 2019;He et al., 2020)和计算机视觉(CV;He et al., 2019;Chen et al., 2020;Grill et al., 2020)中的发展类似。其中最具代表性的模型可能就是 wav2vec 2.0(W2V2;Baevski et al., 2020b),该模型在仅使用十分钟转录(有标签)数据进行微调后,便可实现有竞争力的词错误率(WER),而以往的监督方法通常需要近千小时的标注数据。如果 NLP 和 CV 的最新进展具有参考价值,那么这些可以在专业任务上微调的预训练音频模型的重要性只会愈加显著。实际上,已有研究聚焦于 W2V2 的预训练数据(Conneau et al., 2020;Hsu et al., 2021)、预训练任务(Hsu et al., 2020)或与伪标签方法结合的效果(Xu et al., 2020a;Zhang et al., 2020b)。
在本文中,我们研究了 W2V2 的模型设计,以及其各组成部分之间可能存在的权衡关系。我们的重点是模型在实际应用中的效率,而非对模型结构的扩展。随着 W2V2 类模型日益普及,理解其效率权衡对于将这些成果从实验室推广到现实世界尤为关键,在现实场景中,效率的任何提升都可能显著降低推理成本和能耗开销,进而影响大量实际应用。
我们从多个方面对 W2V2 模型进行了研究,重点关注自动语音识别(ASR),同时保留标准的预训练和少样本微调设置。首先,我们研究了网络的时间分辨率如何在性能与效率之间进行权衡,结果表明,在计算预训练表示和进行 ASR 解码时采用不同的分辨率,可以显著减少推理时间,同时保持类似的性能。其次,我们提出了一组高效的波形特征提取器,其性能与原始 W2V2 提取器相当,但推理时间仅为原来的二分之一。最后,我们研究了在网络不同部分之间重新分配模型表达能力的影响。我们发现,将更多参数分配给预训练网络的后部比增加靠近输入波形的容量效果更好。我们还观察到,提高预训练阶段预测头(predictor heads)的表达能力能提升性能,而不会影响下游任务的计算开销,因为这些头在下游使用中会被丢弃。
基于上述观察,我们提出了两个模型:SEW(Squeezed and Efficient Wav2vec)和SEW-D(引入解耦注意力机制的 SEW,He et al., 2020)。我们在 LibriSpeech 数据集(Panayotov et al., 2015)的 960 小时无标签音频上对 SEW 和 SEW-D 进行了预训练,并在多个 ASR 任务上进行微调。SEW 在性能-效率权衡方面明显优于原始的 W2V2。例如,在使用 100 小时有标签数据的情况下,相比 W2V2-tiny 模型,SEW 将 LibriSpeech test-clean 的词错误率(WER)从 22.8% 降低到 10.6%,同时略快于后者,甚至优于一个较大的 W2V2 模型(其 WER 为 12.8%)。与官方发布的 W2V2-large 模型相比,我们最好的 SEW-D-base+ 在推理和预训练中分别实现了 2.7× 和 3.2× 的加速,同时在参数数量减半的情况下保持了相近的 WER。与 W2V2-base 相比,我们的 SEW-D-mid 实现了 1.9× 的推理速度提升,并将 WER 相对降低了 13.5%。
图 1 展示了不同模型规模下的性能-效率权衡结果。在对 LibriSpeech(Panayotov et al., 2015)、Ted-lium 3(Hernandez et al., 2018)、VoxPopuli(Wang et al., 2021a)和 Switchboard(Godfrey and Holliman, 1993)数据集进行实验时,SEW-D 在大多数预训练设置下都优于 W2V2。预训练模型和代码已开源,地址为:https://github.com/asappresearch/sew
。
2 相关工作
无监督音频表示学习
对比预测编码(Contrastive Predictive Coding, CPC)是一种通用的无监督学习方法,适用于语音、视觉、文本以及强化学习等任务(van den Oord et al., 2018)。在语音任务中,CPC 使用过去的音频来预测未来的音频,类似于语言建模(Mikolov et al., 2010;Dauphin et al., 2017;Kaplan et al., 2020),但使用的是对比损失函数。Wav2vec(Schneider et al., 2019)在 CPC 模型结构的基础上进行了改进,专注于为端到端自动语音识别提供无监督预训练。大致来说,wav2vec 包含一个从原始波形音频中提取特征向量序列的特征提取器,以及一个上下文网络,该网络对最近的特征进行编码,用于预测接下来时刻的特征。这个上下文网络仅用于学习有用的特征表示,通常在预训练后会被丢弃。
近期,Baevski 等人(2020a)提出了 vq-wav2vec,并将其与一个类似 BERT 的离散模型结合(Devlin et al., 2019;Baevski et al., 2019)。W2V2(Baevski et al., 2020b)将 vq-wav2vec 与 BERT 式模型整合为一个端到端的训练框架,在其中 BERT 模块扮演上下文网络的角色,但不再在预训练后被丢弃。最近,Hsu 等人(2020)提出了 HuBERT,并展示了 W2V2 可以通过聚类目标进行预训练,而无需使用对比目标函数。
除了专注于 ASR 的研究之外,音频表示学习在其他语音任务(Synnaeve and Dupoux, 2016;Chung et al., 2018;Chuang et al., 2019;Song et al., 2019)、音乐(Yang et al., 2021;Zhao and Guo, 2021)以及通用音频任务(Saeed et al., 2021;Gong et al., 2021;Niizumi et al., 2021;Wang et al., 2021c)中也引起了广泛关注。
端到端自动语音识别(ASR)
随着大规模数据集和高速计算资源的普及,端到端 ASR 模型(Amodei et al., 2016;Zhang et al., 2020b)逐渐达到了最先进水平,超越了基于 HMM-DNN 的混合系统(Abdel-Hamid et al., 2012;Hinton et al., 2012)。端到端 ASR 模型大致可以分为三类:连接时序分类(CTC;Graves et al., 2013)、RNN 转导器(RNN-T;Graves, 2012;Han et al., 2020;Gulati et al., 2020)和序列到序列模型(又称 Listen, Attend and Spell;Seq2seq;Chan et al., 2016;Dong et al., 2018;Watanabe et al., 2018)。CTC 模型在批量解码中速度极快;RNN-T 变体常用于实时系统中;而 Seq2seq 模型则更常见于离线应用场景。
近期,随着 Transformer 架构(Vaswani et al., 2017;Dong et al., 2018)在自然语言处理任务中取得成功,语音处理也逐步向 Transformer 及其变体(Zhang et al., 2020a;Baevski et al., 2020b;Gulati et al., 2020;Zhang et al., 2020b;Yeh et al., 2019)转变。
3 技术背景:Wav2Vec 2.0(W2V2)
W2V2 由一个波形特征提取器和一个上下文网络组成。波形特征提取器生成一系列连续的特征向量,每个向量编码音频中的一个短时间片段;上下文网络则将这些特征向量映射为上下文相关的表示。
预掩码特征被离散化,用作预测目标。上下文网络的目标是在被掩码的位置上,从一组负样本中识别出原始特征的离散版本,使用 InfoNCE 损失函数(van den Oord et al., 2018)。图2展示了 W2V2 的整体框架,包括 (a) 一个特征提取器、(b) 一个上下文网络、(c)一个可选的量化模块,以及 (d) 两个投影头。
**Wave Feature Extractor(WFE)**波形特征提取器 f ( ⋅ ) f(\cdot) f(⋅) 对原始波形音频输入 X = ( x 1 , . . . , x T i n p u t ) ∈ R T i n p u t × d i n p u t \mathbf { X } = ( \mathbf { x } _ { 1 } , . . . , \mathbf { x } _ { T _ { \mathrm { i n p u t } } } ) \in \mathbb { R } ^ { T _ { \mathrm { i n p u t } } \times d _ { \mathrm { i n p u t } } } X=(x1,...,xTinput)∈RTinput×dinput 进行编码和下采样(其中 d input = 1 d_{\text{input}} = 1 dinput=1,表示单通道音频),生成特征向量序列 Z = f ( X ) = ( z 1 , . . . , z T ) ∈ R T × R d f e a t \mathbf { Z } = f ( \mathbf { X } ) = ( z _ { 1 } , . . . , z _ { T } ) \in \mathbb { R } ^ { T \times \mathbb { R } ^ { d _ { \mathrm { f e a t } } } } Z=f(X)=(z1,...,zT)∈RT×Rdfeat。例如,W2V2 使用卷积型 WFE 将 16KHz 音频序列映射为 50Hz 的帧,其感受野大小为 400,步长为 320。每个特征向量编码原始信号中一个 25ms(即 1000 / 16000 × 400 1000/16000 \times 400 1000/16000×400)的时间窗口,步长为 20ms(即 1000 / 16000 × 320 1000/16000 \times 320 1000/16000×320)。压缩后的序列长度为 T = T input − 400 320 + 1 = T input − 80 320 T = \frac{T_{\text{input}} - 400}{320} + 1 = \frac{T_{\text{input}} - 80}{320} T=320Tinput−400+1=320Tinput−80。
上下文网络(Context Network) g ( ⋅ ) g(\cdot) g(⋅) 遵循与自然语言处理中的掩码语言模型(如 BERT(Devlin et al., 2018)或 RoBERTa(Liu et al., 2019))类似的原理。在预训练过程中,每个特征向量 z t z_t zt 会以预定义概率 p p p 被掩码并替换为一个可训练的掩码向量 m m m。例如,序列 Z = ( z 1 , z 2 , z 3 , z 4 , z 5 , z 6 , . . . , z T ) Z = (z_1, z_2, z_3, z_4, z_5, z_6, ..., z_T) Z=(z1,z2,z3,z4,z5,z6,...,zT) 可能变为 Z ′ = ( z 1 , m , m , z 4 , m , z 6 , . . . , z T ) Z' = (z_1, m, m, z_4, m, z_6, ..., z_T) Z′=(z1,m,m,z4,m,z6,...,zT)。上下文网络将这个掩码后的序列映射为上下文相关表示序列 C = g ( Z ′ ) = ( c 1 , . . . , c T ) ∈ R T × d feat C = g(Z') = (c_1, ..., c_T) \in \mathbb{R}^{T \times d_{\text{feat}}} C=g(Z′)=(c1,...,cT)∈RT×dfeat,以融合上下文信息。即使某个 z t z_t zt 被掩码替换为 m m m,我们仍期望对应的 c t c_t ct 能恢复 z t z_t zt 的信息,因为 c t c_t ct 包含来自周围未被掩码输入向量的信息。上下文网络通常采用 Transformer 架构实现(Vaswani et al., 2017;Gulati et al., 2020)。
量化模块(Quantization Module) q ( ⋅ ) q(\cdot) q(⋅) 将每个未掩码的特征向量 z t z_t zt 映射为量化形式 q t = q ( z t ) ∈ R d feat q_t = q(z_t) \in \mathbb{R}^{d_{\text{feat}}} qt=q(zt)∈Rdfeat,该量化向量作为掩码位置 t t t 的预测目标。该模块基于带有直通估计器的 Gumbel softmax(Gumbel, 1954;Jang et al., 2016;Maddison et al., 2014)。量化模块由 G G G 个码本组成,每个码本包含 V V V 个条目,共有 G × V G \times V G×V 个向量 e g , v ∈ R d feat G e_{g,v} \in \mathbb{R}^{\frac{d_{\text{feat}}}{G}} eg,v∈RGdfeat,其中 g ∈ { 1 , . . . , G } g \in \{1,...,G\} g∈{1,...,G}, v ∈ { 1 , . . . , V } v \in \{1,...,V\} v∈{1,...,V}。对每个组 g g g,将 z t z_t zt 分配到第 v v v 个条目的概率为
p g , v = exp ( W v g ⋅ z t / τ Q ) ∑ v ′ = 1 V exp ( W v ′ g ⋅ z t / τ Q ) p_{g,v} = \frac{\exp(W_{vg} \cdot z_t / \tau_Q)}{\sum_{v'=1}^V \exp(W_{v'g} \cdot z_t / \tau_Q)} pg,v=∑v′=1Vexp(Wv′g⋅zt/τQ)exp(Wvg⋅zt/τQ)
其中 W g ∈ R V × d feat W^{g} \in \mathbb{R}^{V \times d_{\text{feat}}} Wg∈RV×dfeat 是可训练矩阵, τ Q \tau_Q τQ 是量化温度。每组 g g g 将 z t z_t zt 分配给概率最大的条目 v g ∗ = arg max v p g , v v_g^* = \arg\max_v p_{g,v} vg∗=argmaxvpg,v。对应的嵌入向量 ( e 1 , v 1 ∗ , . . . , e G , v G ∗ ) (e_{1, v_1^*}, ..., e_{G, v_G^*}) (e1,v1∗,...,eG,vG∗) 被连接成单一向量 q t ∈ R d feat q_t \in \mathbb{R}^{d_{\text{feat}}} qt∈Rdfeat,构成量化特征序列 Q = ( q 1 , . . . , q T ) ∈ R T × d feat Q = (q_1, ..., q_T) \in \mathbb{R}^{T \times d_{\text{feat}}} Q=(q1,...,qT)∈RT×dfeat。
投影头(Projection Heads)包括两个线性投影头 p c ( ⋅ ) p_c(\cdot) pc(⋅) 和 p q ( ⋅ ) p_q(\cdot) pq(⋅),用于降低上下文表示 C C C 和量化特征 Q Q Q 的维度。对于被掩码替换成 m m m 的 z t z_t zt,希望 p c ( c t ) ∈ R d proj p_c(c_t) \in \mathbb{R}^{d_{\text{proj}}} pc(ct)∈Rdproj 与 p q ( q t ) ∈ R d proj p_q(q_t) \in \mathbb{R}^{d_{\text{proj}}} pq(qt)∈Rdproj 彼此相似。Baevski 等人(2020b)在原始符号中未区分 p c p_c pc 与 g g g、 p q p_q pq 与 q q q,但这里保持区分,因为它们在不同阶段发挥不同作用,且在下游微调前均被舍弃。
预训练目标 W2V2 在预训练损失中结合了对比损失和多样性损失:
L = L m + α L d ( 1 ) \mathcal { L } = \mathcal { L } _ { m } + \alpha \mathcal { L } _ { d }\quad(1) L=Lm+αLd(1)
对比损失 L m L_m Lm 的目标是使得投影后的输出 p c ( c t ) p_c(c_t) pc(ct) 与 p q ( q t ) p_q(q_t) pq(qt) 接近,同时与同一序列中其他位置 t ′ t' t′ 的 p q ( q t ′ ) p_q(q_{t'}) pq(qt′) 保持距离。W2V2 使用了 InfoNCE 损失(van den Oord et al., 2018):
L m = E t i s m a s k e d [ − log exp ( s i m ( p c ( c t ) , p q ( q t ) ) / κ ) ∑ q t ′ ∈ Q exp ( s i m ( p c ( c t ) , p q ( q t ′ ) ) / κ ) ] ( 2 ) \mathcal { L } _ { m } = \mathbb { E } _ { t \mathrm { \, i s \, m a s k e d } } \left[ - \log \frac { \exp ( \mathcal { sim } ( p _ { c } ( c _ { t } ) , p _ { q } ( q _ { t } ) ) / \kappa ) } { \sum _ { q _ { t ^ { \prime } } \in \mathbb { Q } } \exp ( \mathcal { sim } ( p _ { c } ( c _ { t } ) , p _ { q } ( q _ { t ^ { \prime } } ) ) / \kappa ) } \right]\quad(2) Lm=Etismasked[−log∑qt′∈Qexp(sim(pc(ct),pq(qt′))/κ)exp(sim(pc(ct),pq(qt))/κ)](2)
相似度函数定义为 sim ( a , b ) = a ⊤ b ∥ a ∥ ∥ b ∥ \text{sim}(a, b) = \frac{a^\top b}{\|a\|\|b\|} sim(a,b)=∥a∥∥b∥a⊤b,其中 Q Q Q 是包含正样本 q t q_t qt 和 K K K 个负样本的集合, κ \kappa κ 是温度参数。期望值仅在被掩蔽的位置上计算。多样性损失 L d L_d Ld 防止量化模块陷入退化映射(例如将所有输入都映射到同一个离散码),通过鼓励量化概率 p g , v p_{g,v} pg,v 在各个码本条目间均匀分布来实现:
L d = E t [ 1 − 1 G V ∑ g = 1 G exp ( − ∑ v = 1 V p g , v log p g , v ) ] ( 3 ) \mathcal { L } _ { d } = \mathbb { E } _ { t } \left[ 1 - \frac { 1 } { G V } \sum _ { g = 1 } ^ { G } \exp \left( - \sum _ { v = 1 } ^ { V } p _ { g , v } \log p _ { g , v } \right) \right]\quad(3) Ld=Et[1−GV1g=1∑Gexp(−v=1∑Vpg,vlogpg,v)](3)
温馨提示:
阅读全文请访问"AI深语解构" SEW:无监督预训练在语音识别中的性能-效率权衡