一种深度学习模型的优化处理方法、装置和存储介质与流程

文档序号:19572563发布日期:2019-12-31 19:05阅读:174来源:国知局
一种深度学习模型的优化处理方法、装置和存储介质与流程

本发明涉及机器学习领域,具体而言,涉及一种深度学习模型的优化处理方法、优化处理装置、数据处理方法、设备和存储介质。



背景技术:

深度学习模型是现代人工智能技术的核心内容。以大家所熟知的机器翻译技术为例,机器翻译模型是一种深度学习模型,其可以一种自动将一种语言翻译成另外一种语言。相比于人工翻译,机器翻译具有翻译效率高,学习成本和翻译成本低,易于扩展到不同语种等优势,因此,随着国际经济贸易、国际旅游等行业的蓬勃发展,机器翻译技术在国际交流中的作用日趋重要。一些有国际影响力的跨国企业如谷歌、微软、百度等公司都在研究机器翻译技术,并发布了多语言的翻译系统,极大地提高了用户在国际交流时的便利程度。

根据机器翻译算法框架不同,目前机器翻译技术可以大体分为以下三种方法:1)基于规则的机器翻译,由语言学家撰写翻译规则、处理规则冲突、维护规则库,当输入一句话时,根据翻译规则生成译文;2)统计机器翻译,根据平行语料库,自动学习平行句对之间的词语对齐,自动抽取翻译规则并估计翻译概率,建立翻译模型并进行参数调优;当输入一句话时,根据翻译规则生成n个翻译候选,并根据翻译模型和语言模型对候选进行打分并排序,将排名第1的译文候选作为最终译文;3)神经网络机器翻译,根据平行语料库和循环神经网络的训练方法,自动学习网络参数;当输入一句话时,根据网络结构自动生成译文。

现有的基于神经网络的深度学习模型所存在的主要问题是,由于基于神经网络的深度学习模型多为深层神经网络模型,导致模型含有大量参数,无论是存储还是计算都需要消耗大量资源。

目前,大多数客户端(例如使用移动端设备的客户端)的神经网络深度学习模型的解决方案都是基于将处理请求上传至云服务器,服务器做处理以后再返回给客户端。这在一方面导致客户端用户信息会传至云服务器,对于注重隐私的用户来说无疑是十分不友好的。另一方面,当客户端无法连接网络时,执行处理的应用程序将无法工作。在服务器端,存储模型的资源可以忽略不计,计算资源可以通过分布式调度来提升处理速度。但是在客户端,特别是使用移动端设备的客户端,无论是存储资源或是计算资源都尤为宝贵,当将神经网络深度学习模型植入移动设备时,移动设备无法承受该模型巨大的资源消耗。

因此需要一种能够适用于客户端、对深度学习模型的生成过程进行优化处理的方案,以至少部分地解决上述问题。



技术实现要素:

为了解决上述问题中的至少一些问题,本发明实施例提出了一种深度学习模型的生成方法及装置。

根据本发明的第一方面,提供了一种深度学习模型的优化处理方法,包括:调整深度学习模型的矩阵中的至少两个矩阵的大小,使得所述至少两个矩阵大小相同;使所述至少两个矩阵进行权值共享。

在一些实施例中,所述至少两个矩阵包括如下矩阵中的至少两个矩阵:所述深度学习模型编码端的词向量矩阵、所述深度学习模型解码端的词向量矩阵、所述深度学习模型输出全连接层的参数矩阵、所述深度学习模型转换输入输出后的编码端的词向量矩阵、所述深度学习模型转换输入输出后的解码端的词向量矩阵和所述深度学习模型转换输入输出后的输出全连接层的参数矩阵。

在一些实施例中,所述至少两个矩阵包括第一矩阵和第二矩阵,所述调整深度学习模型的矩阵中的至少两个矩阵的大小,包括:从所述第一矩阵中删除词向量;和/或向所述第二矩阵中填补词向量。

在一些实施例中,从所述第一矩阵中删除词向量包括:按照词频分别对与所述第一矩阵和所述第二矩阵相对应的词表进行排序,所述第一矩阵的大小大于所述第二矩阵的大小,其中,所述第一矩阵对应的词表中的词从第一训练集数据中得到,所述第二矩阵对应的词表中的词从第二训练集数据中得到,所述第一矩阵对应的词表中的词的词频通过对第一训练集数据进行统计得到,所述第二矩阵对应的词表中的词的词频通过对第二训练集数据进行统计得到;按照所述词频,删除排序后与所述第一矩阵相对应的词表中的词,使得删除后的所述第一矩阵的大小与所述第二矩阵的大小相同;向所述第二矩阵中填补词向量包括:按照词频分别对与所述第一阵和所述第二矩阵相对应的词表进行排序,所述第一矩阵的大小大于所述第二矩阵的大小,其中,所述第一矩阵对应的词表中的词从第一训练集数据中得到,所述第二矩阵对应的词表中的词从第二训练集数据中得到,所述第一矩阵对应的词表中的词的词频通过对第一训练集数据进行统计得到,所述第二矩阵对应的词表中的词的词频通过对第二训练集数据进行统计得到;按照所述词频,将标识符填补到与所述第二矩阵相对应的词表中,使得填补后的所述第二矩阵的大小与所述第一矩阵的大小相同。

在一些实施例中,使所述至少两个矩阵进行权值共享,包括:按照设定的共享率,确定所述至少两个矩阵的共享特征维度;使所述至少两个矩阵在所述共享特征维度处权值共享。

在一些实施例中,所述共享率为大于0且小于或等于1的实数。

在一些实施例中,使所述至少两个矩阵进行权值共享,包括:按照设定的第一共享率1,使所述至少两个矩阵在全部特征维度处权值共享,以得到第一权值共享矩阵;按照设定的第二共享率,使所述第一权值共享矩阵与至少一个其他矩阵,在由所述第二共享率所确定的共享特征维度处权值共享;其中,所述至少一个其他矩阵包括所述深度学习模型中除得到所述第一权值共享矩阵的至少两个矩阵以外的其他矩阵和/或通过权值共享得到的其他权值共享矩阵。

在一些实施例中,使所述至少两个矩阵进行权值共享,包括:按照设定的第一共享率1,使所述深度学习模型编码端的词向量矩阵、所述深度学习模型解码端的词向量矩阵与所述深度学习模型输出全连接层的参数矩阵的转置中的至少两个矩阵相等,以得到第二权值共享矩阵;按照设定的第一共享率1,使所述深度学习模型转换输入输出后的编码端的词向量矩阵、所述深度学习模型转换输入输出后的解码端的词向量矩阵与所述深度学习模型转换输入输出后的输出全连接层的参数矩阵的转置中的至少两个矩阵相等,以得到第三权值共享矩阵;按照设定的第二共享率,使所述第二权值共享矩阵与所述第三权值共享矩阵在由所述第二共享率确定的共享特征维度处相等。

在一些实施例中,使所述至少两个矩阵进行权值共享,包括:按照设定的第一共享率1,使所述深度学习模型解码端的词向量矩阵与所述深度学习模型输出全连接层的参数矩阵的转置相等,以得到第二权值共享矩阵;按照设定的第一共享率1,使所述深度学习模型转换输入输出后的解码端的词向量矩阵与所述深度学习模型转换输入输出后的输出全连接层的参数矩阵的转置相等,以得到第三权值共享矩阵;按照设定的第一共享率1,使所述深度学习模型编码端的词向量矩阵与所述第三权值共享矩阵相等,以得到第四权值共享矩阵;按照设定的第一共享率1,使所述深度学习模型转换输入输出后的编码端的词向量矩阵与所述第二权值共享矩阵相等,以得到第五权值共享矩阵;按照设定的第二共享率,使所述第四权值共享矩阵与所述第五权值共享矩阵在由所述第二共享率确定的共享特征维度处相等。

在一些实施例中,在深度学习模型的生成过程中,还采用如下方法中的至少一种进行优化:对通过预训练模型输出的数据集进行过滤,将过滤后的数据集加入训练集作为所述深度学习模型的训练集;使所述深度学习模型的词向量表中相似词的词向量共享行向量和/或列向量;使所述深度学习模型中具有相同结构的不同网络层共享相同的参数;将所述深度学习模型的模型参数中趋近于零的权值置为零;采用稀疏矩阵的存储方式存储所述模型参数;将所述深度学习模型的模型参数量化为设定类型。

根据本发明的第二方面,提供了一种深度学习模型的优化处理装置,包括:调整模块,被配置为调整深度学习模型的矩阵中的至少两个矩阵的大小,使得所述至少两个矩阵大小相同;共享模块,被配置为使所述至少两个矩阵进行权值共享。

根据本发明的第三方面,提供了一种数据处理的方法,包括:采用深度学习模型对用户输入的数据进行处理;其中,所述深度学习模型的至少两个矩阵大小相同并且共享权值。

根据本发明的第四方面,提供了一种电子设备,包括:处理器;以及存储器,配置用于存储机器可读指令,所述指令在由所述处理器执行时,使得所述处理器执行上述任一方法。

根据本发明的第五方面,提供了一种计算机可读存储介质,其上存储有可执行指令,所述指令在被处理器执行时使所述处理器执行上述任一方法。

根据本发明的实施例的技术方案,通过调整深度学习模型的至少两个矩阵的大小使其大小相同,并对至少两个矩阵进行权值共享,从而显著地降低了模型的大小,有利于在客户端利用生成的深度学习模型进行处理,打破了网络的限制,使用户不必通过将信息上传至服务器来获得处理结果,同时使用户不连接网络也可以使用移动设备进行实时的基于优化的深度学习模型对数据进行处理。

附图说明

通过下文结合附图的详细描述,本发明的上述和其它特征将会变得更加明显,其中:

图1示出了根据本发明实施例的深度学习模型的优化处理方法的流程图;

图2示出了根据本发明实施例的调整编码端的词向量矩阵与解码端的词向量矩阵的大小的示例策略的示意图;

图3示出了根据本发明实施例的深度学习模型中矩阵共享的共享策略示意图;

图4示出了根据本发明实施例的深度学习模型中矩阵共享的操作方式示意图;

图5示出了根据本发明实施例的双向翻译模型中双向矩阵共享的共享策略的实现示例的图;

图6至图10分别示出了根据本发明实施例的采用不同的优化处理方法来生成深度学习模型(机器翻译模型)的具体实现的示意图;

图11示出了根据本发明实施例的深度学习模型的优化处理装置的示意性框图;

图12示出了根据本发明实施例的用于生成深度学习模型的整体框架图;

图13示出了根据本发明实施例的用于生成深度学习模型的训练的流程图;

图14示意性地示出了根据本发明实施例的一种设备的方框图。

在附图中,相同或相似的结构均以相同或相似的附图标记进行标识。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚明白,以下结合附图对本申请做进一步详细说明。应注意,以下描述只用于举例说明,并不用于限制本公开。在以下描述中,为了提供对本公开的透彻理解,阐述了大量特定细节。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本公开。在其他实例中,为了避免混淆本公开,未具体描述公知的电路、材料或方法。

在整个说明书中,对“一个实施例”、“实施例”、“一个示例”或“示例”的提及意味着:结合该实施例或示例描述的特定特征、结构或特性被包含在本公开至少一个实施例中。因此,在整个说明书的各个地方出现的短语“在一个实施例中”、“在实施例中”、“一个示例”或“示例”不一定都指同一实施例或示例。此外,可以以任何适当的组合和/或子组合将特定的特征、结构或特性组合在一个或多个实施例或示例中。此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。这里使用的术语“和/或”包括一个或多个相关列出的项目的任何和所有组合。

以下,为便于对本发明的技术方案的进行理解,仍以所熟知的机器翻译模型为例,来对本发明实施例的深度学习模型的生成方法进行说明。应理解的是,下面针对机器翻译模型所做说明适用于所有深度学习模型。

图1示出了根据本发明的实施例的深度学习模型的优化处理方法的流程图。如图1所示,该优化处理方法包括:

步骤s110,调整深度学习模型的矩阵中的至少两个矩阵的大小,使得至少两个矩阵大小相同。

步骤s120,使至少两个矩阵进行权值共享。

为了满足客户端的处理能力,使得生成的深度学习模型能够更好地运行于客户端,在本发明的实施例中,在生成深度学习模型的过程中,采用了对深度学习模型中的至少两个矩阵进行权值共享的优化处理方法。

在一些实施例中,权值共享所涉及的至少两个矩阵包括但不限于如下矩阵中的至少两个矩阵:深度学习模型编码端的词向量矩阵、深度学习模型解码端的词向量矩阵、深度学习模型输出全连接层的参数矩阵、深度学习模型转换输入输出后的编码端的词向量矩阵、深度学习模型转换输入输出后的解码端的词向量矩阵和深度学习模型转换输入输出后的输出全连接层的参数矩阵。

下面将以深度学习模型中的机器翻译模型为例对本发明实施例的优化方法进行说明,但本发明的实施例不限于此,还可以应用于其他的深度学习模型。

在对至少两个矩阵进行权值共享时,如果至少两个矩阵大小不同,例如至少两个矩阵包括第一矩阵和第二矩阵,且第一矩阵的大小大于第二矩阵的大小,若直接共享将会存在矩阵形状不匹配情况。以机器翻译模型为例,若两个词向量矩阵的大小不同,例如在使编码端的词向量矩阵与解码端的词向量矩阵相等时,若与编码端的词向量矩阵相对应的词表大小与解码端的词向量矩阵相对应的词表大小不同,直接共享将会存在词向量矩阵形状不匹配情况。因此,在本发明的实施例中,可以通过调整要共享权值的至少两个词向量矩阵的大小来实现词向量矩阵之间的匹配,进而在至少两个词向量矩阵之间实现权值共享。

在一些实施例中,可以从第一词向量矩阵(第一矩阵)中删除满足设定要求的词向量,直至第一词向量矩阵(第一矩阵)与第二词向量矩阵(第二矩阵)的大小相同。

在一些实施例中,可以向第二词向量矩阵(第二矩阵)中填补满足设定要求的词向量,直至第一词向量矩阵(第一矩阵)与第二词向量矩阵(第二矩阵)的大小相同。

在下面的说明中,将对第一词向量矩阵与第一矩阵,第二词向量矩阵与第二矩阵不做区分。

在一些实施例中,可以同时从第一词向量矩阵中删除满足设定要求的词向量,以及向第二词向量矩阵中填补满足设定要求的词向量,直至第一词向量矩阵与第二词向量矩阵的大小相同。

需要说明的是,在对词向量矩阵的大小进行调整时,需要针对排序后的词表进行。需要注意的是,本发明实施例中所说排序不是针对词向量的排序,而是对词表进行排序。

举例而言,以深度学习模型编码端的词向量矩阵与深度学习模型解码端的词向量矩阵为例。假设编码端训练集数据为cs{s1,s2,…,sn},从编码端训练集数据中提取的词表为解码端训练集数据为ct{t1,t2,…,tn},从解码端训练集数据中提取的词表为即分别对进行排序。

进一步地,在本发明的实施例中,填补是指对词表进行填补。举例而言,向大小为3万的词表填充同一特殊标识符1万个变成和4万的词表同样大小的词表,然后相同位置的词所拥有的词向量共享。下面结合图2,仍以深度学习模型的编码端的词向量矩阵和解码端的词向量矩阵为例进行说明。

如图2所示,示出的是编码端的词向量矩阵(相当于第一词向量矩阵)大于解码端的词向量矩阵(相当于第二词向量矩阵)的情况。为调整两者的大小,可以采取删除策略,即统一按照解码端的词向量矩阵来构建词向量矩阵。在一些实施例中,该过程具体包括首先对编码端和解码端的词表分别进行词频的排序。即,按照词频分别对与第一词向量矩阵和第二词向量矩阵相对应的词表进行排序。其中,第一词向量矩阵对应的词表中的词从第一训练集数据中得到,第二词向量矩阵对应的词表中的词从第二训练集数据中得到,第一词向量矩阵对应的词表中的词的词频通过对第一训练集数据进行统计得到,第二词向量矩阵对应的词表中的词的词频通过对第二训练集数据进行统计得到。

如图2所示,用与词平行排列的横线表示词频的大小,横线越长表示词频越大。图中的编码端词表和解码端的词表均按照词频从大到小做出了排序。

接下来,按照词频,删除排序后与第一词向量矩阵相对应的词表中的词,直至较大的词表与较小的词表长度相同,即使第一词向量矩阵的大小与第二词向量矩阵的大小相同。在一些实施例中,可以将排序后的较大的词表中词频较低的词删除。如图2中的无共享区域所示,可以删除词表中排在最后面的三个词,在发明实施例中,即为词表中词频较低的词。

在一些实施例中,还可以统一按照较大词表来构建词向量矩阵,即采取填补策略来调整两者的大小。具体为,首先对编码端和解码端的词表分别进行词频的排序。即,按照词频分别对与第一词向量矩阵和第二词向量矩阵相对应的词表进行排序,如图2所示。其排列过程同前述实施例,此处不赘述。

接下来,按照词频,将标识符填补到与第二词向量矩阵相对应的词表中,直至较小的词表与较大的词表长度相同,即使填补后的第一词向量矩阵的大小与第二词向量矩阵的大小相同。在一些实施例中,可以将一些填充词填补到较小的词表中词频较低的位置处。如图2所示,在这种情况下,图2中的无共享区域也成为共享区域,可以在解码端词表的最后面填充标识符,例如,在解码端词表的词“slu”的后面添加三个词(图中未示出),分别与编码端词表的最后三个词对应。

在一些实施例中,向较小的词表中填补的填充词可以是相同的特殊标识符,即在图2中解码端的词频最小的位置(例如,最后三个)处填补同一个特殊标识符。这里,特殊标识符可以是无实际含义的标识。这些无实际含义的标识与编码端和解码端的词表中的词没有关系,也不会被实际使用到。

在一些实施例中,可以针对与至少两个词向量矩阵相对应的词表分别实施两种调整策略。举例而言,假设与较大的词向量矩阵相对应的词表的大小是3500,与较小的词向量矩阵相对应的词表的大小是3300,可以同时针对两个词表实施删除策略,即可以将与较大的词向量矩阵相对应的词表的大小,以及与较小的词向量矩阵相对应的词表的大小均删除至3000,从而使较大的词向量矩阵与较小的词向量矩阵的大小相同。

又例如,假设与较大的词向量矩阵相对应的词表的大小是3500,与较小的词向量矩阵相对应的词表的大小是2800,可以针对较大的词表实施删除策略,同时针对较小的词表实施填补策略。即,可以将与较大的词向量矩阵相对应的词表的大小删除至3000,同时将与较小的词向量矩阵相对应的词表的大小均填补至3000,从而使较大的词向量矩阵与较小的词向量矩阵的大小相同。

由于编码端训练集数据(例如cs)与解码端训练集数据(例如ct)存在一一对应的关系,所以可以认为根据它们的训练集数据各自提取的词表ws与wt的词频分布在语义层面上也存在对应关系。因此,在本发明的实施例中,提出了在词向量表排序的基础上进行权值共享的方法。

根据前面具体实施例,调整至少两个矩阵的大小包括:

1)按照词频,对ws和wt进行排序,假设排序后词表为ws′和wt′;

2)对相同次序的词共享词向量。

具体的,若一方词表词的词表大小超出了另一方词表的词表大小,则超出部分的词向量不进行共享。此时,可对超出一方进行删除操作(删除策略),或对另一方进行填补操作(填补策略)。

在一些实施例中,使至少两个矩阵进行权值共享包括:按照设定的共享率,确定至少两个矩阵的共享特征维度,并使至少两个矩阵在共享特征维度处权值共享。

在一些实施例中,设定的共享率为大于0且小于或等于1的实数,确定至少两个矩阵的共享特征维度可以包括:按照设定的共享率,从矩阵的特征维度中确定要进行权值共享的特征维度。

图3示出了根据本发明实施例的的深度学习模型中矩阵共享的共享策略示意图,下面参考图3说明如何对深度学习模型中的矩阵进行共享的示例。

如图3所示,假设两个要进行共享操作的矩阵分别为矩阵a与矩阵b,其特征维度大小均为d。在图3中,特征维度表现为沿竖直方向的矩阵的列。假设设定的共享率为r,且r为大于0且小于或等于1的实数,则矩阵a与矩阵b之间共享部分的特征维度大小为d*r,矩阵a与矩阵b的独占部分的特征维度大小为d*(1-r)。

容易理解的是,共享率r的值越小,则共享的特征维度越少,所获得的参数矩阵则越大,最终的深度学习模型的性能越好。共享率r的值越大,则共享的特征维度越多,所获得的参数矩阵则越小,最终的深度学习模型越精简,但可能会损失一些性能。因此,共享率r的值可以根据模型的具体设计需要进行确定。

进一步地,根据本发明的实施例,如果共享率r等于1,则可以实现矩阵a与矩阵b在全部特征维度上的共享,此时,可以用一个合并的权值共享矩阵来表示矩阵a与矩阵b。

在一些实施例中,可以对得到的权值共享矩阵与至少一个其他矩阵在由重新设定的共享率所确定的共享特征维度处进行进一步权值共享,而至少一个其他权值共享矩阵可以包括深度学习模型中除得到该权值共享矩阵的至少两个矩阵以外的其他矩阵和/或通过权值共享得到的其他权值共享矩阵。下面结合图4进行说明。

图4示出了根据本发明实施例的深度学习模型中的矩阵共享方式的示意图。如图4所示,假设深度学习模型中矩阵的数量为n,为区分不同矩阵,将不同矩阵赋予连续的不同数字编号1,2,…,n。为方便描述,称编号为i的矩阵为矩阵i。当矩阵i与矩阵j进行权值共享时,权值共享后的矩阵可以合并成一个矩阵,被表示为矩阵ij。若仍存在共享操作,则矩阵ij将代替矩阵i与矩阵j,与其他矩阵以设定的共享率进行共享操作。在图4中,假设每次共享操作的设定共享率均为1。经过一次共享操作后,深度模型中矩阵的数量变为n-1。经过多次共享操作后,深度模型中矩阵的数量变为n-4。具体参见图4,例如,将矩阵1与矩阵2进行共享,得到矩阵12,矩阵3与矩阵4进行共享,得到矩阵34;矩阵12与矩阵34进行共享,得到矩阵1234;矩阵1234与矩阵n共享,得到矩阵1234n。如果矩阵的参数量大小为m,则原深度模型的参数量大小为m*n+others,其中others为其他未参与共享操作的矩阵的参数量之和。则经过以上几轮共享操作后,整个深度模型的参数量大小变为m*(n-4)+others,参数量大小降低了4*m,m越大,深度模型的存储空间的压缩量就越大。

基于上述矩阵共享方式,可以通过多次嵌套的操作来实现矩阵共享。

在一些实施例中,按照值为1的共享率,使深度学习模型编码端的词向量矩阵、深度学习模型解码端的词向量矩阵与深度学习模型输出全连接层的参数矩阵的转置中的至少两个矩阵相等,以得到第一权值共享矩阵;按照值为1的共享率,使深度学习模型转换输入输出后的编码端的词向量矩阵、深度学习模型转换输入输出后的解码端的词向量矩阵与深度学习模型转换输入输出后的输出全连接层的参数矩阵的转置中的至少两个矩阵相等,以得到第二权值共享矩阵;按照设定的共享率,使第一权值共享矩阵与第二权值共享矩阵在由该设定的共享率确定的共享特征维度处相等。

在一些实施例中,按照值为1的共享率,使深度学习模型解码端的词向量矩阵与深度学习模型输出全连接层的参数矩阵的转置相等,以得到第一权值共享矩阵;按照值为1的共享率,使深度学习模型转换输入输出后的解码端的词向量矩阵与深度学习模型转换输入输出后的输出全连接层的参数矩阵的转置相等,以得到第二权值共享矩阵;按照值为1的共享率,使深度学习模型编码端的词向量矩阵与第二权值共享矩阵相等,以得到第三权值共享矩阵;按照值为1的共享率,使深度学习模型转换输入输出后的编码端的词向量矩阵与第一权值共享矩阵相等,以得到第四权值共享矩阵;按照设定的共享率,使第三权值共享矩阵与第四权值共享矩阵在由该设定的共享率确定的共享特征维度处相等。

下面结合图5,以双向翻译模型为例,具体说明上述共享策略的实现。

图5示出了根据本发明实施例的双向翻译模型中双向矩阵共享的共享策略的实现的示例。如图5所示,模型a->b表示语言a到语言b的翻译,模型b->a表示语言b到语言a的翻译。

假设已经根据前述实施例所述调整好词向量矩阵的大小。为了方便表述,在模型a->b中,将编码端已调整大小的词向量矩阵记为a1,解码端已调整大小的词向量矩阵记为b1,输出全连接层矩阵记为l1;在模型b->a中,将编码端已调整大小的词向量矩阵记为b2,解码端已调整大小的词向量矩阵记为a2,输出全连接层矩阵记为l2。定义共享函数:s(i,j,k,…,p),其中p为共享率,p为属于(0,1]的实数,i,j,k,…均为需要进行共享操作的矩阵。s(i,j,k,…,p)表示矩阵i,j,k,…之间以共享率p进行共享。

首先关注单方向模型中的矩阵共享策略,可以看到单个模型中编码端、解码端与输出全连接层均用到了同一个矩阵,即模型编码端、解码端与输出全连接层之间存在共享率为1的矩阵共享,在模型a->b中记为s(a1,b1,l1,1),在模型b->a中记为s(a2,b2,l2,1)。

然后,虚线方框中表示的是双向模型之间的词向量矩阵共享,可以看到,模型之间的词向量矩阵共享为部分共享,假设共享率为p1,则最终的共享策略可记为s(s(a1,b1,l1,1),s(a2,b2,l2,1),p1)。即,在每一个单向模型内部共享的基础上,双向模型之间进行了共享。若矩阵大小为(m,n),则共享之前双向翻译模型的参数量大小为:m*n*6+others,其中others是未参与共享的模型参数量。共享之后,双向翻译模型的参数量大小降低为:m*n*(2-p1)+others。由于双向翻译模型的词向量矩阵在整个模型中的占比较大,故此次优化对双向翻译模型的存储空间有极大的压缩。

可选的,当双向模型先进行模型之间共享,再进行单向模型内部共享时,也存在共享策略:s(s(s(b1,l1,1),b2,1),s(a1,s(a2,l2,1),1),p2)。

上述共享策略的执行过程是:第一步,将两个模型各自的解码端词向量矩阵与输出全连接层矩阵以共享率1进行共享;第二步,共享得到的两个矩阵分别跟平行模型的编码端词向量矩阵以共享率1进行共享;第三步,将第二步共享后得到的两个矩阵以共享率p2进行共享。此时,双向翻译模型的参数量大小降低为:m*n*(2-p2)+others,其中others是未参与共享的模型参数量。

在本发明的实施例中,在网络设计层面,提出了一种权值共享方法,以达到减小参数数量的目的,解决了编码端、解码端与解码端输出层的参数的物理存储体积过大的问题,显著地降低了模型的存储体积。

上述操作仅是为了阐述本发明实施例的技术方案而提供的一个具体示例,不应将其视为对本发明保护范围的限制。

另外,在生成深度学习模型后,还可以将生成的深度学习模型发送到或基于客户端的请求发送到客户端,以在客户端利用深度学习模型执行处理。

在该实施例中,在客户端以外的其他实体处生成深度学习模型,客户端从外部其他实体处接收生成的深度学习模型并在客户端处利用深度学习模型执行处理。

本领域技术人员容易理解的是,当将生成的深度学习模型存储到客户端后,可以在没有网络连接的情况下,以存储在客户端上的深度学习模型来执行处理,打破了网络的限制,使用户不必通过将信息上传至服务器来获得处理结果,同时使用户不连接网络也可以使用移动设备进行实时的基于深度学习模型的处理。

在一些实施例中,用于生成深度学习模型的其他实体(或一些实体)一般具有强大的存储能力和运算能力,利用客户端以外的其他实体对生成深度学习模型的过程进行处理,有利于对模型的生成过程进行优化,进而提高所生成的模型的质量。

在一些实施例中,在生成深度学习模型的过程中,还包括对用来生成深度学习模型所使用的训练数据集进行过滤。

在一些实施例中,该处理方法具体包括:利用已经训练好的深度学习模型对训练数据集进行处理,以得到处理结果的集合;利用训练数据集的标准处理结果作为参考,对处理结果的集合进行过滤;以及将与过滤后的处理结果的集合相对应的训练数据集作为生成深度学习模型所使用的训练数据集。

图6示出了以机器翻译模型为例的上述优化处理方法的具体实现的示意流程图。

如图6所示,首先,利用已经训练好的机器翻译模型对训练数据集进行翻译,以得到翻译集。在一些实施例中,已经训练好的机器翻译模型可以包括设置在服务器端的现有的机器翻译模型(transformer),这类机器翻译模型一般是参数较多的预训练的重量级模型。并且,由于这类机器翻译模型已经经过了充分的训练,其模型参数的值更加合理,一般具有较好的翻译质量。

如图6所示,以构成训练集数据的源语言数据作为输入,输入到预训练的重量级模型中,利用预训练的重量级模型对输入的源语言数据进行翻译,得到的翻译结果称为翻译集。

然后,利用训练数据集的标准翻译结果作为参考,对得到的翻译集进行过滤。如图6所示,通过比较得到的翻译集与训练数据集的标准翻译结果,从翻译集中选取较好的一批语料,这个过程被称为过滤。通过对翻译集进行过滤可以提高翻译集的质量。

最后,将与过滤后的翻译集相对应的训练数据集作为对翻译模型进行训练时所使用的训练数据集。如图6所示,将过滤后的翻译集和与过滤后的翻译集相对应的训练数据集同时加载到参数较少的未训练的轻量级翻译模型上,并对未训练的轻量级翻译模型进行训练。利用重量级模型已经调整好的模型参数来指导参数较少的未训练的轻量级翻译模型的参数的更新,以指导未训练的轻量级翻译模型做出更加正确的优化,可以提升模型的训练质量。

在该实施例中,提出了一种利用已经训练好的机器翻译模型来指导参数较少的未训练的轻量级翻译模型的训练的知识蒸馏方法,该方法能够提高模型的训练效果,克服由于未训练的轻量级翻译模型的模型参数的减少而导致的模型翻译质量降低的问题。

上述操作仅是为了阐述本发明实施例的技术方案而提供的一个具体示例,不应将其视为对本发明保护范围的限制。

在一些实施例中,在生成深度学习模型的过程中,还包括将输入到深度学习模型的词向量表示为二分量共享词向量(2-componentsharedembedding)。图7示出了以机器翻译模型为例的上述优化处理方法的具体实现的示意流程图。下面以图7所示的机器翻译模型为例进行说明。

如图7所示,在操作s710中,对词向量表进行初始化。

在一些实施例中,首先将词表填入到一个二维的表格里面。在该二维表格里面,位于同一行的词对应同一个行向量,位于同一列的词对应同一个列向量,然后一个词就由其对应的行向量与列向量这两个向量联合表示。这样能保证每个词的表示是唯一的,且位于相同的行的词共享相同的行向量,位于相同的列的词共享相同的列向量。

在一些实施例中,对词向量表进行初始化时,可以将词以随机的形式填入词向量表,并将词向量表中的向量随机初始化。在本发明的实施例中对词向量表的初始化方法不做限定。

接下来,在操作s720中,固定词向量表,对模型进行训练,并根据训练结果更新词向量表的行向量与列向量,直至模型收敛后结束训练。

在一些实施例中,利用以句为单位的训练语料对模型进行训练,并根据训练的结果更新词向量表中的行向量与列向量。

接下来,在操作s730中,固定词向量表的行向量与列向量,并利用最小权最佳匹配的方法对词的位置进行重新分配。

在一些实施例中,重新分配是指行向量与列向量固定不动,而只移动词语。举例而言,如果一个词语开始在(a1,b1)的位置,在经过重新分配后,这个词语可能会移动到(a2,b2)的位置。利用最小权最佳匹配的方法对词向量表中的全部词的位置进行调整。

接下来,在操作s740中,判断模型是否收敛,若模型收敛,则结束训练过程。若模型不收敛,则重复执行操作s720和操作s730对模型进行迭代训练,直至模型收敛。

举例而言,当完成对词向量表中的全部词的重新分配之后,再根据重新分配后的词向量表对模型进行训练,同时根据训练的结果更新词向量表中的行向量与列向量,以及再训练模型至其收敛后,利用最小权最佳匹配的方法对词的位置进行重新分配。

本领域技术人员容易理解的是,如果假设原始词向量表的存储空间用n来表示,则经过上述训练的词向量表,其所占的存储空间可以由原来的n变为2*√n。并且,通过利用最小权最佳匹配的方法来查找词与词之间的联系,对词的位置进行了重新分配,从而最小化了训练误差,可以使相似词之间共享相同的行向量或列向量,实现了词向量表的优化。

需要说明的是,该方法同时适用于机器翻译模型的源语言端与目标语言端的词表。

在该实施例中,通过将输入到机器翻译模型的词向量表示为二分量共享词向量,并通过查找词与词之间的联系,将词填入方正词表,使相似词之间共享相同的行向量或列向量,可以有效地解决模型的物理存储体积过大的问题。

上述操作仅是为了阐述本发明实施例的技术方案而提供的一个具体示例,不应将其视为对本发明保护范围的限制。

在一些实施例中,在生成深度学习模型的过程中,还包括使具有相同结构的的网络层共享相同的权值矩阵。具体包括,共享输入端具有相同结构的网络层的所有参数,和/或共享输出端具有相同结构的网络层的所有参数。

在一些实施例中,使具有相同结构的的网络层共享相同的权值矩阵还可以包括,共享输入端具有相同结构的连续的网络层的所有参数,和/或共享输出端具有相同结构的连续的网络层的所有参数。图8示出了上述优化处理方法的示意图。下面以图8所示的示意图为例进行说明。

如图8所示,模型中存在相同结构网络层串连的情况,在网络层串连结构中,串连结构中的每层网络结构是相同的。将网络层串连结构的输入数据作为第一层网络层的输入数据,第二层网络层的输入数据即为第一层网络层的输出数据,以此类推,第n层网络层的输入数据即为第n-1层网络层的输出数据。第n层网络层的输出数据即为网络层串连结构的输出数据。在原始模型中,这种结构内的每层网络的权值矩阵是相互独立的。在实施例中,共享了每层网络的权值矩阵,即相当于同一层网络结构循环了n次,第i次网络结构的输入是第i-1次网络结构的输出。

在一些实施例中,在生成深度学习模型的过程中,还包括将深度学习模型的模型参数中趋近于零的权值置为零。图9示出了以机器翻译模型为例的上述优化处理方法的具体实现的示意流程图。下面以图9所示的机器翻译模型为例进行说明。

如图9所示,在操作s910中,获取已经训练好的模型。

在一些实施例中,已经训练好的模型,可以是使用前述实施例中的经过过滤的训练数据集进行训练后而得到的模型,或是使用前述实施例中的表示为二分量共享词向量的词向量且经过训练后而得到的模型,或是已经进行了解码端的词向量矩阵与解码端输出层参数矩阵之间的权值共享且经过训练后而得到的模型,或是可以为前述经过训练的模型的任意组合。当然,已经训练好的模型也可以是未经任何上述处理,但已经对模型参数进行充分训练而使其收敛的模型。本领域技术人员可以根据实际的需要进行选择,本实施例中对此不做限定。

此外,在对模型进行训练之前,还包括神经网络初始化的步骤,此处不再赘述。

接下来在操作s920中,设置节点的删除阈值。

容易理解的是,可以将删除阈值设置为接近于0的值。

接下来在操作s930中,根据所设置的删除阈值的大小,将模型参数中权值小于该删除阈值的节点删除。

在一些实施例中,将权值低于阈值的节点删除,并加入权值更新黑名单,以后训练将不再更新这些节点的权值。为了方便更新,权值黑名单一般会以0-1矩阵形式写入模型,此矩阵称为掩码层。掩码层形状与节点权值相同,当相同位置上掩码层的点是0时,说明该节点权值被加入了更新黑名单,以后更新将会忽略此节点权值。

接下来在操作s940中,对模型进行训练,并更新未删除的节点的权值直至模型收敛。

在模型收敛后,跳出内循环,继续判断是否达到了训练停止条件,如图9中的操作s950所示。

若判断为未达到停止条件,则重复操作s930和操作s940对模型进行迭代训练,直至达到停止条件。

在一些实施例中,停止条件可以包括预设的要删除的节点的数量,因此在未删除掉足够数量的节点时,对模型进行迭代训练。在另一些实施例中,停止条件可以包括预设的迭代次数,在迭代次数未达到预设值时,对模型进行迭代训练。本领域技术人员还可以根据所掌握的知识和实际的需要来设置停止条件。

经过上述处理的模型参数,其中包含大量权值为0的参数,因此可以利用稀疏矩阵的存储方式存储该模型参数。

在该实施例中,针对现有机器翻译模型中存在大量权值接近于零的参数而提出了一种剪枝的方法,将模型参数中趋近于零的权值置为零,训练模型至模型收敛,然后迭代过滤参数,直至达到停止条件,并通过稀疏矩阵的存储方式,降低模型的物理存储空间。

上述操作仅是为了阐述本发明实施例的技术方案而提供的一个具体示例,不应将其视为对本发明保护范围的限制。

在一些实施例中,在生成深度学习模型的过程中,还包括对深度学习模型的模型参数进行量化。图10示出了以机器翻译模型为例的上述优化处理方法的具体实现的示意流程图。下面以图10所示的机器翻译模型为例进行说明。

如图10所示,首先,获取已经训练好的模型。

在一些实施例中,已经训练好的模型,可以是使用前述实施例中的经过过滤的训练数据集进行训练后而得到的模型,或是使用前述实施例中的表示为二分量共享词向量的词向量且经过训练后而得到的模型,或是已经进行了解码端的词向量矩阵与解码端输出层参数矩阵之间的权值共享且经过训练后而得到的模型,或是可以是已经对模型参数实施了剪枝处理且经过训练后而得到的模型,或是可以为前述经过训练的模型的任意组合。当然,已经训练好的模型也可以是未经任何上述处理,但已经对模型参数进行充分训练而使其收敛的模型。本领域技术人员可以根据实际的需要进行选择,本实施例中对此不做限定。

此外,在对模型进行训练之前,还包括神经网络初始化的步骤,本领域技术人员熟知这些操作,此处不再赘述。

接下来,对模型参数进行量化。

在一些实施例中,对模型参数进行量化可以包括将模型中参数的存储空间降低为存储空间较小的设定的类型。进一步地,在一些实施例中,降低模型中参数的存储空间可以包括降低模型中参数的位数。举例而言,将存储类型为float32的参数转换成存储类型为float16的参数。

然后,需要对模型的量化效果进行判断,若已经达到比较理想的优化效果,则可以认为量化完成,否则需要对模型进行训练直至模型收敛。

在该实施例中,针对现有机器翻译模型在做语言处理的计算时计算量过大的缺点而提出一种量化参数的方法,将模型参数量化至占用空间较小的类型,以达到降低模型存储空间、降低模型运算内存、提升模型运算效率的目的。

在一些实施例中,当模型参数的类型改变时,根据改变后的参数的类型,修改与参数相对应的编程语句的类型。举例而言,当将存储类型为float32的参数转换成存储类型为float16的参数时,对应地将存储类型为float32的参数的操作语句修改为存储类型为float16的参数的操作语句。

上述各实施例中示出的优化方法,可以单独使用,也可以通过将两种或两种以上的处理方法相互结合使用。表1示出了综合使用上述实施例中所给出的优化处理方法,对现有的设置在服务器端的机器翻译模型进行优化处理的结果。

表1.翻译模型优化效果

从表1中可以看出,当机器翻译模型通过层共享处理、权值共享(删减策略)处理、量化处理后,模型参数的大小可以从68m下降到20m,物理存储的大小可以从272m下降到21m,显著地降低了模型的大小。而对于双向翻译模型,根据本发明的实施例,在应用了层共享、权值共享(填补策略)和量化之后,双向模型的参数大小可以从136m下降为32m,物理存储大小可以从544m下降到34m。

本发明实施例所提供的深度学习模型的生成方法,对数据、网络结构、存储优化等各个方面都进行了考虑,在降低深度学习模型的存储空间、加速模型运算效率的基础上,尽可能地保证了模型的语言处理的质量。因此,可以在极小的损失模型处理质量的条件下,显著地降低深度学习模型的体积,并提高深度学习模型的处理效率。

在本发明的其他实施例中,还提供了一种深度学习模型的生成装置,在图11中示出了根据本发明的实施例的深度学习模型的生成装置的示意性框图,如图11所示,该深度学习模型的生成装置包括:

确定模块1110,被配置为调整深度学习模型的矩阵中的至少两个矩阵的大小,使得至少两个矩阵大小相同。

共享模块1120,其与确定模块1110相连接,被配置为使使至少两个矩阵进行权值共享。

在本发明的其他实施例中,还提供了一种数据处理的方法,包括采用深度学习模型对用户输入的数据进行处理;其中,深度学习模型的至少两个矩阵大小相同并且共享权值。

在一些实施例中,还可以将生成的深度学习模型发送到客户端。相应地,客户端从服务器接收服务器所发送的深度学习模型,并可以在没有网络连接的情况下,利用该深度学习模型执行处理。

在一些实施例中,客户端首先主动向服务器发送请求,然后再从服务器接收服务器发送的深度学习模型,例如:这个请求可以是下载深度学习模型的请求,也可以是允许下载深度学习模型的请求。

在一些实施例中,客户端在接收到该深度学习模型后,采用稀疏存储的方式存储该深度学习模型的模型参数。

在另一些实施例中,由于模型的体积得到减小,因此可以把生成的深度学习模型制作为一个应用程序app,服务器端首先设计这个app使得客户端(例如手机等)有足够的能力去运行这个app,然后当用户将app安装到手机上以后,就不再需要联网即可进行处理。

另外,在该客户端(例如手机等)上可以提供在客户端实现的处理方法,该方法包括接收服务器发送的深度学习模型,以及利用该深度学习模型执行处理。

仍然以机器翻译为例,将上述服务器与客户端的整体连接框架示于图12中。

在该实施例中,在现有机器翻译模型(transformer)的基础上进行模型的存储、计算方法修改以减小模型的物理体积与运算量。整体上从数据、服务器、设备三方面对模型进行优化,针对模型计算量、物理存储大小与翻译质量共涉及五个优化方面。

首先通过知识蒸馏(平行语料即是训练集语料,是用来进行知识蒸馏的基础语料),将重量级模型的训练结果加入到数据中,然后针对模型的网络结构做优化,通过量化进一步对模型的运行内存做优化,最后将操作流图和网络中的变量矩阵保存到用户设备上。其中知识蒸馏方法主要针对数据层面,目的是为了提升模型的翻译质量;轻量级词向量、权值共享与剪枝都是为了减小网络中参数的数量,从而减小模型的物理存储体积;而量化则是针对模型计算效率对模型做优化;最后通过特定的存储方式(如针对稀疏矩阵的稀疏存储)将模型的计算流图和变量矩阵存储至用户设备上,使用户打破网络的限制,即使不连接网络也可以使用移动设备进行实时的翻译。接下来,基于建立的深度学习模型进行训练以获取模型参数。仍然以机器翻译为例,将训练的流程图示于图13中。

1)首先使用预训练的模型(该预训练的模型通常为存储体积较大的大模型)对训练数据进行翻译并过滤获得部分训练数据,与原有的训练数据一起作为待训练的原始模型的训练数据。

2)然后对待训练的原始模型进行矩阵共享(svs/bi-svs)、层共享,并用1)得到的训练数据进行模型训练得到存储体积减小的模型。

3)将通过2)得到的模型进行量化,获得经过优化的压缩模型。

由于该压缩模型具有减小的存储体积,因此能够存储并运行于移动端设备上。

本发明实施例中提出了一套在服务器端生成适用于移动端设备深度学习模型的综合优化方案,此方案对数据、网络结构、存储优化等各个方面都进行了考虑,在降低机器翻译模型存储空间、加速模型运算效率的基础上,尽可能的保证了模型的翻译质量。

图14示意性地示出了根据本发明实施例的一种电子设备1400的方框图。电子设备1400包括处理器1410,例如,数字信号处理器(dsp)。处理器1410可以是用于执行根据本发明实施例的不同动作的单个装置或多个装置。电子设备1400还可以包括输入/输出(i/o)装置1430,用于从其他实体接收信号或者向其他实体发送信号。

此外,电子设备1400包括存储器1420,该存储器1420可以具有以下形式:非易失性或易失性存储器,例如,电可擦除可编程只读存储器(eeprom)、闪存等。存储器1420存储计算机可读指令,当处理器1410执行该计算机可读指令时,该计算机可读指令使处理器执行根据本发明实施例的方法。

本领域技术人员可以理解,上面示出的方法仅是示例性的。本发明的方法并不局限于上面示出的步骤和顺序。上面示出的设备可以为其他设备,可以包括更多的模块。上文中示出的各种标识仅是示例性的而不是限制性的。本领域技术人员根据所示实施例的教导可以进行许多变化和修改。

应该理解,本发明的上述实施例可以通过软件、硬件或者软件和硬件两者的结合来实现。例如,上述实施例中的设备内部的各种组件可以通过多种器件来实现,这些器件包括但不限于:模拟电路器件、数字电路器件、数字信号处理(dsp)电路、可编程处理器、专用集成电路(asic)、现场可编程门阵列(fpga)、可编程逻辑器件(cpld),等等。

此外,这里所公开的本发明的实施例可以在计算机程序产品上实现。更具体地,该计算机程序产品是如下的一种产品:具有计算机可读介质,计算机可读介质上编码有计算机程序逻辑,当在计算设备上执行时,该计算机程序逻辑提供相关的操作以实现本发明的上述技术方案。当在计算系统的至少一个处理器上执行时,计算机程序逻辑使得处理器执行本发明实施例所述的操作(方法)。本发明的这种设置典型地提供为设置或编码在例如光介质(例如cd-rom)、软盘或硬盘等的计算机可读介质上的软件、代码和/或其他数据结构、或者诸如一个或多个rom或ram或prom芯片上的固件或微代码的其他介质、或一个或多个模块中的可下载的软件图像、共享数据库等。软件或固件或这种配置可安装在计算设备上,以使得计算设备中的一个或多个处理器执行本发明实施例所描述的技术方案。

尽管以上已经结合本发明的优选实施例示出了本发明,但是本领域的技术人员将会理解,在不脱离本发明的精神和范围的情况下,可以对本发明进行各种修改、替换和改变。因此,本发明不应由上述实施例来限定,而应由所附权利要求及其等价物来限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1