注意力范围自适应方法、系统及计算机可读存储介质

文档序号:25734758发布日期:2021-07-06 18:43阅读:119来源:国知局
注意力范围自适应方法、系统及计算机可读存储介质

本发明涉及注意力范围自适应技术领域,尤其涉及注意力范围自适应方法、系统及计算机可读存储介质。



背景技术:

自从“attentionisallyourneed”提出以来,transformer已成为自然语言处理的主要模型,运用在许多任务上,但其结构需要对输入序列设置一个固定的长度,默认长度是512。如果文本序列长度短于固定长度,可以通过填充的方式来解决。如果序列长度超过固定长度,有两种处理方式,一种是增加输入序列长度,但transformer每个字符都需要计算该字符与其他所有字符注意力,导致所需的计算和显存开销与输入序列的长度成二次方,使得transformer在序列长度上很难扩展,难以作为处理上千字符输入,模型基本上1k个字符就是上限了。然而对于字符级的语言模型来说,上千个字符的输入是比较常见的。

另一种处理方式,就是将文本划分为多个片度。在划分片段的时候,没有考虑句子的自然边界,而是根据固定的长度来划分序列,导致分割出来的片段在语义上是不完整的。在训练的时候只能对每个片段单独训练,片段之间没有联系导致每个字符之间最长的依赖关系取决于片段的长度,但不同字符所关联的上下文长度是不同的,有的字符关联的上下文长度远远超过段度长度。简单的将输入文本切分为固定长度不能让模型看到正确的上下文,构建更好的表征。

为了让模型可以关联更长上下文,transformerxl设计memory机制缓存上一个段的隐向量序列,让每个片段关联前一个片段,建立更长的上下文依赖。

通过memery保存的多个片段可以让字符关联更长的上下文,但在过往的实验中显示上层token关联上下文的范围比下层token关联上下文的范围,增大memory保存序列长度只是满足了上层的注意力范围,却严重增加计算和显存开销。同时transformer的注意力机制会做多头注意力(multi-head)处理,“adaptive(引用)”发现每层的注意力头的注意力范围是不同的,为了让多头注意力学习到最优的注意力关联,让其自己决定需要关注多长的内容,让模型下层关注较少的上下文,模型上层能够关注更长的上下文,从而减少计算量。

transformer的结构上是由多个注意力层排列组成,不同层之间的注意力范围是相互联系的,每层的注意力范围都是随层数的累加。修改某层的注意力范围会影响其他层的注意力范围,例如下层注意力范围的减少会让上层的注意力范围变相的减少。只是让每层获得最佳的注意力范围并不能让所有层都达到最佳的注意力范围。



技术实现要素:

有鉴于此,本发明要解决的技术问题是提供注意力范围自适应方法、系统及计算机可读存储介质,不仅可以调节当前层注意力头的注意力范围,还可以调节模型其他层注意力头的注意力范围,在保证让每层的学习到最佳的注意力范围,同时让模型保持最佳的注意力范围。

本发明的技术方案是这样实现的:

一种注意力范围自适应方法,包括以下步骤:

s1、通过缓存机制保存模型的隐向量序列,设置保存的最大长度;

s2、添加掩盖函数控制模型的注意力范围;根据所述掩盖函数的最长范围确定参与模型计算的隐向量序列长度;

s3、训练所述掩盖函数,并通过训练后的掩盖函数确定模型的注意力范围。

优选的,所述s2中,掩盖函数为:

其中,r是控制范围跨度的超参数,z是每层head的参数,l是所有层共享参数,r是超参数,s是最大的注意力范围;

注意力层变为:

其中,wq,wk,wv是三个权值不同,尺寸相同的矩阵,d是权重矩阵wk的纬度,相除为了避免权重矩阵纬度不同带来的差异,有利于模型梯度的稳定。

优选的,所述训练所述掩盖函数具体包括:

在数据集enwiki8和text-8上训练掩盖函数;

将enwiki8和text-8的数据集进行预处理;把数据集的每个单词拆分成字符,统计构成数据集的字符个数作为字典大小,按照字典构建模型的输入向量。

优选的,还包括:

s4、添加带门控单元的前馈层。

优选的,所述s4具体包括:

将transformer中的第一个投射层替换为门控单元,让输入经过两个线性变换,再将两个线性变换后的分量相乘,其他不变,公式如下:

ffnglu(x,w1,w2,w3)=(glu(xw1)w2)w3

其中,w1,w2表示glu第一个线性变换,w3是第二个线性变换的参数。

优选的,还包括:

s5、使用上述步骤学习到的参数来预测下一个字符。

本发明还提出了一种注意力范围自适应系统,包括:

保存模块,用于通过缓存机制保存模型的隐向量序列,设置保存的最大长度;

控制模块,用于添加掩盖函数控制模型的注意力范围;根据所述掩盖函数的最长范围确定参与模型计算的隐向量序列长度;

训练模块,用于训练所述掩盖函数,并通过训练后的掩盖函数确定模型的注意力范围。

优选的,所述掩盖函数为:

其中,r是控制范围跨度的超参数,z是每层head的参数,l是所有层共享参数,r是超参数,s是最大的注意力范围;

注意力层变为:

其中,wq,wk,wv是三个权值不同,尺寸相同的矩阵,d是权重矩阵wk的纬度,相除为了避免权重矩阵纬度不同带来的差异,有利于模型梯度的稳定。

本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现如上述任一项所述的注意力范围自适应方法。

本发明提出的注意力范围自适应方法、系统及计算机可读存储介质,通过引入全层的自适应宽度注意力,让模型调整每层的注意力宽度的时候同时调整全局注意力,让模型学习到最优的注意力范围。

附图说明

图1为本发明实施例提出的注意力范围自适应方法流程图;

图2为本发明实施例提出的注意力范围自适应系统的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提出了一种注意力范围自适应方法,包括以下步骤:

一种注意力范围自适应方法,包括以下步骤:

s1、通过缓存机制保存模型的隐向量序列,设置保存的最大长度;

缓存机制用于保存模型每个注意力层学习到的特征向量,将保存的数组的长度设定为模型输入序列的长度的倍数,并根据任务设定需要的最大上下文。

s2、添加掩盖函数控制模型的注意力范围;根据所述掩盖函数的最长范围确定参与模型计算的隐向量序列长度。

具体的,掩盖函数添加在transformer的每个注意力头上来控制注意力头的注意力跨度。掩盖函数是将距离映射到0和1之间的非增加函数。

掩盖函数为:

其中,r是控制范围跨度的超参数,z是每层head的参数,l是所有层共享参数,r是超参数,s是最大的注意力范围;r可以设定为32,s可以设定为8192;

注意力层变为:

其中,wq,wk,wv是三个权值不同,尺寸相同的矩阵,输入x和wq,wk,wv相乘向量q,向量k和向量v,向量q,k和lmzl(x)相乘来决定注意力的范围,为了梯度的稳定除以d,再过softmax激活函数,最后结果再和向量v相乘。

通过掩盖函数的最长范围来决定参与计算的序列长度,避免缓存机制中保存的所有隐向量序列参与计算,极大的节约了模型的显存开销和训练时间。

s3、训练所述掩盖函数,并通过训练后的掩盖函数确定模型的注意力范围。

训练所述掩盖函数具体包括:

在数据集enwiki8和text-8上训练掩盖函数;

将enwiki8和text-8的数据集进行预处理;把数据集的每个单词拆分成字符,统计构成数据集的字符个数作为字典大小,按照字典构建模型的输入向量。

s4、添加带门控单元的前馈层。

将transformer中的第一个投射层替换为门控单元,让输入经过两个线性变换,其中一个是激活函数设为gelu,再将两个线性变换后的分量相乘,其他不变,公式如下:

ffnglu(x,w1,w2,w3)=(glu(xw1)w2)w3

其中,w1,w2表示glu第一个线性变换,w3第二个线性变换的参数。

门控单元可以控制信息在网络中流动的路径,使信息可以在模型中畅通无阻的流动。如果没有这些门控单元,信息很可能会在通过多个变换后消失。

s5、使用上述步骤学习到的参数来预测下一个字符。

如图2所示,本发明还提出了一种注意力范围自适应系统,包括:

保存模块1,用于通过缓存机制保存模型的隐向量序列,设置保存的最大长度;

控制模块2,用于添加掩盖函数控制模型的注意力范围;根据所述掩盖函数的最长范围确定参与模型计算的隐向量序列长度;

训练模块3,用于训练所述掩盖函数,并通过训练后的掩盖函数确定模型的注意力范围。

具体的,所述掩盖函数为:

其中,r是控制范围跨度的超参数,z是每层head的参数,l是所有层共享参数,r是超参数,s是最大的注意力范围;

注意力层变为:

其中,wq,wk,wv是三个权值不同,尺寸相同的矩阵,d是权重矩阵wk的纬度,相除为了避免权重矩阵纬度不同带来的差异,有利于模型梯度的稳定。

本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现如上述任一项所述的注意力范围自适应方法。

本发明提出的注意力范围自适应方法、系统及计算机可读存储介质,引入全层的自适应宽度注意力,让模型调整每层的注意力宽度的时候同时调整全局注意力,让模型学习到最优的注意力范围。带门控单元的前馈层让模型的训练步数缩小了四分之三,更快的收敛到最佳状态。与传统的transformer相比,在增大模型的最大可见上下文长度的同时极大的节约了计算和显存开销。

本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现上述所述的注意力范围自适应方法。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、rom、ram、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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