具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本申请提供一种自然语言处理模型的训练方法及装置。本实施例所述的“自然语言处理模型”是指基于人工神经网络搭建的用于处理自然语言文本的模型,例如分类模型。在对本申请方法及装置的具体实现方式进行详细介绍之前,先对本申请方法的基本应用场景予以介绍。
图1为本申请根据一示例性实施例示出的一种自然语言处理模型的训练方法的应用场景示意图。本申请方法意在对图1示出的多个自然语言处理模型并行训练。其中,每一自然语言处理模型包括包括隐层1和输出层2,并且,多个自然语言处理模型共享部分隐层,其余部分隐层则为每个模型的特定部分。图1中,每一自然语言处理模型用于完成一个特定的文本处理任务,即具有一个特定的任务目标,例如,M1的任务目标是情感分类,M2的任务目标是文本分类。
图1所示场景中,每一自然语言处理模型的任务目标虽然不同,但是有所关联。其中,如果两个任务是处理输入的相同函数,但是在任务信号中加入独立的噪声处理,很明显这两个任务是相关的;如果两个任务用于预测同个个体的属性的不同方面,这些任务比预测不同个体的属性的不同方面更相关;另外,两个任务共同训练时能相互帮助并不意味着它们是相关的,这是因为通过在后向传播网络的一个额外输出加入噪声可以提高泛化能力,但是这个噪声任务与其它任务不相关。
图2为本申请根据一示例性实施例示出的一种自然语言处理模型示意图。如图2所示,该自然语言处理模型的隐层包括第一编码模块10和经预训练的第二编码模块20以及融合模块30,输出层包括解码模块40。其中,经预训练的第二编码模块为多个自然语言处理模型共享的部分隐层,即每一自然语言处理模型的第二编码模块的神经网络结构和参数均未相同,第二编码模块20和融合模块30则为每一自然语言处理模型的特定部分。
第一编码模块10可以采用一双向的递归神经网络(Bi-LSTM),用于提取输入文本中针对特定任务目标的任务特征,例如,对于语义相似性推断任务,其任务特征即为语义特征。LSTM的表示公式如下:
公式(1)中,V,V',W,W',U,U'为权重矩阵;f,g为激活函数;x为输入;s,s’为隐状态;o为输出;t为时刻。
自然语言处理任务诸多,大体可按照任务类型分为词法分析,句子分析,语义分析,信息抽取,高层任务等。其中,由于所有自然语言都具有词法、句法特征,因此对于词法分析,句子分析等任务,无需限定句子领域,故可称为基础任务。而如文本分类、机器翻译、文本摘要、问答系统、对话系统、阅读理解等任务,为直接面向普通用户提供自然语言处理产品服务的系统级任务,并且涉及多个层面的自然语言处理技术,故为高层任务。
已有的针对高层任务的文本处理方法,仅针对目标任务提取任务相关的特征,而忽略较为基础的如词法、句法等共性特征,造成一定的信息丢失,影响文本处理方法的准确率和泛化能力。
为了解决这一问题,本申请实施例利用第一编码模块提取任务相关的特征的同时,利用第二编码模块提取出任意高层任务均可涉及的基础任务相关的特征,即共享特征,并将共享特征融入到任务预测当中,进而避免高已有的针对高层任务的文本处理方法中存在的信息丢失现象,进而提高任务结果的准确性。
第二编码模块20,可以选择任意一种深度学习神经网络模型,如递归神经网络、卷积神经网络、Attention结构等等。第二编码模块20用于学习输入文本中的共享特征,输出为共享特征向量。由于第二编码模块为多个自然语言处理模型的共享部分,因此共享特征向量可以作为输入文本针对任意任务目标的特征表示。也就是说,从某一文本中提取出的共享特征向量,可以用于预测该文本的类别,也可以用于分析该文本与其他文本的语义相似性等等。例如,输入文本的词性特征可以用于对该输入文本的语义相似性推断,也可以用于对该输入文本的分类。
另外,本申请实施例提取的共享特征向量可以为一个或多个。若为多个,则每一共享特征向量中将包含一种类型的共享特征。例如,词法特征、句法特征两种类型。
第二编码模块20可以包括多个具有不同基础任务目标的第二编码子模块,以使每一所述第二编码子模块获取到输入文本的一种类型的共享特征。多个第二编码子模块可具有如图3所示的并行结构,或者具有如图4所示的串行结构。
其中,每一个第二编码子模块对应一个基础任务,例如,在图3或图4中,m1对应命名实体识别、m2对应词性识别、m3对应句法识别。将待处理文本分别输入至m1、m2和m3中,m1、m2和m3将分别输出待处理文本中的命名实体特征、词性特征以及句法特征的向量表示。
需要说明的是,对于图3所示的并行结构,将待处理文本分别输入至每个第二编码子模块中,每个第二编码子模块则将输出一个包含一种类型共享特征的共享特征向量。对于图4所示的串行结构,将待处理文本由最底层的第二编码子模块顺次输入至每一层的第二编码子模块中,即上层第二编码子模块的输入为其下层的输出。
在一个优选实施例中,对于图4所示的串行结构,下层的第二编码子模块学习的信息相对上层更急基础。例如,将m1用于学习字级别信息,将m2用于学习词级别信息,将m3用于学习句级别信息。
值得注意的是,由于上述子模块对应的基础任务目标不同于自然语言处理模型的任务目标,因此需要预先对第二编码模块的每一子模块进行单独训练,再将得到的最优参数迁移到自然语言处理模型中,使经预训练的第二编码模块参与到对自然语言处理模型的训练当中,进行进一步训练。
融合模块30用于将任务特征向量与至少一个共享特征向量融合,以将共享特征向量融入到目标任务的预测当中。由于对于不同的任务而言,共享特征向量的各部分所包含特征信息的重要性有所不同。因此,本申请从共享特征向量中抽取出对目标任务重要的部分,与任务特征向量融合,从而在避免信息丢失的同时,尽可能地避免引入噪声。
具体实现中,融合模块包括一全连接神经网络层和一softmax层,其对任务特征向量和至少一个共享特征向量的融合过程如下:
首先,获取输入文本在第一编码模块在最后一个时刻的隐状态h作为第一编码模块输出的任务特征向量(第一编码模块为Bi-LSTM);
然后,将任务特征向量输入到全连接神经网络层,并利用softmax层对全连接神经网络层的输出向量进行归一化处理,处理过程如下式所示:
g(x)=soft max(Wgh) 公式(2)
公式(2)中,Wg表示全连接神经网络层权重矩阵,g(x)表示归一化处理结果。
其次,使用归一化处理结果分别与每一个共享特征向量相乘,并计算所有乘积结果的加和,处理过程如下式所示:
公式(3)中,j表示第二编码子模块或共享特征向量的编号,r表示第二编码子模块或共享特征向量的数量,f(x)表示所有乘积结果的加和。
最后,将加和结果与任务特征向量拼接,实现共享特征向量与任务特征向量的融合。
另外,在图2所示模型中,解码模块则用于预测任务目标向量。
图5为本申请根据一示例性实施例示出的一种自然语言处理模型的训练方法流程图,如图5所示,该方法可以包括:
步骤51,对于每一任务目标,将相应训练样本输入至相应自然语言处理模型中,输出任务目标向量。
训练样本一般包括输入文本及对应的真实标签。输入文本可以为一个语句,或者由多个语句组成的段落或篇章。真实标签通常可以人工标注或者通过其他方式获得。
根据任务目标的不同,每一自然语言处理模型相应的训练样本可能存在不同。例如对于命名实体识别任务,其真实标签为命名实体标签,对于词性预测任务,其真实标签为词性标签,而对于分类任务,其真实标签则为表示输入文本属于正例或负例的类别标签。
由于本实施例针对多个任务进行并行训练,因此同一训练样本可以包括其中一个任务对应的标准输出数据,也可以包括多个任务对应的真实标签。例如,使用同一训练样本数据对M1和M2两个任务进行训练,则需使该训练样本数据同时包括M1任务对应的真实标签,和M2任务对应的真实标签。
示例性地,本实施例针对每一任务目标单独准备语料集,从而保证每一自然语言处理模型的训练样本尤其是输入文本间存在较大的差异,相当于同时扩大每一自然语言处理模型相应的样本规模,进而提升对模型的训练效果。
训练开始时,自然语言处理模型中第二编码模块的参数为预训练得到的优化参数,其他模块的参数可以为初始化参数。
具体的,将每一自然语言处理模型的相应训练样本逐个分别输入到第一编码模块和第二编码模块中,利用第一编码模块获取所述训练样本的任务特征向量,利用第二编码模块获取所述训练样本的至少一个共享特征向量;再将所述共享特征向量和任务特征向量共同输入到融合层进行特征融合,并将融合结果输入至解模块,预测以预测任务目标向量。
需要说明的是,以往方法中,模型的输出为Sigmoid函数处理得到的概率值,该概率值用以反应预测为正例类别的可能性,概率越大,可能性越大。而在本实施例中,模型的输出为一个n维的任务目标向量,以该任务目标向量与多标签矩阵的相似程度为命中概率,代替模型以往输出的概率。
上述自然语言处理模型对其输入数据的处理过程,实际上是根据人工神经网络模型算法对输入数据进行处理,人工神经网络模型中涉及模型参数,人工神经网络模型的算法基于人工神经网络模型的类型不同而不同,由于属于已有技术,在此不再赘述。
步骤52,根据所述任务目标向量和多标签矩阵计算命中概率,所述多标签矩阵包括所有任务目标相应训练样本的标签信息。
训练的目的是为了使自然语言处理模型的实际预测结果(即根据命中概率预测的命中标签)与训练样本对应的真实标签无限的接近。
由于本实施例针对多个任务进行并行训练,因而涉及多个训练数据集。每一数据集中包含对应任务的标签,例如M1为一个二分类的情感分类任务,则其对应数据集可以包括正例倾向和负例倾向两个标签,M2为一个二分类的文本分类任务,则其对应数据集可以包括正例类别和负例类别两个标签。
现有技术中,都是将每一个标签独立看待,并表示成没有意义意义的one-hot向量,因此造成潜在信息的丢失,并且给多任务联合训练带来困难。例如,M1任务中,将正例倾向和负例倾向分别表示为[0,1]和[1,0],M2任务中,将正例类别和负例类别分别表示为[0,1]和[1,0]。
为了避免上述问题,本实施例基于多个数据集间的隐式关系将多个不同数据集中的相同标签表示为一个定长的标签向量,再将全部标签对应的标签向量整合在同一矩阵中,得到一个包括所有训练样本相应标签信息的多标签矩阵,使得多个任务共享该多标签矩阵,以此增加标签的表达泛化能力和模型的表示能力。
例如,将M1任务的正例标签和M2任务的正例标签和负例标签分别随机初始化表示为[l11,l12,...,...l1n]和[l21,l22,...,...l2n],再将这两个标签向量形成标签矩阵L,如下:
标签矩阵L的大小为m×n,其中,m表示任务的标签数量,取决于任务类型,例如在上述二分类任务中,m=3,若为三分类任务,则m=3;n表示标签向量的设定长度。
另外,为每一任务预设一个偏置矩阵Bi,i表示任务编号,以作为任务i在m个标签空间上的偏置。
本实施例中,标签的表示,不再是没有意义的one-hot向量,而是一个n维向量,多个标签向量融合为一个多标签矩阵,以被多个数据集共享,而非将每个标签独立看待,因此可以增强标签表示的泛化性,避免潜在信息的丢失。
以往方法中,模型的输出为Sigmoid函数处理得到的概率值,该概率值用以反应预测为正例类别的可能性,概率越大,可能性越大。而在本实施例中,模型的输出为一个n维任务目标向量,以该任务目标向量与多标签矩阵的相似程度为命中概率,代替模型以往输出的概率。
基于向量相似性计算方法,本申请首先使用任务目标预设的偏置矩阵对多标签矩阵进行偏置处理,然后将任务目标向量与偏置处理结果相乘,获得命中概率。例如下式所示:
Si=Ti×(L+Bi) 公式(4)
公式(4)中,Si表示命中概率,Ti表示任务目标向量,Bi表示任务目标预设的偏置矩阵,i表示任务编号。
步骤53,根据所述命中概率计算单任务损失值,根据各自然语言处理模型对应的单任务损失值计算多任务损失值。
单任务损失值即在多任务训练中单独一自然语言处理模型的损失值。本实施例中,首先将命中概率与输入的训练样本相应的标签信息代入到交叉熵损失函数中,计算单个样本的交叉熵损失值,再根据本轮迭代中D个样本总的损失值。如下:
公式(5)中,y(k)表示第k个训练样本对应的标签信息,表示命中概率对应的标签信息。
此外,为了保证本申请标签融合的效果,计算偏置矩阵Bi的L2正则项,再偏置矩阵L2正则项加到交叉熵损失值上,以在对损失函数的参数加以约束的同时,尽量减小偏置,以使融合后的标签尽量靠拢通用标签。最终的单任务损失值为:
LOSSi=CrossEntropyLossi+||Bi||2 公式(6)
多任务损失值用于对参与训练的全部自然语言处理模型的损失进行综合度量,具体根据每一单任务损失值计算得到。例如,可以计算各自然语言处理模型对应的单任务损失值的加和,得到所述多任务损失值。
此外,由于每一自然语言处理模型相应的训练样本数量不同,因此可以利用参数调整权重,对每一单任务损失值进行加权,从而保证对每一模型的参数的更新量相一致。其中,参数调整权重与训练样本数量的映射关系可以预先设置,以根据每一自然语言处理模型相应的训练样本数量,获取所述自然语言处理模型的参数调整权重,再使用所述参数调整权重对所述单任务损失值加权求和,得到多任务损失值。
具体可参见下式:
公式(7)中,LOSS表示多任务损失值,LOSSi表示每一自然语言处理模型对应的单任务损失值,Ki表示每一自然语言处理模型对应的参数调整权重。
步骤54,根据所述多任务损失值,调整每一自然语言处理模型的参数。
自然语言处理模型的参数调整,包括对多个自然语言处理模型所共用的第二编码模块的参数调整,还包括对每一自然语言处理模型的第一编码模块、融合模块以及解码模块参数的分别调整。
需要说明的是,由于第二编码模块的初始参数为迁移的预训练最优参数,因此为了避免第二编码模块参数发生较大的变化,利用更新控制系数对第二编码模块的更新量加以控制,该更新控制系数可以为一预设数值,如为0.1,同时,不同第二编码子模块所预设的更新控制系数可以不同。
具体的,获取每一第二编码子模块预设的更新系数,将多任务损失值和相应的更新控制系数相乘,以根据乘积确定参数更新量,进而对每一第二编码子模块的参数进行调整,以实现对第二编码模块的参数调整。
此外,直接根据多任务损失值对每一自然语言处理模型的第一编码模块、融合模块以及解码模块参数分别调整。
通过本实施例提供的方法,不断更新迭代每一自然语言处理模型的参数,最终在迭代次数达到一定数量,或者模型参数呈收敛状态时,可以停止对自然语言处理模型的训练,进而得到多个分别针对特定任务的优化模型。
本实施例对多个具有不同任务目标的自然语言处理模型并行训练,多个任务间存在相关的部分,也有无关的部分,其中相关的部分可以提高共享部分隐层的学习速率,进而有利于提升模型的训练效果,无关的部分则相当于噪声,可以提高模型的泛化性。此外,由于单任务训练时,梯度的反向传播倾向于陷入局部极小值,而多任务训练中,不同任务的局部极小值处于不同的位置,因此,可以帮助隐层逃离局部极小值。
图6为示出了对第二编码模块进行预训练的过程,应用于图7所示串行结构。如图6及图7所示,该方法可以包括:
步骤61,根据每个第二编码子模块预定的基础任务目标,获取相应的训练样本集。
步骤62,将第j层第二编码子模块相应的训练样本,由第1层顺次输入至第j层中,第j层输出基础任务目标值,j表示所述第二编码器在自下至上方向上的排列序号,即第j层的输入为第1至第j-1层的输出。
步骤63,根据每层输出的基础任务目标值,计算每层的损失值。
步骤64,根据第1至第j层的损失值,调整第j层第二编码子模块的参数。
训练的目的是为了使每一个第二编码子模块的实际预测结果与对应的真实结果无限的接近。具体是将基础任务目标值与真实结果代入到预先设定好的损失函数中计算损失值,进而可以根据损失值确定模型的迭代更新方向和更新量,从而不断优化模型的更新参数。其中,损失函数可以根据人工网络模型的类型和任务目标而设定,属于已有技术,在此不再赘述。
由以上技术方案可知,本申请提供的自然语言处理模型的训练方法,应用于多个具有不同任务目标的自然语言处理模型,所述多个自然语言处理模型共享部分隐层,所述方法中,首先将所有任务相应训练样本的标签信息融合并表示为多标签矩阵,根据模型输出的任务目标向量和多标签矩阵计算命中概率,并根据命中概率计算单任务损失值;再根据各自然语言处理模型对应的单任务损失值计算多任务损失值;最后根据所述多任务损失值,调整每一自然语言处理模型的参数。本申请方法中,多个自然语言处理模型并行学习,通过共享部分隐层来共享多个任务的浅层特征表示,梯度同时反向传播帮助隐层逃离局部极小值,多个标签的融合及其向量表示帮助增加标签的表达泛化能力和表示能力,进而可以提高每个模型的准确性和泛化性。
图8为本申请根据一示例性实施例示出的一种自然语言处理模型的训练装置框图。该装置应用于多个具有不同任务目标的自然语言处理模型,所述多个自然语言处理模型共享部分隐层。所述自然语言处理模型的隐层包括基于递归神经网络模型的第一编码模块、经预训练的第二编码模块和融合模块,所述经预训练的第二编码模块为所述多个自然语言处理模型共享的所述部分隐层;所述第二编码模块包括串行设置的多个具有不同基础任务目标的第二编码子模块,以使每一所述第二编码子模块获取到输入文本的一种类型的共享特征。
如图8所示,该装置包括:
输入单元U81,用于对于每一任务目标,将相应训练样本输入至相应自然语言处理模型中,输出任务目标向量。
概率计算单元U82,用于根据所述任务目标向量和多标签矩阵计算命中概率,所述多标签矩阵包括所有任务目标相应训练样本的标签信息。具体的,使用所述任务目标预设的偏置矩阵对多标签矩阵进行偏置处理;将所述任务目标向量与所述偏置处理结果相乘,获得命中概率。
损失计算单元U83,用于根据所述命中概率计算单任务损失值,根据各自然语言处理模型对应的单任务损失值计算多任务损失值。具体的,将所述命中概率与所述训练样本相应的标签信息代入交叉熵损失函数,计算交叉熵损失值;计算所述偏置矩阵的L2正则项;计算所述交叉熵损失值与偏置矩阵L2正则项的加和,得到单任务损失值。
具体的,计算各自然语言处理模型对应的单任务损失值的加和,得到所述多任务损失值。或者,根据每一自然语言处理模型相应的训练样本数量,获取所述自然语言处理模型的参数调整权重;使用所述参数调整权重对所述单任务损失值加权求和,得到多任务损失值。
参数调整单元U84,用于根据所述多任务损失值,调整每一自然语言处理模型的参数。具体的,获取每一所述第二编码子模块预设的更新控制系数;根据所述多任务损失值和相应的更新控制系数,调整每一所述第二编码子模块的参数;以及,根据所述多任务损失值,分别调整所述每一自然语言处理模型中所述第一编码模块、融合模块以及输出层的参数。
由以上技术方案可知,本实施例提供的自然语言处理模型的训练方法及装置,应用于多个具有不同任务目标的自然语言处理模型,所述多个自然语言处理模型共享部分隐层,所述方法中,首先将所有任务相应训练样本的标签信息融合并表示为多标签矩阵,根据模型输出的任务目标向量和多标签矩阵计算命中概率,并根据命中概率计算单任务损失值;再根据各自然语言处理模型对应的单任务损失值计算多任务损失值;最后根据所述多任务损失值,调整每一自然语言处理模型的参数。本申请方法中,多个自然语言处理模型并行学习,通过共享部分隐层来共享多个任务的浅层特征表示,梯度同时反向传播帮助隐层逃离局部极小值,多个标签的融合及其向量表示帮助增加标签的表达泛化能力和表示能力,进而可以提高每个模型的准确性和泛化性。
具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的训练方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。