TDNN的隐层结构,对语音特征多个时刻点进行抽象建模,拥有更强的建模能力。除此之外,TDNN结构的多时刻建模参数是共享的(图中红、绿、紫用的是同样的拓扑矩阵传播)。
所以,TDNN虽然在训练的时候,比DNN需要更多的BP运算。而在语音识别时,由于参数共享的原因,隐层的计算结果可以复用,每一帧仅需对所有参数进行一次运算,大大节省了计算量。最后,我们基于TDNN结构,引擎在保持计算量一致的前提下,识别率提升了相对20%的准确率。
2.基于多任务训练优化性能
采用多任务联合训练,能有效提高声学训练的鲁棒性,避免过早陷入局部最优。在嵌入式的模型中,模型输出目标比较少,训练容易陷入局部最优。所以我们,同时用目标多的大模型联合训练,让训练的隐层结构更为鲁棒。
声学模型多任务训练
在训练的时候,我们网络同时拥有输出1和输出2两个,多任务训练时,逆向迭代需要残差协调,我们采用以下公式分配残差,其中λ权衡两个模型的训练权重:
最终我们采用多任务训练优化性能,对语音识别率带来了一定提升,接下来所有的性能提升我们将在下一章结实验给出。
3.基于区分性训练(Discriminative Training)性能优化
声学模型区分性训练是针对MLE训练的不足而提出的。DT训练通常定义一个目标函数(Objective Function),或者说是准则函数(Criterion Function),来近似一个与分类代价相关的度量。通过区分性训练,我们可以从一定程度上弱化模型假设错误所带来的影响。
同时,由于区分性训练致力于优化与识别效果好坏相关的度量,因此也就为提高识别器性能提供了更直接的途径。形象的说,MLE训练告诉模型“这是椅子,那是桌子”,而区分性训练则告诉模型“这是桌子而不是椅子,那是椅子而不是桌子”。MLE训练更重视调整模型参数以反映训练数据的概率分布,而区分性训练则更重视调整模型之间的分类面,以更好的根据设定的准则对训练数据进行分类。
DT的目标函数是这样的:
对DT的目标函数用一次贝叶斯公司可以得到:
分子正是ML的目标函数;而分母则是所有文本(包括训练文本和它的所有竞争者)产生训练语音的概率的(按语言模型加权的)和。由于分母上要枚举所有可能的文本并不现实,所以实际中,一般是用一个已有的ML训练的语音系别系统对训练语音做一次解码,得到n-best list或lattice,用这里面的文本来近似分母上的求和。n-best list或lattice中包含了训练文本的足够接近的竞争者。
4.基于互信息的新词发现
对于语音识别系统来说,语言模型对结果影响至关重要;而对于语言模型来讲,语言模型的词典是关键。一个好的分词词典,对于得到鲁棒的语言模型是至关重要的,如果才能选出合理正确的“词”所组成的词典,首先最关键的一步就是基于现有语料的新词挖掘。
由于嵌入式系统性能有限,因此选择合适大小的词表,并对语言模型进行适当剪枝头,可以压缩安装包大小、限制内存消耗、提高识别性能。压缩词表可以筛选高频词,并通过一定的模型来识别筛掉截断词,如“新功”、“嘉年”、“扛生”、“鹅卵”、“刘德”、“利亚”等半个高频词。
一个简单而又有效的新词发现和筛选方案可以采用互信息和左右信息熵的计算方法,计算二元的信息熵的分数由三个对应部分组成: 1)点间互信息:点间互信息越高,内部聚合程度越高; 2)两个单词片段信息熵 h_r_l 和 h_l_r 的最小值:这个数值越大,则意味着两个单词一起出现的可能性越小; 3)单词左右信息熵的最小值:这个数值越大就表示着候选词出现的语境越多,越有可能成词因此,分数越高表示成词的可能性越大。
计算完二元的信息熵后,可以依次计算三元、四元的信息熵,三元的新词发现和筛选是将二元替换原有的两个单字做为一个单字继续进行,候选集可以取左信息熵或者右信息熵为0的候选集,四元、五元以此类推。 另外,语言模型直接关系到识别结果输出,因此选与应用场景相对应的语料进行统计尤为重要。
05
实验对比