5-基于决策树的状态绑定

来源:互联网 发布:ipad软件商店不动 编辑:程序博客网 时间:2024/06/08 17:50

本文会讨论关于context-dependent model的优化——基于决策树的状态绑定(Tree-based state tying)。

Outline:

  1. Context-dependent model
  2. Tree-based state tying

1. 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百万个参数。在训练这些参数时,是会出现数据稀疏性问题的。

2. 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的类别。处理过程如下:

这里写图片描述

  1. 初始化一个3 states left-right monophone HMM,同时single Gaussian作为输出概率分布函数。

  2. 将step 1中的monophone 克隆为triphone。A转移矩阵不复制。(之后进行Baum-Welch训练)

  3. 训练好后, triphone相对应的状态进行聚类,并选择tied-state作为表示聚类的状态

  4. 增加高斯混合成分(高斯数),重估模型。直到性能上满足测试集的要求,或者高斯数达到预设值。

(这里你可能会有两个疑问:怎么进行聚类?怎么增加高斯数?下面给出解决方案)

2.2 tree-based clustering

上一部分中,step 3是通过决策树来进行状态聚类。所有的状态共享一个根节点,通过question来分离状态池,最终树叶上留下的是结果状态的聚类。首先question从预先定义的questions set中的挑选,question选择的原则是最大化信息熵(entropy)。迭代直至entropy增量小于预先设定的阈值threshold,或者node下的数据小于阈值。

这里写图片描述

信息熵:

L(S)=fFsSlog(p(of;μ(S),Σ(S))γs(of)(1)

其中S为状态池,F为训练语音帧,μ(S),Σ(S) 分别为状态池S的均值和方差,γs(of)为观测值of由状态s生成的后验概率(即state occupation probability),L(S)代表S生成Flog概率。
当PDFs是Gaussian时,

L(S)=12(log[(2π)2|Σ(S)|+n])fFsSγ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)。

0 0
原创粉丝点击