本文会讨论关于context-dependent model的优化——基于决策树的状态绑定(Tree-based state tying)。
Outline:
Context-dependent model
Tree-based state tying
- Context-dependent model
在《GMM-HMMs语音识别系统》中,默认的建模单元是单音素(Monophone),属于context-independent model。然而音素的实际发音和它的上下文相关,例如:/n/, ten中属于齿音,tenth中属于齿槽音。再比如:
这里写图片描述
所以Monophone是一种不精确地模型,无法对上下文(context)进行建模。如何对上下文进行建模呢?通常采用三音素模型(Triphones)来对上下文精确建模,具体就是根据当前音素的左、右音素信息对此音素进行区别性对待,如一个音素被表示为l-x-r的形式,即为一个triphone。
考虑一个含有40个phone识别系统,也就有403=64,000个triphones,在cross-word系统可能有50,000个出现。50,000个HMM(三状态),1状态含有10个Gaussian,总共有1.5M个Gaussian。对于39维的特征矢量,假设采用对角高斯形式(diagonal Gaussian),也差不错每个状态有790个参数,总共有118百万个参数。在训练这些参数时,是会出现数据稀疏性问题的。
- Tree-based state tying
因为数据sparsity问题:triphone的types(型)远多于triphone的tokens(例)。这时常用方法有参数共享,如高斯共享(tied mixtures),状态共享(state clustering),模型共享(generalized triphones),和一些平滑化方法(smoothing)。下面主要讨论一下Tree-based state tying。基于决策树的状态绑定,就是利用决策树,对triphone的HMM状态进行clustering,解决数据sparsity;同时决策树也能很好地解决unseen triphones。
2.1 state tying
这部分目的是为了利用“充分的数据”来robustly估算出状态输出密度参数,同时又能很好的区分phone的类别。处理过程如下:
这里写图片描述
初始化一个3 states left-right monophone HMM,同时single Gaussian作为输出概率分布函数。
将step 1中的monophone 克隆为triphone。A转移矩阵不复制。(之后进行Baum-Welch训练)
训练好后, triphone相对应的状态进行聚类,并选择tied-state作为表示聚类的状态
增加高斯混合成分(高斯数),重估模型。直到性能上满足测试集的要求,或者高斯数达到预设值。
(这里你可能会有两个疑问:怎么进行聚类?怎么增加高斯数?下面给出解决方案)
2.2 tree-based clustering
上一部分中,step 3是通过决策树来进行状态聚类。所有的状态共享一个根节点,通过question来分离状态池,最终树叶上留下的是结果状态的聚类。首先question从预先定义的questions set中的挑选,question选择的原则是最大化信息熵(entropy)。迭代直至entropy增量小于预先设定的阈值threshold,或者node下的数据小于阈值。
这里写图片描述
信息熵:
L(S)=∑f∈F∑s∈Slog(p(of;μ(S),Σ(S))γs(of)(1)
其中S为状态池,F为训练语音帧,μ(S),Σ(S) 分别为状态池S的均值和方差,γs(of)为观测值of由状态s生成的后验概率(即state occupation probability),L(S)代表S生成F的log概率。
当PDFs是Gaussian时,
L(S)=−12(log[(2π)2|Σ(S)|+n])∑f∈F∑s∈Sγs(of)(2)
如果S经由question分解为Sy(q)和Sn(q),则通过最大化下式,寻找最佳questionq∗
ΔLq=L(Sy(q))+L(Sn(q))−L(S)(3)
2.3 Mixing up
对于如何将单高斯转化为混合高斯?可以通过克隆,和稍微地以标准差微调均值;然后重复分解最主要混合高斯成分(highest state occupation count)。
网友评论