具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
请参阅图1和图2,图1为本申请基于多语种分支模型的文本处理方法一实施方式的流程示意图,图2为图1中基于多语种分支模型的文本处理方法所利用的多语种分支模型一实施方式的结构示意图。该多语种分支模型包括嵌入层10、多分支处理网络12、第一混合器14和共享网络16;其中,该基于多语种分支模型的文本处理方法具体包括:
S101:基于嵌入层10,获得待处理的文本对应的初始语义表示。
具体地,请参阅图2,该嵌入层10可以包括文本嵌入层和位置嵌入层。上述步骤S101的具体实现过程可以包括:对待处理的文本进行编码,将待处理的文本分词后的每个token映射为一个向量,并与位置向量进行加和,以形成初始语义表示。在该步骤S101中,待处理的文本的语种可以是中文、或英文、或法文等世界上任一语种。该待处理的文本的语种可以与训练多语种分支模型时所利用的源语言或测试语言的语种相同;或者,该待处理的文本的语种也可以是源语言或测试语言之外的语种。
S102:基于多分支处理网络12、第一混合器14和共享网络16,对初始语义表示进行处理以获得综合语义表示。
具体的,请参阅图3,图3为图1中步骤S102对应的一实施方式的流程示意图,上述步骤S102的具体实现过程可以包括:
S201:基于多分支处理网络,将初始语义表示处理成多个中间语义表示。
具体地,请一并参阅图2,本申请所提供的多语种分支模型包括多分支处理网络12,多分支处理网络12的输入为嵌入层10的输出,多分支处理网络12包括多个处理分支120,不同的处理分支120其参数不同,以分别将初始语义表示处理成不同的中间语义表示。多分支处理网络12包括的处理分支120的数量可以由模型训练过程中训练样本的语种数量确定。在一些实施例中,处理分支120的数量可以与模型训练过程中训练样本的语种数量相同,训练样本集中有多少种语种的训练样本,则设置相同数量的处理分支120。例如,当训练样本的语种数量为3种(例如,中文,英语,法语),则如图2中所示,多分支处理网络12可以包括三个处理分支120,分别标记为1201、1202和1203。当然,在其他实施例中,处理分支120的个数可以为更多或更少,具体可以由训练样本中所使用的语种数量决定。上述实施例中所提供的多分支处理网络12的各个处理分支120之间保持多样性,从而可以获得更为丰富的文本表示。
进一步,请继续参阅图2,多分支处理网络12中每个处理分支120的网络结构相同,但网络参数不同。每个处理分支120的网络结构中均包含相同个数的编码层122和相同个数的第二混合器124,且每个处理分支120中相邻两个编码层122之间均设置有一个第二混合器124,本申请对于处理分支120中编码层122的层数不作限定。其中,各个第二混合器124的输入为上一层所有处理分支120的编码层122的输出,各第二混合器124的混合结果输出至对应处理分支120上的下一层的编码层122中。上述每个处理分支120中的编码层122可以将接收的初始语义表示从对应的语种角度进行解读,以获得更为丰富的语义表示;第二混合器124可以混合来自不同语言分支的表示,以使得各个语言分支的表示之间的特征可以相互综合,以使得该多分支处理网络12后续可以适用于更多语种。
可选地,上述多分支处理网络12的工作流程可以为:首先将嵌入层10输出的初始语义表示分别输入至各个处理分支120的第一层编码层122中;所有编码层122的输出均送入各个处理分支120的第二混合器124中,经第二混合器124混合后得到对应处理分支120上的新的表示,然后将该新的表示输入至对应处理分支120上的下一个编码层122中。如此重复直到进行到最后一层编码层122,进而获得多个中间语义表示。
可选的,在本实施例中,上述各个第二混合器124的工作过程可参见图4,图4为第一混合器或第二混合器一实施方式的结构示意图。第二混合器124接收上一编码层122的三个输入Hen,Hfr,Hzh,利用第一可训练参数v与三个输入Hen,Hfr,Hzh分别进行点乘以获得对应的向量hen,hfr,hzh;利用归一化函数softmax获得所有向量hen,hfr,hzh分别对应的权重值wen,wfr,wzh;将权重分别乘以对应的输入并求和以获得第二混合器124的输出,即输出为Hen*wen+Hfr*wfr+Hzh*wzh。需要说明的是,上述多个处理分支120中位于同一层的编码层122中的参数可以不同,位于同一层的第二混合器124中的参数可以不同。上述第二混合器124的混合过程较为简单,且计算量较小。
S202:基于第一混合器14,将所有中间语义表示进行特征混合以获得混合语义表示。
具体地,请再次参阅图2,本申请所提供的多语种分支模型还包括第一混合器14,第一混合器14的输入为多分支处理网络12的输出,第一混合器14用于实现上述步骤S202。可选的,在本实施例中,第一混合器14的网络结构与上述第二混合器124的网络结构相同,但网络参数可以不同。此时,请一并参阅图4,上述步骤S202的具体实现过程可以为:A、基于第二可训练参数获得每个中间语义表示对应的中间语义向量;例如,可以将第二可训练参数分别与中间语义表示进行点乘,以获得对应的中间语义向量;B、利用归一化函数softmax获得所有中间语义向量分别对应的第一权重值;C、分别获得所有中间语义表示与对应的第一权重值的乘积,并将所有乘积之和作为混合语义表示。上述第一混合器14的混合过程较为简单,计算量较小。
S203:基于共享网络16,将混合语义表示进行特征提取以获得综合语义表示。
具体地,请参阅图2,本申请所提供的多语种分支模型还包括共享网络16,共享网络16用于对混合语义表示进行特征提取以获得综合语义表示。可选的,在本实施例中,共享网络16包括多个堆叠的编码层160,共享网络16不再针对不同语种设计不同的分支,共享网络16中每个编码层160的输出为下一个编码层160的输入。上述共享网络16可以对混合语义表示进一步进行更为深层次的特征提取。共享网络16的具体工作过程可以为:将上一步得到的混合语义表示送入共享网络16中的第一个编码层160,共享网络16中的第一个编码层160的输出输入给共享网络16中第二个编码层160;依次进行下去,直到所有共享网络16中的所有编码层160完成计算,以获得综合语义表示。
此外,请继续参阅图2,多分支处理网络12中处理分支120的编码层122的层数为第一数值K,共享网络16中包括依次连接的第二数值(L-K)个编码层160;K与L均是大于1的正整数,L大于K,L与K的值可以由用户设定。优选的,第一数值K与第一数值K和第二数值(L-K)之和L的比值在1/3至1/2之间,更优选的,K的值可以是L值的1/3。例如,可以设置L为12,K可以设置为4,5,或6,优选可以设置为4。上述取值范围的设置可以使得整个多语种分支模型的效果较好,且整个多语种分支模型的体积较小,计算量较小。
S103:基于输出层,对综合语义表示进行变换以获得对应的输出结果。
具体地,请继续参阅图2,本申请所提供的多语种分支模型还包括输出层18,输出层18可以根据不同的任务需求进行设定,不同类型的任务搭配不同的输出层18。例如,该输出层18可以对应分类任务等。
在上述实施方式中,利用多分支处理网络12对初始语义表示进行处理后,相当于是从不同语种的角度对该初始语义表示进行解读,进而可以获得更为丰富的文本表示,进一步再对处理后的文本表示进行特征混合以获得更为精确的综合语义表示,进而使得最终的输出结果更为精确。
此外,目前基于已有的公开的多语言预训练模型,提升其效果的技术方案主要为利用额外的平行语料对多语言预训练模型做再次训练。所谓平行语料是指(某两种)语言间的翻译句对。现有的多种技术方案不同之处主要在于利用平行语料做作训练的方式不同。本申请的发明人在长期研究过程中发现,上述使用平行语料训练多语言模型的方案的缺点在于该方法较为繁琐,需要额外收集多种语言的平行句对,并再次进行训练才可在下游任务中使用;另一方面,该方法对计算资源与存储资源皆有较高的要求,严重限制了该技术的广泛应用。对训练样本中没有的语种处理效果较差,提升其效果的技术方案主要为收集该语种的语料样本再进行训练,需要额外收集该种语言的平行句对。
为了解决上述问题,请参阅图5,图5为图1中步骤S101之前一实施方式的流程示意图,上述多语种分支模型的训练过程包括:
S301:构建多语种分支模型,并对多语种分支模型进行初始化。
具体地,在本实施例中,可以借助于已经公开了、已经经过预训练的多语言预训练模型对本申请中多语种分支模型进行初始化过程,以降低模型训练过程所耗费的时间。具体地,上述步骤S301的实现过程可以为:
A、获得多语言预训练模型;可选的,该多语言预训练模型可以为multilingualBERT模型或XLM-R模型等。且一般而言,多语言预训练模型的结构与标准的单语预训练模型大致相同,由嵌入层、堆叠的编码层和输出层组成。因为多语言预训练模型使用一套参数处理多种语言,所以其中存在多种语言表示互相冲突以及多种语言抢占模型容量等问题。
B、构建多语言分支模型;具体地,可以参考多语言预训练模型(例如,multilingual BERT或XLM-R等)的结构来构建多语言分支模型;多语言分支模型与多语言预训练模型相比,多设置了多分支处理网络12和第一混合器14。而多分支处理网络12中处理分支120数量与训练样本集中样本语种数量一致,各个处理分支120之间结构相同。例如,当训练样本只有两个语种时,则只设置两个处理分支120;当训练样本中包含三个语种时,则设置三个处理分支120,以此类推。C、利用多语言预训练模型中的嵌入层初始化多语种分支模型中的嵌入层、利用多语言预训练模型中编码层初始化多分支处理网络以及共享网络中编码层、以及利用多语言训练模型中的输出层初始化多语种分支模型中的输出层。
在一些实施例中,多语言预训练模型中编码层的层数可以大于每个处理分支120中编码层的层数。
具体地,对于多语种分支模型的编码层的初始化过程可以包括:请再次参阅图2,假设多语种分支模型中多分支处理网络12中每个处理分支120的编码层122的层数为K,多语种分支模型中共享网络16中编码层160的层数为L-K,则多语种分支模型中编码层的总层数为L;而所选定的多语言预训练模型中编码层的层数为L’,且L’大于或等于多语种分支模型中每个处理分支12中编码层122的层数K。
当L与L’相同时,利用多语言预训练模型的最后L-K层初始化多语种分支模型的最后L-K层(即初始化多语种分支模型中的共享网络16);将多语言预训练模型的前K层参数复制源语言数目份(即处理分支120的个数),分别初始化多分支处理网络12中编码层122的参数。
当L大于L’时,可以从最靠近嵌入层10的编码层122或者最靠近输出层18的编码层160开始,利用多语言预训练模型中的L’个编码层分别初始化多语种分支模型中位于相同层数的编码层。而多语种分支模型中比多语言预训练模型多的几个编码层可以直接复制多语言预训练模型中最后几个编码层的参数;当然,也可进行随机初始化。
当L小于L’时,可以从最靠近嵌入层10的编码层122或者最靠近输出层18的编码层160开始,利用多语言预训练模型中的编码层分别初始化多语种分支模型中位于相同层数的编码层即可。
在另一些实施例中,多语言预训练模型中编码层的层数可以小于或等于处理分支120中编码层的层数。
具体地,对于多语种分支模型的编码层的初始化过程可以包括:请再次参阅图2,假设多语种分支模型中处理分支120中编码层122的层数为K,多语种分支模型中共享网络16中编码层160的层数为L-K,则多语种分支模型中编码层的总层数为L;而所选定的多语言预训练模型中编码层的层数为L’,且L’小于或等于多语种分支模型中处理分支120中编码层122的层数K;则必然的,L’小于L。具体初始化过程可以为:可以从最靠近嵌入层10的编码层122或者最靠近输出层18的编码层160开始,利用多语言预训练模型中的L’个编码层分别初始化多语种分支模型中位于相同层数的编码层。而多语种分支模型中比多语言预训练模型多的几个编码层可以直接复制多语言预训练模型中最后几个编码层的参数;当然,也可进行随机初始化。
D、随机初始化第一混合器和分支子网络中第二混合器中的参数。
此外,在经上述步骤S301中初始化之后,各个处理分支120中的参数可能相同或者不同,此时可以人为预先设定每个处理分支120所对应的语种。例如,如图2中所示,可以预先设定标号为1201的处理分支对应中文,标号为1202的处理分支对应法语,标号为1203的处理分支对应英语。需要说明的是,此处“对应”的含义为多语种分支模型训练过程中,在调整模型参数时,只有当训练样本为对应的语种时,才会调整对应转换分支上的参数。对应只针对训练过程,而在使用过程没有区别,所有输入文本都会经过所有转换分支的处理,不会区分对待。
S302:利用样本对多语种分支模型进行训练;其中,在训练的反向传播更新参数时,仅更新与样本的语种相关的路径上的参数。
可选的,在上述步骤S302之前,还包括构建多个训练集和多个测试集的步骤;其中,每个训练集仅包含对应源语言的训练数据,且训练数据中可以不包含平行语料。每个测试集中仅包含对应测试语言的测试数据。例如,在本实施例中,训练集中训练样本的源语言可以是中文、英语和法语;测试集所采用的测试语言可以包括中文、英语、法语、德语和日语等。
在上述实施例中,在训练的反向传播时仅更新与样本的语种相关的路径上的参数的过程有别于一般的模型训练流程。该技术使得各个分支仅在特定的语言数据上做训练,而对其他语言保持zero-shot,从而可以提升模型使用时面对未经训练的语种的识别效果。
可选的,在本实施例中,请再次参阅图2,与样本的语种相关的路径的包括:嵌入层10、多分支处理网络12中与样本的语种相同的处理分支120、第一混合器14、共享网络16以及输出层18。
另一可选地,与样本的语种相关的路径包括:嵌入层10、多分支处理网络12中与样本的语种相同的处理分支120、多分支处理网络12中与样本的语种不同的其余处理分支120上的第二混合器124、第一混合器14、共享网络16以及输出层18。
在一个应用场景中,假设对于编号为{1,2,3,...}的源语言有对应的有标注的训练集{D1,D2,D3,...},上述步骤S302的具体实现过程可以包括:
A、随机挑选一个源语言i,从对应的训练集Di中采样一组样本B;
B、将样本B输入多语种分支模型中,进行前向传播计算。
C、获得多语种分支模型的预测结果与样本B的标签之间的交叉熵损失,并利用该损失进行反向传播,且仅更新与样本的语种相关的路径上的参数。举例而言,请一并参阅图2,以训练语种为中文、英语和法语3种为例,则有对应的三个处理分支120,分别为第一处理分支1201,第二处理分支1202,第三处理分支1203。为方便描述,假设第一处理分支1201对应中文,第二处理分支1202对应法语,第三处理分支1203对应英语。训练过程中输入任意样本,正向传播步骤相同,计算损失后反向调整参数时,对于多分支处理网络12的参数调整,其仅调整与该样本语种对应的处理分支120的参数,其他处理分支120上所有参数固定;或者仅调整与该样本语种对应的处理分支120的参数和其他处理分支120上第二混合器124参数,其他处理分支120上编码层参数固定。例如,当前训练过程中的输入样本为中文,则计算损失后反向调整参数时,对于多分支处理网络12的参数调整,仅调整第一处理分支1201上的参数,对于第二处理分支1202和第三处理分支1203上的参数保持不变;或者,仅调整第一处理分支1201上的参数、以及第二处理分支1202和第三处理分支1203中第二混合器124的参数,对于第二处理分支1202和第三处理分支1203中其余编码层122的参数不作调整。
可选的,在上述更新步骤之前可以将与当前样本的语种无关的处理分支上的编码层和第二混合器的计算图从整个网络的计算图上剥离,即该处理分支仅进行前向计算,将不进行后向传播(即不调整其参数)。例如,假设当前样本的语种为中文,则在更新参数时对于英语和法语的处理分支上的参数不进行更新。该步骤保证了非中文的处理分支不会在中文数据上做训练,从而维持zero-shot状态。
以典型的分类任务而言,上述计算交叉熵损失的过程可以为:假设多语种分支模型的输出为输入样本B对应的logitsl,每个样本B的logits是一向量,其长度等于分类类别数C;在对logits应用softmax函数后得到预测的样本属于各个类别的概率,即p=softmax(l)。其中p是概率向量,其长度等于C,其各个分量等于该样本属于对应类别的概率。样本的标签y为样本所对应的类别,可用数字1~C表示。使用的损失函数为交叉熵损失,每个样本的损失计算如下:
loss=log softmax(l)[y];其中,[y]表示取其左方表达式表示的向量(1ogsoftmax(l))的第y维度的值。
D、判断是否满足停止训练标准,若是,则将训练后的多语种分支模型输出;否则,继续训练多语种分支模型。
可选的,上述判断是否满足停止训练标准的步骤可以包括:判断是否达到预先指令的训练次数;或者,判断当前多语种分支模型在测试集上的任务效果指标是否收敛,即在数次迭代之后,多语种分支模型的任务效果指标是否没有统计显著性提升;或者,判断当前多语种分支模型在测试集上的损失是否收敛,即在数次迭代之后,多语种分支模型在测试集上的损失函数值是否没有统计显著性下降。
在上述实施例中,在前向计算或推理时,所有语种的处理分支共同发挥作用,但在参数更新时,只在对应的语种上训练相应的处理分支,并使其他语种的处理分支不参与到梯度计算,从而每个语种的处理分支对其他语种保持zero-shot状态;不同语种的处理分支之间保持多样性,可以获得更丰富的文本表示。
在又一个应用场景中,还可将多语言知识蒸馏技术引入到多语种分支模型的训练过程中,其训练过程如图6所示,图6为利用多语言知识蒸馏技术训练的一实施方式的框架示意图。在该训练过程中可以将单语言预训练模型的知识迁移至多语种分支模型,提升多语种分支模型在这些源语言上的效果。假设对于编号为{1,2,3,...}的源语言有对应的有标注的训练集{D1,D2,D3,...}和单语言模型{T1,T2,T3,...};上述步骤S302的具体实现过程可以包括:
A、随机挑选一个源语言i,从对应的训练集Di中采样一组样本B。
B、将样本B输入多语种分支模型中,进行前向传播计算。
C、获取由与样本B的语种相同的训练集Di训练而成的单语言模型Ti,并将其作为教师模型T′i;该教师模型T′i可以是预先训练好的,也可以是当前利用训练集Di训练形成。
D、将样本B输入至教师模型T′i以获得对应的软标签。
具体的,可以将样本B输入至教师模型T′i得到预测的logitsl(t),并将logitsl(t)作为该样本对应的软标签。
E、获得样本经过多语种分支模型处理后的预测结果与软标签之间的交叉熵损失,并根据交叉熵损失进行反向传播,且仅更新与样本的语种相关的路径上的参数。
可选的,在本实施例中交叉熵损失的计算公式如下:
其中,l(s)为对多语种分支模型输入样本B得到的logits,l(t)为对教师模型输入样本B得到的logits,T为选取的蒸馏温度,M是分类类别数;li,j表示第i个样本的logits上的j个类别的值。
F、判断是否满足停止训练标准,若是,则将训练后的多语种分支模型输出;否则,继续训练多语种分支模型。而具体判断是否满足停止训练标准的过程可参见上一个实施例,在此不再赘述。
此外,对于本实施例中步骤B也可以位于步骤D和步骤E之间,本申请对此不作限定。
可以发现,在上述训练过程中对训练数据的依赖少,不需要额外收集大量不同语言的语料,亦不需要平行语料的辅助,可直接用于下游任务对应的数据集。且本方案中间流程少,不需要对模型进行多阶段训练,也相应地减少了对计算力的需求,可广泛用于多种计算资源有限制的场景。此外,本方案有较强的兼容性,与现有技术不冲突,可与现有技术融合并共同使用。
下面以几个具体的应用场景对本申请所提供的基于多语种分支模型的文本处理方法作进一步说明。
应用场景一:垃圾邮件分类场景;具体地,在该应用场景下,待处理的文本可以是任何语种的邮件正文;该待处理文本依次经过嵌入层和多分支网络处理后获得一个综合语义表示;该输出层中可以包含多个全连接层等,可以对该综合语义表示进行处理以获得该待处理的文本分别属于垃圾邮件和非垃圾邮件的概率。
应用场景二:摘要生成任务场景;具体地,在该应用场景下,待处理的文本可以是任何语种的文章段落;该待处理文本依次经过嵌入层和多分支网络处理后获得一个综合语义表示;该输出层可以基于神经网络,输出层可以采用抽取式方式或生成式方式形成与该待处理文本对应的摘要。
请参阅图7,图7为本申请自然语言处理装置一实施方式的结构示意图,该自然语言处理装置具体包括:获得模块20、混合模块22和输出模块24;其中,获得模块20用于获得待处理的自然语言文本对应的初始语义表示;混合模块22与获得模块20连接,用于对初始语义表示进行处理以获得综合语义表示;输出模块24与混合模块22连接,用于对综合语义表示进行变换以获得对应的输出结果。
请参阅图8,图8为本申请电子设备一实施方式的结构示意图,该电子设备具体包括:相互耦接的存储器30和处理器32,存储器30中存储有程序指令,处理器32用于执行程序指令以实现上述任一基于多语种分支模型的文本处理方法中的步骤。具体地,电子设备包括但不限于:台式计算机、笔记本电脑、平板电脑、服务器等,在此不做限定。此外,处理器32还可以称为CPU(Central Processing Unit,中央处理单元)。处理器32可能是一种集成电路芯片,具有信号的处理能力。处理器32还可以是通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器32可以由集成电路芯片共同实现。
请参阅图9,图9为本申请存储装置一实施方式的结构示意图,该存储装置40存储有能够被处理器运行的程序指令42,程序指令42用于实现上述任一基于多语种分支模型的文本处理方法中的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。