1.wav2vec2.0: A Framework for Self-Supervised Learning of Speech Representations
(1) 论文思路
基于vq2vec的思路,通过mask 在latent space 上的语音输入,训练一个contrastive task将真正的量化的latent变量表示与其他负例分辨出来(同时训练了量化过程的latent representation), 由此得到的representation, 基于少量的有标签数据fine-tuning就取得了不错的效果。相较于vq2vec无需接bert,将原先两个分开训练的模型合并成一个,是一个更好的工程实现。
(2) 模型架构
-
feature encoder
X->Z :将原始的raw audio经过多层的卷积输出latent speech representation. 具体包括:多个block 包含:卷积层+gelu层
其中第一个block中卷积后接group normalization 再接gelu. 在网络的output channels 添加layer normalization. -
contextualized representations with transformers
Z->C 相比与vq-wav2vec这里没有过量化,直接将连续的speech representation输入。 没有采用绝对的位置编码,而是采用kernel size 128和16 groups 的卷积来作为相对位置编码。 -
Quantization Module
通过乘积量化将z转为离散的表示。这里不同于vq-wav2vec(认为多组情况下码本共享向量更好),对于多组G,采用G个码本,最终的向量表征为从不同码本得到的表征的拼接, 然后再接一个线性变换。
从第g个码本上的第v个输入的计算概率可用上式计算。
(3) 训练细节
训练目标是使得所有被mask掉时间步学会将正确的量化后的q从K个distractors q ^ \hat q q^ 中分辨出来
-
Masking
对从 feature encoder 输出的连续latent speech representation 进行mask, 按照p=0.065的概率选择mask的 start index 的概率,mask 的span为10. 结果显示,大约49%的时间步被mask,并且mask span的平均长度为14.9, 或者为299ms. -
训练目标的表示
其中 Lm 代表contrastive loss
其中distractors 从同一个序列中的其他的mask time step 中均匀选取。
s
i
m
(
a
,
b
)
=
a
T
b
/
∣
∣
a
∣
∣
∗
∣
∣
b
∣
∣
sim(a,b) = a^Tb/||a||*||b||
sim(a,b)=aTb/∣∣a∣∣∗∣∣b∣∣
Ld 代表diversity loss
该loss 是为了平均每个码本的V个表征的使用。具体方法是,最大化平均softmax分布I (GxV)的熵,其中
p
ˉ
g
\bar p_g
pˉg 代表码本g softmax 分布的平均。
L2 正则是加在了feature encoder 最后一层的位于layer normalization之前的激活函数上, 为了稳定训练。
finetuning 部分对context network 结果接一层随机初始化的线性层,通过最小化ctc loss来训练。
(4) 实验配置与结果
预训练阶段采用base model 与 large model两种配置。
Language model 采用4-gram 和 transformer LM 两种。
在少量标注数据下训练的结果。
在960h有标注数据下的训练结果与supervised models/ semi-supervised model的对比结果。
在TIMIT phoneme recognition达到了新的 state of art. 减小了23%、29%的 PER.
连续输入(可保留更好的上下文信息)预测量化后的targets (有利于训练的稳定)的训练方法表现最好。
未来可能的改进:(1) 用seq2seq 模型替换 transformer +ctc; (2)用的声学模型的词表(characters) 与LM model 词表 (word based) 不匹配。(3)采用新的word pieces (4)做data balancing. (5) 引入 self -training.