自然语言处理模型的获取词向量的方法、装置和存储介质

文档序号:361613 发布日期:2021-12-07 浏览:9次 >En<

阅读说明:本技术 自然语言处理模型的获取词向量的方法、装置和存储介质 (Method, device and storage medium for acquiring word vector of natural language processing model ) 是由 张帆 涂眉 王黎杰 于 2020-06-01 设计创作,主要内容包括:公开了一种获取词向量的方法,包括:在编码信息中得到目标词对应的编码,在第一向量信息中得到所述编码对应的第一部分词向量;根据目标词,在第二向量信息中得到所述目标词对应的第二部分词向量;合并所述第一部分词向量和第二部分词向量,得到所述目标词的词向量。同时,可以使用人工智能模型来执行由电子设备执行的上述方法。(Disclosed is a method for obtaining a word vector, comprising: obtaining a code corresponding to a target word in coding information, and obtaining a first part of word vectors corresponding to the code in first vector information; according to the target word, obtaining a second part of word vectors corresponding to the target word in second vector information; and combining the first part of word vectors and the second part of word vectors to obtain the word vectors of the target words. Also, the above-described method performed by the electronic device may be performed using an artificial intelligence model.)

自然语言处理模型的获取词向量的方法、装置和存储介质

技术领域

本发明涉及自然语言处理领域,针对词向量矩阵过大的问题,优化模型存储空间,同时在某些可实施权重共享策略的单词生成模型上,实现模型加速。

背景技术

自然语言处理领域任务有很多种分支,如机器翻译、摘要生成、对话系统等,这些任务最终的目的都是用机器解决自然语言理解的问题。

在单词生成模型中,通常包含编码器部分、解码器部分、输出概率计算部分。

编码器部分用于将任务接收到的输入进行编码,解码器部分将编码器输出进行解码,最后用解码后的上下文信息向量计算所有生成单词的概率。

而当得到生成单词以后,这些单词会从词向量表(也可称作词向量矩阵)中查找自身对应的词向量,然后继续与编码器输出一同进入解码器,生成下一个单词,直至达到停止条件。

发明内容

现有单词生成任务,由于词表过大,导致词向量矩阵占用存储空间过高;

并且在计算单词输出时,由于需要计算所有单词的输出概率,概率计算矩阵也将占用很高的存储空间。

同时,计算所有单词的输出概率的这一过程的计算复杂度也会非常高。

现有技术中,考虑到词向量矩阵与概率计算矩阵互为转置的关系,采用权重共享策略(以下权重共享策略,均指此种方法),将这两个矩阵的参数进行复用,大大降低了模型存储空间。

但是就单个矩阵而言,其参数量仍然十分庞大,并且计算复杂度问题也未得到解决。

根据本公开的一方面,提供了一种获取词向量的方法,包括:在编码信息中得到目标词对应的编码,在第一向量信息中得到所述编码对应的第一部分词向量;根据目标词,在第二向量信息中得到所述目标词对应的第二部分词向量;以及合并所述第一部分词向量和第二部分词向量,得到所述目标词的词向量。

根据本公开的实施例,所述编码信息包括两个以上,所述第一部分词向量包括与所述两个以上编码信息分别对应的两个以上第一部分词向量;所述合并所述第一部分词向量和第二部分词向量,得到所述目标词的词向量包括:合并所述两个以上第一部分词向量和所述第二部分词向量,得到所述目标词的词向量。

根据本公开的实施例,还包括:将所述词向量输入解码器,得到上下文信息;将所述上下文信息进行切割,获得第一部分上下文信息和第二部分上下文信息;根据所述第一部分上下文信息与所述第一部分词向量,得到第一概率,并根据所述第二部分上下文信息与所述第二部分词向量,得到第二概率;以及根据所述第一概率和所述第二概率,得到所述目标词的概率。

根据本公开的实施例,所述编码信息、所述第一向量信息通过对初始词向量矩阵进行两次以上压缩训练得到的。

根据本公开的另一方面,提供了一种获取词向量的装置,包括:在编码信息中得到目标词对应的编码,在第一向量信息中得到所述编码对应的第一部分词向量的模块;根据目标词,在第二向量信息中得到所述目标词对应的第二部分词向量的模块;合并所述第一部分词向量和第二部分词向量,得到所述目标词的词向量的模块。

根据本公开的实施例,所述编码信息包括两个以上,所述第一部分词向量包括与所述两个以上编码信息分别对应的两个以上第一部分词向量;所述合并所述第一部分词向量和第二部分词向量,得到所述目标词的词向量包括:合并所述两个以上第一部分词向量和所述第二部分词向量,得到所述目标词的词向量。

根据本公开的实施例,还包括:将所述词向量输入解码器,得到上下文信息的模块;将所述上下文信息进行切割,获得第一部分上下文信息和第二部分上下文信息的模块;根据所述第一部分上下文信息与所述第一部分词向量,得到第一概率,并根据所述第二部分上下文信息与所述第二部分词向量,得到第二概率的模块;以及根据所述第一概率和所述第二概率,得到所述目标词的概率的模块。

根据本公开的实施例,所述编码信息、所述第一向量信息通过对初始词向量矩阵进行两次以上压缩训练得到的。

根据本公开的另一方面,提供了一种获取词向量的电子装置,包括:存储器,配置为存储指令;以及处理器,所述配置为运行所述指令以执行根据本公开的实施例的方法。

根据本公开的另一方面,提供了一种其上具有指令的非暂时计算机可读存储介质,当通过处理器运行所述指令时,使得所述处理器执行本公开的实施例的方法。

通过本公开提出的各个实施例,至少解决了以上现有技术的问题和其他问题。

附图说明

通过接下来结合附图的详细描述,本公开的上述和其他方面、特征和优点将更加清楚,附图中:

图1是根据本公开实施例的单词生成模型的框图;

图2是根据本公开实施例的整体算法流程图;

图3是根据本公开实施例的方法1的示意图;

图4是根据本公开实施例的方法2的示意图;和

图5是根据本公开实施例的方法3的示意图。

具体实施方式

在现有技术,采用以下方案:

1.针对词表大小的问题,现有方案通过利用更细粒度的词表划分,达到缩减词表大小的目的,这些操作都存在于词表预处理过程中,即模型训练之前。

2.针对概率计算复杂度过高的问题,现有方案采用分层预测技术,将词语进行分类,首先预测词语类别,然后再通过预测类别中少数词的方法,降低概率计算复杂度,但是会对模型质量有一定的影响。

3.针对词向量矩阵占用存储空间过高的问题,现有方案对词向量矩阵进行压缩,且某些方案在权重共享策略的基础上,也可以实现降低概率计算复杂度的目的。但是也将损失模型质量。

针对词向量矩阵占用空间过高、概率计算复杂度过高的问题,本公开提出了一种词向量矩阵的压缩技术,在有效压缩词向量矩阵的基础上,如果采用权重共享策略,也可以降低概率计算复杂度,同时保证模型质量没有明显损失。

图1是根据本公开实施例的单词生成模型的框图。在单词生成模型中,通常包含编码器部分、解码器部分、输出概率计算部分。

图2是根据本公开实施例的整体算法流程图。

在图2中,首先,对根据给出的词向量矩阵,使用动态学习的方法进行部分矢量压缩,得到保留部分,和VQ部分的压缩结果:向量查找表和词表编码。

在输入端,当收到单词的词向量请求后,首先利用词表编码加向量查找表的方式,查找VQ部分词向量,然后与保留部分词向量合并,得到单词的完整词向量。

在概率计算端,利用之前描述的高效计算方式,快速计算出所有单词的概率值,经过softmax的概率整合,得到最终输出。

本公开涉及一种针对自然语言处理模型的词向量矩阵压缩方法,在解码端,对于可以实施全总共享策略的模型(单词生成模型),在结合权重共享策略后,可同时实现模型加速效果。本发明的构成包括以下几个方面:

1.词向量矩阵压缩

根据本公开的实施例,提供了一种获取词向量的方法,包括:在编码信息中得到目标词对应的编码,在第一向量信息中得到所述编码对应的第一部分词向量;根据目标词,在第二向量信息中得到所述目标词对应的第二部分词向量;合并所述第一部分词向量和第二部分词向量,得到所述目标词的词向量。

以下,将通过具体实施例描述上述方法,其中该方法中的编码信息对应于具体实施例中的词表编码,第一向量信息对应于具体实施例中的词向量矩阵的压缩部分,第二向量信息对应于具体实施例中的词向量矩阵的保留部分。

本发明针对现有词向量矩阵过大的问题,提出了一种分块词向量矩阵压缩的方法。该方案在进行词向量矩阵压缩的同时,也能保证每个单词的词向量间的相互独立性,从而与权重共享策略更加兼容,达到压缩矩阵同时实现模型加速的效果。核心方案如下:

首先,将词向量矩阵按隐单元维度分成两个或多个矩阵,然后将其中一个矩阵保留(称为词向量矩阵的保留部分),对另外一个或多个矩阵实施向量量化的压缩方式(称为词向量矩阵的压缩部分)。每一个压缩矩阵,压缩后包含两个部分:词表编码(每个单词都会有对应的词表编码),向量查找表(单词通过词表编码,查找向量查找表表中的向量)。当单词进行词向量查找操作的时候,对于压缩部分,它会首先得到自己的词表编码,然后去向量查找表中查找对应向量;对于保留部分,单词则会直接通过对应位置查找自己的词向量;最后,将这些查找到的词向量进行拼接,得到最终完整的词向量。

2.降低概率计算复杂度

根据本公开的实施例,进一步包括将所述词向量输入解码器,得到上下文信息;将所述上下文信息进行切割,获得第一部分上下文信息和第二部分上下文信息;根据所述第一部分上下文信息与所述第一部分词向量,得到第一概率,并根据所述第二部分上下文信息与所述第二部分词向量,得到第二概率;以及根据所述第一概率和所述第二概率,得到所述目标词的概率。

以下,将通过具体实施例描述上述方法,其中该方法中的第一部分上下文信息对应于具体实施例中的上下文信息的压缩部分,第二部分上下文信息对应于具体实施例中的上下文信息的保留部分。

在一些单词生成模型中,本发明可以结合权重共享策略,降低概率计算复杂度,从而实现模型加速。核心方案如下:

首先,将解码后的上下文信息向量按照对应于词向量矩阵压缩(即,切割)的方式进行切割;

然后,将通过切割获得的各个部分(例如,上下文信息的保留部分和上下文信息的压缩部分)分别与对应词向量部分进行计算。对于保留部分,直接与词向量矩阵的保留部分相乘即可,得到保留部分的概率结果;对于压缩部分,首先与向量查找表相乘,得到相乘结果,然后用词表编码查找相乘结果,得到所有词的压缩部分概率结果;最后,将各部分概率结果相加,得到最终概率输出。

3.动态压缩训练

根据本公开的实施例,进一步包括所述编码信息、所述第一向量信息通过对初始词向量矩阵进行两次以上压缩训练得到的。

以下,将通过具体实施例描述上述方法,其中该动态压缩训练方法适用于训练词表编码和词向量矩阵的压缩部分,并且该方法中的编码信息对应于具体实施例中的词表编码,第一向量信息对应于具体实施例中的词向量矩阵的压缩部分。

针对实施向量量化压缩时可能导致的模型性能损失问题,本公开提出了一种动态训练方法。核心方案如下:

step 1:设置训练超参数。分别记做:动态训练总步数Dst_max;压缩频率st_c;起始压缩值k_begin;目标压缩值k;压缩缩减步长st_k。并假设当前压缩值为k_curr,当前训练步数为Dst_curr。

step 2:初始化,令k_curr=k_begin;Dst_curr=0。

step 3:每隔st_c步,对词向量矩阵进行一次压缩。压缩操作包括:1.获取词向量矩阵;2.分块,然后对每块进行压缩;3.根据压缩结果修改词向量矩阵的值;4.根据压缩缩减步长更新压缩率:k_curr=k_curr-st_k;

step 4:达到总训练步数,结束。方法1.二分词向量矩阵压缩与概率计算复杂度降

图3是根据本公开实施例的方法1的示意图。依据图3中描述,首先把词向量矩阵分成两份,对第二部分进行保留(保留部分,exclusive part),对第一部分进行向量量化(压缩部分,VQ part),得到词表编码(I)和向量查找表(C)。当进行词向量查找时,首先通过单词对应位置的词表编码,在向量查找表中查找相应的向量;然后取出单词对应位置的保留部分向量;最后将两条向量进行拼接,得到最终的完整词向量。

图4是根据本公开实施例的方法2的示意图。依据图4中描述,首先将解码后的上下文信息向量按照词向量矩阵压缩的方式进行切割,得到压缩部分和保留部分的上下文信息(h_c和h_p);

然后,压缩部分上下文信息与向量查找表相乘,得到相乘结果,然后用词编码部分查找相乘结果,得到所有词的压缩部分概率结果;保留部分上下文信息与保留部分直接相乘,得到所有词的保留部分概率结果;最后,将两部分结果相加,得到最终概率输出。

方法2.多分词向量矩阵压缩与概率计算复杂度降低

以上例子中,词向量矩阵可以分成多个部分,只保留其中一个部分,压缩其余部分也可达到相同压缩与加速的效果。

方法3.动态压缩

同上述动态压缩方法,图5示出二分词向量矩阵的动态压缩步骤。动态压缩也可适用于多分词向量矩阵压缩。

由于词表过大,目前的词生成模型仍面临着巨大的内存开销和计算复杂度问题。

在内存问题中,将词向量矩阵与softmax层进行权重共享的策略得到了广泛的应用。

基于权重共享策略,一些词向量矩阵的压缩方法能够同时解决计算复杂度问题。

在本公开中,提出一种新的方法,部份矢量量化方法,在压缩词向量矩阵的同时实现模型加速。

使用一个窗口将词向量矩阵分成两部分,并通过矢量量化将其中一部分压缩成一个向量查找表,同时保持另一部分不变以保持单词的独立性。

对于每个单词,长的词向量可以分解为一个编码和一个短的词向量。

当与权重共享策略结合使用时,本公开的方法可以通过将矩阵乘积运算转化为查找运算来降低softmax层中词概率的计算复杂度。

此外,通过动态学习词表编码,本公开的方法可以获得更高的模型质量。

在神经机器翻译模型上的实验结果表明,本公开的方法可以将词向量矩阵参数减少74.51%,将softmax层中的FLOPs减少74.41%,同时在WMT测试集上保持较高的翻译质量。

权重共享策略在单词生成任务中非常有用,可以降低内存成本,并使在压缩词向量矩阵时加快模型速度成为可能。

使用权重共享策略的唯一要求是确保词向量矩阵之间的独立性。

基于上述考虑,本公开提出了部分矢量量化方法,该方法可以很好地兼容权重共享策略,在压缩词向量矩阵的同时实现模型加速。

本公开可以包括两部分:

部分矢量量化。首先把词向量矩阵分成两部分,使其中一部分保持不变,压缩另一部分。

动态学习。与之前方法不同,用动态学习的方法来学习词表编码和向量查找表。

部分矢量量化:

在部分矢量量化中,首先使用一个窗口,将词向量矩阵分成两部分:压缩部分和独占部分。然后用矢量量化方法去压缩压缩部分,同时保持独占部分不变。

部分矢量量化需要用到两个超参数:w和k。这里用V表示词表大小,d表示每个词向量的长度,表示词向量矩阵,表示softmax层中的参数矩阵,表示偏置矩阵。假设是词表编码,in∈[1,...,k]是第n个词的编码,是向量查找表, 是独占部分。总的词向量矩阵参数量大小是

PPVQ=O(k×w+V×(d-w))

当与未压缩之前相比时

ΔPPVQ=O((V-k)×w)

由此可看出,w越大,压缩率越高;k越小,压缩率越高。

在softmax层,用一个更加高效的方法来计算每个词的概率。

由于

Ww T=We=fconcat(flookup(C,I),Wp)

首先将给定的上下文信息分解

h=fconcat(hc,hp)

然后先计算VQ部分信息:

YVQ=flookup(Chc,I)

这里的FLOPs数量为

FVQ=(2w-1)×k

然后计算独占部分信息:

YP=Wphp

这里的FLOPs数量为

FP=(2(d-w)-1)×V

最终每个词的概率可以表示为

Yl=flookup(Chc,I)+Wphp+b

且总的FLOPs数量是

FPVQ=FVQ+FP+2V

与普通版本相比

ΔFPVQ=F-FPVQ=(2w-1)×(V-k)

由此看出,计算复杂度与k正相关,与w负相关。

动态学习

在此介绍了动态学习方法,用这种方法可以提升模型质量。

矢量量化通过将向量分割到不同的组中,用组的中心点来代表这个组中所有的向量。当向量固定的时候,矢量量化其实就是一个聚类算法。在已经存在的工作中,有的直接使用k-means聚类来达到矢量量化的目的,然后在用微调的方法训练向量查找表;有的用一种直接训练的方法,可以使词表编码、向量查找表与其他参数一起训练。第二种方法的作者也指出,对于一些词向量矩阵和其他参数一起训练的模型,则不可以使用直接训练的方法,也需要先训练出词表编码和向量查找表,然后做微调。

当通过词向量矩阵来学习词表编码时,发现一个问题:在一些模型中,词向量之间的距离很小。当尝试不同的聚类算法时,发现聚类结果很难收敛,或者词分成一些大的组和许多小的组。一个好的词表编码在矢量量化中是非常重要的,如果只对词向量矩阵进行一次量化,就很难给出一个好的词表编码。此外,压缩比越大,丢失的信息越多。考虑到以上原因,提出动态学习来更好地学习词表编码和向量查找表。

在开始时,设置了一个大的聚类数k_begin当做当前矢量量化数以减少信息丢失,然后使用使用step_k动态减少聚类数,直到k_curr等于目标数k。

每隔step_c步都进行一次部分矢量量化。

在进行部分矢量量化时,使用k_curr和VQ部分中的词向量的值来对单词进行聚类,以获得词表编码和向量查找表。

然后用词表编码查找向量查找表来替换VQ部分中的所有词向量。

动态学习过程中的训练步骤与预训练相同,词向量矩阵将保持未压缩的形式。

换言之,除了在量化步骤外,没有任何改变,学习词表编码和向量查找表,并根据向量查找表和词表编码强制改变词向量矩阵的值。

在学习了词表编码之后,还固定了词表编码并用其他参数微调向量查找表。

根据本发明的示例性实施例的多个单元或模块中的至少一个可以通过AI模型实现。与AI相关联的功能可以通过非易失性存储器、易失性存储器和处理器来执行。

处理器可以包括一个或多个处理器。此时,一个或多个处理器可以是通用处理器,例如中央处理器(CPU)、应用处理器(AP)等,仅用于图形的处理器(例如图形处理器(GPU)、视觉处理器(VPU)和/或AI专用处理器(例如神经处理单元(NPU))。

一个或多个处理器根据存储在非易失性存储器和易失性存储器中的预定义操作规则或人工智能(AI)模型来控制输入数据的处理。预定义的操作规则或人工智能模型是通过训练或学习提供的。

这里,通过学习提供意味着,通过将学习算法应用于多个学习数据,形成具有期望特性的预定义操作规则或AI模型。学习可以在根据实施例的执行AI的设备本身中执行,和/或可以通过单独的服务器/系统来实现。

人工智能模型可以由多个神经网络层组成。每一层具有多个权重值,并且通过前一层的计算和多个权重的操作来执行层操作。神经网络的例子包括但不限于卷积神经网络(CNN)、深神经网络(DNN)、递归神经网络(RNN)、受限玻尔兹曼机(RBM)、深信念网络(DBN)、双向递归深神经网络(BRDNN)、生成性对抗网络(GAN)和深Q网络。

学习算法是使用多个学习数据来训练预定目标设备(例如,机器人)以使得、允许或控制目标设备做出确定或预测的方法。学习算法的例子包括但不限于有监督学习、无监督学习、半监督学习或强化学习。

用户的意图可以通过使用自然语言理解(NLU)模型解释文本来获得。NLU模型可以是人工智能模型。人工智能模型可以由以指定用于人工智能模型处理的硬件结构设计的人工智能专用处理器来处理。人工智能模型可以通过训练获得。这里,“通过训练获得”是指使用多个训练数据通过训练算法对基本人工智能模型进行训练得到预定义的操作规则或人工智能模型,所述操作规则或人工智能模型被配置为执行所需的特征(或目的)。人工智能模型可以包括多个神经网络层。所述多个神经网络层中的每一个包括多个权重值,并且通过在前一层的计算结果和所述多个权重值之间的计算来执行神经网络计算。

语言理解是一种识别和应用/处理人类语言/文本的技术,包括自然语言处理、机器翻译、对话系统、问答或语音识别/合成。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种汉字拼音到盲文ASCII码的转换方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!