语音识别的自适应研究(精选4篇)
语音识别的自适应研究 篇1
0 引言
随着网络日新月异地迅猛发展, 网络上的各种协议也相继出现, 与此相对应, 流量识别技术则日趋显示了其重要的作用和价值。传统的基于端口的流量识别方法和深层数据包检测 (DPI) 技术已经不能很好地完成识别的任务, 当前基于机器学习的流量识别技术已经成为引领该领域研究的主流和方向[1]。网络流量识别本质上是根据网络数据包的特征将网络数据流分成已知的协议类别, 而这正是一种典型的数据流分类的应用, 那么必然地数据流分类面临的概念漂移检测问题在进行流量识别技术研究时也就需要慎重对待、深入考虑。近年来, 关于数据流分类中概念漂移检测的研究已取得了不少的成果, 但是各类方法在应对某种具体的数据流时却都具有一定的局限性[2]。本文结合实际网络环境中存在类别不平衡的情况, 提出了更适用于网络流量识别的概念漂移检测方法。
1 流量识别与概念漂移
概念漂移是数据流分类中的问题。作为一种具体的数据流, 网络数据流当然也存在概念漂移的相关问题。
1.1 流量识别中的概念漂移
以机器学习的角度来看, 基于机器学习的网络流量识别技术实际上就是学习概念的过程[3]。识别的实现是通过在训练网络数据集内寻找其蕴含的协议分类规则 (概念) , 由此得到网络流量识别器, 进而识别测试网络数据包或者实际工作中到来的网络数据包的类别。
假定网络数据流D={…, di-1, di, di+1, …}, 其网络数据流中的协议类别C={C1, C2, …, Cn}, t时刻, 在训练网络数据集Dt上训练得到识别规则f:Dt→C, 那么在t+1时刻就可以对dt+1网络数据包的协议类别预测为f (dt+1) 。但是, 如果网络数据流的隐藏背景在t时刻和t+1时刻发生了改变, 引发了概念漂移, t+1时刻的实际识别规则已经是g:Dt+1→C, 且g≠f。也就是说, dt+1的真实协议类别是g (dt+1) , 因而利用原来的识别规则f预测的dt+1的协议类别即是不尽合理的。通过上面的论述可以看到, 概念漂移对网络流量识别的影响, 而正确的做法也就相应可得了。假定在t+△t时刻发生了概念漂移, 应该迅速检测出漂移的发生, 然后重新训练识别器, 得到正确的识别规则g, 然后利用g来进行以后的网络数据包协议类别预测。
自适应的流量识别就是能够自主地检测到概念漂移的发生, 而后再对分类器进行重新构建, 以保证其对动态网络数据流的正确识别。
1.2 检测方法分类
由于概念漂移的生成原因极其复杂, 目前的检测方法都不是直接的, 而只是间接的[4]。最为基础的有两个:
(1) 可能导致概念漂移发生的原因;
(2) 概念漂移发生后可能产生的结果。
前者称之为性质法, 后者为性能法[5]。
性质法是指监测最新的网络数据集合的相关统计性质, 如协议种类的分布、各数据包的特征分布等等。Alippi设计了不依赖先验信息而只需要数据分布模型的中心极限定理的概念漂移检测算法[6];Peter等提出了基于熵的概念漂移检测方法[7]。
性能法是指检测识别器最新的性能指标, 如分类精度、召回率等等, 如果分类器的性能指标出现较大波动, 即说明发生了概念漂移。Widmer的FLORA算法依赖分类器的样本覆盖量和准确率决定窗口大小[8];Last等提出的OLIN算法[9]即根据误差率来判断概念漂移产生与否。
2 概念漂移检测
上节阐述的两种概念漂移检测方法中, 最经常使用的是基于性能监测的方法, 但是却不适合类别不平衡的数据流环境。本节将会看到, 网络流量环境中经常出现的类别不平衡现象对概念漂移检测的影响, 同时结合这点, 本文也提出了改进算法, 以适应实际网络环境下的动态流量变化。
2.1 检测算法原理
对于稳定的网络流量, 其各个协议类别是大致服从同一概率函数分布的, 但是, 如果一个存在概念漂移的网络流量中, 网络数据包协议类别的分布概率却会随着概念漂移的发生而相应改变。因此以观察协议类别的概率分布变化来检测网络流量是否发生概念漂移则不失为一个恰当稳妥的办法。根据贝叶斯理论知道, 概率分布P (w/x) =P (x/w) P (w) /P (x) 。当P (x) 改变而P (x/w) 不变时, 也就是说之前不常出现的协议数据包开始大量出现了或者相反, 此时发生的概念漂移就是渐变;当P (x) 不变而P (x/w) 发生改变时, 这种概念漂移就是突变。通常, 在一个网络数据流中多会同时存在这两种类型的概念漂移, 且也很难进行有效区分, 但是从检测概念漂移的目的来说, 检测到概念漂移后即可对分类器进行重新构建, 因此也就没有必要区分概念漂移的具体类型了。
网络数据流量是按照时间相依有序的离散的数据集合, 流量识别实质上就是进行时间序列分析。粗略来看, 如果只是简单的对网络流量进行时序分析, 似乎忽略了数据流变量之间内存因果关系和结构关系的影响。但是实际上时序分析是从总体方面对网络流量进行考察, 综合说明各种作用力的共同影响。当无法轻易获得所关心的各种纷繁因素时, 就可以直接将时间t用作变量来代替各种因素。因此, 概念漂移检测就可以将时间t引入到文中的检测模型内, 从而完成整个算法。
综上, 当将时间t作为变量引入检测模型后, 再加上一定的协议类别变量, 此时如果能够找到两个变量之间的关系问题, 就能够得到概念漂移检测的解决方法。而统计学理论已有很多研究成果就是致力于探讨变量之间的关系, 本文就从统计学理论中寻求概念漂移检测的方法。
2.1.1 统计学理论———卡方检验
卡方检验是一种应用相当广泛的非参数统计理论, 利用该理论, 可以判定实际观察的概率分布是否发生了改变还是仅来自于理论误差。
网络数据包集合
变量ni代表监测到的网络流量数据集合中数据包协议类别为ci的数量, 所有ni的和满足条件 (2) :
已经知道, ni是监测值, 再假定mi是理论值, 则根据以上定义可得卡方值, 如式 (3) :
综上可得, 如果卡方值小于其临界值, 函数ψ就是变量Z的最优拟合函数;相反, 如果卡方值大于临界值, 函数ψ就不再是变量Z的最优拟合函数。卡方的临界值取决于已验证得到的χ2统计理论表。
本文中, 利用卡方值来检验连续两个网络流量的数据集合Di和Di+1是否发生了概念漂移。为了进一步阐述检测方法, 先做如下两个假设。
(1) 假定函数ψ已经满足于一个数据包集合的分布, 然后验证其连续的下一个集合是否满足该条件;
(2) 假定这个网络流量中只存在两种协议的数据包, 即Http和Non-http。
根据上述假设, 探讨分析可得如表1所示的连续两个网络流量的数据包集合Di和Di+1的类别分布, 表1中变量c1, c2, c3, c4分别代表Http和Non-http在不同数据集合中的观察个数。根据这四个变量, 就可以得到期望的两个数据包集合中的协议类别数, 具体如公式 (4) 、 (5) 、 (6) 、 (7) 所示。
上述四式中, n=c1+c2+c3+c4, 将以上四式结合公式 (2) 可以推导出卡方值满足如下式 (8) :
计算得到卡方值后, 再和临界值比较就能够判定函数ψ是否满足于Di+1, 以此就可以判定概念漂移是否发生。
2.1.2 类别不平衡与Fisher检验
χ2检验对2维表的各个协议类别的数量是有一定要求的, 要求20%的协议类别数量不小于某个特定值。但是在真实的网络环境下, 经常存在类别不平衡的流量, 因此就无法满足χ2检验的要求, 此时就只能应用Fisher精确检验。
同样, 使用上小节的2*2表进行说明, 先设几个变量:C1=c1+c2, C2=c3+c4, C3=c1+c3, C4=c2+c4, C=C1+C2或C3+C4, 就可以得到p值, 如式 (9) 所示, 根据P{cij}来确定是否发生了概念漂移。
2.1.3 检验步骤
根据概念漂移的检测原理和统计学理论, 就可以利用χ2检验和Fisher检验来共同确定连续的两个数据包集合是否发生了概念漂移。具体步骤如下:
(1) 建立零假说, 即认为没有发生概念漂移;
(2) 确定数据包集合之间的实际差异, 即根据类别是否平衡, 进行χ2检验或者Fisher检验;
(3) 根据χ2检验或者Fisher检验的结果, 和理论值进行比较。如果大于理论值, 则拒绝零假说, 即认为发生了概念漂移。
2.2 概念漂移检测算法
通过上述的分析, 本文接下来将给出一个利用统计学理论来检测概念漂移发生的方法。和已经存在的大部分概念漂移算法相比, 该方法有两个显著的特征:第一, 该方法属于显示探测概念漂移, 因此其中含有单独的检测概念漂移发生的模块;第二, 该方法结合网络流量识别的实际环境———经常存在类别不平衡的特性, 利用集成学习的方法来适应动态的网络数据变化。当一个网络数据包集合到达以后, 概念漂移检测模块就对其进行检测, 检测是否有概念漂移发生, 如果概念漂移发生了, 检测模块就会告知流量识别器更新或者重构识别器, 以保证流量识别器能够继续对其后的网络数据流进行准确识别。
本文将推出两个完整的算法。第一个算法是在本小节讲述的, 即利用卡方检验或者Fisher检验进行概念漂移检测的算法CF_CDD (Chi-square or Fisher Concept Drifting Detection) :第二个将在下节讲述, 即利用集成学习进行网络流量分类的算法TCEL_CF_CDD (Traffic Classification based on Ensemble Learning with CF_CDD) 。
算法CF_CDD旨在检测出动态变化的网络数据流中发生的概念漂移, 一旦网络数据包数量达到合适的窗口大小, 概念漂移模块就检测连续的两个网络数据包集合之间是否有概念漂移发生。CF_CDD (Di, Di-1) 算法如下。
在如上算法中, 第1步、第2步是分类器对数据包Di, Di-1进行分类, 并统计了相应的样本数量, 第3步判断协议类别是否出现了不平衡。若平衡, 就进行χ2检验;不平衡, 就是Fisher检验。最后, 根据检验结果P和CONST的比较, 判定是否发生了概念漂移。其中, CONST是根据自由度和置信度查表得来的界限。
2.3 自适应流量识别
若要完成自适应的网络流量识别, 就要有效地检测出概念漂移, 再对分类器进行调整。本文采用集成学习来构建分类器, 因而构建集成分类器的子分类器的机器学习算法就需要进行重点研究和专门讨论了。
2.3.1 类别不平衡下的机器学习算法
网络数据流量中经常存在协议类别不平衡的情况, 协议类别的分布对基于机器学习的流量识别技术有着不小的影响。因此, 选择合适的机器学习算法以适应网络协议流不平衡环境下的在线流量分类, 即显得尤为重要[10]。
本文在实验与分析中, 将几种典型的机器学习算法———决策树C4.5、NBK、SVM与提出的概念漂移检测算法结合后进行了对比, 选取得到最能适应含有类别不平衡协议流的真实环境的算法, 且算法性能良好。
2.3.2 集成学习
算法TCEL_CF_CDD, 利用权重集成分类器对到达的网络数据包进行分类, 集成分类器的子分类器要根据概念漂移检测模块的结果进行调整、更新。
TCEL_CF_CDD (EC, Num, Max) 算法如下:
在上述算法的第4步中, 基分类器的构建过程中采用的是一种常用的机器学习算法, 本文将通过实验来选择出实验真实环境的算法;第4-6步是集成分类器的构建过程, 当变量Num等于Max时, 标志着集成分类器构造完成;而后在第8-11步中定义基分类器在相应的数据集上的准确性;第12步是对各子分类器权重进行规格化;第13步表明了在本课题中为了充分利用样本信息, 对每组样本均采用了先测试、后训练的策略;第14步是调用CF_CDD算法来检测连续的两个样本网络数据包集合之间是否发生了概念漂移, 如果发生了概念漂移就要在最新的样本数据集中构建最新的基分类器, 并用构建出来的新分类器替换已经存在的基分类器中表现最差的那个;第19步是在调整子分类器后, 对各分类器的权重进行调整。
3 实验与分析
本文利用已经捕获的几个网络数据包集合来模拟网络流量, 将数据包按捕获的时间进行顺序排列
3.1 机器学习算法的比较
将三种典型的机器学习算法———决策树C4.5、NBK、SVM与本文提出的概念漂移检测算法CF_CDD结合, 分别构造识别器, 利用模拟的网络流量的第一个数据包集合作为训练集, 并且对后续的五个数据包集合进行分类, 以测试不同的机器学习算法对识别精确性的影响, 其结果如表2所示。从表2中可以看到:NBK的精确度明显不高, 而且也有随时间下降的趋势;决策树C4.5和SVM相比NBK则有不错且相对稳定的精确度, 适合提出的概念漂移检测算法。
C4.5和SVM虽然都有不错的精确度, 但是因为知道SVM的建模时间相对C4.5来说耗时更长, 再结合处理概念漂移检测的实际特点———需要经常调整分类器, 因而此处不难得出结论:决策树C4.5与本文提出的对概念漂移检测算法CF_CDD结合进行网络流量识别更能够自适应地处理实际网络环境中的概念漂移问题。
3.2 漂移检测算法的比较
一般的数据流中, 检测概念漂移的算法是基于误差率的, 利用对分类器误差率的监测来判定是否发生了概念漂移。本实验就对基于误差率 (Error_CDD) 和本文提出的基于统计学检验 (CF_CDD) 的两种概念漂移的算法在模拟的网络流量识别的精度进行了对比, 对比结果如图1所示。
从图1中可以看到, 当有类别不平衡的协议类别时, Error_CDD的识别精度大幅度下降, 验证了之前提到的性能法不适合于类别不平衡的网络数据流量识别, 而本文提出的CF_CDD算法却有良好的稳定性, 也说明本文提出的算法能够很好地适应类别不平衡现象。
4 结束语
本文对流量识别中的概念漂移进行了深入研究, 主要分析了漂移检测原理, 并结合真实网络环境中存在的类别不平衡的特点, 提出了基于统计学理论的概念漂移检测算法, 在检测算法的基础上提出了利用集成学习来完成自适应的流量识别, 最后的实验证明了本文提出的算法的可行性和可靠性。当然, 数据流概念漂移的问题还有很多, 建议其后的主要研究方向就是类似本文这样针对某种具体数据流的特点进行详细的分析。
参考文献
[1]王耀南, 张莹.基于可信多数投票的快速概念漂移检测[J].湖南大学学报 (自然科学版) , 2010, 37 (6) :36-40.
[2]GUAN Jinghua, LIU Dayou.Selected ensemble of classifiers for handling concept-drifting data streams[J].Computer Science, 2010, 37 (1) :204-207.
[3]王涛, 李舟军, 颜跃进, 等.数据流挖掘分类技术综述[J].计算机研究与发展, 2007, 44 (11) :1809-1815.
[4]SUN Yue, MAO Guojun, LIU Xu.Mining concept drifts from data streams based on multi-classifiers[J].Acta Automatica Sinica, 2008, 34 (1) :93-97.
[5]文益民.概念漂移数据流分类研究综述[J].智能系统学报, 2012, 7 (6) :1-10.
[6]ALIPPI C, BORACCHI G, ROVERI M.An effective just-in-time adaptive classifier for gradual concept drifts[C]//Proceedings of the2011 International Joint Conference on Neural Networks.San Jose, USA, 2011:1675-1681.
[7]PETER V, ABRANHAM B.Entropy-based concept drift detection[C]//Proceedings of the 6thInternational Conference on Data Mining.Hong Kong, China, 2006:1113-1118.
[8]WIDMER G, KUBAT M.Effective learning in dynamic environments by explicit context tracking[C]//Proceedings of the Sixth European Conference on Machine Learning.Vienna, Austria, 2003:69-101.
[9]LAST M.Online classification of non-stationary data streams[J].Intelligent Data Analysis, 2005, 6 (2) :1-16.
[10]鲁刚.分类不平衡协议流的机器学习算法评估与比较[J].软件学报, 2012, 23 (6) :1500-1516.
语音识别的自适应研究 篇2
近年来,人脸表情识别作为一种生物特征识别技术,已成为多媒体信息处理、人机交互、图像处理与模式识别等领域的重要研究课题[1,2]。在人脸表情识别过程中,样本标记起到了重要的作用,但是并不容易获取。由于半监督学习[3]能够利用少量的标记样本和大量的未标记样本构建学习模型,研究者将其应用于人脸表情识别领域以解决标记样本不足的问题,提高人脸表情识别的实用性。
半监督学习的目的是借助大量的未标记样本参与训练以弥补训练样本不足的缺陷。然而,专业数据库中人脸表情图像数量的不足限制了半监督学习在表情识别中的发展。因此,需要寻找一种方案来解决数据量不足的问题,以便更好地完成半监督学习在人脸表情识别中的应用。解决问题的思路有两个:其一是将多个数据库放在一起使用,进行多数据库联合实验。该方法具有以下两个优点:第一,能够收集大量的未标记样本,方便研究者复原实验过程,使得在该数据库上得到的实验结果更具有说服力;第二,在实际生活中,我们面对的人群是多种多样的,多数据库有利于我们模拟实际情况。所以使用多数据库进行半监督学习实验的做法,具有很大的优势。其二是将多姿态图像作为样本,参与半监督人脸表情识别。该方法对于在现实环境中识别多姿态的人脸表情图像具有重要的实际意义。
目前,针对多数据库、多姿态表情识别的半监督学习的研究还处于起步阶段。针对多数据库条件下的表情识别问题,文献[4]提出了一种新的迁移子空间学习算法,在JAFFE、CK和Feedtum数据库两两组合成的数据集上取得了一定的效果。对于多姿态条件下的表情识别问题,主要通过改进特征提取方法来提高样本识别的正确率。文献[5]采用了张量脸结合流形学习的方法来解决多姿态条件下的人脸识别问题。文献[6]提出了基于正交鉴别向量的算法来克服人脸姿态变化对识别造成的干扰。文献[7]将基于子空间的人脸表征看作一个回归问题,因此采用了岭回归和线性回归的方法来处理人脸的姿态变化问题。文献[8]使用嵌入式马尔科夫模型方法处理人脸的不同姿态,获得了比传统的基于构件的分类器更好的识别率。
为进一步提升多数据库、多姿态条件下的表情识别率,本文引入了迁移学习自适应提升(Tr Ada Boost)[9]算法中的知识迁移方式,提出了一种新的基于半监督学习的自适应提升(SSL-AdaBoost)算法。选择引入Tr Ada Boost算法有以下两点原因:其一,该方法是迁移学习理论的代表性算法,既能保证知识迁移效果,又具有结构简单、便于操作的优点;其二,该方法以Ada Boost算法为基本框架。而在半监督学习中出现了不少基于Ada Boost框架的算法,如Semi Boost[10]算法、ASSEMBLE[11]算法以及RegBoost[12,13]算法等,为Tr Ada Boost算法改进为半监督学习算法提供了可能性。
1 算法原理分析
1.1 Tr Ada Boost算法原理
Tr Ada Boost算法的基本原理如下:
设Xs表示源域内和目标域数据分布相同的样本,Xd表示源域内和目标域数据分布不同的样本。令X=Xs∪Xd,Y={0,1}表示样本标记,c表示将X映射到Y的布尔函数,c(x)表示样本x的标记。
输入样本为两个已标记样本集合Td和Ts以及未标记样本集合S。其中,测试集为S={(xit)},xit∈Xs(i=1,2,…,q),q为测试集样本的大小。训练集由两个已标记样本集合Td和Ts组成,Td={(xid,c(xid))},xid∈Xd(i=1,2,…,n),表示与测试集数据分布不同的训练样本集合,Ts={(xis,c(xis))},xis∈Xs(i=1,2,…,m),表示与测试集数据分布相同的训练样本集合,n和m分别表示Td和Ts的大小。初始化参数设置如下:基础分类器为Weak Learn,整数N表示最大循环次数。权重向量W1=(w11,w21,…,w1n+m),其中权重上标1表示第1次循环。令,t=1,2,…,N。
如果符合t≤N、εt<0.5的条件,算法开始循环:
(1)令第t次循环时,Tr的样本分布为;
(2)依据分布Pt,采用Weak Learn得到样本的分类结果ht:X→Y;
(3)计算样本的错误率;
(4)设参数βt=εt/(1-εt);
(5)更新权重向量:
如果达到收敛条件,算法结束,否则继续执行。
最后,输出最终分类器hf(x):
其中,是上取整函数,表示不小于N/2的整数中最小值。
Tr Ada Boost算法通过调整每个样本对应的权重来实现分类效果的提升。如果样本xi分类正确(ht(xi)=c(xi)),就认为该样本内的信息有利于辅助Ts进行训练,算法不会降低该样本的权重;如果样本xi分类错误(ht(xi)≠c(xi)),就认为该样本可能和Ts是矛盾的,算法通过降低样本权重的方式抑制了错分类样本对训练的干扰,并以此实现知识迁移过程。虽然Tr Ada Boost算法具有良好的迁移能力,但是该算法并不适合直接用于半监督表情识别之中。
1.2 SSL-Ada Boost算法原理
本文提出的SSL-Ada Boost算法在保留Tr Ada Boost算法的知识迁移能力的同时,对Tr Ada Boost算法进行两方面的改进:一方面,Tr Ada Boost算法属于监督学习算法,算法需要训练样本的标记信息,而SSL-Ada Boost算法是一个半监督学习算法。按照半监督学习的要求,训练集由标记样本和未标记样本组成。因此,需要选取一定比例的训练样本为未标记样本,余下的为标记样本,从而兼顾了半监督学习的要求和算法的分类性能。为了进一步消除未标记样本对分类的不利因素,借助Semi Boost和AS-SEMBLE等算法的处理方式,利用训练集中的已标记样本,通过近邻计算求出训练集中未标记样本的类别。另一方面,Tr AdaBoost算法用于解决二类分类问题,而人脸表情识别却需要完成多种表情的识别任务。由于Tr Ada Boost算法可以看作Ada Boost算法的扩展,而Ada Boost算法是二类分类方法,本文可以借助一种用于实现多类分类任务的Ada Boost算法,即Ada Boost.M1算法,完成样本的多类识别。
SSL-Ada Boost算法的基本原理如下:
令Xs表示源域内和目标域数据分布相同的样本,Xd表示源域内和目标域数据分布不同的样本。令X=Xs∪Xd。
输入样本为两个部分标记的样本集合Td和Ts以及未标记样本集合S。其中,测试集S={(xit)},xit∈Xs(i=1,2,…,q),q为测试集样本的大小。训练集Tr由两个已标记样本集合Td和Ts组成。Td={(xid)},xid∈Xd(i=1,2,…,n),表示与测试集数据分布不同的训练样本集合,Ts={(xis)},xis∈Xs(i=1,2,…,m),表示与测试集数据分布相同的训练样本集合,n和m分别表示Td和Ts的大小。则训练集Tr={(xi)}被定义为:
令yi∈Y={1,2,…,l};i=1,2,…,n+m表示样本标记。集合Tr包含了标记样本和未标记样本。初始化参数设置如下:基础分类器为Weak Learn,整数N表示最大循环次数。权重向量W1=(w11,w21,…,w1n+m),其中权重上标1表示第1次循环。令,t=1,2,…,N。本文采用欧式距离最近邻法,依靠训练集Tr内的已标记样本,计算Tr内未标记样本的标记。
如果符合t≤N、εt<0.5的条件,算法开始循环:
(1)令第t次循环时,Tr的样本分布为;
(2)依据分布Pt,采用Weak Learn得到样本的分类结果ht:X→Y;
(3)计算样本的错误率,[π]表示如果条件π成立,则[π]=1。否则[π]=0;
(4)设参数βt=εt/(1-εt);
(5)更新权重向量:
如果达到收敛条件,算法结束,否则继续执行。
最后,输出最终分类器hf(x):
2 实验结果及分析
本文实验以人脸表情识别为应用背景,共分为两部分:多数据库条件下的半监督学习实验和多姿态条件下的半监督学习实验。
2.1 多数据库人脸表情识别实验
多数据库条件下的半监督学习实验采用180幅日本女性人脸表情数据库JAFFE(Japan Female Facial Expression)[14]的图像、240幅美国卡内基梅隆大学动作单元编码数据库CK(CohnKanade AU-Coded Database)[15]的表情峰值图像以及荷兰内梅亨大学人脸数据库Ra FD(Radboud Faces Database)[16]的57个成年人的342幅正面像。待分类样本分别具有生气、厌恶、恐惧、悲伤、高兴和惊奇表情,各数据库中每种表情的图像数量基本相等。因为要进行多数据库联合实验,所以在获取人脸图像后,对所有人脸图像进行尺度归一化,将图像大小设为168×120。然后,采用直方图均衡的方法对图像进行光照补偿。最后,通过PCA将数据维数降至40维,运用LDA实现对表情图像的特征提取。
为验证SSL-Ada Boost算法的效果,实验采用Ada Boost.M1算法、ASSEMBLE算法、Reg Boost[12]算法和标号传递(LP)算法[17]作为基线算法。实验以k近邻分类器作为Ada Boost.M1、Reg Boost和SSL-Ada Boost算法的基础分类器。设k值为11,算法的最大循环次数为10次。
首先,以JAFFE数据库为源域、CK数据库为目标域开展分类实验。按照表情类别,随机选取r比例的目标域样本和源域样本组成训练集,其中r分别取10%、20%、30%、40%和50%。因为实验采用180个JAFFE样本和240个CK样本,所以选取的目标域样本数量为r×180,余下的240-r×180个目标域样本组成测试集。令训练集中标记样本和未标记样本的比例为1。每个比例的样本数据各生成10组,算法识别率取10次实验的平均结果,实验结果如表1所示。从表1中可以看出,SSL-Ada Boost算法在不同比例下的平均识别率高于Ada Boost.M1和Reg Boost算法。再以CK数据库为源域、JAFFE数据库为目标域进行对比实验,结果如表2所示。从表2中可以看出,各算法的识别率普遍不高,原因在于JAFFE数据库中的表情个体为日本女性,民族和性别情况单一,对同一种表情的表达强度近似。CK数据库中的个体以欧美人群为主,民族及性别情况十分复杂,对同一种表情的表达强度不一。所以将CK数据库作为源域,极大地增加了识别难度,但是本文提出的SSL-Ada Boost算法仍在10%~30%的比例下保持了最高的平均识别率。
其次,以JAFFE数据库为源域、Ra FD数据库为目标域开展分类实验,结果如表3所示。从表3中可以看出,在不同的数据库下,SSL-Ada Boost算法在不同比例下的平均识别率高于基线算法。再以Ra FD数据库为源域、JAFFE数据库为目标域进行对比实验,结果如表4所示。实验结果表明,表3和表4的识别率高于表1和表2,原因在于JAFFE数据库和Ra FD数据库的民族比较单一,前者为日本女性,后者为白种人。相比之下,CK数据库包含了世界各地的民族,所以数据的特征空间和数据分布不一致的问题更严重,干扰了半监督学习算法的识别效果。
最后,以CK数据库为源域、Ra FD数据库为目标域开展分类实验,结果如表5所示。再以Ra FD数据库为源域、CK数据库为目标域进行对比实验,结果如表6所示。实验结果表明,SSL-Ada Boost算法在40%和50%比例下,相对于基线算法在识别率上仍具有优势。CK数据库和Ra FD数据库均以西方人为主,西方人对同一种表情的表达方式比较丰富,因此增加了识别的难度。
综上所述,SSL-Ada Boost算法在一定程度上克服了不同数据环境下的个体差异性对表情识别的干扰,有效地实现了对未标记样本的训练。与基线算法相比,SSL-Ada Boost算法在多数情况下具有更好的鲁棒性和识别率,对比实验证明了算法的有效性。
2.2 多姿态人脸表情识别实验
多姿态条件下的半监督学习实验选择Ra FD数据库和BHU数据库为实验对象。前者选取了57个人的6种基本表情、3个水平旋转角度(正面、135°和180°)的人脸图像,每个角度的图像数量为342幅。后者选取了8个人的两种表情(生气、高兴)、2个水平旋转角度(正面和水平旋转30°)的人脸图像。每个角度的图像数量为480幅。每种表情的图像数量相同。
首先,实验依靠图像处理软件,通过人工切分的方法,以前额发迹线到下颚为人脸的纵向切分范围,获取人脸图像,所有人脸图像的大小归一化为64×64。其次,通过直方图均衡化方法,对图像进行光照补偿。预处理后的实验样本如图1和图2所示。其中,图1从上到下分别为正面、135°和180°旋转角度的Ra FD数据库的表情图像;图2从上到下分别为正面和30°旋转角度的BHU数据库的表情图像。最后,采用LDA算法作为样本的特征提取算法。
实验采用Ada Boost.M1算法、ASSEMBLE算法、Reg Boost算法以及LP算法作为基线算法。分别以k近邻分类器(k-NN)或反向传播神经网络分类器(BP-NN)作为算法的基础分类器。从中选取识别率高的分类结果作为最终的实验结果。算法的最大循环次数设为10次。
首先,以Ra FD数据库的正面样本为源域、135°样本为目标域开展分类实验。采用k-NN作为基础分类器,设k值为3。随机选取r比例的目标域样本和源域样本组成训练集,其中r分别取10%、20%、30%、40%和50%。因为实验采用了正面及135°样本各342个,所以选取的目标域样本数量为r×342的整数,余下的342-r×342个目标域样本组成测试集。令训练集中标记样本和未标记样本的比例为1。每个比例的样本数据各生成10组,算法识别率取10次实验的平均结果,实验结果如表7所示。
其次,以Ra FD数据库的正面图像为源域、180°图像为目标域进行对比实验。实验采用BP-NN作为基础分类器。实验结果如表8所示。
表7和表8的实验结果表明:一方面,算法识别率随着偏转图像在训练集中比例的增加而提高。既说明了特征空间和数据分布相同的样本在分类中起到了很大作用,也说明了在样本特征空间和数据分布不同的情况下,基线算法仅依靠抑制误分类样本无法获得更好的识别效果。而SSL-Ada Boost算法依靠知识迁移,有效地运用正面图像的表情特征,克服了样本特征空间和数据分布差异对半监督学习造成的干扰,在大部分比例下取得了比基线算法更高的识别率。另一方面,偏转造成了人脸器官的遮挡以及大量表情信息的缺失,严重影响了算法的识别效果。基线算法在信息缺失与噪声干扰的情况下,仅依靠少量偏转图像的表情特征不能更好地完成半监督学习任务。SSL-Ada Boost算法通过知识迁移,将正面图像的表情特征迁移到偏转图像的分类器构建之中,降低了信息缺失造成的干扰。在多姿态条件下,SSL-Ada Boost算法具有较好的鲁棒性。
最后,以BHU数据库的正面图像为源域、30°图像为目标域开展分类实验。实验设置与表7相同。实验结果如表9所示。从表9中可以看出,在BHU数据库上,SSL-Ada Boost算法依然在识别率上保持了优势。多姿态条件下的实验结果证明了SSL-Ada Boost算法的有效性。
3 结语
本文提出一种新的半监督学习自适应提升算法。该算法借助迁移学习理论中的知识迁移方法,在多数据库条件下将数据分布不同的样本表情特征迁移到分类器的构建中,在一定程度上克服了不同数据环境下的个体差异性对表情识别的干扰,有效地实现了对未标记样本的训练。此外,在多姿态条件下将正面图像的表情特征迁移到偏转图像的分类器构建中,降低了信息缺失造成的干扰。实验结果表明,本文算法在多数据库条件下有效地提高了算法的表情识别率;在多姿态表情图像上取得了比基线算法更高的识别率。
摘要:针对半监督人脸表情识别算法在表情来源多样、姿态不一时准确率低的问题,在迁移学习自适应提升算法的基础上,提出一种新的半监督学习自适应提升算法。该算法通过近邻计算由训练集中的已标记样本求出未标记样本的类别,并借助Ada Boost.M1算法分别对多数据源的人脸表情样本和多姿态人脸表情样本展开识别,实现样本的多类识别任务。实验结果表明,与标号传递等半监督学习算法相比,该算法显著提高了表情识别率,且分别在多数据库和多姿态数据库上获得了73.33%和87.71%的最高识别率。
语音识别的自适应研究 篇3
HTK (Hidden Morkov Model Toolkit) 是一种专门用来建立和处理隐马尔可夫模型HMM的工具包, 现在主要用于语音识别, 最初是由英国剑桥大学工程系的语音视觉和机器人技术工作组开发的, 之后经过了剑桥大学、Entropic公司以及Microsoft公司的不断完善和改进, 目前已经处于语音识别领域的高端水平。HTK是由一系列库模块构成, 工具箱中包含了语音识别阶段所要用到的每个工具, 且每个工具都有其对应的输入接口和输出接口, 其源代码都是开放的, 我们可根据自己的实验需求来进行修改。
本文主要结合隐马尔可夫模型, 利用HTK语音识别工具包, 实现连接数字语音识别系统的设计。
1 语音识别系统原理
语音识别从本质上来说属于模式识别的一种, 是机器通过识别和理解过程把人类的语言信号转换成相应的文本信息或命令的技术, 它的目的在于让机器能够听懂人类的语言并执行相应的动作。语音识别根据不同的准则可分为:孤立词识别、连接词识别和连续语音识别;特定人语音识别和非特定人语音识别等。现在被普遍使用的系统有基于DTW和模式匹配技术系统、基于隐马尔可夫模型链HMM语音识别系统、基于人工神经网络ANN语音识别系统。语音识别系统主要是由特征提取、识别网络、声学模型和识别模块等四部分组成。
特征提取是对语音信号进行预处理, 将录制得到的语音波形信号转换为声学特征, 如预加重和分帧, 然后对每一帧语音数据提取最能够反映语音特征的特征向量, 如MFCC系数, LPC系数, LPCC系数等。
识别网络是在识别过程中用来搜索最佳词序列的一个搜索空间, 一般由任务定义、词典和语言模型组成, 任务语法主要定义了基本识别单元的网络, 我们这里所用的基本识别单元是音素, 词典则包含了识别任务中所有用到的单词且定义每一个单词所对应的音节级或音素级的发音。
声学模型是用来描述发音过程的一个数学模块, 本次试验中我们使用的是隐马尔可夫模型 (HMM) 。
识别模块是语音识别系统的核心部分, 它是在识别网络中搜索一条最优路径, 使得该路径上的模型产生未知声音序列的概率是最大的。
2 基于HTK语音识别系统的搭建
HTK语音识别系统的建立一般分为四个阶段:数据准备阶段、模型训练阶段、识别阶段、结果分析阶段。
2.1 数据准备阶段
数据准备阶段主要完成语料的准备、语音的标注、任务语法和词典的创建、得到真值文件以及语音数据的特征提取等工作。语音识别工作中, 所要用到的语料必须具有一定的代表性, 尽可能多得覆盖各种语音现象, 语料库选择的好坏对最终的识别结果有着很直接的影响。HTK里的HSLab工具可用来进行语音数据的录制和标注, HCopy用于将一个或多个源文件转换成另一个需要的文件输出, 在用于参数的提取时, 是将每一个语音文件 (wav或sig) 转换成相应的MFCC文件, 这里我们对每帧的语音信号提取39维的梅尔倒谱系数 (MFCC) 。在HTK中还可以用Per脚本Prompts2mlf来实现将语音文件截成音节级真值文件, 用HLEd工具实现将音节级真值文件转换成音素级真值文件, 用HParse函数可将创建好的任务语法文件转换成机器能直接使用的词网络。词典可以自己手动创建, 也可以通过HDMan函数来创建, HTK里的HList工具可以用来检查语音文件的内容, 还可以查看语音文件转换成特征文件的结果, HLEd是一个由脚本驱动的标记编辑器, 用于生成系统所需要的录音标记文件*MLF。
2.2 模型训练阶段
模型训练阶段我们主要完成为每个识别单元定义原始的HMM模型以及模型的初始化过程和模型的训练。对语音而言我们一般选取自左向右的无跨越模型。在定义初始模型时, 首先需要确定模型的结构, 本系统中我们创建5个状态的HMM模型, 采用从左向右的拓扑结构 (如图2所示) , 状态2, 3, 4称为活动状态, 状态1和5为开始状态和结束状态, 为非发散状态, 确定结构之后根据HMM模型的参数定义格式对HMM模型进行原始定义, 定义的参数包括特征参数提取的类型、向量的维度、高斯混合密度数、状态数以及每个状态的均值和方差, 状态的转移矩阵等。在训练模型之前, 为确保训练能够快速且精准收敛, HMM模型的参数必须依照原始的训练数据正确初始化, 将所有特征矢量的均值和方差作为原始模型的初始均值和方差, HTK里可通过Hinit或HComp V两个工具来实现模型的初始化。模型的训练就是对模型参数的学习和调整过程, 用大量的训练语音调整参数, 对参数进行重估, 在HTK里使用基于Baum-Welch算法的HERest工具来实现对模型的训练。
2.3 识别阶段
识别阶段为对输入语音进行模式匹配的过程, HTK里提供了语音识别的工具Hvite, 其是一种基于Veterbi算法的识别工具, 可以用来测试输入观察是否与识别器的马可夫模型相一致。
2.4 结果分析阶段
最后系统的性能分析是由HTK提供的工具HResults来实现, 用于分析识别率。最终给出的结果包括词和句子的识别率以及其他信息。该工具通过以下公式来计算识别率:
其中, N为数据集中词的总个数, D为识别结果中删除词的个数, S为识别结果中替换词的个数, I为识别结果中插入词的个数。
3 实验结果及分析
3.1 实验语料库
实验所用的语音库为Tidigits数据库, 选取了其中400条7字长的数字串作为训练语句, 男女各200条, 选取其中100条作为测试语句, 男女各50条。所有的数据采样率为20 000 Hz, 量化精度为16 bits。
3.2 实验环境
本文的实验环境如下:Windows7操作系统, CPU为Intel酷睿i5 3230M, 主频为2.6 GHz, 内存为4 GB, HTK工具包的版本为3.4.1, visual的版本为2010, Perl脚本编辑器的版本为5.20.2。
3.3 实验结果及分析
图中SENT表示句子, 其中有100条测试语料, 85条识别正确, 识别率为85%;第二行WORD表示单词的识别结果, 总共700个单词, D表示删除错误, S表示替换错误, I表示插入错误, 词的识别率为99%, 识别率比较高。
4 结论
本文结合隐马尔可夫模型, 利用HTK语音识别工具包, 实现了连续数字语音识别系统的搭建。本系统我们采用的是7字长的连续数字识别, 识别率比较不错, 可用于各种银行卡卡号或各类会员卡号的识别, 或者是网站的登录等, 未来我们还可以继续研究中英文数字串的识别, 同时还可以加入中英文姓名。日后我们将围绕HTK的基本工具, 不断改进算法来提高系统的识别率。
参考文献
[1]杨嵩.基于HTK的连续汉语数码语音输入系统研究[J].计算机与数字工程, 2012, 4 (40) :35-38.
[2]范会敏, 郑峦.基于HTK的语音识别系统设计及实现[J].电脑编程技巧与维护, 2015, 23 (47) :95-97.
[3]涂俊辉, 续晋华.基于HTK的连续语音识别系统及其在TIMIT上的实验[J].现代计算机 (专业版) , 2009, 319:29-33.
[4]王鸿儒, 杨根科, 杨祖华.基于HTK的连续语音识别网站系统的研究与实现[J].微型电脑应用, 2010, 7 (26) :19-21.
[5]Kuldeep Kumar, Ankita Jain and R.K.Aggarwal.A Hindi speech recognition system for connected words using HTK[J].Computational Systems Engineering, 2012, 1:25-32.
[6]Steve Young, Gunnar Evermann, Mark Gales, et al.The HTK Book[J].http//htk.eng.cam.ac.uk
[7]张雪英.数字语音处理及MATLAB仿真[M].北京:电子工业出版社, 2010.
语音识别的自适应研究 篇4
电动交通工具已成为日常出行必不可少的一部分,当前大多数电动车充电场地及充电条件并不完备,无线充电尚未普及,因过度充电等引发的事故屡见不鲜。电动车无线语音充电控制系统的研究,能够使用户在电动车充电达到额定电量或突发情况时,通过远距离无线语音控制断开充电,减少过度充电等造成事故的发生。本文提出一种设计方案,采用凌阳单片机SPCE061A与无线模块nRF24L01作为无线语音充电控制系统的发射器,STC89C52单片机与无线模块nRF24L01作为系统的接收器,由用户对发射器进行语音输入,发射器对语音命令进行识别并发送,接收器接收到命令后进行解析并执行相应命令,最终实现对电动车充电的远程无线语音控制。
1 系统总体设计
无线语音充电控制系统主要由发射器、接收器和执行部分组成,电动车在充电过程中,用户通过对凌阳SPCE061A语音输入控制命令,凌阳单片机识别出相应控制命令并通过nRF24L01无线射频模块发送到STC89C52单片机,后者接收到控制命令后执行充断电动作。凌阳单片机及STC89C52单片机与nRF24L01通信均通过模拟SPI串行接口实现。系统总体结构如图1所示。
2 系统硬件设计
2.1 语音识别硬件基础
凌阳SPCE061A是一款16位微控制器,具有专用麦克风接口,可以对语音进行录制,同时具有16位的定时器/计数器,能够对采样频率进行控制,系统时钟频率最高能够达到49MHz,内置有乘法器和内积运算,保证了芯片对语音的快速反应,同时保证了语音识别算法能够有效运行[1],凌阳单片机语音输入识别的硬件基础如图2所示。
凌阳单片机拥有的8通道10位ADC中,有一个特定语音输入通道,内置有自动增益控制放大器的麦克风通道[2]。对凌阳单片机语音输入时,麦克输入通道及外围电路有两级运放,第一级运放受自动增益控制,二级运放的输出会被用来衡量一级运放的放大倍数[3],凌阳单片机语音识别原理如图3所示。
凌阳SPCE061A具有特定人语音识别功能,用户在语音输入控制命令前,需先语音训练建立特征模型,语音识别时,通过提取特定人语音特征与训练建立的语音特征模型进行校验匹配以识别用户语音命令[4,5]。在实际语音训练过程中发现,在每次语音提示停顿后发出语音命令,与语音提示结束立即发出语音命令相比,更容易被快速识别。
2.2 无线收发及执行电路设计
nRF24L01是一块工作在2.4G的无线射频收发芯片,由频率发生器、增强型Shock Burst模式控制器、功率放大器、晶体振荡器、调制解调器等组成,低功耗1.9V~3.6V工作,具备地址及CRC检验功能,数据传输率为1/2Mbps,SPI接口数据速率为0~8Mbps,其输出功率、频道选择、协议设置均通过SPI接口进行设置,主要模式如表1所示。
无线收发及执行电路如图4所示。SPCE061A和STC89C52通过SPI对nRF24L01进行配置,将凌阳单片机及STC89C52的IO口,分别与nRF24L01的芯片模式控制线CE、片选线CSN、SPI时钟线SCK、主出从入的数据线MOSI、主入从出的数据线MISO及中断信号IRQ相连,若nRF24L01与STC单片机P0口连接时,要加10k的上拉电阻。无线发送与接收过程主要应用无线芯片的发送模式和接收模式。
执行电路通过STC89C52的P1口进行控制,为便于直观,此处用开关模拟三极管驱动继电器闭合,三极管基极与发射极之间加一个电阻,一方面能够过滤小噪声电压,同时能够提高三极管的关断速度,当STC单片机监测到无线模块输入数据为高电平时执行开指令,完成充电闭合动作,当检测到指令信号为低电平时执行关指令,完成断开充电动作。
3 系统软件设计
系统软件设计分别基于un SP IDE2.0.0集成开发环境、ISP Tool_CHS.exe程序下载工具、Keil u Vision4 IDE开发环境及STC_ISP_V488.exe程序下载工具。程序在集成环境中仿真编译无误后,生成的.S37和.hex文件下载到单片机中,便可对系统设计进行调试验证。
3.1 语音识别软件设计
特定人的语音识别包括两个过程,训练过程和识别过程:训练过程中,先对RAM进行初始化,再执行训练,直到训练成功完成训练过程;识别过程先初始化识别器,与语音特征模型匹配校验,再获取识别结果,直到识别出语音命令,执行相应操作[6,7]。系统语音识别程序流程图如图6所示。
程序设计步骤:在un SP IDE2.0.0环境中File New Project,将语音识别函数库bsrv222SDL.lib、语音识别头文件bsr SD.inc/bsr SD.h及语音提示播放支持文件Sacmv26e.lib/Hardware.asm/Hardware.inc添加到工程文件夹;录制所需语音,用Compress Tool工具压缩成S480格式添加到工程;编写语音提示播放程序、训练程序、编写主程序及中断程序,最后添加语音资源索引表,语音识别初始化程序如下:
3.2 无线模块软件设计
nRF24L01是一个数字芯片,工作在发射模式下发射功率为6d Bm,电流消耗为9m A,接收模式时电流消耗为12.3m A。nRF24L01的SPI配置有30字节的配置字,可将其配置为增强型Shock Burst TM收发模式,这种低速输入高速发射模式较为节能[8,9]。增强Shock Burst TM需先将接收机的地址及数据送入nRF24L01,配置config寄存器后把CE置高,10μs后进入发送模式。接收模式需先配置本机地址及接收数据大小,配置config寄存器并将CE置高,130μs后进入监视状态等待接收数据。将与SPCE061A相连的无线模块设置为发射模式:
将与STC89C52相连的无线模块设置为接收模式,接收端nrf24L01的主程序如下,单片机将接收到的信号进行分析,进而执行控制动作:
4 结束语
电动车无线语音充电控制系统的研究,经过硬件电路的搭建和软件程序的调试,验证了电动车充电无线语音控制的可行性。这种无线语音充电控制系统具有成本低、实用性强的特点,通过后续预警、监测等功能的扩充和完善,可望实现电动车无线语音充断电、安全防护语音提醒等预警监测一体化微控系统,具备一定的经济效益和发展前景。
摘要:我国现阶段电动车保有量超3亿辆,由电动车充电引发的火灾事故时有发生,为解决居民用户电动车过度充电问题,设计了一种电动车无线语音充电控制系统。该系统主要采用SPCE061A凌阳单片机、nRF24L01无线射频收发模块和STC89C52单片机。通过对凌阳单片机输入语音命令,并由无线射频收发模块将命令发送到STC89C52单片机以控制继电器,从而实现用户通过远程无线语音对电动车充电的控制。
关键词:凌阳单片机,nRF24L01,语音,无线控制
参考文献
[1]徐正平,葛文奇,王晓坤,等.具有显示及语音提示功能的智能电动车设计[J].液晶与显示,2010(4):225-229.
[2]付蔚,唐鹏光,李倩.智能家居语音控制系统的设计[J].自动化仪表,2014(1):46-50.
[3]孔祥洪,董昌春,王令群.凌阳16位单片机[M].北京:北京航空航天大学出版社:2009:138-186.
[4]张海龙.基于语音识别技术的语音控制智能手系统[J].单片机与嵌入式系统应用,2015(1):31-34.
[5]宋凯,朱春波,李阳,等.基于磁耦合谐振的自主无线充电机器人系统的设计[J].电工技术学报,2014(9):38-43.
[6]李胜,李永新,李尚荣,等.语音控制应用系统设计[J].机械工程学报,2002(12):235-237.
[7]李昌禄,李静南,郭龙华,等.语音控制系统在无线遥控中的功能扩展和应用研究[J].实验室科学,2012(4):109-112.
[8]崔阳,张维华,白云峰.一种基于Arduino的智能家居控制系统[J].计算机技术与应用,2014(4):123-125.
【语音识别的自适应研究】推荐阅读:
人脸识别的核方法研究论文06-21
模式识别的方法与应用06-10
语音研究07-16
语音信号的降噪研究05-19
高职语音教学改革研究08-26
特别的精神特别的活动09-12
特别的月饼特别的中秋作文09-13
特别的爱给特别的孩子05-25
特别的关爱给特别的你11-03