发明内容
本发明的目的在于克服现有技术中的不足,提供一种深度神经网络的构建方法及系统,通过对各隐含层的节点个数的有效控制,大大减少了深度神经网络中节点的冗余性。
为实现上述目的,本发明的技术方案是:
一种深度神经网络的构建方法,包括:
对深度神经网络进行初始化,所述初始化包括确定所述深度神经网络的拓扑结构;
利用训练数据训练所述深度神经网络的模型参数;
基于所述深度神经网络的拓扑结构在所述训练数据上的分布特征对所述深度神经网络进行结构优化。
优选地,所述基于所述深度神经网络的拓扑结构在所述训练数据上的分布特征对所述深度神经网络进行结构优化包括:
根据所述深度神经网络的隐含层的权重量级对隐含层节点数进行优化;或者
根据所述深度神经网络的隐含层的节点活跃性对隐含层节点数进行优化。
优选地,所述根据所述深度神经网络的隐含层的权重量级对隐含层节点数进行优化包括:
对所述深度神经网络的隐含层中的节点,计算连接所述节点的所有节点与所述节点之间的权重小于权重阈值的比率;
如果所述节点对应的比率大于比率阈值,则删除所述节点和连接所述节点的路径。
优选地,所述根据所述深度神经网络的隐含层的节点活跃性对隐含层节点数进行优化包括:
对所述深度神经网络的隐含层中的节点,计算所述训练数据在所述节点输出的均值和方差;
根据所述均值和方差,判断所述节点是否属于非活跃节点;
如果是,则删除所述节点和连接所述节点的路径。
优选地,所述判断所述节点是否属于非活跃节点包括:
对所述节点所在隐含层中所有节点对应的均值和方差分别从大到小进行排序,得到所述节点对应的均值排名和方差排名;
如果所述节点对应的均值排名在设定的均值排名阈值之前,并且所述节点对应的方差排名在设定的方差排名阈值之前,则确定所述节点为活跃节点;
否则,确定所述节点为非活跃节点。
优选地,所述方法还包括:
对结构优化后的深度神经网络进行参数重训练;
判断参数重训练后的深度神经网络是否满足预设条件;
如果是,则输出参数重训练后的深度神经网络;
否则,对所述参数重训练后的深度神经网络重复依次进行所述结构优化和所述参数重训练,直到满足预设条件为止。
优选地,所述预设条件为:达到预设模型更新最大次数,或者模型结构优化参数减少的规模小于设定的规模阈值,或者网络分类正确率下降幅度超过设定的幅度阈值。
一种深度神经网络的构建系统,包括:
初始化模块,用于对深度神经网络进行初始化,所述初始化包括确定所述深度神经网络的拓扑结构;
参数训练模块,用于利用训练数据训练所述深度神经网络的模型参数;
结构优化模块,用于基于所述深度神经网络的拓扑结构在所述训练数据上的分布特征对所述深度神经网络进行结构优化。
优选地,所述结构优化模块包括:第一优化单元、或者第二优化单元;
所述第一优化单元,用于根据所述深度神经网络的隐含层的权重量级对隐含层节点数进行优化;
所述第二优化单元,用于根据所述深度神经网络的隐含层的节点活跃性对隐含层节点数进行优化。
优选地,所述第一优化单元包括:
第一计算单元,用于依次对所述深度神经网络的隐含层中的每个节点,计算连接所述节点的所有节点与所述节点之间的权重小于权重阈值的比率;
第一判断单元,用于判断所述节点对应的比率大于比率阈值;
第一删除单元,用于在所述第一判断单元判断所述节点对应的比率大于比率阈值时,删除所述节点和连接所述节点的路径。
优选地,所述第二优化单元包括:
第二计算单元,用于依次对所述深度神经网络的隐含层中的每个节点,计算所述训练数据在所述节点输出的均值和方差;
第二判断单元,用于根据所述均值和方差,判断所述节点是否属于非活跃节点;
第二删除单元,用于在所述第二判断单元判断所述节点属于非活跃节点时,删除所述节点和连接所述节点的路径。
优选地,所述第二判断单元包括:
排序单元,用于对所述节点所在隐含层中所有节点对应的均值和方差分别从大到小进行排序,得到所述节点对应的均值排名和方差排名;
确定单元,用于在所述节点对应的均值排名在设定的均值排名阈值之前,并且所述节点对应的方差排名在设定的方差排名阈值之前时,确定所述节点为活跃节点;否则,确定所述节点为非活跃节点。
优选地,所述系统还包括:
参数重训练模块,用于对结构优化后的深度神经网络进行参数重训练;
判断模块,用于判断参数重训练后的深度神经网络是否满足预设条件;输出模块,用于在所述判断模块判断参数重训练后的深度神经网络满足预设条件时,输出所述深度神经网络;在所述判断模块判断参数重训练后的深度神经网络不满足预设条件时,通知所述结构优化模块和所述参数重训练模块对所述参数重训练后的深度神经网络重复依次进行所述结构优化和所述参数重训练。
本发明的有益效果在于:
1.与目前通用的各隐含层的节点个数相同的深度神经网络相比,应用本发明构建的深度神经网络可以极大地减少神经网络的参数个数,从而减小了所需的存储空间并且加快了模型的训练速度;
2.由于神经网络参数减少使得解码时计算状态输出概率的时间减少,将采用本发明构建的深度神经网络应用于语音识别系统,可以提高语音识别系统的最终识别的解码速度,从而在实际运用中有更好的实时性;
3.本发明在神经网络参数大幅减少的情况下对于语音识别系统最终的识别性能没有影响,而在神经网络参数不变的前提下,还可以通过增加靠近输入层的隐含层节点个数的方法提升识别性能。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了使本技术领域的人员更好地理解本发明实施例的方案,下面首先对传统DNN模型的训练过程做简要说明。
传统DNN模型的训练过程包括:
步一:确定DNN模型的拓扑结构;
具体地,DNN的输入层和输出层分别对应于声学特征和HMM模型的输出状态,其节点个数可在训练前预先确定。而隐含层的层数及每个隐含层的节点个数通常也根据经验预先设定,虽然不同系统经验值会有不同,但大多数情况下会设置DNN的隐含层数为4到9之间,每个隐含层的节点个数通常都相同,为1024、2048或者2560。
步二:深度神经网络模型参数训练;
具体地,模型参数为权重参数。利用采集的训练数据训练所述DNN模型的权重参数,整个训练过程分为两个步骤:
a)无监督预训练
系统首先随机生成符合高斯分布的随机数作为神经网络的初始权重,然后仅仅利用训练数据的声学特征从输入层往输出层按照受限玻尔兹曼机的训练方法逐层进行权重的训练。具体地,当输入层与第一个隐含层之间的权重首先训练完成后,利用声学特征和该权重得到第一个隐含层的输出值,将其视为受限玻尔兹曼机的输入训练第一个隐含层与第二个隐含层之间的权重,如此重复下去,直到倒数第二个隐含层与最后一个隐含层之间的权重训练完成为止。
b)有监督最终训练
将无监督预训练得到的权重作为神经网络的初始权重,利用训练数据的声学特征以及对应的标注,采用误差反向传播算法进行所有权重的最终优化调整。具体地,首先根据当前权重值计算出当前神经网络的输出与真实结果——标注之间的误差值E,然后计算出误差值E对各层权重的梯度最后根据梯度下降法进行各层权重的更新,即其中Wi t表示第i层的当前权重,Wi t+1表示第i层更新后的权重。
传统DNN模型的缺陷在于:传统DNN模型的拓扑结构主要采用经验设置的方法,对各隐含层选择相同节点个数。显然这样的DNN模型较大,冗余的模型参数较多,导致模型训练所需的时间很长及最终解码速度很慢。
然而,在应用于语音识别的深度神经网络的拓扑结构构建中,靠近输入层的隐含层由于需要保留从语音波形信号中提取出来的声学特征信息因此往往需要保留较多的节点个数以避免语音声学特征信息的丢失;而靠近输出层的隐含层,相比于原始的声学特征舍弃了很多对于识别不起作用或者产生干扰的信息,而保留了用于识别不同状态的区分性信息,因此这些层中可以采用较少的节点进行建模,从而在不损失识别性能的情况下实现网络参数规模的缩减,实现训练效率的提升。而研究结果进一步证实深度神经网络中随着层数的增高,其权重分布逐渐稀疏,一般的权重绝对值大部分都将小于0.1,很多节点在网络中不起作用或者作用很小。
对此,本发明实施例提出了一种符合深度神经网络模型规律特性的,实现隐含层的节点个数呈递减变化的深度神经网络的构建方法及系统,通过对各隐含层的节点个数的有效控制,大大减少了深度神经网络中节点的冗余性,将采用本发明实施例构建的深度神经网络应用于语音识别系统,可以在不损失最终识别性能的情况下,有效地提高深度神经网络的模型训练效率和解码速度。
在现有技术中,深度神经网络模型的拓扑结构通常会根据数据量和模型规模大小的关系进行经验性设置,而实际上DNN模型中各隐含层具体需要多少节点事先并不太明确,因而预设的拓扑结构可能存在节点冗余或不足等问题。通过实验发现,深度神经网络模型训练中有很多节点的相关权重值在0附近,而且越接近输出层,权重值在0附近的比率越大。显然权重在0附近时对网络没有多大贡献,去除这部分连接对于网络的区分性影响不大,但是可以有效地减少网络中的参数个数。
因此本发明实施例提供一种深度神经网络的构建方法,对初始化后的深度神经网络利用训练数据训练其模型参数,并基于所述深度神经网络的拓扑结构在所述训练数据上的分布特征对所述深度神经网络进行结构优化,在不损失最终识别性能的情况下,有效地提高深度神经网络的模型训练效率和解码速度。
如图1所示,是本发明实施例深度神经网络的构建方法的流程图,包括以下步骤:
步骤101:对深度神经网络进行初始化,所述初始化包括确定所述深度神经网络的拓扑结构。
步骤102:利用训练数据训练所述深度神经网络的模型参数。
步骤103:基于所述深度神经网络的拓扑结构在所述训练数据上的分布特征对所述深度神经网络进行结构优化。
在本发明实施例中,可以采用多种方式对所述初始化后的深度神经网络进行结构优化,比如,可以根据所述深度神经网络的隐含层的权重量级对隐含层节点数进行优化,或者根据所述深度神经网络的隐含层的节点活跃性对隐含层节点数进行优化。具体优化过程将在后面详细描述。
如图2所示,是本发明实施例中对深度神经网络进行结构优化的一种流程图,包括以下步骤:
步骤201:依次对所述深度神经网络的隐含层中的每个节点,计算连接所述节点的所有节点与所述节点之间的权重小于权重阈值的比率。
具体地,用表示深度神经网络中第k个隐含层的第l个节点,设k+1层和k-1的节点个数分别为Nk+1和Nk-1,则和相连的所有权重可以表示为和根据下式计算与相连的权重小于预设的权重阈值th的比率 其中,
步骤202:如果所述节点对应的比率大于比率阈值,则删除所述节点和连接所述节点的路径。
对于隐含层中的任意节点都可以计算得到该节点相连的权重值小于预设的权重阈值的比率把大于预设的比率阈值T的节点从训练的模型中舍弃。这里,权重阈值th通常根据经验设定为0.1。比率阈值T既可以根据经验设定为0.9,也可以根据具体的实验进行调整,在全体训练数据经过一次迭代以后,可以对同一隐含层的节点的比率进行排序,从而可以得到的最大值Max和最小值Min,根据T=αMin+(1-α)Max确定比率阈值T,其中α为[0,1]之间的实数。
另一种对深度神经网络进行结构优化的方法,即能够有效地去除训练的深度神经网络模型的冗余性的方法是,找出模型中一些不活跃的节点,将这些节点以及相连的权重去除,从而就可以有效地降低模型的复杂度。
如图3所示,是本发明实施例中对深度神经网络进行结构优化的另一种流程图,包括以下步骤:
步骤301:依次对所述深度神经网络的隐含层中的每个节点,计算所述训练数据在所述节点输出的均值和方差。
具体地,隐含层节点的活跃度可以由训练数据在该节点输出的均值和方差来确定。基于这点在实际训练过程中每次全部训练数据迭代完一次以后,可以计算全部训练数据在各隐含层节点上的活跃度,为了加快计算过程,还可以随机抽取全部训练数据中的一部分来代替全部训练数据,随机抽取的训练数据可以为全部训练数据总量的10%,设这部分训练数据集为S,样本则S在第k个隐含层的输出值为yk=σ(Wkyk-1+bk)。对于第k个隐含层可以根据下式计算在训练数据集S上的均值向量Mk和方差向量Vk: 其中N为训练数据集S的总样本数,为S中第i个样本在第k个隐含层的输出值,这样就得到了在训练数据集S上各个隐含层节点的均值和方差。
步骤302:根据所述均值和方差,判断所述节点是否属于非活跃节点。
步骤303:如果所述节点属于非活跃节点,则删除所述节点和连接所述节点的路径。
如图4所示,是本实施例中判断节点是否属于非活跃节点的流程图,包括以下步骤:
步骤401:对所述节点所在隐含层中所有节点对应的均值和方差分别从大到小进行排序,得到所述节点对应的均值排名和方差排名。
步骤402:如果所述节点对应的均值排名在设定的均值排名阈值th1之前,并且所述节点对应的方差排名在设定的方差排名阈值th2之前,则确定所述节点为活跃节点;否则,确定所述节点为非活跃节点。
具体地,均值排名阈值th1和方差排名阈值th2的大小决定着节点舍弃的程度,通常情况下前几次迭代的均值排名阈值th1和方差排名阈值th2均设置得较小,两个排名阈值通常在50附近,随着迭代次数的增加两个排阈值均逐渐增加至80。
与目前通用的各隐含层的节点个数相同的深度神经网络相比,应用本发明实施例提供的方法构建的深度神经网络可以极大地减少神经网络的参数个数,从而减小了所需的存储空间并且加快了模型的训练速度。特别是目前大词汇量的语音识别系统使用的绑定状态的DNN-HMM系统,由于输出层的节点个数可以达到1万甚至更多,减少最后一个隐含层的节点个数可以非常有效地减少神经网络的参数个数。另外,由于网络参数减少使得解码时计算状态输出概率的时间减少,将采用本发明构建的深度神经网络应用于语音识别系统,可以提高最终识别的解码速度,从而在实际运用中有更好的实时性。再有,本发明实施例的方法在网络参数大幅减少的情况下对于语音识别系统最终的识别性能没有影响,而在网络参数不变的前提下,还可以通过增加靠近输入层的隐含层节点个数的方法提升识别性能。
需要说明的是,在实际应用中,还可以通过迭代方式,进一步减小神经网络的参数规模。具体地,可以对结构优化后的深度神经网络进行参数重训练;判断参数重训练后的深度神经网络是否满足预设条件;如果是,则输出参数重训练后的深度神经网络;否则,对所述参数重训练后的深度神经网络重复依次进行所述结构优化和所述参数重训练,直到满足预设条件为止。
在本发明实施例中,可以采用自适应的迭代方法,具体包括以下步骤:
(1)在训练数据上,根据预设步长调整模型参数,完成一次迭代;
(2)在测试数据集上进行网络分类正确率的测试;
(3)当该次迭代的分类正确率相比上次迭代分类正确率没有提升,则更新迭代步长,比如,将迭代步长的数值减半,然后执行步骤(4);反之保持相同的步长重新迭代,返回步骤(1);
(4)判断步长更新是否达到预设的次数N,一般的选择N=7,若是则终止训练,否则返回步骤(1)。
步骤104:判断参数重训练后的深度神经网络是否满足预设条件;如果是,则执行步骤105;否则,返回步骤102,对所述参数重训练后的深度神经网络重复依次进行所述结构优化和所述参数重训练,直到满足所述预设条件为止。
所述预设条件可以是:达到预设模型更新最大次数,或者模型结构优化参数减少的规模小于设定的规模域值,或者网络分类正确率下降幅度超过设定的幅度阈值等。
本发明实施例的方法,通过对深度神经网络进行结构优化,使得在全部训练数据每次迭代完成以后都可以将深度神经网络中的一些不活跃节点舍弃,从而逐渐地减小神经网络的参数规模,迭代多次以后的最终模型参数将会变得很小,从而大幅减少解码时的计算量。
相应地,本发明实施例还提供一种深度神经网络的构建系统,如图5所示,是该系统的一种结构示意图。
在该实施例中,所述深度神经网络的构建系统包括:
初始化模块501,用于对深度神经网络进行初始化,所述初始化包括确定所述深度神经网络的拓扑结构;
参数训练模块502,用于利用训练数据训练所述深度神经网络的模型参数;
结构优化模块503,用于基于所述深度神经网络的拓扑结构在所述训练数据上的分布特征对所述深度神经网络进行结构优化。
在实际应用中,上述结构优化模块503可以采用多种方式实现,比如:
所述结构优化模块503的功能可以通过第一优化单元或者第二优化单元来实现,其中:
所述第一优化单元,用于根据所述深度神经网络的隐含层的权重量级对隐含层节点数进行优化;
所述第二优化单元,用于根据所述深度神经网络的隐含层的节点活跃性对隐含层节点数进行优化。
上述第一优化单元具体可以包括:第一计算单元、第一判断单元和第一删除单元,其中:
第一计算单元,用于依次对所述深度神经网络的隐含层中的每个节点,计算连接所述节点的所有节点与所述节点之间的权重小于权重阈值的比率;
第一判断单元,用于判断所述节点对应的比率大于比率阈值;
第一删除单元,用于在所述第一判断单元判断所述节点对应的比率大于比率阈值时,删除所述节点和连接所述节点的路径。
第一优化单元对隐含层节点数的具体优化过程可参照前面本发明方法实施例中的描述,在此不再赘述。
上述第二优化单元具体可以包括:第二计算单元、第二判断单元和第二删除单元,其中:
第二计算单元,用于依次对所述深度神经网络的隐含层中的每个节点,计算所述训练数据在所述节点输出的均值和方差;
第二判断单元,用于根据所述均值和方差,判断所述节点是否属于非活跃节点;
第二删除单元,用于在所述第二判断单元判断所述节点属于非活跃节点时,删除所述节点和连接所述节点的路径。
第二优化单元对隐含层节点数的具体优化过程可参照前面本发明方法实施例中的描述,在此不再赘述。
上述第二判断单元具体可包括:排序单元,用于对所述节点所在隐含层中所有节点对应的均值和方差分别从大到小进行排序,得到所述节点对应的均值排名和方差排名;确定单元,用于在所述节点对应的均值排名在设定的均值排名阈值之前,并且所述节点对应的方差排名在设定的方差排名阈值之前时,确定所述节点为活跃节点;否则,确定所述节点为非活跃节点。
与目前通用的各隐含层的节点个数相同的深度神经网络相比,应用本发明实施例提供的系统构建的深度神经网络可以极大地减少神经网络的参数个数,从而减小了所需的存储空间并且加快了模型的训练速度。特别是目前大词汇量的语音识别系统使用的绑定状态的DNN-HMM系统,由于输出层的节点个数可以达到1万甚至更多,减少最后一个隐含层的节点个数可以非常有效地减少神经网络的参数个数。另外,由于网络参数减少使得解码时计算状态输出概率的时间减少,将采用本发明构建的深度神经网络应用于语音识别系统,可以提高最终识别的解码速度,从而在实际运用中有更好的实时性。再有,本发明实施例的方法在网络参数大幅减少的情况下对于语音识别系统最终的识别性能没有影响,而在网络参数不变的前提下,还可以通过增加靠近输入层的隐含层节点个数的方法提升识别性能。
需要说明的是,在实际应用中,还可以通过迭代方式,进一步减小神经网络的参数规模。为此,如图6所示,在本发明深度神经网络的构建系统的另一实施例中,所述系统还可进一步包括:
参数重训练模块601,用于对结构优化后的深度神经网络进行参数重训练;
判断模块602,用于判断参数重训练后的深度神经网络是否满足预设条件;
输出模块603,用于在所述判断模块602判断参数重训练后的深度神经网络满足预设条件时,输出所述深度神经网络;在所述判断模块602判断参数重训练后的深度神经网络不满足预设条件时,通知结构优化模块503和参数重训练模块601对参数重训练后的深度神经网络重复依次进行所述结构优化和所述参数重训练。
本发明实施例的系统,通过对深度神经网络进行结构优化,使得在全部训练数据每次迭代完成以后都可以将深度神经网络中的一些不活跃节点舍弃,从而逐渐地减小神经网络的参数规模,迭代多次以后的最终模型参数将会变得很小,从而大幅减少解码时的计算量。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。