基于Transformer网络的文本处理方法及系统

文档序号:32483320发布日期:2022-12-09 23:56阅读:117来源:国知局
基于Transformer网络的文本处理方法及系统
基于transformer网络的文本处理方法及系统
技术领域
1.本技术涉及自然语言处理技术领域,具体涉及一种基于transformer网络的文本处理方法及系统。


背景技术:

2.自然语言处理(nlp,natural language processing)是人类语言、计算机科学和人工智能的子领域,旨在让机器理解、分析及利用自然语言,其下游任务包括情绪分析和文本分类等。随着深度神经网络的快速发展,尤其是基于transformer架构的nlp预训练模型的大量涌现,自然语言理解各项任务的精度得到显著的提高。然而,由于预训练模型巨大的计算量,高延迟问题成为巨大的挑战。
3.如图1所示,在数据批大小为1的情况1中和数据批大小为n的情况3中,预训练模型例如bert这样的大模型,首先通过词嵌入层将输入文本转化为张量,随后通过多个编码器(编码器0至编码器d-1)对张量编码,提取高维特征,最终通过分类层将张量转化为分类的结果。在上述过程中,由于编码器的计算量较大,从文本输入到结果输出的延迟较高。
4.针对延迟较高的问题,现有技术提供一种基于提前退出机制的解决方法,具体地,如数据批大小为1的情况2中,在每一个编码器后加入退出层,用于判断当前输入是否能够在这一层提前退出,如果退出层判断当前层可以提前退出,则直接在这一层输出分类结果,完成这条文本的计算过程,不必再送入后面的编码器进行计算;如果退出层判断当前层不能提前退出,则继续送入下一个编码器计算,直至退出层判断可以退出或完成所有编码器的计算。通过引入提前退出机制,针对不同输入的文本有效实现动态的退出过程,有效减少编码器的计算次数,也可以有效降低模型的延迟。
5.然而,上述基于提前退出机制的解决方法,虽然在trasnformer架构上有着明显的加速效果,但在数据批大小大于1的情况下很难在gpu上应用。如图3所示,在数据批大小为n的情况4中,对于一个批内的多条文本,退出的位置不同,模型的整体延迟取决于这个批中最后一条退出的文本,造成了所谓的短板效应。此时,gpu的利用率在一个批内逐渐降低,与没有使用提前退出方法的情况3相比,gpu利用率不高,加速效果也不明显,提前退出机制的解决方法和gpu上数据批大小大于1的情况兼容性差,计算效率低。


技术实现要素:

6.本技术提供一种基于transformer网络的文本处理方法及系统,以解决现有技术中基于提前退出机制的解决方法局限在数据批大小为1的情况下的问题。
7.本技术第一方面提供一种基于transformer网络的文本处理方法,包括:
8.当前次编码计算后,更新一个数据批内每条输入文本的已编码次数;
9.分别判断每条输入文本是否可以提前退出,以及,分别判断每条输入文本的已编码次数是否达到预设的最大计算层数;
10.如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则用待
处理文本更新对应的输入文本;
11.对数据批内的各输入条文本进行下一次编码计算,其中,每次编码计算均采用相同参数的编码器。
12.在一种实现方式中,还包括:
13.重复编码计算、判断每条输入文本是否可以提前退出或每条输入文本的已编码次数是否达到预设的最大计算层数,以及用待处理文本更新对应的输入文本,直至所有待处理文本均已得到处理。
14.在一种实现方式中,所述当前次编码计算后,更新一个数据批内每条输入文本的已编码次数之前,还包括:
15.获取待处理文本集,所述待处理文本集包括多条待处理文本;
16.初始化输入张量集,输入张量集中张量的位置数量为数据批大小,张量的初始值为空;
17.初始化编码次数集,编码次数集中元素的数量为数据批大小,元素用于记录对应输入文本的已编码次数,元素的初始值为空;
18.取出输入张量集中空缺位置数量的待处理文本,得到至少一条输入文本;
19.将输入文本转化的填充张量加入输入张量集中空缺位置;
20.对输入张量集中各张量进行编码计算。
21.在一种实现方式中,所述更新一个数据批内每条输入文本的已编码次数,包括:
22.将编码次数集中每个元素加1。
23.在一种实现方式中,所述如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则用待处理文本更新对应的输入文本,包括:
24.如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则将输入张量集中对应的张量置空,以及,将编码次数集中对应的元素置空;
25.重复所述取出输入张量集中空缺位置数量的待处理文本和所述将输入文本转化的填充张量加入输入张量集中空缺位置。
26.在一种实现方式中,还包括:如果输入文本未能提前退出且已编码次数未达到预设的最大计算层数,则直接进行下一次编码计算。
27.本技术第二方面提供一种基于transformer网络的文本处理系统,包括:
28.更新编码次数模块,用于当前次编码计算后,更新一个数据批内每条输入文本的已编码次数;
29.判断模块,用于分别判断每条输入文本是否可以提前退出,以及,分别判断每条输入文本的已编码次数是否达到预设的最大计算层数;
30.更新输入文本模块,用于如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则用待处理文本更新对应的输入文本;
31.下一次编码计算模块,用于对数据批内的各输入条文本进行下一次编码计算,其中,每次编码计算均采用相同参数的编码器。
32.在一种实现方式中,还包括重复编码模块,所述重复编码模块用于重复编码计算、判断每条输入文本是否可以提前退出或每条输入文本的已编码次数是否达到预设的最大计算层数,以及用待处理文本更新对应的输入文本,直至所有待处理文本均已得到处理。
33.在一种实现方式中,还包括:
34.获取模块,用于获取待处理文本集,所述待处理文本集包括多条待处理文本;
35.初始化张量模块,用于初始化输入张量集,输入张量集中张量的位置数量为数据批大小,张量的初始值为空;
36.初始化编码次数模块,用于初始化编码次数集,编码次数集中元素的数量为数据批大小,元素用于记录对应输入文本的已编码次数,元素的初始值为空;
37.文本输入模块,用于取出输入张量集中空缺位置数量的待处理文本,得到至少一条输入文本;
38.填充文本模块,用于将输入文本转化的填充张量加入输入张量集中空缺位置;
39.当前编码计算模块,用于对输入张量集中各张量进行编码计算。
40.在一种实现方式中,所述更新输入文本模块进一步被配置为:
41.如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则将输入张量集中对应的张量置空,以及,将编码次数集中对应的元素置空;
42.重复所述取出输入张量集中空缺位置数量的待处理文本和所述将输入文本转化的填充张量加入输入张量集中空缺位置。
43.由以上技术方案可知,本技术在当前次编码计算后,更新一个数据批内每条输入文本的已编码次数,并分别判断每条输入文本是否可以提前退出,以及,分别判断每条输入文本的已编码次数是否达到预设的最大计算层数,如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则用待处理文本更新对应的输入文本,对数据批内的各输入条文本进行下一次编码计算,其中,每次编码计算均采用相同参数的编码器。基于编码器参数的复用,以及对输入文本的循环填充,使得gpu上模型同时处理的文本数量恒定在数据批大小。在不需要修改底层算子的情况下,有效兼容提前退出机制和数据批大小大于1。通过引入提前退出机制,在不改变模型原有结构的情况下,模型在每一层网络后加入退出层判断能否提前结束计算,在可以提前退出时填充新的输入文本,实现不同输入的动态退出过程,使得gpu一直处于高利用率状态,有效避免短板效应,提高模型处理文本的速度。
附图说明
44.图1为现有技术提供的文本处理方法的流程示意图;
45.图2为本技术实施例提供的transformer的编码器-解码器结构示意图;
46.图3为本技术实施例提供的一种编码器结构示意图;
47.图4为本技术实施例提供的一种文本处理方法的流程示意图;
48.图5为本技术实施例提供的另一种文本处理方法的流程示意图。
具体实施方式
49.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
50.以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本技术的限制。如在本技术的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,
除非其上下文中明确地有相反指示。还应当理解,在本技术以下各实施例中,“至少一个”、“一个或多个”是指一个、两个或两个以上,“多个”是指两个或者两个以上。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
51.在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
52.transformer架构在17年首次提出,抛弃传统的卷积神经网络(cnn)和循环神经网络(rnn),完全由注意力层和前向神经网络组成。如图2所示,transformer架构的本质是一个编码器-解码器结构,通过堆叠编码器和解码器实现高维特征的编码与解码。而在transformer架构的基础上,nlp预训练模型大量涌现。
53.以bert模型为例,bert(bidirectional encoder representations from transformers)是一种transformer的双向编码器,旨在通过在左右上下文中共有的条件计算来预先训练来自无标号文本的深度双向表示不同于之前的模型只能单向学习语义,bert模型通过随机屏蔽部分输入再让模型预测被屏蔽部分的方法双向学习语义,大大增强模型的学习能力。
54.简单来说,bert可以看做是transformer的编码器部分的堆叠和词嵌入层的组合。词嵌入层主要实现文本到张量的转换,将自然语言转化成计算机能处理的表示形式。如图3所示,编码器主要由多头注意力层(mha)和前向传播层(ffn)构成。对任意长度的输入序列计算,多头注意力层通过三个线性映射函数,将输入序列转化为q、k、v三个矩阵。其中,q矩阵用于和k中的每一行匹配,k用于q矩阵查询,v用于保存信息。然后利用注意力公式计算输入序列每两个元素之间的相关度,注意力公式如下:
[0055][0056]
其中,d表示缩放因子,softmax公式用于对矩阵结果归一化,计算如下:
[0057][0058]
多头注意力层的输出就是多次注意力公式结果的拼接。前向传播层是relu与线性层(linear)的组合,计算公式如下:
[0059]
ffn(x0=linear(relu(x));
[0060]
其中,relu计算公式如下:
[0061]
relu(x)=max(0,linear(x00;
[0062]
linear计算公式如下:
[0063]
linear(x)=wx+b;
[0064]
其中,w和b是线性层的参数。
[0065]
然而,由于预训练模型巨大的计算量,高延迟问题成为巨大的挑战。现有技术提供的提前退出作为一种加速模型计算的方法,虽然在trasnformer架构上有着明显的加速效果,但在数据批大小大于1的情况下很难在gpu上应用。gpu因为其并行计算的特性,是自然语言处理最常见的加速硬件,加速方法兼容较大的数据批大小在应用中是极其重要的,这也是提前退出方法目前的一大挑战。
[0066]
本技术实施例提供一种基于transformer网络的文本处理方法,在数据批大小大于1的情况下,不需要修改底层算子,有效兼容提前退出机制和数据批大小大于1,保证文本处理过程中gpu一直处于高利用率状态,有效提高模型处理文本的平均速度。以下以bert模型为例进行详细阐述,可以理解的,本技术实施例提供的文本处理方法也可以应用在其他nlp预训练模型。本技术实施例提供的基于transformer网络的文本处理方法包括步骤s1至步骤s4。
[0067]
s1、当前次编码计算后,更新一个数据批内每条输入文本的已编码次数。
[0068]
s2、分别判断每条输入文本是否可以提前退出,以及,分别判断每条输入文本的已编码次数是否达到预设的最大计算层数。
[0069]
s3、如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则用待处理文本更新对应的输入文本。
[0070]
s4、对数据批内的各输入条文本进行下一次编码计算,其中,每次编码计算均采用相同参数的编码器。
[0071]
参见图4,本技术实施例通过对编码器参数的复用,实现每一次编码器的计算过程相同。可以理解的,模型中可以只配置一个编码器,或使模型中每一个编码器的参数相同。基于参数的复用,将多个编码器的顺序计算过程看做是一个编码器的循环计算。以图4中情况5为例,数据批大小等于1时,由于只需要加载一个编码器的参数,有效降低加载模型参数对gpu的占用率。
[0072]
而针对数据批大小大于1的情况,参见图4中情况6,以bert模型为例,本技术实施例首先通过词嵌入层计算将文本转化为张量,作为后面编码器的输入,避免对总体时序的影响。基于参数复用的基础,本技术实施例通过对编码器输入的循环填充,让编码器始终同时处理数据批大小的文本。对于当前数据批内输入文本,编码器完成当前次编码计算后,更新数据批内每条输入文本的已编码次数,通过已编码次数记录对应输入文本所在的编码器层数。
[0073]
编码器每完成一次计算,分别判断数据批内每条输入文本是否可以提前退出,以及,分别判断每条输入文本的已编码次数是否达到预设的最大计算层数。如果存在输入文本可以退出或已编码次数达到预设的最大计算层数,则在该输入文本退出的位置添加新的输入文本,即待处理文本,将更新后的数据批内各输入文本进行下一次编码计算,让编码器的输入文本数量始终保持在数据批大小。如果数据批内每条输入文本均不能退出且已编码次数未达到预设的最大计算层数,则继续送入编码器进行下一次计算,直至可以退出或者已编码次数未达到预设的最大计算层数。重复上述编码计算、判断每条输入文本是否可以提前退出或每条输入文本的已编码次数是否达到预设的最大计算层数,以及如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,用待处理文本更新对应的输入文本,直至所有待处理的文本都已经得到处理,计算过程结束。
[0074]
示例性地,数据批大小等于4,第一批输入文本(即4条待处理文本通过词嵌入层转化成地张量)包括第一文本、第二文本、第三文本和第四文本,将第一批输入文本输入编码器0,编码器0对第一批输入文本编码计算后,将第一批输入文本中每条文本的已编码次数更新为1,并分别判断每条输入文本是否可以提前退出以及判断每条文本的已编码次数是否达到预设的最大计算层数d。判断结果第三文本和第四文本可以提前退出,则将第三文本和第四文本的结果输出,在数据批内第三文本和第四文本的位置替换为新的输入文本(第五文本、第六文本),将第一文本、第二文本、第五文本和第六文本作为第二批输入,输入至编码器0中,编码器0对第二批输入文本编码计算后,将第二批输入文本中第一文本已编码次数更新为2、第二文本已编码次数更新为2、第五文本已编码次数更新为1、第六文本已编码次数更新为1,并分别判断一文本、第二文本、第五文本和第六文本是否可以提前退出以及判断已编码次数是否达到预设的最大计算层数d。
[0075]
本技术实施例通过编码器参数的复用,以及对输入文本的循环填充,使得gpu上模型同时处理的文本数量恒定在数据批大小,使得gpu一直处于高利用率状态,有效避免短板效应,提高模型处理文本的速度。
[0076]
参见图5,本技术实施例还提供一种在实际应用时,基于transformer网络的文本处理方法的算法流程。
[0077]
s101、获取待处理文本集,所述待处理文本集包括多条待处理文本,例如,t1、t2、t3、

、tn。
[0078]
s102、初始化输入张量集s,输入张量集中张量的位置数量为数据批大小,张量的初始值为空,例如,数据批大小为4时,s中的位置数量为4。
[0079]
s103、初始化编码次数集l,编码次数集中元素的数量为数据批大小,元素用于记录对应输入文本的已编码次数,例如数据批大小为4时,l可以为包括4个为0的元素的列表。
[0080]
s104、判断待输入文本集是否为空,如果为空则结束当前方法,如果不为空则进行步骤s105。
[0081]
s105、从待处理文本集中取出输入张量集s中空缺位置数量的待处理文本,得到至少一条输入文本,例如,输入张量集s中空缺位置数量为t+1,则从待处理文本集中取出待处理文本tk、t
k+1
、t
k+2


、t
k+t

[0082]
s106、将待处理文本转化的填充张量作为输入文本加入输入张量集s中空缺位置。例如,利用词嵌入层将tk、t
k+1
、t
k+2


、t
k+t
转化成张量sk、s
k+1
、s
k+2


、s
k+t
,将其加入输入张量集s中空缺位置。
[0083]
s107、将输入张量集s输入编码器中进行编码计算。
[0084]
s108、编码计算后,将编码次数集l中每个元素加1。
[0085]
s109、分别判断每条输入文本(输入张量集s中每个张量)是否可以提前退出,以及,分别判断每条输入文本的已编码次数(编码次数集l中代表对应输入文本的已编码次数)是否达到预设的最大计算层数d。如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则进行步骤s110,否则跳转至s107。
[0086]
s110、将输入张量集s中可以提前退出或达到预设的最大计算层数d的张量置空,将对应的编码次数集l中代表该张量已编码次数的元素置空。进行步骤s104。
[0087]
以下实施例将进一步说明本技术。
[0088]
采用本技术实施例提供的基于transformer网络的文本处理方法,在金融情绪分析任务上用elbert模型进行应用。
[0089]
金融情绪分析作为自然语言处理(nlp)技术的一个重要应用,旨在通过分析文本获取其中的情绪。作为金融交易的一个工具,金融情绪分析的速度和精度显著影响着交易策略的收益。虽然预训练模型的出现显著提高金融情绪分析的精度,但是带来的高延迟仍然具有挑战性。elbert模型在使用编码器参数共享策略的albert模型的基础上加入提前退出机制,在多项自然语言理解任务上,在保持精度几乎不变的情况下,有效实现了的2~10倍的加速效果。
[0090]
在金融情绪分析和elbert实施例中,将待分类处理的文本作为模型的文本集输入,送入基于elbert的加速算法中处理。其中,文本首先会经过词嵌入层转化为张量,作为编码器的输入。这些张量经过elbert的编码器计算之后进行提前退出的判断,如果可以提前退出,就在退出位置填充新的文本,送入编码器进行下一次计算;不能退出的话就直接继续下一次编码器计算,直至所有待分类的文本都处理完。
[0091]
在两个金融情绪分析数据集上使用本技术实施例提供的基于transformer网络的文本处理方法。实验证明,系统可以实现很高的分类精度,并且实现明显的加速效果,充分提高了gpu的利用率,模型文本处理的平均速度实现了最高12倍的提升。
[0092]
本技术实施例第二方面还提供一种基于transformer网络的文本处理系统,用于执行本技术实施例前述提供的文本处理方法,详细细节可以参照前述的文本处理方法,在此不再赘述,该文本处理系统包括:
[0093]
更新编码次数模块,用于当前次编码计算后,更新一个数据批内每条输入文本的已编码次数。
[0094]
判断模块,用于分别判断每条输入文本是否可以提前退出,以及,分别判断每条输入文本的已编码次数是否达到预设的最大计算层数。
[0095]
更新输入文本模块,用于如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则用待处理文本更新对应的输入文本。
[0096]
下一次编码计算模块,用于对数据批内的各输入条文本进行下一次编码计算,其中,每次编码计算均采用相同参数的编码器。
[0097]
进一步地,还包括重复编码模块,所述重复编码模块用于重复编码计算、判断每条输入文本是否可以提前退出或每条输入文本的已编码次数是否达到预设的最大计算层数,以及用待处理文本更新对应的输入文本,直至所有待处理文本均已得到处理。
[0098]
进一步地,还包括:
[0099]
获取模块,用于获取待处理文本集,所述待处理文本集包括多条待处理文本。
[0100]
初始化张量模块,用于初始化输入张量集,输入张量集中张量的位置数量为数据批大小,张量的初始值为空。
[0101]
初始化编码次数模块,用于初始化编码次数集,编码次数集中元素的数量为数据批大小,元素用于记录对应输入文本的已编码次数,元素的初始值为空。
[0102]
文本输入模块,用于取出输入张量集中空缺位置数量的待处理文本,得到至少一条输入文本。
[0103]
填充文本模块,用于将输入文本转化的填充张量加入输入张量集中空缺位置。
[0104]
当前编码计算模块,用于对输入张量集中各张量进行编码计算。
[0105]
所述更新输入文本模块进一步被配置为:
[0106]
如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则将输入张量集中对应的张量置空,以及,将编码次数集中对应的元素置空;
[0107]
重复所述取出输入张量集中空缺位置数量的待处理文本和所述将输入文本转化的填充张量加入输入张量集中空缺位置。
[0108]
本技术实施例在当前次编码计算后,更新一个数据批内每条输入文本的已编码次数,并分别判断每条输入文本是否可以提前退出,以及,分别判断每条输入文本的已编码次数是否达到预设的最大计算层数,如果存在输入文本可以提前退出或已编码次数达到预设的最大计算层数,则用待处理文本更新对应的输入文本,对数据批内的各输入条文本进行下一次编码计算,其中,每次编码计算均采用相同参数的编码器。基于编码器参数的复用,以及对输入文本的循环填充,使得gpu上模型同时处理的文本数量恒定在数据批大小。在不需要修改底层算子的情况下,有效兼容提前退出机制和数据批大小大于1。通过引入提前退出机制,在不改变模型原有结构的情况下,模型在每一层网络后加入退出层判断能否提前结束计算,在可以提前退出时填充新的输入文本,实现不同输入的动态退出过程,使得gpu一直处于高利用率状态,有效避免短板效应,提高模型处理文本的速度。
[0109]
以上所述的本技术实施方式并不构成对本技术保护范围的限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1