续上一篇文章说话人识别中PLDA的背景与训练,在这里,我进一步把PLDA的打分过程进行推演。说实话,two-covariance PLDA打分的数学部分,比训练模型部分还要复杂和困难;这部分也鲜有博客或文章去分析,但能理解一次,对于提升back-end算法是有帮助的。
接下来,正文中关键公式的编号将延续上一篇文章的排序,变量代表的含义将重新赋予。
在论文《Probabilistic Linear Discriminant Analysis》(后叫[论文])里的第3节第3段,提到训练过程中重估了的类间方差和类内方差,要求前者是半正定(positive semi-definite),后者
是正定(positive definite)。根据线性代数,两者可以被同时对角化,能通过solving a generalizaed eigenproblem,存在一个非奇异矩阵
和对角矩阵
,使得
转换为单位矩阵
:

在Kaldi的PLDA参数中,保存的是上面和
两个参数,而不是直接保存类间方差
和类内方差
,目的是方便随后的高斯分布假设,和能快速套用affine公式映射得到相应因子,这对于百万级库存比对是很有意义的。另外,PLDA的打分过程,是利用训练模型进行规整转换和计算LLR的,没有额外与测试集(注册集vs验证集)相关的先验信息可利用,是开集任务。
接着,假设存在矩阵,其满足:

所以,任一原始样本,会满足:
其中,
是全部
的均值向量;
可看作映射空间;
是
映射后,成为任一类别(不是指训练集中的已知类别)的一个因子样本。
对于因子样本的所属类别,假设存在类别中心
。此时,我们要做出一个假设,假设测试集的样本
都接近于高斯分布,会有
和
都满足高斯分布:

到这里点评一下,由于two-convariance PLDA打分的假设,原始测试集样本如果被规整到满足高斯分布,则PLDA效果会变得很显著;如果被规整后的方差接近于训练集的,则cross-domain问题会进一步减轻(二阶统计量更关键)。
接着,在我们计算LLR之前,我们需要先推导出[论文]第3.1节的公式(3)。根据贝叶斯公式,

其中,
所以,

其中,等符合高斯分布,有各自对应的概率密度函数:

代入式子[8],可推导

对照标准的高斯分布概率密度函数,例如公式[9],能得到均值和方差为:
能证[论文]第3.1节的公式(3):
好了,得到上式之后怎么去计算LLR呢?
PLDA,具有很好的泛化性,能推理出未在训练集出现过的类别。测试集存在一众的类别,这些类别都是在注册集中已知的,假设存在已被转换后的注册样本
,
,代表第
个注册模型;对于验证集的某一样本因子
,我们可以计算出给定
的情况下,
的极大似然概率,也就是
,这是我们的目的。
另外,在说话人识别中,每位注册人是允许有多句不等的注册音频,在Kaldi的ivector-plda-scoring中也有--num-utts参数去说明spk_xvector.scp的每个说话人向量分别代表着多少条注册音频去平均所得。所以,当注册模型有
条独立无关的注册音频,则表示为:
其均值向量spk_xvector.ark是:
并有:

同理可证,与
之间的概率分布如下:

对照标准的高斯分布概率密度函数,能对公式[10]进一步完善:
有了上式[11],就可以去证明[论文]第3.1节的公式(4)的变体。
对于待识别因子与注册因子
,两者的似然概率
满足高斯分布,其均值与方差用分部积分和公式[11]继续推导,均值如下:

方差如下:
这里还有一个要独立计算的部分:

其中,能看作是
,其可计算如下:
代回公式[12],继续推导:

所以,似然概率的方差是:

综上,可证[论文]第3.1节公式(4)的变体:
上式表达,给定某一组注册模型,计算出
的似然概率。对于说话人识别的打分问题,我们要做出两种假设,一是假设注册vs验证是同一个class,第二个是它们属于不同class,对假设一和假设二做比,就是LLR的最终结果,如下:
其中,分子联合概率以下式计算可得:
点评,用PLDA打分的话,同一对的注册vs验证替换为验证vs注册的话,分数是会有些许波动,以百分制计算波动在1分以内;这是因为有这个类别因子的影响。
文章来源知乎,本文作者:Leon晋
