带你了解 3 类预训练语音模型预测方法
摘要:在调研多篇论文后,笔者发现预训练语音模型的预测方法基本可以分为以下 3 类:<1>用前文预测当前及后文(自回归)<2> 随机 mask 一些帧并预测 <3> 用两侧上下文预测中间帧。
本文分享自华为云社区《预训练语音模型调研小结》,作者: Hudson。
在调研多篇论文后,笔者发现预训练语音模型的预测方法基本可以分为以下 3 类:<1>用前文预测当前及后文(自回归)<2> 随机 mask 一些帧并预测 <3> 用两侧上下文预测中间帧。下文会按照这三类来介绍预训练语音模型的方法。
1.用前文信息预测当前信息及后文信息
(1)CPC & Modified CPC
CPC(Contrastive Predictive Coding)[1] 是预训练语音模型中较早提出的模型。它的模型架构如下图所示。
首先,语音信号被分成段输入到 CNN 模型,用于抽取特征,CNN 层的输出 Z 再作为 GRU 层的输入,拿到带有时序信息的输出 C,然后用当前时刻 t 的带有时序信息的 Ct(见过序列前面的信息),来预测后续 k 个时刻的 CNN 层输出 Zt+k。Loss 的是一个 contrastive loss,它的公式如下图所示。
这个 loss 看起来复杂,其实原理很简单,就是想让基于 Ct 的预测值更接近 Zt+k (分子),而更远离其他的 CNN 层输出 Z,即 negative sample (分母)。最小化整体的 loss,会使分子最大化,分母最小化。这就是 CPC 训练的原理。
Modified CPC [2] 是对 CPC 的一个改进。其改进主要分成以下两点:<1> 由于 batch normalization 会破坏 sequence 的信息,他们用 channel wise normalization 替代 batch normalization。<2> 对模型的一些改进,包括将从 Ct 预测 Zt+k 的网络由 linear layer 替换成一层 transformer;将 CNN 层的维度从 512 变为 256 (memory 小了但 performance 不变); 用 LSTM 替换 GRU。
(2)APC & VQ-APC
APC(Autoregressive Predictive Coding)[3] 以及它的改进,VQ-APC(Vector Quantization- Autoregressive Predictive Coding)[4] 也是一组基于自回归的预训练语音模型,它们的模型架构如下图所示。APC 没有 VQ-layer,而 VQ-APC 添加了一个 VQ layer。
APC 模型的输入是 80 维的 log Mel spectrogram 特征,其模型也十分简单,就是一个 3 层的 LSTM。训练的 loss 如下图所示。
这里我们可以看出,这就是一个简单的 L1 loss,但其中不同的是,它并不是同一时刻的 xi 和 yi 之间做 L1 loss,而是用 xi+n 和 yi 之间做 L1 loss。也就是说,它希望能用第 i 时刻的信息去预测 n 个时刻后的信息,这么做的原因是希望 LSTM 不陷入 Local information,从而可以 infer 更多的全局信息(global structure)。
VQ-APC 是在 APC 的基础上加了一个 VQ layer。VQ,向量量化,可以简单的理解为对无限种可能的连续向量的一个聚类,让语音的表征 vector 也变为有限种可能,类似于 NLP 中有限数量的单词表征(一个单词一个表征,单词数量有限)。实验结果标明,在 APC 模型的 LSTM 层中间加入 VQ layer 会是最终学到的向量表征更好,在下游任务(如 phone classification; speaker classification)中表现出更好的性能。
2. 随机 mask 一些帧并预测
(1)VQ-wav2vec & wav2vec2.0
前面介绍的 4 个模型都是基于自回归的思想,用前文预测后文信息,模型也是基于 LSTM 或者 GRU 模块来实现。随着 transformer 在越来越多的任务上被证实有更优越的性能,很多预训练语音模型的研究人员也把目光投入到了 transformer 模型上。VQ-wav2vec [5] 就是其中一个较早的尝试。下图是 VQ-wav2vec 模型架构图。
原始音频片段首先输入到 CNN 层提取特征,再做一个 VQ,最后将 VQ 的 output 输入下一个 CNN 层再进行一次特征的抽象。最后用 CNN 层在第 i 个时刻的输出 Ci 来预测后面 k 个时刻 VQ 的输出 Zi+k,并做一个 contrastive loss,目的是让 Ci 能更好的预测 Zi+k,而更远离 negative sample(不是 Zi+k 的其他 Z)。训练完毕后,将 VQ 层的输出作为后面 BERT 的输入,随机 mask 掉一些帧并预测,训练一个 BERT 模型,得到拥有时序信息的表征。最后将这个信息作为声学模型的输入,进行下游任务。
上面的模型是把 BERT 和 VQ-wav2vec 单独训练的,先训练 VQ-wav2vec,再训练 BERT 模型。而 wav2vec2.0 [6] 对 VQ-wav2vec 整体框架进行了改进,将 VQ-wav2vec 模型和 BERT 模型放在一起做一个 jointly training,达到了非常好的效果(目前的 state-of-the-art)。Wav2vec2.0 的模型框架如下图所示。
首先,音频也是分段输入 CNN 层提取特征,然后一方面输入到 VQ 层,另一方面随机 mask 掉一些帧然后输入到 Transformer 层提取 context representation C。训练的 loss 如下图所示。
Loss 是两部分 loss 的叠加。第一部分 loss 是 contrastive loss,目的就是让同一时刻的 Context representation (Ct)与 Quantized representation (Qt) 的 similarity 越大越好,Ct 与其他时刻的 Quantized representation 的 similarity 越小越好。第二部分 loss 是 diversity loss,这个 loss 是用于鼓励各个 codeword(VQ 操作后的离散的类别 vector,类似于 NLP 中的词典中的一个词)被使用的概率相同。训练好模型后,context representation 可以被用于做下游任务。
(2)Mockingjay & Audio Albert & TERA
除上述两个模型外,还有一个系列的模型(均来自台湾大学语音组)也是基于 transformer 模型,用随机 mask 掉一些帧并预测的方式做语音模型的预训练。第一个工作是 Mockingjay [7],其模型框架如下图所示。首先,提取一些 handcrafted feature(fMLLR, MFCC, FBank)并做 random masking,然后经过下采样后,输入到 transformer 模型中,来预测 mask 掉的帧,并做 L1 loss。
在 Mockingjay 模型的基础上,Audio Albert 模型 [8] 进行了些许改进。下图是 Audio Albert 和 Mockingjay 模型的区别。可以看出,Audio Albert 基于 Mockingjay 的改进,是把多层的 transformer 都共享参数。其他地方没有任何区别。通过这样的改进,效过和不共享参数接近(comparable),但是确可以显著的降低参数量。
还有一个基于 Mockingjay 改进的模型 —TERA (Transformer Encoder Representations from Alteration)[9],是在输入端上,对输入进行了一些 alteration,从而达到提升预训练模型效果的作用。下图是 TERA 如何进行输入的 alteration 的示意图。Alteration 主要分为 3 种,在时间维度上 mask,在特征维度上 mask,以及对于整个 segment 加一些高斯白噪声。
3. 用两侧上下文信息预测中间帧
除上述两种预训练方式外,还有一种预训练方式 – 用两侧的信息预测中间帧的信息,NPC(Non-Autoregressive Predictive Coding)[10] 模型就是用这种方式进行的预训练。下图为 NPC 的模型框架。
输入是 MFCC (80dim),但 NPC 模型训练时,输入模型的并不是整个 sequence,它只需要输入被 mask 掉的帧前后的一些帧(例如前后各 10 帧),而被 mask 掉的帧一般为 3 帧。Mask 掉 3 帧而不是 1 帧,可以防止模型直接复制 mask 点的相邻点(xt-1,xt+1)的值作为当前时刻输入 xt 的预测值,从而防止预测值 yt 并没有相对于 xt 的信息增益。被 mask 的 input 输入模型后,经过几层 ConvBlock,每层 ConvBlock 也会 mask 中间的帧,且会层层递增,目的是防止输出 yt 见到任何 mask size 内的数据。经过几层 ConvBlock 后的数据会加到一起得到 ht(当前时刻做 VQ 之前的 hidden representation),ht 再经过一个 VQlayer 和一个 linear layer,最后预测中间帧 xt,loss 用 L1 Loss。这个模型的效果比 autoregressive 的模型都要好,况且可以显著的减小模型的大小。
总结
预训练语音模型是现在语音界十分热门的一个科研方向。目前来看,基于 transformer 的模型要好于早期基于 LSTM 或 GRU 的模型。若追求性能,那目前公认最好的预训练语音模型应该是 wav2vec 2.0。但如果追求速度,那 Audio ALBERT,以及 NPC 模型都是不错的选择,这两个模型能够在保证 comparable 的性能的情况下,减小模型的大小并提升模型的速度。相信不久的将来,随着深度学习技术的进一步发展,预训练语音模型无论在性能,还是在速度上,都会迎来新的提升。
Reference
[1] Oord, Aaron van den, Yazhe Li, and Oriol Vinyals. “Representation learning with contrastive predictive coding.” arXiv preprint arXiv:1807.03748 (2018).
[2] Riviere, Morgane, et al. “Unsupervised pretraining transfers well across languages.” ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2020.
[3] Chung, Yu-An, et al. “An unsupervised autoregressive model for speech representation learning.” arXiv preprint arXiv:1904.03240 (2019).
[4] Chung, Yu-An, Hao Tang, and James Glass. “Vector-quantized autoregressive predictive coding.” arXiv preprint arXiv:2005.08392 (2020).
[5] Baevski, Alexei, Steffen Schneider, and Michael Auli. “vq-wav2vec: Self-supervised learning of discrete speech representations.” arXiv preprint arXiv:1910.05453 (2019).
[6] Baevski, Alexei, et al. “wav2vec 2.0: A framework for self-supervised learning of speech representations.” arXiv preprint arXiv:2006.11477 (2020).
[7] Liu, Andy T., et al. “Mockingjay: Unsupervised speech representation learning with deep bidirectional transformer encoders.” ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2020.
[8] Chi, Po-Han, et al. “Audio albert: A lite bert for self-supervised learning of audio representation.” 2021 IEEE Spoken Language Technology Workshop (SLT). IEEE, 2021.
[9] Liu, Andy T., Shang-Wen Li, and Hung-yi Lee. “Tera: Self-supervised learning of transformer encoder representation for speech.” IEEE/ACM Transactions on Audio, Speech, and Language Processing 29 (2021): 2351-2366.
[10] Liu, Alexander H., Yu-An Chung, and James Glass. “Non-autoregressive predictive coding for learning speech representations from local dependencies.” arXiv preprint arXiv:2011.00406 (2020).
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/a854bc8863df2e12705731a40】。文章转载请联系作者。
评论