语音表征 | CPC:基于对比预训练的语音表征
知更鸟 Lv4

参考资料:


CPC (对比预测编码,Contrastive Predicting Coding)提出于 2018 年,当时关于无监督预训练的工作还比较少,CPC 是一种基于对比学习思想的无监督预训练方法,是无监督/自监督学习中重要的开创性的工作之一。

CPC 论文提出了一种通用的无监督学习方法,能够从高维数据(语音、图像、文本等)中抽取出有用的表征信息。论文工作最核心的思想是:在神经网络建模出的隐含空间内,使用建模能力较强的自回归模型,以未来的信息作为预测的目标,来指导进行无监督学习。论文使用一种概率的对比损失函数,帮助模型在隐含空间内,捕捉到对于预测未来最重要最有用的信息。论文同时还使用了负采样的方法。CPC 之前的工作基本都是关注于某一模态(语音、图像、文本)进行评测,而 CPC 能够在以上模态都得到很强的结果。

1. 论文介绍

本文的标题强调的是用 CPC 进行表征学习 (Representation Learning),表征学习最大的难点在于:使用数据的高效性、学习到的表征的稳健性和泛化性。

为了达到稳健性和泛化性,表征学习不应该只关注于某一个具体的监督学习任务。基于有监督学习的表征学习往往就具有这个缺陷。比如预训练一个图像分类的模型,学习到的隐层表征在其他的图像分类任务上能够有很好的迁移效果,但是这些表征缺乏用于非分类任务的细节信息(比如颜色等),所以在其他图像任务(比如图像描述)上表现不好。同样的,对于语音的任务,针对语音识别学习到的表征在说话人分类/音乐风格分类等任务上,也不具有很好的迁移效果。因此,无监督学习面向的是更加稳定和泛化性更好的表征学习

无监督学习最惯常的策略是预测「未来」「缺失」或者「上下文」的信息,最常见的应用是 word2vec 学习词级别表征向量的工作,比如 skip-gram 是给定一个词预测「上下文」,CBOW 是给定上下文,预测「缺失」的词。这类策略能够取得不错效果的原因:使用相关信息预测「未来」「缺失」或者「上下文」的值时,是条件依赖于相同的共享的 high-level 隐含信息的。

CPC 论文的主要工作包括:

  1. 将高维数据压缩到一个显著更小的隐层向量空间内,能够使得预测任务的建模更容易;
  2. 在隐含空间内使用更强大的自回归模型,能够进行未来更长时间范围 (step) 的预测任务
  3. 将 word embedding 已经使用的 NCE (噪声对比估计,Noise Constrastive Estimation) 方法引入到损失函数中,使得模型能够端到端训练;
  4. 将提出的 CPC 模型应用于不同的数据模态,包括:图像、语音、自然语言甚至是强化学习领域,都达到了明显优于当时其他方法的效果。

2. 对比预测编码 (CPC)

2.1 CPC 提出的动机

CPC 的主要思想是在不同部分的高维数据中,对底层共享的信息进行编码,同时去除一些局部噪声和低级别的信息。在高维的时间序列建模任务中,预测下一个时间步 (step) 是对局部信息的建模,当预测更远的未来的信息时,共享的信息量会变得更低,模型需要学习到更全局的信息。这些横跨更长时间步的信息通常对应到更明确的物理意义,比如:语音的音素语调、图像的物体、书中的故事线索等。

对于预测未来的高维数据,MSE/交叉熵等损失函数不太有用,需要使用一些条件生成模型来对数据细节进行重建建模,但是这些条件生成模型计算量过大,会过分关注数据内的复杂关系,而忽略了上下文 context。

举例来说:一张图片通常包含成千上万比特的信息,但是 high-level 的表征(比如类别信息)包含很少(1024个类别才10比特)的信息。论文认为,直接基于现有 context = c,通过 p(x|c) 建模未来的目标 x 这个任务,用于抽取 c 和 x 之间的共享信息是非最优的方法。所以论文提出,将 x 和 c 都通过非线性映射到一个更低维的向量表征空间,映射时最大程度保留 c 和 x 之间的互信息:

简而言之,CPC 希望通过最大化映射后的 c 和 x 之间的互信息,以此提取出共享的信息

2.2 CPC 结构及方法

image

如上图所示,encoder 将每个时刻输入的映射得到,可以加入一些降采样的方式(降低时间上的分辨率);然后基于,使用一个自回归模型 进行建模。对于 t 时刻,自回归模型使用所有的得到一个 context 向量。如前所述,论文没有使用自回归模型直接预测未来的,而是建模了一个 density ratio (密度比) f 用于保留之间的互信息。

image

注意:此处的 f 即为密度比,不需要归一化。论文采用的密度比函数是对数双线性的模型,其中是 encoder 从得到的。k 代表预测未来 k 步之后,论文对于不同的步长 k,采用不同的参数来建模。

image

对于 CPC 模型,或者都可以作为下游任务的表征。具体的使用方式包括:

  • 对于语音识别任务的感受野可能不足够捕捉音素层级内容的信息,包含了历史的 context 的信息,所以常用作为表征
  • 对于其他的序列任务,不需要依赖额外的 context,此时可能效果更好;
  • 如果下游任务对于一个序列只需要一个向量表征,比如图像分类,常常将所有位置的或者取平均。

论文相当于提出了一个系统的预训练框架,任何 encoder/任何自回归模型都可以引入其中。对于 2018 年发表的本文来说,encoder 选择的是多层 Resnet 卷积构成的网络,自回归模型选择的是 GRU。自回归模型还可以选择带有 mask 的卷积神经网络或者是基于自注意力机制 self-attention 的方法。

2.3 基于 NCE 的损失函数

CPC 的损失函数是基于 NCE (噪声对比估计,Noise Constrastive Estimation) 的,论文称之为 InfoNCE。

给定集合包含 N 个随机样本,其中 1 个是来自于的正样本,N-1 个是来自于的负样本。由此得来,CPC 的优化目标为:

实际上可以讲这个损失函数视为二分类的交叉熵损失函数,最小化损失函数等价于最大化正样本的概率。

论文在附录中证明了,使用 InfoNCE 作为优化目标,实际上是近似等价于最大化 c 和 x 之间的互信息:

image

image

证明的结论是:image,最大化互信息,相当于最小化损失函数

参考的博客原文:https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html

在 NCE 的损失函数之下,CPC (Contrastive Predictive Coding) 中的 Contrastive 对比一词,表达的正是正样本和负样本之间的对比。在希望通过 encoder 学习得到的表征空间中,增大某样本与其相近的正样本之间的相似度,降低其与负样本之间的相似度。此处的相似度,在 CPC 的工作中,是通过使用一个双线性的 score 函数来评价。

3. 实验

论文在语音、图像、自然语言处理及强化学习四个方向上都进行了 CPC 的有效性验证。此处主要说明音频领域上的使用方法。

  • 数据集:

librispeech 的 100 小时子集。使用 kaldi 获取了音素级别的强制对齐结果;说话人数目:251。

  • 模型结构:

encoder 采用的跨步的(strided)卷积网络,输入是 16kHz 的原始波形。卷积的具体参数:5 层,stride 分别为 [5, 4, 2, 2, 2],相当于降采样了 160 倍;卷积核大小分别为 [10,8,4,4,4];隐层结点数均为 512;激活函数使用的是 ReLU。对于 16kHz 的音频,降采样 160 倍后,相当于每秒对应 100 个输入,此时的帧移可以认为是 10ms,和 Kaldi 使用的帧移相同,因此可以和 Kaldi 逐帧的音素对齐结果保持一致。

自回归模型采用的是 GRU,隐层结点数为 256。GRU 在每帧的输入是 encoder 输出的即为前文所述的 context c。基于 context c,训练时需要是未来 k = 12 帧的 z,采用的损失函数为对比损失函数 InfoNCE。

训练时的音频片段长度为 20480 个采样点的窗长;Adam (lr=2e-4) 的优化器;8卡,batch_size=8;一共经过了大约30万次迭代。

实验结果一:分类准确率随 k 的变化

image

预测未来时不同 k 对应的准确率如上图所示,预测任务随着预测范围更远而变得更难,也与预期的相一致。

实验结果二:音素分类

对于 CPC 抽取的帧级别的表征,论文使用音素分类任务进行效果的验证。在 CPC 中 GRU 输出的 context c 之上,增加一层线性的分类器,验证抽取的表征的线性可分程度。注意训练线性分类器时,CPC 网络的参数是固定不动的,只相当于一个特征抽取器。线性分类器使用的是多类别的 LR (logistic regression)。

对比实验分别是:baseline 使用 MFCC 特征作为线性分类器输入;天花板,将 CPC 模型和线性分类器的参数进行端到端的联合训练;对比实验,CPC 抽取的特征不是完全线性可分的,所以在线性分类器之前增加了一层隐层,提供非线性变换。

image

实验结果三:说话人识别

CPC 同样能够达到端到端的有监督学习相近的结果。将 CPC 表征向量进行 tSNE 作图后可以看出,CPC 体现出很好的说话人表征效果。

image

实验结果四:CPC 表征效果的消融实验

image

影响因素一:预测的时间范围 k

  • 在 k=2 至 12 时,音素分类效果随着 k 的增大而更优,说明了较长的预测范围对于表征的学习有正向作用;但是 k 继续扩大至 16 时,没有进一步的正向作用;

影响因素二:训练时的负样本选择策略

  • mixed speaker:负样本来自不同的说话人
  • same speaker:负样本来自同一个说话人
  • mixed speaker (excl.):负样本来自不同的说话人,但是不包含当前的序列
  • same speaker (excl.):负样本来自同一个说话人,但是也不包含当前的序列
  • current sequence only:负样本只来自于当前的序列,这个也满足所有的负样本来自同一个说话人

结论:负样本来自同一个说话人 > 负样本仅来自当前的序列 > 负样本来自不同的说话人 = 负样本来自除当前序列外的同一个说话人的音频 > 负样本来自当前序列外的不同的说话人

总结:CPC 将对比预测损失函数和基于自回归的预测编码相结合,基于无监督实现了更优的表征学习方式,后续引申出诸多成功的研究成果。