机器学习Bob|EM算法的应用

参考资料

相应工具包:bob.learn.em

K-Means

bob.learn.em.KMeansMachine,bob.learn.em.KMeansTrainer

GMM

bob.learn.em.GMMMachine

会话间变化建模

(理论还没学习)
bob.learn.em.GMMStats:计算0,1,2阶统计量,即数据在模型上的分布统计,其中1,2阶统计量均未进行中心化

  • 会话间变化ISV
    bob.learn.em.ISVBase,bob.learn.em.ISVTrainer
    理论:假设类内变化存在于GMM的均值超向量组成的空间中的一个线性子空间中,且这些变量可以通过偏移量加以抑制,如MAP自适应中的每个均值。
    假设有N类,计算得到\{U_1, U_2, ...,U_N\}后,表示每一类的类内变化方向,后期需要被抑制。
参考文献:
Session variability modelling for face authentication
Explicit modelling of session variability for speaker verification

JFA

ISV的扩展,附加假设类间变化在一个低秩矩阵V中,同时估计参数U与V,计算得到\{U_1, U_2, ...,U_N\}\{V_1, V_2, ...,V_N\}后,U需要被抑制,V需要被添加。

Ivector

使用总变异矩阵,bob.learn.em.IVectorMachine,bob.learn.em.IVectorTrainer

线性打分

bob.learn.em.GMMStats.sum_px
(待完善,没听过呀)

PLDA

bob.learn.em.PLDABase:存放PLDA模型参数
bob.learn.em.PLDATrainer:创建训练PLDA模型的对象
bob.learn.em.train():训练PLDA模型参数(为什么这里就直接是train呢?没有任何特征标识)
bob.learn.em.PLDAMachine:加载PLDA模型参数plda.compute_log_likelihood():计算两个样本拥有一样隐变量的概率(该隐变量即为身份变量)
bob.learn.em.PLDATrainer.enroll():预先保存注册信息
bob.learn.em.PLDAMachine.log_likelihood_ratio():P(两个样本拥有一致身份)/P(两个样本拥有不同身份)

得分归一化

补偿由于不同注册和验证样本条件的变化而导致的输出分数的统计变化。通过修改系统输出分数的分布,以便更好地应用单一的、全局的阈值。