CN117063183A - 激活函数的高效压缩 - Google Patents

激活函数的高效压缩 Download PDF

Info

Publication number
CN117063183A
CN117063183A CN202280021011.0A CN202280021011A CN117063183A CN 117063183 A CN117063183 A CN 117063183A CN 202280021011 A CN202280021011 A CN 202280021011A CN 117063183 A CN117063183 A CN 117063183A
Authority
CN
China
Prior art keywords
function
difference
differences
activation function
processing system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280021011.0A
Other languages
English (en)
Inventor
J·M·林
R·西瓦林甘姆
E·C·朴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN117063183A publication Critical patent/CN117063183A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Abstract

本公开的某些方面提供了一种用于压缩激活函数的方法,包括:基于在输入值范围上目标激活函数与参考激活函数之间的差来确定多个差值;基于该多个差值来确定差函数;以及使用参考激活函数和基于差函数的差值对输入数据执行激活。

Description

激活函数的高效压缩
相关申请的交叉引用
本申请要求于2021年3月19日提交的美国专利申请No.17/207,406的优先权,其全部内容通过援引纳入于此。
引言
本公开的各方面涉及机器学习,尤其涉及机器学习模型的激活函数的压缩。
机器学习一般是产生经训练模型(例如,人工神经网络)的过程,其表示对先验已知的训练数据集的广义拟合。将经训练模型应用于新数据使得能够产生推断,这可被用于获得关于新数据的洞察。
随着机器学习的使用激增以用于实现各种机器学习(或人工智能)任务,出现了对更高效地处理机器学习模型数据的需求。考虑到机器学习模型的计算复杂性,它们常规地在功能强大、专门构建的计算硬件上进行处理。然而,希望在低功耗设备上实现机器学习任务,诸如移动设备、边缘设备、常开设备、物联网(IoT)设备等。在低功耗设备上实现复杂的机器学习架构对于此类设备的设计约束带来了新的挑战,诸如对于功耗、计算效率和存储器占用,这里仅列举了几个示例。
相应地,需要用于提高机器学习模型处理的效率的系统和方法。
简要概述
某些实施例提供了一种用于压缩激活函数的方法,包括:基于在输入值范围上目标激活函数与参考激活函数之间的差来确定多个差值;基于该多个差值来确定差函数;以及使用参考激活函数和基于差函数的差值对输入数据执行激活。
其他方面提供了:处理系统,其被配置成执行前述方法以及本文中所描述的那些方法;非瞬态计算机可读介质,其包括在由处理系统的一个或多个处理器执行时使该处理系统执行前述方法以及本文中所描述的那些方法的指令;计算机程序产品,其被实施在计算机可读存储介质上,该计算机可读存储介质包括用于执行前述方法以及本文中进一步描述的那些方法的代码;以及处理系统,其包括用于执行前述方法以及本文中进一步描述的那些方法的装置。
以下描述和相关附图详细阐述了一个或多个实施例的某些解说性特征。
附图简述
附图描绘了该一个或多个实施例的某些方面,并且因此不被认为限制本公开的范围。
图1描绘了用于压缩激活函数的示例过程。
图2描绘了用于解压缩和使用经解压缩函数的示例过程。
图3描绘了基于目标激活函数和参考激活函数来确定差函数的示例。
图4描绘了目标激活函数、经量化的目标激活函数和经压缩的目标激活函数的比较。
图5描绘了基于差函数来确定阶差函数的示例。
图6描绘了反对称差分函数的示例。
图7描绘了用于压缩激活函数的示例方法。
图8描绘了可被配置成执行本文所描述的方法的示例处理系统。
为了促成理解,在可能之处使用了相同的附图标记来指定各附图共有的相同要素。构想了一个实施例的要素和特征可有益地被纳入到其他实施例中而无需进一步引述。
详细描述
本公开的各方面提供了用于机器学习模型激活函数的高效压缩的装置、方法、处理系统和非瞬态计算机可读介质。
非线性激活函数是机器学习模型(诸如神经网络)的重要组成部分。例如,几种广泛使用的激活函数,诸如S形函数(Sigmoid)、双曲正切(Tanh)、Swish及它们的“硬化”变型,对当代机器学习模型架构的执行和性能至关重要。
常见的激活函数的运行时或实时计算可能要求很高。例如,Swish激活函数的定义为Swish(x)=(xex)/(1+ex),其由此涉及对连续函数ex、x与ex之间的乘法、以及除法的评估——所有这些都会引发相对较高的计算成本。由于这些函数的运行时评估需要对输入张量的条目执行多次,因此它们构成了机器学习模型架构的高计算复杂性(例如,以每秒浮点运算或FLOPS来衡量)方面。
因此,许多流行的激活函数超出了某些类别设备的能力,诸如各种移动设备、边缘设备、常开设备、物联网(IOT)设备等。因此,这样的设备可能无法在运行时处理流行的激活函数,并且由此可能无法利用最先进的机器学习模型架构。
解决这个问题的一种办法是在给定假设输入的情况下预先计算激活函数,并将所有对应的输出存储在存储器中(例如,在查找表中)。这种办法避免了计算上复杂的激活函数的运行时计算问题;然而,将这些函数的输出存储在存储器中也需要大量的存储器容量和大量的存储器访问,这会增加设备的大小和成本,并且增加设备的功率使用和等待时间。
为了克服上述技术问题,本文所描述的各方面涉及利用相似但不同的激活函数对之间的小差异的差分压缩和解压缩技术。如本文所述,目标激活函数通常是比参考激活函数更复杂的激活函数,参考激活函数在输出上相似,但评估起来计算复杂性较低。
在参考激活函数适当地类似于目标激活函数的情况下,目标激活函数可以通过以下方式被有效地“压缩”:对该函数在输入值范围上的输出值之间的差进行编码,然后实时地(或在运行时)使用计算上不那么复杂的参考函数和经编码的差来重构目标函数。在这方面,压缩目标激活函数是指使用所确定的差来存储比例如目标激活函数的原始预计算值的查找表更少的数据的能力。然而,有损和无损压缩和解压缩方案可以进一步被应用于差值。在一些情形中,经编码的差可被称为目标函数与参考函数之间的差函数。此外,目标激活函数可被认为通过编码和存储它与参考激活函数之间的差而被压缩或编码,并且然后当使用参考激活函数和经编码的差来重构它时被解压缩或解码。
由于目标激活函数与参考激活函数之间的经编码的差通常具有比目标激活函数和参考激活函数的原始输出小得多的动态范围,因此对差进行编码比对给定范围上的预先计算出的函数值进行编码更节省存储器空间,如图3、图4和图6的示例中所描绘的。较小的存储器占用有益地减少了功率使用、存储器空间要求以及从存储器读取较小值时的等待时间。此外,由于需要更少的存储器空间,所以存储器可以可任选地放置得更靠近处理单元,诸如在紧密耦合存储器的情形中,这进一步减少了等待时间。这些益处在具有有限的处理和存储器资源的低功耗设备的情况下可以是特别有用的,诸如常开传感器、IoT设备、增强现实设备(例如眼镜)、虚拟现实设备(例如头戴式显示器)、扩展现实设备等。
当基于目标激活函数和参考激活函数的差函数关于参考输入值对称或反对称时,则可以通过仅存储一半的范围(例如,在参考输入值的任一侧)来进一步压缩差函数。这是起作用的,因为在给定对称性或反对称性的情况下,可以容易地基于所存储的部分来重构未存储的另一半范围。换言之,可以首先对目标激活函数与参考激活函数之间的差进行编码,然后可以利用差的对称性或反对称性,从而只需要存储差函数的一半。在此类情形中,上述益处由此得到加强。
进一步的方面涉及基于经编码差值之间的差的差函数的压缩,其可被称为阶差。例如,在差函数通过多步被量化的情况下,毗邻两步中的差函数值之间的差可以被用于进一步压缩差函数。在此类情形中,与参考激活函数结合使用的总差值可以通过从初始差值步进到目标差值并聚集每一步的阶差来迭代地确定,从而重构经压缩的差函数。阶差函数的示例关于图5进行描述。
本文描述的各方面适用于被用于机器学习的各种各样的函数(特别是流行的激活函数)、以及各种各样的处理类型,包括浮点处理(例如,由GPU高效地执行)和定点处理(例如,由神经信号处理器(NSP)、数字信号处理器(DSP)、中央处理单元(CPU)、专用集成电路(ASIC)等高效地执行)。
本文描述的各方面可以应用于足够相似的任何目标函数和参考函数。本文描述的各种示例涉及流行的激活函数,包括具有以下形式的Sigmoid(S形)激活函数:
Sigmoid(x)=ex/1+ex,
具有以下形式的Tanh(双曲正切)激活函数:
Tanh(x)=sinh(x)/cosh(x)=ex-e-x/ex+e-x=e2x-1/e2x+1,
以及具有以下形式的Swish激活函数:
Swish(x)=x*Sigmoid(x)=xex/1+ex
注意,这些只是一些示例,并且许多其他示例是可能的。
相应地,本文描述的各方面提供了针对在各种各样的设备上处理各种各样的激活函数(诸如与许多机器学习模型架构一起使用的那些激活函数)的技术问题的技术解决方案,而不管固有的设备能力限制。
压缩激活函数
图1描绘了用于压缩激活函数的示例过程100。过程100开始于在步骤102,确定用于目标函数的参考函数。在一些情形中,该确定可以基于输入值的范围,以使得在该范围内(而非在该范围外)与目标函数非常相似的参考函数仍然可用作参考函数。
在一些情形中,可以基于在输入值范围上将已知的参考函数与目标函数进行比较并选择具有最小总差的参考函数来自动选择参考函数,该最小总差可以通过各种度量来衡量,诸如均方误差、L1范数等。在一些情形中,可以在进行该比较之前对参考函数进行缩放和/或移位。在一些情形中,可以选择参考函数,以使得参考函数需要最小的存储和恢复成本。例如,ReLU需要最少的存储,因为它可以作为简单的最大值运算max(0,x)来计算。在一些情形中,可以选择参考函数,以使得它可以由多个目标激活函数共享,以便在一组相关联的激活函数中降低总体成本。
过程100然后前进至步骤104,基于在输入范围上目标函数与参考函数之间的差来确定差函数。在一些情形中,差函数可以只是函数之间的差(例如,diff=ft(x)-fr(x)),其中ft(x)是某个输入x的目标函数,且fr(X)是相同输入的参考函数。如下面更详细描述的,图3描绘了差函数是目标函数与参考函数之间的简单差的示例。
在其他情形中,差函数可以更复杂,并且可包括例如系数、常数等。例如,下面进一步描述的图6描绘了差函数的示例,该差函数包括使参考函数更好地“拟合”目标函数的缩放项和移位项。
在任一种情形中,可以通过确定在输入值的量化范围中的每个离散参考点(例如,输入值)的差值,来在该量化范围上对差函数进行编码。在一些情形中,可以基于特定应用所需的压缩级别来确定参考点的数量(例如,量化程度)。经编码的差函数然后可以存储在存储器(诸如查找表)中,并在重构目标函数时被引用。对于参考点之间(例如,两个输入值之间)的输入,在一些情形中可以执行插值,或者可以使用最接近该输入的参考点。对于高于或低于该范围的输入,可以使用最近的参考点值(例如,在接近该输入的范围末端)。
过程100然后前进至步骤106,确定差函数是否为对称的或反对称的。这里,反对称意味着具有相同绝对值的正输入或负输入导致相同幅度的输出,但符号发生变化。
如果差函数既不是对称的也不是反对称的,则过程100移至步骤108,确定是否要缩放差函数。
差函数缩放通常允许对差函数的较小区间进行压缩/编码,例如,缩小到s分之一。然后,在解压缩/解码期间,可以应用缩放因子以将差函数恢复到满尺度。缩放可以有益地将经压缩/经编码的差函数的存储器需求减少到1/s。
当这种降尺度和升尺度引入不超过可配置阈值的误差时,差函数缩放是高效的,该可配置阈值可以动态地取决于目标任务的准确度要求。
如果在步骤108不对差函数进行缩放,则在步骤112确定输入值的全范围上的差值。如果在步骤108要对差函数进行缩放,则在步骤114确定输入值的经缩放全范围上的差值。如上所述,可以基于预期用例来配置对差函数进行编码的输入范围。例如,在激活函数是渐近的情形中,可以选择该范围以仅涵盖幅度大于阈值水平的输出值。
如果差函数是对称的或反对称的,则过程100移至步骤110,根据与上述相同的考虑来确定是否要缩放该函数。
如果在步骤110不对该函数进行缩放,则在步骤118在一半范围上确定差值。如果在步骤110要对该函数进行缩放,则在步骤116确定输入值的经缩放的一半范围上的差值。
过程100然后可任选地前进至步骤120,基于在步骤112、114、116和118中的任一者中确定的差函数值来确定阶差。确定阶差并且然后迭代地恢复总差的示例关于图5进行描述。
过程100然后前进至步骤122,将基于(例如,步骤112、114、116和118中的)所确定差值的差函数存储在存储器中(例如,存储到查找表)。通常,差函数可以表示为具有数个比特以表示差函数的值的数据类型。例如,差函数的每个值可以被存储为N位定点数据类型或M位浮点数据类型,其中N或M是基于期望数值精度以及存储和处理成本的设计选择。
值得注意的是,过程100是为了演示如何压缩函数(诸如激活函数)的各种考虑因素的一个示例。替代过程(例如,具有替代次序、替代步骤等)是可能的。
用于解压缩和使用经解压缩的激活函数的示例过程
图2描绘了用于在机器学习模型架构内解压缩和使用经解压缩的函数(诸如激活函数)的示例过程200。
最初,模型(或模型部分)220可包括各种层(例如,214和218)和激活函数(例如,激活函数216)。例如,来自模型层214的输出可以由激活函数216激活,并且这些激活然后可以用作模型层218的输入。
在一些情形中,可能希望将经压缩的激活函数用于激活函数216(例如,作为目标激活函数的代理),诸如当在低功率设备上处理模型220时。在此类情形中,激活函数解压缩器204可以确定(或预配置有)用于激活函数216的适当参考函数202、以及与所选参考函数202相关联的经编码差函数206。
注意,在一些情形中,可以在运行时计算参考函数,而在其他情形中,参考函数可被存储。例如,参考函数可以被量化并存储在查找表中,诸如经编码的差函数206。
激活函数解压缩器204可以进一步应用缩放因子208(例如,当经编码的差函数206在存储之前被缩放时,诸如关于图1的步骤114和116所描述的),以及当存储部分范围时(例如,关于图1中的步骤116和118所描述的),应用对称或反对称修饰符212。例如,对称或反对称修饰符可以基于经解压缩的激活函数的输入值来翻转经编码差值的符号。
激活函数解压缩器204由此可以提供经解压缩的激活函数作为模型架构200的原始(例如,目标)激活函数216的代理。如上所述,与使用原始目标激活函数相比,经解压缩的激活函数可以节省显著的处理复杂性。
在一些情形中,模型可以包括可配置的替代路径,以基于上下文(诸如基于什么类型的设备正在处理模型、或者模型基于任务或任务上下文的准确性需求等)来使用原始激活函数或经解压缩的激活函数。以此方式,现有的模型架构可以通过基于条件可选择地使用的经压缩激活函数来增强。
示例差函数确定
图3描绘了基于目标激活函数和参考激活函数来确定差函数的示例。
具体而言,在图3中,在图表302中,在-10到10的输入范围上描绘了目标激活函数Swish。如上所述,Swish由于其乘法、除法和指数分量,通常需要较高的计算复杂性。
在图表304中,在-10到10的相同输入范围上描绘了该示例中的参考激活函数ReLU。经过检查,很明显,ReLU在所描绘的输入值范围上与Swish非常相似。
差函数308在图表306中描绘,并且基于目标激活函数(在该示例中为Swish,如图表302中)与参考激活函数(在此示例中为ReLU,如图表304中)之间的简单差。相应地,在该示例中,差函数可以被表示为:
Diff(x)=Swish(x)-ReLU(x)
值得注意的是,与目标激活函数(如图表302所描绘的)和参考激活函数(如图表304所描绘的)两者相比,差函数308具有显著更小的动态范围。
相应地,机器学习模型架构可以根据来使用Swish的经重构/经解压缩的版本,其中/>是目标激活函数的经解压缩版本。因为在该示例中,ReLU(计算为max(x,0))在计算上比Swish简单得多,因此可以使用经解压缩的激活函数且保真度损失很小,但计算复杂性有显著节省。
此外,在该示例中,差函数306关于参考点x=0是对称的。作为证明,考虑:
Diff(x)=Swishx-ReLUx
Diff(x)=xex/1+ex-max(x,0)
对于
对于x=0:Diff(x)=0-0=0
对于
现在,假设ε>0。将x=ε代入式1得到:
此外,将x=-ε代入式2得到:
换言之,式1=式2,这意味着Diff(x)关于x=0和Diff(0)=0是对称的。由此,只需要对Diff(x)的一半进行压缩/编码,但经解码/经解压缩的函数仍然可以覆盖输入值的整个范围。
图4描绘了目标激活函数(Swish)、经量化的目标激活函数和经压缩的目标激活函数的比较。
具体地,图表402示出了Swish和经压缩Swish(如上文通过 所描述的)几乎相同,并且与经量化Swish相比,保持较低的误差和更真实的函数形状。类似地,图表404示出了使用经压缩Swish和经量化Swish来重构Swish时的误差,并且很明显,经压缩Swish具有较低的重构误差。
此外,考虑到Swish(目标激活函数)和ReLU(参考激活函数)之间的差的对称性,如上所述,经压缩的Swish可以通过仅存储其一半的范围来进一步压缩,这有益地允许比单纯的量化办法显著更高的压缩,同时仍然保持较低的重构误差。
示例阶差函数
图5描绘了基于差函数来确定阶差函数的示例。
返回关于图3和图4描述的示例,Swish和ReLU之间的差函数504可以被定义为Diff(x)=Swish(x)-ReLU(x),其关于x=0是对称的。因此,只需要存储差函数504的一半,因为另一半是基于对称性可恢复的。由此,图5在图表502中描绘了差函数504的输入范围的一半(其中x>0)。
值得注意的是,即使差函数504已经具有比基础目标激活函数和参考激活函数小得多的动态范围,但仍可以通过确定差函数504的不同点之间的阶跃(或增量)差来进一步编码和压缩该差函数。
例如,考虑函数y=Diff(x),其中x={xi},i=0,1,…n且y={yi},i=0,1,…n,则yi=xi+1-xi。换言之,当针对yi进行解压缩(解码)时,可以使用以下迭代确定来恢复函数:xi+1=xi+yi。由此,阶差函数可以被描述为StepDiff(xi)=Diff(xi+1)-Diff(xi)。
图5描绘了量化差函数504并将其存储在查找表508中(例如,存储在存储器中)的示例。存储在查找表508中的差值是经编码的差函数的一个示例,诸如图2的206。经编码的差函数也可以被称为差分或增量编码函数。
类似地,阶差函数506可以被量化并存储在查找表510中。虽然差函数504和阶差函数506都被描绘为存储在查找表中,但是注意,通常只有一者是必要的。例如,可以通过对阶差Δ0.5、Δ1和Δ1.5的StepDiff(阶差)查找表510的值求和来重构针对D1的Diff(x)值。注意,在该情形中,D1的值是基于从Δ0.5开始的阶差之和来确定的,但在其他示例中,可以使用不同的起始值来锚定迭代确定。
此外,阶差函数506的查找表值可以直接从差函数504导出,而不需要对查找表508中的差值进行中间确定。以这种方式描绘图5以同时解说多个概念。
在一些情形中,量化可以基于底层算术处理硬件位宽。例如,当使用8位处理单元时,差函数504或阶差函数506中的任一者可以用256个值来量化。
示例反对称差函数
图6描绘了反对称差函数608的示例。
在该示例中,Tanh是在计算上比Sigmoid更复杂的函数,因此Tanh是目标激活函数,而Sigmoid是参考激活函数。如上所述,为了压缩Tanh,可以基于输入范围上Tanh与Sigmoid之间的差来编码差函数。
图表602和604示出了Tanh和Sigmoid具有全局相似的形状,但它们各自的输出值范围不同(Sigmoid在0到1之间,而Tanh在-1到1之间)。为了减少它们之间的差,可以对Sigmoid(该示例中的参考函数)进行缩放和移位,以使其输出范围与Tanh(该示例中的目标函数)的输出范围更加紧密匹配。由此,与使用简单差的Swish和ReLu的先前示例不同,这里Tanh与Sigmoid之间的差函数使用系数和常数来对Sigmoid进行移位和缩放,以便进一步减小经编码差的范围。
例如,这里Diff(x)可以被定义为:
Diff(x)=Tanh(x)-(2*Sigmoid(x)-1),
其在图表606中的608处进行了描绘。由此,经缩放和移位的参考激活函数有益地减小了差函数608(Diff(x))的动态范围。
此外,在该示例中,差函数608是反对称的。作为证明,考虑:
现在,假设∈>0并分别代入x=ε和x=-ε:
x=ε使式
x=-ε使式
随后,定义和/>意味着式5=α+β并且:
因此,Diff(x)是反对称的,使得Diff(-x)=-Diff(x)。如上所述,这意味着只需要对Diff(x)的一半进行编码,并且简单的否定运算可以恢复另一半。
注意,基于差函数608的阶差函数可以按与上述相同的方式进一步导出,且具有进一步压缩差函数的相同益处。
用于压缩激活函数的示例方法
图7描绘了用于压缩激活函数的示例方法700。
方法700开始于在步骤702,基于在输入值范围上目标激活函数与参考激活函数之间的差来确定多个差值。
方法700然后前进至步骤704,基于该多个差值来确定差函数。
在一些方面,差函数包括用于参考激活函数的被配置成缩放参考激活函数的系数值和被配置成对参考激活函数进行移位的常数值中的一者或多者,诸如关于图6所描绘和描述的示例中那样。
在一些方面,差函数关于参考输入值是对称的,诸如在关于图3描述的示例中那样。在此类情形中,该多个差值的子集可以出现在参考输入值的一侧,诸如关于图5所描绘和描述的。
在一些方面,差函数关于参考输入值是反对称的,诸如关于图6所描绘和描述的。在此类情形中,该多个差值的子集可以出现在参考输入值的一侧。如上所述,反对称修饰符(诸如关于图2所讨论的)可以基于输入值来翻转差的符号。
方法700然后前进至步骤706,使用参考激活函数和基于差函数的差值对输入数据执行激活。
尽管未在图7中描绘,但在一些方面,方法700还包括将差函数存储到存储器中。在一个示例中,差函数包括该多个差值的子集,诸如在差函数被量化的情形中和/或在差函数由于差函数的对称性或非对称性而仅表示一半范围的情形中。
方法700还可以包括在将该多个差值的子集存储在存储器中之前将缩放函数应用于该子集,以减小该多个差值的子集的动态范围。在一些情形中,缩放函数可包括缩放因子。通常,缩放函数可以缩放函数的范围和/或值(例如,在图3、图5和图6所描绘的示例中的X轴或Y轴)。
方法700还可以包括基于差函数确定多个阶差值(例如,存储在图5中的查找表510中的阶差值),其中每个阶差值是该多个差值中的两个差值(例如,存储在图5的查找表508中的差值)之间的差。在此类情形中,对输入数据执行激活可以进一步基于该多个阶差值中的一个或多个阶差值。
方法700可以进一步包括基于该多个差值的动态范围来确定用于存储该多个差值的子集中的每个差值的存储器比特数量。在一些方面,存储器比特数量为8。
在一些方面,目标激活函数是非对称函数。
在一些方面,目标激活函数是Swish激活函数,而参考激活函数是ReLU函数,诸如上文关于图3-5所描述的。
在一些方面,目标激活函数是Tanh激活函数,而参考激活函数是Sigmoid激活函数,诸如上文关于图6所描述的。
在一些方面,存储器包括查找表,该查找表包括该多个差值的子集。在一些方面,查找表包括用于差函数的256个条目。
在一些方面,使用参考激活函数包括计算参考激活函数。在其他方面,使用参考激活函数包括从存储器检索预先计算的参考函数值。
示例处理系统
图8描绘了可被配置成执行本文中诸如参考图7所描述的方法的示例处理系统800。
处理系统800包括中央处理单元(CPU)802,其在一些示例中可以是多核CPU。在CPU802处执行的指令可例如从与CPU 802相关联的程序存储器加载或可从存储器824加载。
处理系统800还包括为特定功能定制的附加处理组件,诸如图形处理单元(GPU)804、数字信号处理器(DSP)806、神经处理单元(NPU)808、多媒体处理单元810和无线连通性组件812。
在一些方面,CPU 802、GPU 804、DSP 806和NPU 808中的一者或多者可被配置成执行本文中诸如参考图7所描述的方法。
NPU(诸如808)一般是被配置成用于实现用于执行机器学习算法(诸如用于处理人工神经网络(ANN)、深度神经网络(DNN)、随机森林(RF)、内核方法等的算法)的所有必要的控制和算术逻辑的专用电路。NPU有时可被替换地称为神经信号处理器(NSP)、张量处理单元(TPU)、神经网络处理器(NNP)、智能处理单元(IPU)、或视觉处理单元(VPU)。
NPU(诸如808)可被配置成加速常见机器学习任务(诸如图像分类、机器翻译、对象检测以及各种其他任务)的执行。在一些示例中,多个NPU可在单个芯片(诸如片上系统(SoC))上实例化,而在其他示例中,多个NPU可以是专用机器学习加速器设备的一部分。
NPU可被优化用于训练或推断,或者在一些情形中被配置成平衡两者之间的性能。对于能够执行训练和推断两者的NPU,这两个任务一般仍可独立地执行。
被设计成加速训练的NPU一般被配置成加速新模型的优化,这是涉及输入现有数据集(通常是被标记的或含标签的)、在数据集上进行迭代、并且随后调整模型参数(诸如权重和偏置)以便提高模型性能的高度计算密集的操作。一般而言,基于错误预测进行优化涉及往回传递通过模型的各层并确定梯度以减少预测误差。
被设计成加速推断的NPU一般被配置成在完整模型上操作。此类NPU由此可被配置成:输入新的数据片段并通过已经训练的模型对其快速处理以生成模型输出(例如,推断)。
在一些实施例中,NPU 808可被实现为CPU 802、GPU 804和/或DSP 806中的一者或多者的一部分。
在一些实施例中,无线连通性组件812可包括例如用于第三代(3G)连通性、第四代(4G)连通性(例如,4G LTE)、第五代连通性(例如,5G或NR)、Wi-Fi连通性、蓝牙连通性、以及其他无线数据传输标准的子组件。无线连通性处理组件812进一步连接到一个或多个天线814。
处理系统800还可包括与任何方式的传感器相关联的一个或多个传感器处理单元816、与任何方式的图像传感器相关联的一个或多个图像信号处理器(ISP)818、和/或导航处理器820,该导航处理器820可包括基于卫星的定位系统组件(例如,GPS或GLONASS)以及惯性定位系统组件。
处理系统800还可包括一个或多个输入和/或输出设备822,诸如屏幕、触敏表面(包括触敏显示器)、物理按钮、扬声器、话筒等等。
在一些示例中,处理系统800的一个或多个处理器可基于ARM或RISC-V指令集。
处理系统800还包括存储器824,该存储器824代表一个或多个静态和/或动态存储器,诸如动态随机存取存储器、基于闪存的静态存储器等。在该示例中,存储器824包括计算机可执行组件,其可由处理系统800的前述组件中的一个或多个组件执行。
具体地,在该示例中,存储器824包括确定组件824A、激活组件824B、存储组件824C、缩放组件824D、函数匹配组件824E、目标激活函数824F、参考激活函数824G、差函数824H、阶差函数824I、以及模型参数824J(例如,权重、偏置和其他机器学习模型参数)。所描绘的组件以及其他未描绘的组件中的一者或多者可被配置成执行本文所描述的方法的各个方面。
一般而言,处理系统800和/或其组件可被配置成执行本文所描述的方法。
值得注意的是,在其他实施例中,处理系统800的各方面可被略去,诸如在处理系统800是服务器计算机等的情况下。例如,在其他实施例中,多媒体组件810、无线连通性812、传感器816、ISP 818和/或导航组件820可被略去。此外,处理系统800的各方面可以是分布式的。
注意到图8仅仅是一个示例,并且在其他示例中可使用具有更少、附加和/或替代组件的替代处理系统。
示例条款
在以下经编号条款中描述了各实现示例:
条款1:一种方法,包括:基于在输入值范围上目标激活函数与参考激活函数之间的差来确定多个差值;基于该多个差值来确定差函数;以及使用参考激活函数和基于差函数的差值对输入数据执行激活。
条款2:如条款1的方法,进一步包括:将差函数作为该多个差值的子集存储在存储器中。
条款3:如条款2的方法,其中差函数被存储为该多个差值的子集。
条款4:如条款1-3中任一者的方法,其中差函数包括用于参考激活函数的系数值,该系数值被配置成缩放参考激活函数。
条款5:如条款4的方法,其中差函数包括被配置成对参考激活函数进行移位的常数值。
条款6:如条款2-5中任一者的方法,其中:差函数关于参考输入值是对称的,并且该多个差值的该子集出现在该参考输入值的一侧。
条款7:如条款2-5中任一者的方法,其中:差函数关于参考输入值是反对称的,并且该多个差值的该子集出现在该参考输入值的一侧。
条款8:如条款2-7中任一者的方法,进一步包括:在将该多个差值的子集存储在存储器中之前将缩放函数应用于该子集,以减小该多个差值的子集的动态范围。
条款9:如条款1-8中任一者的方法,进一步包括:基于差函数确定多个阶差值,其中每个阶差值被确定为该多个差值中的两个差值之间的差,其中对输入数据执行激活进一步基于该多个阶差值中的一个或多个阶差值。
条款10:如条款2-9中任一者的方法,进一步包括:基于该多个差值的动态范围来确定用于存储该多个差值的子集中的每个差值的存储器比特数量。
条款11:如条款10的方法,其中该存储器比特数量为8。
条款12:如条款1-11中任一者的方法,其中目标激活函数是非对称函数。
条款13:如条款1-12中任一者的方法,其中目标激活函数是Swish激活函数,并且参考激活函数是ReLU函数。
条款14:如条款1-13中任一者的方法,其中目标激活函数是Tanh激活函数,并且参考激活函数是Sigmoid激活函数。
条款15:如条款2-14中任一者的方法,其中该存储器包括查找表,该查找表包括该多个差值的子集。
条款16:如条款15的方法,其中该查找表包括用于差函数的256个条目。
条款17:如条款1-16中任一者的方法,其中使用参考激活函数包括计算参考激活函数。
条款18:如条款1-17中任一者的方法,其中使用参考激活函数包括从存储器检索预先计算的参考函数值。
条款19:一种处理系统,包括:包括计算机可执行指令的存储器;一个或多个处理器,该一个或多个处理器被配置成执行计算机可执行指令并使该处理系统执行根据条款1-18中任一者的方法。
条款20:一种处理系统,包括用于执行根据条款1-18中任一者的方法的装置。
条款21:一种包括计算机可执行指令的非瞬态计算机可读介质,这些计算机可执行指令在由处理系统的一个或多个处理器执行时使该处理系统执行根据条款1-18中任一者的方法。
条款22:一种实施在计算机可读存储介质上的计算机程序产品,包括用于执行根据条款1-18中任一者的方法的代码。
附加考虑
提供先前描述是为了使本领域任何技术人员均能够实践本文中所描述的各个实施例。本文所讨论的示例并非是对权利要求中阐述的范围、适用性或者实施例的限定。对这些实施例的各种修改将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他实施例。例如,可以对所讨论的要素的功能和布置作出改变而不会脱离本公开的范围。各种示例可恰适地省略、替代、或添加各种规程或组件。例如,可以按与所描述的次序不同的次序来执行所描述的方法,并且可以添加、省略、或组合各种步骤。而且,参照一些示例所描述的特征可在一些其他示例中被组合。例如,可使用本文中所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为本文中所阐述的本公开的各个方面的补充或者不同于本文中所阐述的本公开的各个方面的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,本文中所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。
如本文所使用的,术语“示例性”意指“用作示例、实例或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。
如本文中所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一者”旨在涵盖:a、b、c、a-b、a-c、b-c、和a-b-c,以及具有多重相同元素的任何组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c、和c-c-c,或者a、b和c的任何其他排序)。
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明及类似动作。而且,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)及诸如此类。而且,“确定”可包括解析、选择、选取、建立及诸如此类。
本文中所公开的各方法包括用于实现方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。此外,上述方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置可包括各种硬件和/或软件组件和/或模块,包括但不限于电路、专用集成电路(ASIC)、或处理器。一般地,在存在附图中解说的操作的场合,这些操作可具有带相似编号的相应配对装置加功能组件。
以下权利要求并非旨在被限定于本文中示出的实施例,而是应被授予与权利要求的语言相一致的全部范围。在权利要求内,对单数元素的引用不旨在意指“有且只有一个”(除非专门如此声明),而是“一个或多个”。除非特别另外声明,否则术语“一些/某个”指的是一个或多个。权利要求的任何要素都不应当在35U.S.C.§112(f)的规定下来解释,除非该要素是使用短语“用于……的装置”来明确叙述的或者在方法权利要求情形中该要素是使用短语“用于……的步骤”来叙述的。本公开通篇描述的各个方面的要素为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案通过引述被明确纳入于此,且旨在被权利要求所涵盖。此外,本文所公开的任何内容都不旨在捐献于公众,无论此类公开内容是否明确记载在权利要求书中。

Claims (38)

1.一种方法,包括:
基于在输入值范围上目标激活函数与参考激活函数之间的差来确定多个差值;
基于所述多个差值来确定差函数;以及
使用所述参考激活函数和基于所述差函数的差值对输入数据执行激活。
2.如权利要求1所述的方法,进一步包括:将所述差函数作为所述多个差值的子集存储在存储器中。
3.如权利要求2所述的方法,其中所述差函数被存储为所述多个差值的子集。
4.如权利要求1所述的方法,其中所述差函数包括用于所述参考激活函数的系数值,所述系数值被配置成缩放所述参考激活函数。
5.如权利要求4所述的方法,其中所述差函数包括被配置成对所述参考激活函数进行移位的常数值。
6.如权利要求2所述的方法,其中:
所述差函数关于参考输入值是对称的,并且
所述多个差值的所述子集出现在所述参考输入值的一侧。
7.如权利要求2所述的方法,其中:
所述差函数关于参考输入值是反对称的,并且
所述多个差值的所述子集出现在所述参考输入值的一侧。
8.如权利要求2所述的方法,进一步包括:在将所述多个差值的所述子集存储在所述存储器中之前将缩放函数应用于所述子集,以减小所述多个差值的所述子集的动态范围。
9.如权利要求1所述的方法,进一步包括:
基于所述差函数确定多个阶差值,其中每个阶差值被确定为所述多个差值中的两个差值之间的差,
其中对所述输入数据执行激活进一步基于所述多个阶差值中的一个或多个阶差值。
10.如权利要求2所述的方法,进一步包括:基于所述多个差值的动态范围来确定用于存储所述多个差值的所述子集中的每个差值的存储器比特数量。
11.如权利要求10所述的方法,其中所述存储器比特数量为8。
12.如权利要求1所述的方法,其中所述目标激活函数是非对称函数。
13.如权利要求1所述的方法,其中所述目标激活函数是Swish激活函数,并且所述参考激活函数是ReLU函数。
14.如权利要求1所述的方法,其中所述目标激活函数是Tanh激活函数,并且所述参考激活函数是Sigmoid激活函数。
15.如权利要求2所述的方法,其中所述存储器包括查找表,所述查找表包括所述多个差值的所述子集。
16.如权利要求15所述的方法,其中所述查找表包括用于所述差函数的256个条目。
17.如权利要求1所述的方法,其中使用所述参考激活函数包括计算所述参考激活函数。
18.如权利要求1所述的方法,其中使用所述参考激活函数包括从存储器检索预先计算的参考函数值。
19.一种处理系统,包括:
一个或多个存储器,其包括计算机可执行指令;以及
一个或多个处理器,所述一个或多个处理器被配置成执行所述计算机可执行指令并使所述处理系统:
基于在输入值范围上目标激活函数与参考激活函数之间的差来确定多个差值;
基于所述多个差值来确定差函数;以及
使用所述参考激活函数和基于所述差函数的差值对输入数据执行激活。
20.如权利要求19所述的处理系统,其中所述一个或多个处理器被进一步配置成使所述处理系统:将所述差函数作为所述多个差值的子集存储在所述一个或多个存储器中的至少一者中。
21.如权利要求20所述的处理系统,其中所述差函数被存储为所述多个差值的子集。
22.如权利要求19所述的处理系统,其中所述差函数包括用于所述参考激活函数的系数值,所述系数值被配置成缩放所述参考激活函数。
23.如权利要求22所述的处理系统,其中所述差函数包括被配置成对所述参考激活函数进行移位的常数值。
24.如权利要求20所述的处理系统,其中:
所述差函数关于参考输入值是对称的,并且
所述多个差值的所述子集出现在所述参考输入值的一侧。
25.如权利要求20所述的处理系统,其中:
所述差函数关于参考输入值是反对称的,并且
所述多个差值的所述子集出现在所述参考输入值的一侧。
26.如权利要求20所述的处理系统,其中所述一个或多个处理器被进一步配置成使所述处理系统:在将所述多个差值的所述子集存储在所述一个或多个存储器中的至少一者中之前将缩放函数应用于所述子集,以减小所述多个差值的所述子集的动态范围。
27.如权利要求19所述的处理系统,其中所述一个或多个处理器被进一步配置成使所述处理系统:
基于所述差函数确定多个阶差值,其中每个阶差值被确定为所述多个差值中的两个差值之间的差,
其中对所述输入数据执行激活进一步基于所述多个阶差值中的一个或多个阶差值。
28.如权利要求20所述的处理系统,其中所述一个或多个处理器被进一步配置成使所述处理系统:基于所述多个差值的动态范围来确定用于存储所述多个差值的所述子集中的每个差值的存储器比特数量。
29.如权利要求28所述的处理系统,其中所述存储器比特数量为8。
30.如权利要求19所述的处理系统,其中所述目标激活函数是非对称函数。
31.如权利要求19所述的处理系统,其中所述目标激活函数是Swish激活函数,并且所述参考激活函数是ReLU函数。
32.如权利要求19所述的处理系统,其中所述目标激活函数是Tanh激活函数,并且所述参考激活函数是Sigmoid激活函数。
33.如权利要求20所述的处理系统,其中所述一个或多个存储器中的所述至少一者包括查找表,所述查找表包括所述多个差值的所述子集。
34.如权利要求33所述的处理系统,其中所述查找表包括用于所述差函数的256个条目。
35.如权利要求19所述的处理系统,其中为了使用所述参考激活函数,所述一个或多个处理器被进一步配置成使所述处理系统计算所述参考激活函数。
36.如权利要求19所述的处理系统,其中为了使用所述参考激活函数,所述一个或多个处理器被进一步配置成使所述处理系统从所述一个或多个存储器中的至少一者检索预先计算的参考函数值。
37.一种包括计算机可执行指令的非瞬态计算机可读介质,所述计算机可执行指令在由处理系统的一个或多个处理器执行时使所述处理系统执行方法,所述方法包括:
基于在输入值范围上目标激活函数与参考激活函数之间的差来确定多个差值;
基于所述多个差值来确定差函数;以及
使用所述参考激活函数和基于所述差函数的差值对输入数据执行激活。
38.一种处理系统,包括:
用于基于在输入值范围上目标激活函数与参考激活函数之间的差来确定多个差值的装置;
用于基于所述多个差值来确定差函数的装置;以及
用于使用所述参考激活函数和基于所述差函数的差值对输入数据执行激活的装置。
CN202280021011.0A 2021-03-19 2022-03-18 激活函数的高效压缩 Pending CN117063183A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/207,406 US20220300788A1 (en) 2021-03-19 2021-03-19 Efficient compression of activation functions
US17/207,406 2021-03-19
PCT/US2022/071212 WO2022198233A1 (en) 2021-03-19 2022-03-18 Efficient compression of activation functions

Publications (1)

Publication Number Publication Date
CN117063183A true CN117063183A (zh) 2023-11-14

Family

ID=81328117

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280021011.0A Pending CN117063183A (zh) 2021-03-19 2022-03-18 激活函数的高效压缩

Country Status (5)

Country Link
US (1) US20220300788A1 (zh)
EP (1) EP4309083A1 (zh)
KR (1) KR20230157339A (zh)
CN (1) CN117063183A (zh)
WO (1) WO2022198233A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3906508B1 (en) * 2018-12-31 2024-03-13 Intel Corporation Securing systems employing artificial intelligence

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2568087B (en) * 2017-11-03 2022-07-20 Imagination Tech Ltd Activation functions for deep neural networks
US11775805B2 (en) * 2018-06-29 2023-10-03 Intel Coroporation Deep neural network architecture using piecewise linear approximation

Also Published As

Publication number Publication date
EP4309083A1 (en) 2024-01-24
KR20230157339A (ko) 2023-11-16
US20220300788A1 (en) 2022-09-22
WO2022198233A1 (en) 2022-09-22

Similar Documents

Publication Publication Date Title
US10831444B2 (en) Quantized neural network training and inference
JP6998968B2 (ja) ディープニューラルネットワークの実行方法、実行装置、学習方法、学習装置及びプログラム
WO2018140294A1 (en) Neural network based on fixed-point operations
JP2018181313A (ja) 情報処理方法、情報処理装置およびプログラム
WO2020142192A1 (en) Neural network activation compression with narrow block floating-point
EP3915056A1 (en) Neural network activation compression with non-uniform mantissas
EP3906616A1 (en) Neural network activation compression with outlier block floating-point
US20210326710A1 (en) Neural network model compression
CN110728350A (zh) 用于机器学习模型的量化
KR20220042455A (ko) 마이크로-구조화된 가중치 프루닝 및 가중치 통합을 이용한 신경 네트워크 모델 압축을 위한 방법 및 장치
EP4200722A1 (en) Tabular convolution and acceleration
Panwar et al. Modified distributed arithmetic based low complexity CNN architecture design methodology
CN117063183A (zh) 激活函数的高效压缩
CN115699022A (zh) 结构化卷积和相关联加速
US11947960B2 (en) Modulo-space processing in multiply-and-accumulate units
US20240134606A1 (en) Device and method with in-memory computing
US20230185527A1 (en) Method and apparatus with data compression
US20240169708A1 (en) Processing video data using delta quantization
JP7425870B2 (ja) 積み重ね可能な入れ子モデル構造及びマイクロ構造化された重み統一によるマルチレートニューラル画像圧縮のための方法及び装置
Kurdthongmee Utilization of a fast MSE calculation approach to improve the image quality and accelerate the operation of a hardware K-SOM quantizer
US20240104356A1 (en) Quantized neural network architecture
Yang et al. Hardware-efficient mixed-precision CP tensor decomposition
US20240046078A1 (en) Desparsified convolution for sparse activations
JP2024517707A (ja) 半導体ハードウェアにおいてニューラルネットワークを処理するための実装および方法
WO2024102513A1 (en) Regenerative learning to enhance dense prediction

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination