首页 / 注意力机制的激活函数加速方法、装置和注意力机制电路

注意力机制的激活函数加速方法、装置和注意力机制电路有效专利 发明

技术领域

[0001] 本发明属于深度学习技术领域,特别是涉及注意力机制的激活函数加速方法、装置和注意力机制电路。

相关背景技术

[0002] 注意力机制(Attention Mechanisms)可以帮助模型对输入的每个部分赋予不同的权重,抽取出更加关键及重要的信息,使模型做出更加准确的判断,同时不会对模型的计算和存储带来更大的开销。注意力机制既简单,又可以赋予模型更强的辨别能力,还可以用于解释神经网络模型(例如机器翻译中输入和输出文字对齐、图像释义中文字和图像不同
区域的关联程度)等。
[0003] 目前深度学习神经网络结构中,一般均包含注意力机制,比如Seq2Seq模型中的注意力机制或Transformer模型中的多头注意力机制。
[0004] 目前的注意力机制均需采用Softmax的激活函数,其计算方法: ;其中是前级输出单元的输出,C为类别个数, 为自然底数e的 次幂与e的所有元素次幂之和的
比值。在Softmax运算中,首先对序列中每个元素计算以自然底数e为底数的次幂,其中幂为元素值,然后再计算每个元素的计算结果与全部元素的计算结果和的占比。通过Softmax函数,可以将多分类的输出数值转换为相对概率。
[0005] 然而,由于需要计算e的 次幂,因此注意力机制的激活函数具有速度较慢的缺点。尤其是,如果期望将具有Softmax的网络结构以硬件实现(比如,在边缘端产品中实现)将具有难度。这是因为:以硬件方式确定e的次幂时,一般是靠查表方法实现,具有功耗大和成本高的缺点。

具体实施方式

[0028] 为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
[0029] 为了描述上的简洁和直观,下文通过描述若干代表性的实施方式来对本发明的方案进行阐述。实施方式中大量的细节仅用于帮助理解本发明的方案。但是很明显,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实
施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。由于汉语的语言习惯,下文中没有特别指出一个成分的数量时,意味着该成分可以是一个也可以是多个,或可理解为至少一个。
[0030] 首先,对现有的注意力机制的原理进行说明。
[0031] 假定具有向量Q和向量组K,Q的形状为(1,V),代表Q为1个维度为V的向量;K的形状为(T,V),代表K为T个维度为V的向量组。
[0032] 首先,计算Q对K中的每个向量的注意力分数,其实质为:计算Q对K中T个向量中的哪个向量更相似。依次对T个向量执行求注意力分数操作,最终得到T个注意力得分,形状为(T,1)。然后,利用Softmax函数将T个注意力得分编码为概率分布,最后基于概率分布确定向量Q对向量组K的兴趣特征向量。
[0033] 申请人发现:由于Softmax需要执行e的次幂运算,因此现有技术的注意力机制具有速度较慢的缺点。尤其是:在以硬件方式实现注意力机制时,这个缺点更加突出。
[0034] 图1为现有技术中注意力机制的硬件结构图。注意力机制的硬件结构包括得分计算单元、Softmax运算单元和注意力计算单元。
[0035] 得分计算单元计算Q对K中的每个向量的注意力分数。得分计算单元具体可以实施为算术逻辑单元(ALU)。将注意力分数输入Softmax运算单元。Softmax运算单元包含控制器、寄存器、e次幂计算单元和求比计算单元。由于微片的低功耗和计算能力有限的限制下,e次幂计算单元并不直接计算以自然底数e为底数的、注意力分数为指数的幂,而是在控制
器的统筹控制下,通过数值查表方式从寄存器中获取以自然底数e为底数的、注意力分数为指数的幂。求比计算单元计算得到幂与全部注意力分数的幂的总和之间的占比。计算力注
意单元(比如,另一个ALU)基于求比计算单元计算出的占比计算出Q对K的注意力向量。
[0036] 然而,通过查表方法执行Softmax运算涉及到控制器针对寄存器的调用操作,具有功耗大和成本高的缺点。
[0037] 申请人经过分析,发现导致上述技术问题的根源在于:现有技术束缚于必须采用Softmax计算注意力机制的激活函数的思维定式,忽视了硬件实现中难以应用Softmax的现
状,从而导致上述技术问题。
[0038] 在本发明实施方式中,不再采用Softmax计算注意力机制的激活函数,规避了以自然底数e为底数的、注意力分数为指数的幂运算,从而提高了注意力机制的运算速度。尤其是,本发明实施方式规避了硬件实现注意力机制时的查表操作,并由此降低了成本和功耗。
[0039] 图2为本发明实施方式的注意力机制的激活函数加速方法的流程图。
[0040] 如图2所示,该方法包括:步骤201:输入第一向量和包含多个第二向量的第一向量组。
[0041] 第一向量的形状为(1,V),代表Q为1个维度为V的向量;第一向量组K的形状为(T,V),代表K为T个维度为V的向量组。也就是,K包含T个第二向量,每个第二向量的维度为V,其中T的数目是可变的。
[0042] 步骤202:基于注意力机制,确定第一向量对第一向量组中的每个第二向量的注意力分数。
[0043] 在这里,具体可以采用点积方式、通用方式、缩放点积方式、拼接方式或相加方式等注意力分数计算方式,计算第一向量Q对第一向量组K中的每个第二向量的注意力分数。
[0044] 步骤203:对注意力分数施加激活函数(Activation Function),激活函数适配于将注意力分数中的负值转变为零且正值保持为正数。
[0045] 激活函数是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。激活函数对于人工神经网络模型去学习、理解复杂和非线性的函数,具有十分重要的作用。在这里,不同于现有技术中对注意力分数施加Softmax,本发明实施方式对注意力分数施加同时具有如下特征的激活函数:
(1)、激活函数适配于将注意力分数中的负值转变为零;
(2)、激活函数适配于将注意力分数中的正值保持为正数。
[0046] 可见,通过将注意力分数中的负值转变为零,注意力分数中的正值保持为正数,规避了以自然底数e为底数的、注意力分数为指数的幂运算,提高了注意力机制的运算速度。
[0047] 在一个实施方式中,激活函数包括线性整流函数(Linear Rectification Function,Relu)或基于Relu的变体函数。优选地,基于Relu的变体函数包括Relu 6。
[0048] 当激活函数实施为Relu时,Relu同时具有如下特征:(1)、Relu将注意力分数中的负值转变为零;
(2)、Relu将注意力分数中的正值保持为不变。
[0049] 比如,当注意力分数为‑5时,Relu将‑5转变为零;当注意力分数为‑7时,Relu将‑7转变为零;当注意力分数为5时,Relu将注意力分数保持不变,即注意力分数仍然为5;当注意力分数为8时,Relu将注意力分数保持不变,即注意力分数仍然为8。
[0050] 当激活函数实施为Relu6时,Relu6同时具有如下特征:(1)、Relu6将注意力分数中的负值转变为零;
(2)、Relu6将注意力分数中的、小于6的正值保持不变。
[0051] (3)、Relu6将注意力分数中的、大于6的正值转变为6。
[0052] 比如,当注意力分数为‑5时,Relu6将‑5转变为零;当注意力分数为‑7时,Relu将‑7转变为零;当注意力分数为5时,Relu6将注意力分数保持不变,即注意力分数仍然为5;当注意力分数为7时,Relu6将注意力分数转变为6;当注意力分数为8时,Relu6将注意力分数转变为6。
[0053] 基于Relu的变体函数还可以实施为结合Relu和Relu6的组合函数。具体地:当得到第一向量对第一向量组的兴趣特征向量没有使后续计算发生数值溢出时(比如,此处数值
在一个相对合理范围,后续计算过程中,参与计算的数值没有超出计算机允许数值范围,训练正常进行),对注意力分数施加Relu;当得到第一向量对第一向量组的兴趣特征向量导致后续计算发生数值溢出(比如,此处数值达到较大的数值范围,导致后续计算过程中,参与计算的数值超出计算机允许数值范围,训练非正常进行)时,对注意力分数施加Relu6。
[0054] 以上示范性描述了本发明实施方式的激活函数的典型实例,本领域技术人员可以意识到,这种描述仅是示范性的,并不用于限定本发明实施方式的保护范围。
[0055] 步骤204:基于预定的缩放因子,对施加所述激活函数的注意力分数进行缩放。
[0056] 在这里,为了防止注意力分数过大而无法训练,添加缩放因子(scale),将注意力分数压缩到预定的范围内。
[0057] 在一个实施方式中,申请人经过大量实验,发现:将缩放因子设置为等于第一向量组中的第二向量的数目是具有优点的。这是因为:如果缩放因子与第一向量组中的第二向量的数目相差过大(无论是偏大或偏下),都可能导致无法正常训练注意力机制模型。这里所说的等于包括完全相同或者“接近”第二向量的数目的情况,例如与第二向量的数目相差
1或2,等等。本领域技术人员应该可以理解,这里只是用于举例说明,不应理解为对本发明的限制,可以根据需要设置这里所说的“接近”所指的具体数目。
[0058] 步骤205:输出缩放后的注意力分数。
[0059] 在一个实施方式中,该方法还包括:基于缩放后的注意力分数和第一向量组中的每个第二向量,确定第一向量对第一向量组的兴趣特征向量。比如,可以将缩放后的注意力分数与第一向量组的点积(dot product),确定为第一向量对第一向量组的兴趣特征向量。
在这里,第一向量对第一向量组的兴趣特征向量的含义是:第一向量对第一向量组的感兴
趣特征所组成的向量。
[0060] 图3为本发明实施方式的注意力机制的示范性处理过程示意图。
[0061] 在图3中,第一向量Q的形状为(1,V),代表Q为1个维度为V的向量;第一向量组K的形状为(100,V),代表K为包含100个第二向量,且每个第二向量的维度为V的向量组。也就是,K包含100个第二向量,分别为K1,K2,K3,K4……K100,其中K1,K2,K3,K4……K100的维度均为V。
[0062] 首先,计算第一向量Q对第一向量组K中的每个第二向量的注意力分数,即 。假定第一向量Q对第二向量K1的注意力分数为1,第一向量Q对第二向量K2的注意力分数为
10。而且,假定第一向量针对Q除了第二向量K1和K2之外的其余第二向量(K3,K4……K100)的注意力分数均为负值。比如,第一向量针对Q除了第二向量K1和第二向量K2之外的其余第二向量(K3,K4……K100)的注意力分数均为‑5。
[0063] 针对第一向量Q对第一向量组K中的每个第二向量的注意力分数,施加Relu激活函数。施加Relu激活函数后,注意力分数中的正值保存不变,负值则被转变为零。因此,施加Relu激活函数后,第一向量Q对第二向量K1的注意力分数为1、第一向量Q对第二向量K2的注意力分数为10、第一向量针对Q除了第二向量K1和第二向量K2之外的其余第二向量(K3,
K4……K100)的注意力分数均为零。
[0064] 对施加Relu激活函数后的注意力分数执行缩放处理(即除以缩放因子),以得到缩放后系数,其中缩放因子为第一向量组K中的第二向量的个数,即为100。缩放处理后,第一向量Q对第二向量K1的注意力分数1被转换为缩放后系数0.01,第一向量Q对第二向量K2的注意力分数被转换为缩放后系数0.1,第一向量Q针对除了第二向量K1和第二向量K2之外的
其余第二向量(K3,K4……K100)的注意力分数被转换为各自的缩放后系数(均保持为零)。
[0065] 然后,基于每个第二向量的缩放后系数计算第一向量Q对第一向量组K的兴趣特征向量P,其中:

因此 。
[0066] 可见,不再采用Softmax计算注意力机制的激活函数,通过Relu规避了以自然底数e为底数的、注意力分数为指数的幂运算,提高了注意力机制的运算速度,尤其适用于以硬件方式实现注意力机制。
[0067] 图4为本发明实施方式的注意力机制的第二示范性处理过程示意图。
[0068] 在图3中,第一向量Q的形状为(1,V),代表Q为1个维度为V的向量;第一向量组K的形状为(100,V),代表K为包含100个第二向量,且每个第二向量的维度为V的向量组。也就是,K包含100个第二向量,分别为K1,K2,K3,K4……K100,其中K1,K2,K3,K4……K100的维度均为V。
[0069] 首先,计算第一向量Q对第一向量组K中的每个第二向量的注意力分数,即 。假定第一向量Q对第二向量K1的注意力分数为1,第一向量Q对第二向量K2的注意力分数为
10。而且,假定第一向量针对Q除了第二向量K1和K2之外的其余第二向量(K3,K4……K100)的注意力分数均为负值。比如,第一向量Q针对除了第二向量K1和第二向量K2之外的其余第二向量(K3,K4……K100)的注意力分数均为‑5。
[0070] 针对第一向量Q对第一向量组K中的每个第二向量的注意力分数,施加Relu6激活函数。施加Relu6激活函数后,注意力分数中的小于6的正值保持不变,大于6的正值转变为
6,负值则被转变为零。因此,施加Relu6激活函数后,第一向量Q对第二向量K1的注意力分数为1、第一向量Q对第二向量K2的注意力分数为6、第一向量Q针对除了第二向量K1和第二向
量K2之外的其余第二向量(K3,K4……K100)的注意力分数均为零。
[0071] 对施加Relu6激活函数后的注意力分数执行缩放处理(即除以缩放因子),以得到缩放后系数,其中缩放因子为第一向量组K中的第二向量的个数,即为100。缩放处理后,第一向量Q对第二向量K1的注意力分数1被转换为缩放后系数0.01,第一向量Q对第二向量K2
的注意力分数被转换为缩放后系数0.06,第一向量Q针对除了第二向量K1和第二向量K2之
外的其余第二向量(K3,K4……K100)的注意力分数被转换为各自的缩放后系数(保持为
零)。
[0072] 然后,基于每个第二向量的缩放后系数计算第一向量Q对第一向量组K的兴趣特征向量P,其中:

因此 。
[0073] 可见,不再采用Softmax计算注意力机制的激活函数,通过Relu6规避了以自然底数e为底数的、注意力分数为指数的幂运算,提高了注意力机制的运算速度,尤其适用于以硬件方式实现注意力机制。
[0074] 本发明实施方式的注意力机制适用于多个任务场景,比如,图像领域中图像分类、人脸识别、目标检测、人形检测等任务;语音领域中语音唤醒、语音识别、声纹识别、语音合成等任务;自然语言处理领域中命名体识别、语义分析、文本生成、文本分类等任务;上述各领域的各任务都会使用到含有注意力机制的模型结构,其模型代表分别为VIT、Conformer和Transformer。
[0075] 而且,本发明实施方式的注意力机制可以包括自注意力(Self‑Attention)机制、多头注意力(Multi‑Head Attention)机制或缩放的点积注意力(Scale Dot‑Product Attention),等等,本发明实施方式对此并无限定。
[0076] 在以硬件实现注意力机制时,本发明实施方式尤其具有降低成本和功耗的技术效果。图5为本发明实施方式的注意力机制的硬件结构图。如图5所示,注意力机制电路包括:
输入电路,用于输入第一向量和包含多个第二向量的第一向量组;
第一算术逻辑单元,用于基于注意力机制,确定第一向量对包含多个第二向量的
第一向量组中的每个第二向量的注意力分数;
激活函数电路,用于对注意力分数施加激活函数,激活函数适配于将注意力分数
中的负值转变为零且正值保持为正数;
缩放电路,用于基于预定的缩放因子,对施加激活函数的注意力分数进行缩放;
第二算术逻辑单元,用于基于缩放后的注意力分数和第一向量组中的每个第二向
量,确定第一向量对第一向量组的兴趣特征向量;
输出电路,用于输出所述缩放后的注意力分数。
[0077] 激活函数电路和缩放电路共同构成激活函数单元。激活函数电路可以包含数字逻辑电路基本单元,缩放电路包含乘法系数等于缩放因子的乘法器,其中乘法系数等于第一
向量组中的第二向量的数目。举例,数字逻辑电路基本单元可以包括与门、或门、非门和异或门等等。
[0078] 可见,相比较图1所示的注意力机制硬件实现方式,本发明实施方式可以省略控制器和寄存器,从而节约硬件成本。而且,本发明实施方式通过数字逻辑电路基本单元实现激活函数,无需通过查表方式实现幂运算,因此还提高了注意力机制的运算速度。
[0079] 图6为本发明实施方式的注意力机制的激活函数加速装置的结构图。
[0080] 如图6所示,注意力机制的激活函数加速装置600包括:输入模块601,用于输入第一向量和包含多个第二向量的第一向量组;
第一确定模块602,用于基于注意力机制,确定第一向量对包含多个第二向量的第
一向量组中的每个第二向量的注意力分数;
施加模块603,用于对注意力分数施加激活函数,激活函数适配于将注意力分数中
的负值转变为零且正值保持为正数;
缩放模块604,用于基于预定的缩放因子,对施加激活函数的注意力分数进行缩
放;
输出模块605,用于输出所述缩放后的注意力分数。
[0081] 在一个实施方式中,注意力机制的激活函数加速装置600还包括:注意力计算模块606,用于基于缩放后的注意力分数和第一向量组中的每个第二
向量,确定第一向量对第一向量组的兴趣特征向量。输出模块605,进一步用于输出第一向量对第一向量组的兴趣特征向量。
[0082] 在一个实施方式中,激活函数包括线性整流函数或基于线性整流函数的变体函数。在一个实施方式中,缩放因子等于第一向量组中的第二向量的数目。
[0083] 图7为本发明实施方式的具有存储器‑处理器架构的、注意力机制的激活函数加速装置的示范性结构图。
[0084] 如图7所示,注意力机制的激活函数加速装置包括:处理器701;存储器702;其中存储器702中存储有可被处理器701执行的应用程序,
用于使得处理器701执行如上任一项的注意力机制的激活函数加速方法。其中,存储器702
具体可以实施为电可擦可编程只读存储器(EEPROM)、快闪存储器(Flash memory)、可编程程序只读存储器(PROM)等多种存储介质。处理器701可以实施为包括一或多个中央处理器或一或多个现场可编程门阵列,其中现场可编程门阵列集成一或多个中央处理器核。具体
地,中央处理器或中央处理器核可以实施为CPU、MCU或数字信号处理器(DSP)。
[0085] 需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进
行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一
个设备中,也可以位于不同的设备中。
[0086] 各实施方式中的硬件模块可以以机械方式或电子方式实现。例如,一个硬件模块可以包括专门设计的永久性电路或逻辑器件(如专用处理器,如FPGA或ASIC)用于完成特定的操作。硬件模块也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理
器或其它可编程处理器)用于执行特定操作。至于具体采用机械方式,或是采用专用的永久性电路,或是采用临时配置的电路(如由软件进行配置)来实现硬件模块,可以根据成本和时间上的考虑来决定。
[0087] 本发明还提供了一种机器可读的存储介质,存储用于使一机器执行如本申请所述方法的指令。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施方式中任一实施方式的功能的软件程序代码,且使该系统或者装置的计算机(或
CPU或MPU)读出并执行存储在存储介质中的程序代码。此外,还可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作。还可以将从存储介质读
出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接
的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上
的CPU等来执行部分和全部实际操作,从而实现上述实施方式中任一实施方式的功能。
[0088] 用于提供程序代码的存储介质实施方式包括软盘、硬盘、磁光盘、光盘(如CD‑ROM、CD‑R、CD‑RW、DVD‑ROM、DVD‑RAM、DVD‑RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机或云上下载程序代码。
[0089] 在本文中,“示意性”表示“充当实例、例子或说明”,不应将在本文中被描述为“示意性”的任何图示、实施方式解释为一种更优选的或更具优点的技术方案。为使图面简洁,各图中的只示意性地表示出了与本发明相关部分,而并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”并不表示将本发明相关部分的数量限制为“仅此一个”,并且“一个”不表示排除本发明相关部分的数量“多于一个”的情形。在本文中,“上”、“下”、“前”、“后”、“左”、“右”、“内”、“外”等仅用于表示相关部分之间的相对位置关系,而非限定这些相关部分的绝对位置。
[0090] 以上所述,仅为本发明的较佳实施方式而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页 第1页 第2页 第3页
相关技术
加速方法相关技术
方法装置相关技术
钟雨崎发明人的其他相关专利技术