经压缩的递归神经网络模型的制作方法

文档序号:11583729阅读:709来源:国知局
经压缩的递归神经网络模型的制造方法与工艺

本说明书涉及神经网络架构和压缩神经网络。



背景技术:

神经网络是采用一个或多个非线性单元层来预测所接收的输入的输出的机器学习模型。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作所述网络中下一层的输入,即下一隐藏层或输出层的输入。网络的每层根据相应参数集的当前值从所接收的输入生成输出。例如被设计用于时间序列问题或序列到序列学习的那些神经网络(递归(recurrent)神经网络(rnn))的一些神经网络包括许可其以隐藏状态变量的形式的记忆持久存在于数据输入之间的层内的递归环路。rnn的变体,长的短期记忆(lstm)神经网络包括每层内用于控制数据输入之间的数据的持久性的多个门。例如被设计用于时间序列问题或序列到序列学习的那些神经网络的一些神经网络包括许可以隐藏状态变量的形式的记忆持久在数据输入之间的层内的递归环路。



技术实现要素:

本说明书描述了涉及递归神经网络架构的技术。一般来说,递归神经网络包括至少一个被压缩的递归神经网络层。具体地,使用共享投影矩阵来联合压缩用于经压缩递归层的递归权重矩阵和层间权重矩阵。

对于要被配置为执行特定操作或动作的一个或多个计算机的系统而言,意味着系统已经在其上安装了操作中的软件、固件、硬件或它们的组合,其在操作中使得系统执行操作或动作。对于要被配置为执行特定操作或动作的一个或多个计算机程序而言,意味着一个或多个程序包括当由数据处理装置执行时使得所述装置执行操作或动作的指令。

在本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。通过在递归神经网络中压缩一个或多个递归层的权重矩阵,递归神经网络被配置为能够更有效地处理数据并且使用更少的数据存储。特别地,可以有效地训练具有一个或多个经压缩递归层的递归神经网络,以实现与全尺寸(例如未经压缩的递归神经网络)相当的性能,同时使用较少的数据存储并且能够通过以下方式更快地处理输入:经压缩递归层的经压缩权重矩阵具有比未经压缩递归神经网络中的对应层的权重矩阵少的参数。实际上,因为经压缩的递归神经网络具有较小的计算足迹,所以经压缩的网络可以能够有效地被实现为即使当未经压缩的网络不能在移动设备上运行时,也能够在具有有限存储和处理能力的移动设备上实时处理输入。

在下面的附图和描述中阐述了本说明书的主题的一个或多个实施例的细节。根据说明书、附图和权利要求,主题的其他特征、方面和优点将变得显而易见。

附图说明

图1示出了示例神经网络系统。

图2是用于经压缩递归神经网络的示例过程的流程图。

图3是用于针对特定递归层压缩层间权重矩阵和递归权重矩阵的示例过程的流程图。

各个附图中相同的附图标号和名称指示相同的元素。

具体实施方式

图1示出了示例神经网络系统100。神经网络系统100是被实现为其中实现了下面描述的系统、组件和技术的在一个或多个位置中的一个或多个计算机上的计算机程序的系统的示例。

神经网络系统100是机器学习系统,其在多个时间步长中的每一个处接收相应的神经网络输入,并且在每个时间步长处生成相应的神经网络输出。也就是说,在多个时间步长中的每一个处,神经网络系统100接收神经网络输入并处理神经网络输入以生成神经网络输出。例如,在给定的时间步长t处,神经网络系统100可以接收神经网络输入102并且生成神经网络输出142。

神经网络系统100可以将所生成的神经网络输出存储在输出数据存储库中或者提供神经网络输出以用于某些其他直接目的。

神经网络系统100可以被配置为接收任何种类的数字数据输入并且基于该输入生成任何种类的分数或分类输出。

例如,如果到神经网络系统100的输入是图像或已经从图像提取的特征,则由神经网络系统100针对给定图像所生成的输出可以是针对对象类别集中的每一个类别的评分,其中每个分数表示图像包含属于该类别的对象的图像的估计似然率。

作为另一示例,如果到神经网络系统100的输入是互联网资源(例如,网页)、文档或文档的部分或从互联网资源、文档或文档的部分提取的特征,则由用于给定的互联网资源,则神经网络系统100针对给定的互联网资源、文档或文档的部分所生成的输出可以是一组主题中的每一个的分数,其中每个分数代表互联网资源、文档或文档部分关于所述话题的估计似然率。

作为另一示例,如果到神经网络系统100的输入是针对用户的个性化推荐的特征,例如表征推荐的场境的特征、例如表征用户所采取的先前动作的特征,则通过神经网络系统100所生成的输出可以是内容项集合中的每一个内容项的分数,其中每个分数表示用户将有利地响应于被推荐内容项的估计似然率。在这些示例中的一些中,神经网络系统100是向用户提供内容推荐的强化学习系统的一部分。

作为另一示例,如果对神经网络系统100的输入是一种语言的文本,则由神经网络系统100所生成的输出可以是针对另一种语言的文本段集合中的每一个文本段的分数,其中每个分数表示所述另一种语言的文本段是所述输入文本到另一种语言的适当翻译的估计似然率。

作为另一个示例,如果到神经网络系统100的输入是所说话语的特征,则由神经网络系统100所生成的输出可以是文本段集合中的每一个文本段的分数,每个分数表示该文本段是该话语的正确转录的估计似然率。

作为另一个示例,如果到神经网络系统100的输入是图像,则由神经网络系统100所生成的输出可以是文本段集合中的每一个文本段的分数,每个分数表示文本段是存在于输入图像中的文本的估计似然率。

特别地,神经网络系统100包括递归神经网络110,其又包括多个递归层,即至少一个经压缩递归层l120和递归层l+1130。递归神经网络110被配置为在每个时间步长处接收在该时间步长处的神经网络输入并且处理神经网络输入以在该时间步长处生成神经网络输出。

除了经压缩递归层120和递归层130之外,递归神经网络110可以包括一个或多个其他组件,例如其他递归层,其他非递归神经网络层等等。

例如,递归神经网络100可以是包括多个递归层的深度递归网络,所述多个递归层包括一个在另一个之上的有序堆栈中排列的经压缩递归层120和递归层130,以及输出层,所述输出层在每个时间步长处接收来自堆栈中的最高递归层的层输出和可选地堆栈中的其他递归层的层输出,并且处理层输出以在时间步长处生成神经网络输出142。

经压缩递归层120被配置为在每个时间步长处接收当前层输入122并且处理当前层输入122、递归层120的当前层状态以及递归层120的当前层输出122,以生成新的层输出126并更新当前层状态以生成新的层状态124。

根据递归神经网络110的配置,当前层输入122可以是神经网络输入102或由递归神经网络110的不同组件所生成的输出。

另外,对于第一步骤之后的每个时间步长,当前层状态是在前一时间步长处所生成的新的层状态。对于第一时间步长,当前层状态可以是预定的初始层状态。

递归层130被配置为在每个时间步长处接收新的层输出126并且处理新的层输出126和递归层130的当前层状态以生成新的层输出136并且以更新当前层状态以生成新的层状态134。

根据递归神经网络110的配置,新的层输出126可以作为输入被提供给递归神经网络110中的另一个递归层,以作为对不同类型的神经网络组件的输入,例如到输出层或不同类型的神经网络层的输入,或者可以被提供作为递归神经网络110的神经网络输出142。

递归神经网络110中的每个递归层具有两个对应的权重矩阵:递归权重矩阵和层间权重矩阵。一般来说,在给定时间步长处的处理期间,给定递归层的递归权重矩阵被应用于在前一时间步长处由递归层所生成的层输出,而层间权重矩阵被应用于由递归层在给定的时间步长处所生成的层输出。因此,给定递归层的递归权重矩阵通常由给定递归层应用,而层间权重矩阵通常由下一层应用,该下一层在该时间步长处接收由给定递归层所生成的层输出,例如,在堆栈中给定层之上的下一层的输出。

在一些实施方式中,递归神经网络110是标准递归神经网络,因此每个递归层的状态也被用作递归层的层输出。也就是说,对于给定时间步长的层的经更新状态也被用作给定时间步长的层的层输出。因此,新的层输出136与新的层状态134相同,并且新的层输出126与新的层状态124相同。

在这些实施方式中,如果经压缩递归层120或递归层130都未被压缩,则经压缩递归层120将被配置为在时间步长t处生成层输出126(和新的层状态124),其满足:

其中是在递归神经网络110中的层120之前的层的层间权重矩阵,是层120之前的层的层输出,是用于递归层120的未经压缩版本的递归权重矩阵,是当前层状态(以及从前一时间步长的层输出),bl是层120的偏差向量,σ(·)表示非线性激活函数。

递归层130将被配置为在时间步长t处生成层输出(和新的层状态134),其满足:

其中是层120的未经压缩版本的层间权重矩阵,是递归层120的层输出126,是递归层130的递归权重矩阵,是递归层130的当前层状态(以及从先前时间步长的层输出),bl+1是递归层130的偏差向量,σ(·)表示非线性激活函数。

然而,因为至少经压缩递归层120已经被压缩,所以经压缩递归层120的层间和递归权重矩阵已经被修改。

特别地,经压缩递归层是递归层,对于该递归层,递归和层间矩阵已经各自被相应的低秩近似所代替。也就是说,经压缩递归层的递归权重矩阵已经被具有比所述递归权重矩阵低的秩的矩阵所替代,并且层间权重矩阵已经被具有比所述层间权重矩阵低的秩的矩阵所替代。在这样做时,递归和层间权重矩阵中的参数的数目已经减少。

特别地,使用本说明书中描述的压缩方案,已经通过用相应的第一和第二经压缩权重矩阵以及对应的投影矩阵pl来替换经压缩层120的递归权重矩阵和层间权重矩阵来压缩经压缩的递归层120。具体地,通过下述方式来联合压缩递归权重矩阵和层间权重矩阵确定投影矩阵,使得定义,并且定义。第一和第二经压缩权重矩阵和投影矩阵各自具有低于层间权重矩阵和递归权重矩阵的秩的秩。在下文中参考图3更详细地描述用于在保持高性能的同时压缩递归层以减少参数的数目的技术。

因此,在压缩之后,当递归神经网络110是标准递归神经网络时,由经压缩递归层120所生成的层输出满足:

而由递归层130所生成的层输出满足:

在一些其它实施方式中,递归神经网络110中的递归层是长的短期存储器(lstm)层,并且给定lstm层的状态和lstm层的层输出是不同的。为了生成层输出,给定lstm层将多个门应用于当前层输入和当前层状态,以生成新的层输出并更新当前层状态以生成新的层状态。因此,作为生成层输出的一部分,lstm通常将不同的权重矩阵乘以当前层输入和当前层状态两者。在下文中描述了lstm层的操作:h.sak,a.senior,andf.beaufays,“longshort-termmemoryrecurrentneuralnetworkarchitecturesforlargescaleacousticmodeling,”inproc.ofinterspeech,2014,pp.338–342。

当递归层是lstm层时,给定lstm层的递归权重矩阵可以被认为是给定lstm层应用于当前层状态的权重矩阵的垂直级联。用于给定lstm层的层间权重矩阵可以被认为是下一个lstm层应用于由给定lstm层所生成的层输出的权重矩阵的垂直级联。

虽然在图1的示例中只有经压缩递归层120被压缩,但是在一些情况下,递归神经网络110中的多个递归层或甚至所有递归层都可以被压缩,如下面参考图3所述。

在一些实施方式中,共同压缩递归权重矩阵和层间权重矩阵,使得投影矩阵在如本说明书中所描述的递归和层间权重矩阵之间共享可以允许权重矩阵的更有效的参数化。在一些实施方式中,在递归神经网络110是语音识别模型的情况下,上述技术可用于将递归神经网络110压缩至少68%,同时实现在未经压缩模型的5%内的字错误率。

图2是用于压缩递归神经网络的示例过程200的流程图。为了方便,过程200将被描述为由位于一个或多个位置的一个或多个计算机的系统来执行。例如,根据本说明书适当地编程的神经网络系统(例如图1的神经网络系统100)可以执行过程200。

系统在训练数据上训练未经压缩的递归神经网络(步骤202),以确定未经压缩的递归神经网络的层的权重矩阵中的参数的经训练值。例如,在网络中的任何递归层被压缩之前,系统可以训练图1的递归神经网络110。该系统可以使用常规的递归神经网络训练技术(例如利用随时间的反向传播的随机梯度下降)训练未经压缩的递归神经网络。

系统压缩递归神经网络中的一个或多个递归层(步骤204)。具体地,针对要被压缩的每个递归层,系统生成第一经压缩权重矩阵和投影矩阵pl,使得第一经压缩权重矩阵和投影矩阵的乘积近似于递归层的递归权重矩阵并且基于所述第一经压缩权重矩阵和投影矩阵pl生成第二经压缩权重矩阵使得所述第二经压缩权重矩阵和投影矩阵的乘积近似于递归层的层间权重矩阵。下面参照图3更详细地描述压缩特定递归层。由于给定层的压缩仅取决于层的递归权重矩阵和层间权重矩阵(即,不取决于任何其他层的矩阵),所以系统可以压缩递归神经网络中的单个递归层、多个递归层或所有递归层。

系统利用经压缩的权重矩阵重新配置递归神经网络(步骤206)。也就是说,针对被压缩的每个递归层,系统用第一经压缩权重矩阵和投影矩阵的乘积来替换该层的递归权重矩阵,并且用第二经压缩权重矩阵和投影矩阵的乘积来替换该层的层间权重矩阵。因为第一经压缩权重矩阵和投影矩阵的乘积具有比递归权重矩阵更低的秩并且第二经压缩权重矩阵和投影矩阵的乘积具有比层的层间权重矩阵更低的秩,所以矩阵包括比未经压缩神经网络中的它们的对应矩阵更少的参数。

可选地,在重新配置递归神经网络之后,系统可以通过在附加训练数据上训练经重新配置的神经网络来微调经压缩神经网络的性能,以进一步调整参数的经训练值,同时维持投影矩阵和经压缩权重矩阵的秩,即,约束投影矩阵和经压缩权重矩阵的秩不增加。

系统存储经重新配置的神经网络的权重矩阵,用于实例化经训练的神经网络,即,可以有效地用于处理神经网络输入的经训练的递归神经网络(步骤208)。在一些情况下,除了存储权重矩阵或者代替存储权重矩阵,系统可以将权重矩阵和定义神经网络的配置的其他数据传送到另一个系统,以用于实现经训练的递归神经网络。例如,系统可以将配置数据传送到移动设备,以允许在移动设备上实现经压缩的递归神经网络。

图3是用于针对特定递归层压缩层间权重矩阵和递归权重矩阵的示例过程300的流程图。为了方便,过程300将被描述为由位于一个或多个位置的一个或多个计算机的系统来执行。例如,根据本说明书适当地编程的神经网络系统(例如,图1的神经网络系统100)可以执行过程300。

系统确定用于特定递归层的递归权重矩阵wh的奇异值分解(svd)(步骤302)。递归权重矩阵的奇异值分解是将矩阵wh分解成第一酉(unitary)矩阵u、矩形对角矩阵σ和第二酉矩阵v。特别地,svd满足:

wh=u∑vt

系统可以使用已知的svd分解技术来确定递归权重矩阵的svd。例如,系统可以首先将递归权重矩阵减少为双对角矩阵,然后使用迭代方法计算双对角矩阵的svd,例如,qr算法的变体。

系统截断svd以生成第一经压缩权重矩阵和投影矩阵pl(步骤304)。特别地,系统通过以下方式截断svd:(i)在矩形对角矩阵σ中保留顶部(即,最高)l值,并将剩余值设置为零,(ii)将顶部的l值保留在第一酉矩阵u的每个奇异向量(即,列)中,并且将剩余值设置为零,以及(iii)将顶部的l值保留在第二酉矩阵v的每个奇异向量(即,列)中,并将剩余值设置为零。

通常,l是小于权重矩阵的维度并且被配置为控制应用到递归层的压缩程度的值。也就是说,l的值越小,所应用的压缩程度越高。

在一些实施方式中,l是预定值。

在一些其它实施方式中,系统确定l,使得被截断的svd在svd操作中保留至多可释方差的预定阈值分数τ。特别地,系统可以将l设置为这样的值,其中(i)矩形对角矩阵σ中的顶部(即,最高)l个值的平方的总和与(ii)矩形对角矩阵σ中的所有值的平方的总和的比率在仍然小于的t的同时最大。

在这些实施方式中,如果系统正在压缩递归神经网络内的多个递归层,则l的值在多个层之间可能不同,即,因为不同的l将满足用于不同矩阵的svd的上述标准。

一旦系统已截断svd以生成被截断的第一酉矩阵被截断的矩形对角矩阵和被截断的第二酉矩阵则系统可以将第一经压缩权重矩阵设置为等于并且将投影矩阵pl设置为等于

系统通过第一经压缩权重矩阵和投影矩阵pl确定第二经压缩权重矩阵(步骤306)。特别地,系统通过求解以下最小二乘问题来确定第二经压缩权重矩阵:

其中||x||f表示矩阵x的frobenius范数。

本说明书中描述的主题和功能操作的实施例可以被实现在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件(包括本说明书中公开的结构及其结构等同物)中或它们中的一种或多种的组合中。在本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,编码在有形非暂时性程序载体上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。替选地或另外地,程序指令可以被编码在人工生成的传播信号(例如,机器所生成的电、光或电磁信号)上,其被生成以对信息进行编码以传输到合适的接收机装置,以便由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。

术语“数据处理装置”是指数据处理硬件,并且包括用于处理数据的所有种类的装置、设备和机器,例如包括通过可编程处理器、计算机或多个处理器或计算机的形式。该装置还可以是或进一步包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除硬件之外,装置可以可选地包括创建用于计算机程序的执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。

计算机程序(其还可被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释性语言、或声明性或过程性语言,并且其可以以任何形式部署,包括作为独立程序或作为适于在计算环境中使用的模块、组件、子例程或其它单元。计算机程序可以但不需要与文件系统中的文件相对应。程序可以被存储在保存其他程序或数据(例如存储在标记语言文档中的一个或多个脚本)的文件的一部分中、在专用于所述程序的单个文件中或者在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可以被部署为在一个计算机上或在位于一个地点或跨多个地点分布并通过通信网络互连的多个计算机上执行。

本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如,fpga(现场可编程门阵列)或asic(专用集成电路))来执行,并且装置也可以被实现为该专用逻辑电路。

适合于执行计算机程序的计算机例如包括基于通用或专用微处理器或两者或任何其它类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或实施指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,或者可操作地耦合以从其接收数据或向其传送数据。然而,计算机不需要具有这样的设备。此外,计算机可以被嵌入在另一设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏机、全球定位系统(gps)接收器或便携式存储设备,例如,通用串行总线(usb)闪存驱动器,此处仅举几个例子。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括:半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;和cdrom和dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器)的计算机上实现;以及用户可以通过其向计算机提供输入的键盘和指针设备,例如鼠标或轨迹球。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以包括声音、语音或触觉输入的任何形式接收来自用户的输入。另外,计算机可以通过向用户所使用的设备发送文档和从用户所使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器所接收的请求,将网页发送到在用户的客户端设备上的web浏览器。

在本说明书中描述的主题的实施例可以被实现在计算系统中,所述计算系统包括后端组件(例如,作为数据服务器)或者包括中间件组件(例如,应用服务器)或者包括前端组件(例如,具有图形用户界面或web浏览器的客户端计算机,用户可以通过该浏览器与本说明书中描述的主题的实施方式交互)或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”),例如互联网。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。

尽管本说明书包含许多具体实施细节,但是这些不应被解释为对任何发明或要求保护的范围的限制,而是作为对特定发明的特定实施例特定的特征的描述。在本说明书中在单独实施例的场境中描述的某些特征也可以在单个实施例的组合中实现。相反,在单个实施例的场境中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,虽然特征可以在上面描述为在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中去除,并且所要求保护的组合可以针对子组合或子组合的变体。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序或以依序执行,或者所有所示的操作被执行以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起被集成在单个软件产品中,或者被封装成多个软件产品。

已经描述了本主题的具体实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或按照序列顺序,以实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

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