自监督预训练(二) 语音部分
一、Predictive Coding系列
CPC[4][8]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jO8l1Mpl-1618622100070)(./1609662150808.png)]](https://img-blog.csdnimg.cn/20210417092248833.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3htZHhjc2o=,size_16,color_FFFFFF,t_70)
Contrastive Predictive Coding包含三部分:
- 编码网络
多层CNN,将输入wave进行降采样,映射为隐层表示 z t = g e n c ( x t ) z_t=g_{enc}(x_t) zt=genc(xt) - 自回归网络
多层GRU,从隐层表示提取context信息, c t = g a r ( z ≤ t ) c_t=g_{ar}(z_{\le t}) ct=gar(z≤t) - 打分函数
f k ( x t + k , c t ) = e x p ( z t + k T W k c t ) f_k(x_{t+k},c_t)=exp(z_{t+k}^TW_kc_t) fk(xt+k,ct)=exp(zt+kTWkct)
训练使用Noise-Contrastive Estimation(NCE)的损失函数,给定 N N N个随机样本 X = x 1 , . . . x N X={x_1,...x_N} X=x1,...xN,里面包含一个正样本 p ( x t + k ∣ c t ) p(x_{t+k}|c_t) p(xt+k∣ct)和 N − 1 N-1 N−1个负样本,优化的目标函数是:
L = l o g f k ( x t + k , c t ) ∑ x j ∈ X f k ( x j , c t ) L=log\frac{f_k(x_{t+k},c_t)}{\sum_{x_j\in X}f_k(x_j,c_t)} L=log∑xj∈Xfk(xj,ct)fk(xt+k,ct)
APC[5][7]
Autoregressive Predictive Coding主要用于无监督的语音表示学习,基本的思路是先进行无监督预训练,然后使用预训练的网络抽取特征用于下游任务。
APC的输入为语音特征,网络部分使用RNN和regression layer,训练的loss是通过历史 ( t 1 , t 2 , . . . , t k − 1 ) (t_1,t_2,...,t_{k-1}) (t1,t2,...,tk−1)来预测未来 t k + n t_{k+n} tk+n(这里预测第n帧特征的设计,是为了让模型可以学到更全局的结构信息):
∑ i = 1 T − n ∣ x i + n − y i ∣ \sum_{i=1}^{T-n}|{x_{i+n}-y_i}| i=1∑T−n∣xi+n−yi∣
文章在音素识别和说话人识别两个下游任务对比了APC和CPC的效果:
- 两个任务上面,APC优于CPC
- 最优n跟不同的任务以及RNN的层数有关,一般3-5
- 说话人任务使用底层RNN的输出作为特征更好,音素识别使用高层RNN的输出作为特征更好
MPC[6]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xpNiMBU-1618622100072)(./1609664736395.png)]](https://img-blog.csdnimg.cn/20210417092308518.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3htZHhjc2o=,size_16,color_FFFFFF,t_70)
Masked Predictive Coding的loss借鉴的BERT的Masked LM,网络使用transformer。
总结
前面CPC和APC类似于NLP领域的GPT模型,网络使用单向RNN,即使用截止到当前的所有输入来预测未来,MPC类似于NLP领域的BERT模型,网络使用transformer,使用全部的输入来预测某一段mask。
二、wav2vec系列
wav2vec系列的预训练方法是facebook AI Research团队的工作
wav2vec[9]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6kEVJSUb-1618622100074)(./1609667636945.png)]](https://img-blog.csdnimg.cn/20210417092323503.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3htZHhjc2o=,size_16,color_FFFFFF,t_70)
wav2vec基本思路类似于CPC,使用预训练网络提取特征,用于下游的语音识别任务。
框架中的两个encoder和context两个网络都是使用的多层CNN,训练loss采用contrastive loss。
vq-wav2vec[10]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kDBbRr8h-1618622100075)(./1609670059991.png)]](https://img-blog.csdnimg.cn/20210417092338361.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3htZHhjc2o=,size_16,color_FFFFFF,t_70)
vq-wav2vec在wav2vec的基础上做了进一步的改进,增加quantization模块,包括gumbel-softmax和K-means clustering两种量化方法。这样可以将输入进行离散化,这一步的目的是方便利用transformer的mask loss。整体训练流程包括三步:
- 训练vq-wav2vec
- 基于vq-wav2vec离散化的输出进一步进行BERT的预训练
- BERT预训练模型当做特征提取器,提取的特征当做AM的输入
所以本质上还是feature-based的预训练方法。
[11]进一步验证使用量化模块会带来明显的提升,说明了BERT的预训练非常依赖量化的步骤。fbank<量化的fbank 将vq-wav2vec的训练流程进一步改进和优化,整体训练流程如下: 所以本质上是finetune-based的预训练方法 对于小数据量(小于100小时)的任务,1350混合数据>1350英文预训练>>对应语种的预训练 对于大数据量(几百小时)的任务,对应语种的预训练>>1350混合数据>1350英语数据 对于小数据量(小于100小时)的unseen语种任务,混合数据(不包含该语种)>对应语种的预训练 结合思路: 从结果来看: 所以这种算法思路想要work,需要满足一个条件,即unlabel数据远远大于label的数据。 结合思路是: 文章有几个结论: [1].Unsupervised Cross-lingual Representation Learning for Speech Recognition [2].Self-training and Pre-training are Complementary for Speech Recognition [3].Pushing the Limits of Semi-Supervised Learning for Automatic Speech Recognition [4].Representation Learning with Contrastive Predictive Coding [5].An Unsupervised Autoregressive Model for Speech Representation Learning [6].IMPROVING TRANSFORMER-BASED SPEECH RECOGNITION USING UNSUPERVISED PRE-TRAINING [7].https://github.com/iamyuanchung/Autoregressive-Predictive-Coding [8].https://github.com/jefflai108/Contrastive-Predictive-Coding-PyTorch.git [9].WAV2VEC: UNSUPERVISED PRE-TRAINING FOR SPEECH RECOGNITION [10].VQ-WAV2VEC: SELF-SUPERVISED LEARNING OF DISCRETE SPEECH REPRESENTATIONS [11].EFFECTIVENESS OF SELF-SUPERVISED PRE-TRAINING FOR SPEECH RECOGNITION [12].wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representationswav2vec2.0[12]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sKJRwF49-1618622100076)(./1609671851730.png)]](https://img-blog.csdnimg.cn/20210417092352791.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3htZHhjc2o=,size_16,color_FFFFFF,t_70)
wav2vec2.0的应用
多语种任务[1]
与self-training的融合[2]
与noise student training的融合[3]
参考文献
微信公众号有最新技术分享,【欢迎扫码关注交流】

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
