语音识别之向量量化、期望最大化算法

1. 向量量化 Vector Quantization

所谓Vector Quantization,即大家熟知的K-means。运用VQ之前,需要定义一个距离的计算方法,可以是欧式距离Euclidiean Distance,也可以是别的距离公式。

假设输入为X=[x_1,x_2,x_3,...,x_T], x_i \in R^n, 该输入为一个说话人speaker的spectral features,可以是Mel-spectrogram或MFCC系数,在比较早的论文中,也有直接将spectrogram作为特征的情况。每个x_i为一帧的数据,一共有T帧,T的大小取决于说话人录音数据的长短。利用K-means的算法,用已有的距离公式生成N个特征点,这N个特征点即为此说话人的codebook,象征了该说话人的N个特点。将每一个人说话人都按此方式生成其对应的codebook。这即为VQ的训练阶段,随后当有数据进行测试时,只需要计算输入和每个说话人的codebook平均距离,最小者对应的speaker为识别结果。

2. LDA/QDA 线性判别分析或二次判别分析

该方法思路和VQ类似,区别为假设每个人输入数据的T个向量遵循n维高斯分布,训练参数为其对应的均值和协方差矩阵。那么如果一共有M个不同的speaker,则有M个对应的高斯分布。则训练阶段为对每个输入数据求出对应的均值和协方差矩阵,测试阶段对每个输入的数据求出其在任何一个高斯分布出现的概率,最高者即为识别结果。和1相比,LDA或QDA可训练的参数个数完全取决于输入数据的维度n, 而Vector Quantization训练的参数N是完全可以自己决定的,N越大,则可描述speaker的特征越多,结果也就越准确。

3. 期望最大算法(Expectation-Maximum Algorithm)

假设同一分布的两个不同参数的变量混合,得到概率密度函数为

f(x;\theta) = f(x,z_1;\theta)+f(x,z_2;\theta)

p(z=z_1)=\pi_1, p(z=z_2)=\pi_2

最大似然函数为

\ln L(\theta)=\sum_n \ln (f(x^{(n)},z_1;\theta)+f(x^{(n)},z_2;\theta))

直接求导是没有闭式解的,可以用梯度下降法,但是运算量太大,这里可以用一个数学trick,即

\ln L(\theta)=\sum_n \ln (f(x^{(n)},z_1;\theta)+f(x^{(n)},z_2;\theta)) \\=\sum_n \ln (Q_n(z_1)\frac{f(x^{(n)},z_1;\theta)}{Q_n(z_1)}+Q_n(z_2)\frac{f(x^{(n)},z_2;\theta)}{Q_n(z_2)})

其中,Q_n(z_i)=p(z=z_i|x=x^{(n)}),由詹森不等式,得

\sum_n \ln (Q_n(z_1)\frac{f(x^{(n)},z_1;\theta)}{Q_n(z_1)}+Q_n(z_2)\frac{f(x^{(n)},z_2;\theta)}{Q_n(z_2)})\\ \geq \sum_n Q_n(z_1)\ln(\frac{f(x^{(n)},z_1;\theta)}{Q_n(z_1)})+Q_n(z_2)\ln(\frac{f(x^{(n)},z_2;\theta)}{Q_n(z_2)})

等号当且仅当\frac{f(x^{(n)},z_1;\theta)}{Q_n(z_1)}=\frac{f(x^{(n)},z_2;\theta)}{Q_n(z_2)}取得。

\frac{f(x^{(n)},z_1;\theta)}{Q_n(z_1)}=\frac{p(x^{(n)},z_1)}{p(z_1|x^{(n)})}=p(x^{(n)})=\frac{f(x^{(n)},z_2;\theta)}{Q_n(z_2)},即两者本就是相等的,所以上述等号存在。我们只需要求\sum_n Q_n(z_1)\ln(\frac{f(x^{(n)},z_1;\theta)}{Q_n(z_1)})+Q_n(z_2)\ln(\frac{f(x^{(n)},z_2;\theta)}{Q_n(z_2)})的最小值就行了。这里的数学trick用詹森不等式将ln里面的加号去掉了,从而存在闭式解。

所以E-M算法存在两步,首先初始化\theta

Expectation: 计算Q_n(z_i)=p(z=z_i|x=x^{(n)})

Maximization: 将上一步的值代入\sum_n Q_n(z_1)\ln(\frac{f(x^{(n)},z_1;\theta)}{Q_n(z_1)})+Q_n(z_2)\ln(\frac{f(x^{(n)},z_2;\theta)}{Q_n(z_2)}),对\theta求导,从而获得其最优值。然后回到E步。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值