GENERALIZED END-TO-END LOSS FOR SPEAKER VERIFICATION
论文名称
GENERALIZED END-TO-END LOSS FOR SPEAKER VERIFICATION
会议:ICASSP 2018
Abstract
在本文中,我们提出了一个新的损失函数,称为广义端到端(GE2E)损失,它使说话人验证模型的训练比我们以前的基于元组的端到端(TE2E)损失函数更有效率。与TE2E不同的是,GE2E损失函数更新网络的方式是强调在训练过程的每一步中难以验证的例子。此外,GE2E损失不需要一个初始阶段的例子选择。有了这些特性,我们带有新损失函数的模型将说话人验证的EER降低了10%以上,同时将训练时间降低了60%。我们还引入了MultiReader技术,它允许我们做领域适应--训练一个更准确的模型,支持多个关键词(即 "OK Google "和 "Hey Google")以及多种方言。
关键字: Speaker verification, end-to-end loss, MultiReader, keyword detection
Introduction
Background
说话人验证(Speaker verification)是根据一个说话人的已知话语(即注册话语)来验证该话语是否属于一个特定的说话人的过程,其应用包括语音匹配等。
根据用于注册和验证的语料的限制,说话人验证模型通常分为两类之一:文本依赖的说话人验证(TD-SV)和文本独立的说话人验证(TI-SV)。在TD-SV中,注册和验证语料的记录是受语音约束的,而在TI-SV中,注册或验证语料的记录没有词汇约束,暴露了较大的音素和语料持续时间的变化。在这项工作中,我们专注于TI-SV和TD-SV的一个特殊子任务,即全局密码TD-SV,其中验证是基于检测到的关键词,例如 "OK Google"。
在以前的研究中,基于i-vector的系统一直是TD-SV和TI-SV应用的主导方法。近年来,更多的工作集中在使用神经网络进行说话人验证,而最成功的系统使用端到端训练。在这样的系统中,神经网络的输出向量通常被称为嵌入向量(也被称为d-vectors)。与i-vectors的情况类似,这种嵌入可以用来在一个固定维度的空间中表示语料,在这个空间中,通常可以使用比较简单的方法可以用来区分说话者。
Tuple-Based End-to-End Loss
在我们之前的工作中,我们提出了基于元组的端到端(TE2E)模型,它模拟了训练过程中的运行时注册和验证的两阶段过程。在我们的实验中,TE2E模型与LSTM相结合,在当时取得了最佳性能。对于每个训练步骤,一个评估语料和个注册语料()的元组被送入我们的LSTM网络。,其中代表一个固定长度段的特征(Mel滤波器对数 log-mel-filterbank energies),和代表语料的说话人,可能等于也可能不等于。该元组包括来自说话人的一个话语和来自说话人的个不同的话语。如果和个注册的语料来自同一个说话人,即,我们称一个元组为正例,否则为负例。我们交替地生成正例和负例的元组。
对于每个输入元组,我们计算LSTM的L2归一化响应:。这里每个是一个固定维度的嵌入向量,由LSTM定义的序列-向量映射产生。元组的中心点代表从M个语料中建立的声纹,其定义如下。
相似性是用可学习的和的余弦相似性函数来定义的。
TE2E的损失最终定义如下。
这里是标准的sigmoid函数,在时等于,否则等于。TE2E损失函数鼓励在时采用较大的值,而在时采用较小的值。 考虑对正例和负例元组的更新--这个损失函数与FaceNet中的三联体损失非常相似。
Overview
在本文中,我们介绍了我们的TE2E结构的概括。这个新的结构以一种更有效的方式从不同长度的输入序列中构建元组,从而使TD-SV和TI-SV的性能和训练速度得到显著提升。本文的组织结构如下。在第2.1节中,我们给出了GE2E损失的定义;第2.2节是GE2E更有效地更新模型参数的理论依据;第2.3节介绍了一种叫做 "MultiReader "的技术,它使我们能够训练一个支持多个关键词和语言的单一模型;最后,我们在第3节中介绍了我们的实验结果。
GENERALIZED END-TO-END MODEL
广义端到端(GE2E)训练的基础是一次性处理大量的语料,其形式是包含N个说话人的批次,每个说话人平均有M个语料,如图1所描述。
Training Method
我们获取的语料来建立一个批次。这些语料来自个不同的说话人,每个说话人有个语料。每个特征向量()代表从说话人j语料i中提取的特征。
与我们以前的工作类似,我们将从每个语料中提取的特征送入一个LSTM网络。一个线性层被连接到最后一个LSTM层,作为网络最后响应的额外转换。我们把整个神经网络的输出表示为,其中代表神经网络的所有参数(包括LSTM层和线性层)。嵌入向量(d-vector)被定义为网络输出的L2归一化。
这里代表第个说话人的第个语料的嵌入向量。第个说话人的嵌入向量的中心点通过公式1定义为。
相似性矩阵被定义为每个嵌入向量与所有中心点()之间的缩放余弦相似度。其中和是可学习的参数。我们将权重限制为正数,因为我们希望余弦相似度较大时,相似度也较大。
提示
TE2E和GE2E的主要区别如下:
- TE2E的相似度(公式2)是一个标量值,定义了嵌入矢量和单个元组中心点之间的相似性。
- GE2E建立了一个相似度矩阵(公式5),定义了每个和所有中心点之间的相似度。
图1用不同颜色表示的特征、嵌入向量和来自不同说话人的相似性分数来说明整个过程。
在训练过程中,我们希望每个语料的嵌入与该说话人的所有嵌入的中心点相似,同时又远离其他说话人的中心点。如图1中的相似度矩阵所示,我们希望彩色区域的相似度值大,而灰色区域的值小。图2以不同的方式说明了同样的概念:我们希望蓝色的嵌入向量接近自己说话人的中心点(蓝色三角形),而远离其他中心点(红色和紫色三角形),尤其是最接近的那个(红色三角形)。给定一个嵌入向量,所有的中心点,以及相应的相似性矩阵,有两种方法来实现这个概念。
- Softmax 我们在()上设置一个softmax,如果,就使输出等于,否则就使输出等于。因此,每个嵌入向量的损失可以定义为:
这个损失函数意味着我们将每个嵌入向量推到其中心点附近,并将其拉离所有其他中心点。
- Contrast 对比损失在正例对和大部分积极的负例对上定义为:
其中是标准的sigmoid函数。对于每个语料,恰好有两个成分被添加到损失中:
- 一个正例的成分,它与嵌入向量和其真实说话人的声纹(中心点)之间的积极匹配有关。
- 一个困难的负例成分,它与嵌入向量和所有假说话人中相似度最高的声纹(中心点)之间的负面匹配有关。
在图2中,正项对应于将(蓝圈)推向(蓝三角)。负项对应于将(蓝圈)从(红三角)拉开,因为与相比,与更相似。因此,对比损失使我们能够关注嵌入向量和负中心点的困难对。
在我们的实验中,我们发现GE2E损失的两种实现方式都很有用:对比度损失对TD-SV来说表现得更好,而softmax损失对TI-SV来说表现得略好。
此外,我们观察到,在计算真实说话人的中心点时,去除可以使训练稳定,并有助于避免琐碎的解决方案。因此,虽然我们在计算负相似度(即)时仍然使用方程1,但当时,我们改用方程8。
结合公式4、6、7和9,最终的GE2E损失LG是相似度矩阵上所有损失的总和()。
Comparison between TE2E and GE2E
考虑GE2E损失更新中的一个批次:我们有个说话人,每个说话人有个语料。每个单步更新将把所有的嵌入向量推向它们自己的中心点,并把它们拉离其他中心点。
这反映了TE2E损失函数中所有可能的元组对每个所发生的情况。假设我们在比较说话人时随机选择说话人的个语料。
- 正元组(positive tuples): ,其中,且。一共有个正元组。
- 负元组(negative tuples): ,其中,,且。对于每个,我们必须与所有其他个中心点进行比较,组对比中,每一组都包含个元组。
每个正元组与一个负元组相平衡,因此总数量是正负元组的最大数量乘以2。因此,TE2E损失中的元组总数为:
等式11的下限发生在时。因此,在我们的GE2E损失中,的每次更新与我们的TE2E损失中的至少步相同。上述分析显示了为什么GE2E比TE2E更有效地更新模型,这与我们的经验观察一致。GE2E在更短的时间内收敛到更好的模型(详见第3节)。
Training with MultiReade
考虑以下情况:我们关心的是模型在一个有小数据集的领域中的应用。同时,我们有一个更大的数据集,在一个类似但不相同的领域。我们想在的帮助下,训练一个在数据集D1上表现良好的单一模型。
这与正则化技术类似:在正常正则化中,我们使用来正则化模型,但在这里,我们使用进行正则化。当数据集没有足够的数据时,在上训练网络会导致过拟合。要求网络在上也有合理的表现,有助于使网络正规化。
这可以被概括为结合个不同的,可能是极不平衡的数据源。。我们给每个数据源分配一个权重,表示该数据源的重要性。在训练过程中,每一步我们从每个数据源中获取一批/一串语料,并计算出综合损失:,其中每个是公式10中定义的损失。
EXPERIMENTS
在我们的实验中,特征提取过程与[6]相同。音频信号首先被转换为宽度为25ms、步长为10ms的帧。然后,我们提取40维的Mel滤波器对数作为每一帧的特征。对于TD-SV的应用,同样的特征被用于关键词检测和说话人验证。关键词检测系统将只把包含关键词的帧传递给说话者验证系统。这些帧形成一个固定长度(通常为800ms)的片段。对于TI-SV应用,我们通常在语音活动检测(VAD)之后提取随机的固定长度段,并使用滑动窗口方法进行推理(在第3.2节中讨论)。
我们的生产系统使用层的LSTM和投影。嵌入向量(d-vector)的大小与LSTM的投影大小相同。对于TD-SV,我们使用个隐藏节点,投影大小为。对于TI-SV,我们使用个隐藏节点,投影大小为。在训练GE2E模型时,每个批次包含个发言人,每个发言人有个语料。我们用SGD训练网络,使用初始学习率,每步减少一半。梯度的L2-norm被剪切为,LSTM中投影节点的梯度比例被设置为。关于损失函数中的比例因子,我们也观察到一个好的初始值是,对它们较小的梯度比例有助于平滑收敛。
Text-Dependent Speaker Verificatio
虽然现有的语音助手通常只支持一个关键词,但研究表明,用户更喜欢同时支持多个关键词。对于Google Home上的多用户,同时支持两个关键词,"OK Google "和 "Hey Google"。
在多个关键词上启用说话人验证,介于TD-SV和TI-SV之间,因为注册语音既没有被约束到一个短语,也没有完全不受约束。我们使用MultiReader技术(第2.3节)解决这个问题。与更简单的方法相比,MultiReader有一个很大的优势,例如直接将多个数据源混合在一起。它可以处理不同数据源大小不平衡的情况。在我们的案例中,我们有两个数据源用于训练:
- 一个来自匿名用户查询的 "OK Google "训练集,有的语料和的说话者;
- 一个混合的 "OK/Hey Google "训练集,是人工收集的,有的语料和的说话者。第一个数据集比第二个数据集在语料数量上大倍,在说话者数量上大倍。
为了评估,我们报告了四种情况下的等效错误率(EER):用任一关键词注册,并对任一关键词进行验证。所有的评估数据集都是从个说话人那里手工收集的,每个说话人平均有个注册语料和个评估语料。结果显示在表1中。我们可以看到,MultiReader在所有四种情况下都带来了大约的相对改进。
我们还在一个更大的数据集中进行了更全面的评估,该数据集收集自个不同的说话人和环境条件,来自匿名的日志和人工收集。我们对每个说话人平均使用个注册语料和5个评估语料。表2总结了使用和不使用MultiReader设置训练的不同损失函数的平均EER。基线模型是一个具有个节点的单层LSTM,嵌入向量大小为。第二行和第三行的模型结构是层LSTM。比较第二行和第三行,我们看到GE2E比TE2E好左右。与表1类似,这里我们也看到,该模型在MultiReader下的表现明显更好。虽然表中没有显示,但值得注意的是,GE2E模型的训练时间比TE2E少了大约。
Text-Independent Speaker Verification
对于TI-SV训练,我们将训练语料分成更小的片段,我们称之为部分语料。虽然我们不要求所有部分语料的长度相同,但同一批次的所有部分语料必须具有相同的长度。因此,对于每一批数据,我们在帧内随机选择一个时间长度,并强制要求该批数据中的所有部分语料的长度为(如图3所示)。
在推理过程中,对于每个语料,我们应用一个固定大小的滑动窗口帧,有的重叠。我们为每个窗口计算d-vector。最终的语料向量是通过对窗口向量的d-vector进行L2归一化,然后取元素向量的平均值产生的(如图4所示)。
我们的TI-SV模型是在来自发言人的约万个语料上训练的,这些语料是从匿名的日志中提取的。为了评估,我们使用了额外的个说话者,每个说话者平均有个注册语料和个评估语料。表3显示了不同训练损失函数之间的性能比较。第一列是预测训练数据中所有说话人标签的softmax。第二列是用TE2E损失训练的模型。第三列是用GE2E损失训练的模型。如表中所示,GE2E的表现比softmax和TE2E都好。EER的性能改进大于。此外,我们还观察到,GE2E的训练速度比其他损失函数快倍左右。
CONCLUSIONS
在本文中,我们提出了广义的端到端(GE2E)损失函数,以更有效地训练说话者验证模型。理论和实验结果都验证了这种新型损失函数的优势。我们还引入了MultiReader技术来结合不同的数据源,使我们的模型能够支持多种关键词和多种语言。通过结合这两种技术,我们产生了更准确的说话人验证模型。