CN113196304A - 用于训练dnn的缩放学习 - Google Patents

用于训练dnn的缩放学习 Download PDF

Info

Publication number
CN113196304A
CN113196304A CN201980084632.1A CN201980084632A CN113196304A CN 113196304 A CN113196304 A CN 113196304A CN 201980084632 A CN201980084632 A CN 201980084632A CN 113196304 A CN113196304 A CN 113196304A
Authority
CN
China
Prior art keywords
neural network
noise
layer
quantization
learning rate
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
CN201980084632.1A
Other languages
English (en)
Inventor
B·劳哈尼·达维什
E·S·钟
D·洛
D·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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN113196304A publication Critical patent/CN113196304A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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/045Combinations of networks
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • 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

Landscapes

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

Abstract

公开了用于调节神经网络的超参数以补偿噪声(诸如经由神经网络的一个或多个参数的量化而引入的噪声)的方法和装置。在一些示例中,调节可以包括基于表示神经网络中存在的噪声的至少一个度量来缩放超参数。至少一个度量可以包括针对神经网络的权重(诸如边权重和激活权重)的噪声信号比。在量化神经网络中,用于在反向传播期间计算针对层的梯度更新的学习率超参数可以基于至少一个度量被缩放。在一些示例中,当计算针对其他层的梯度更新时,可以使用相同的已缩放学习率。

Description

用于训练DNN的缩放学习
背景技术
机器学习(ML)和人工智能(AI)技术可以用于解决很多复杂的计算问题,诸如识别图像和语音、分析和分类信息,以及执行各种分类任务。机器学习是计算机科学领域,其使用统计技术使计算机系统能够从一组训练数据中提取更高级别的特征。具体地,可以通过训练诸如人工神经网络或深度神经网络等模型来提取特征。传统上,深度神经网络已经使用单精度浮点格式(例如,float32)的值被训练和部署。最近的研究表明,较低精度的量化格式(诸如float16或定点)可以用于推理,具有可接受的准确度损失。然而,随着精度的降低,误差(也称为“噪声”)会增加。
发明内容
公开了用于在利用启用量化的系统实现的神经网络的训练期间补偿量化噪声的方法和装置。在一些示例中,一种用于训练神经网络的方法包括获取张量,该张量包括以量化精度格式表示的神经网络的一个或多个参数的值,并且生成表示张量中存在的量化噪声的至少一个度量(例如,至少一个噪声信号度量)。例如,参数可以包括神经网络的边权重和激活权重。然后可以使用至少一个度量来缩放学习率,以在神经网络的一个或多个后续训练期的反向传播阶段使用。
如本文中使用的,“噪声信号”(noise-signal)度量是指被视为“噪声”的信号部分(例如,表示参数值的信号)与信号本身之间的定量关系。例如,参数(例如,神经网络的激活权重或边权重)的值的量化可能会引入噪声,因为该值以较低精度量化格式表示。在这样的示例中,噪声信号度量可以包括构成噪声的量化值的部分与量化之前的参数的值的比率。
受益于本公开的相关领域的普通技术人员将容易理解,在噪声信号度量是比率的示例中,它不限于标量噪声与信号值的比率。相反,它还可以包括分子和分母不是标量值的比率。例如,噪声信号比度量可以表示包含多个噪声值的噪声向量与包含多个信号值(例如,神经网络的单层的参数的值)的信号向量的比率,其中噪声向量中的每个噪声值表示信号向量中被视为“噪声”的对应信号部分,并且信号向量中的每个对应信号值表示信号本身。作为另一示例,噪声信号比度量可以表示包含多个噪声值的噪声矩阵与包含多个信号值(例如,神经网络的多个层的参数的值)的信号矩阵的比率,其中噪声矩阵中的每个噪声值表示信号矩阵中被视为“噪声”的对应信号部分,并且信号矩阵中的每个对应信号值表示信号本身。因此,如果将噪声信号比设想为一个分数,则分子和分母可以是标量值、向量或矩阵。替代地,在不脱离本公开的范围的情况下,噪声信号比的分子和分母可以采用另一种形式。在另一实现中,噪声信号度量具有除比率之外的形式。
在量化神经网络的后续训练期期间,基于至少一个噪声信号度量而计算的缩放因子可以用于缩放用于计算针对神经网络的参数的梯度更新的学习率。受益于本公开的本领域普通技术人员将容易明白,通过基于量化噪声信号比调节神经网络的超参数,诸如学习率,可以减轻在梯度更新的计算期间出现的、由于聚合量化噪声而引起的误差。这种噪声补偿有利地允许在训练神经网络时使用较低精度的计算,同时仍实现与较高精度的计算相似的准确度。一定数量的噪声可以有益于训练神经网络,因为它可以减少神经网络过拟合数据的风险。实际上,对于每个神经网络,在动力学中都可能存在最佳随机波动量。然而,当在具有较低精度量化格式的值的神经网络中执行反向传播时,来自不同层的量化噪声会聚合。由于这种噪声的聚合,在反向传播期间的梯度更新的计算中的误差可能会达到无法接受的水平。
在所公开的技术的一些示例中,可以调节神经网络的超参数以补偿源自除量化之外的源的噪声。例如,一种用于在神经网络的训练期间补偿噪声的方法可以包括计算表示神经网络中存在的噪声的至少一个噪声信号比。然后可以使用所计算的噪声信号比来调节神经网络的超参数,诸如学习率、学习率调度、偏置、随机梯度下降批大小、神经网络中的神经元数目、神经网络中的层数等。然后可以使用已调节超参数来训练神经网络。例如,已调节超参数可以在神经网络的后续训练期的反向传播阶段作为因子加入到梯度更新计算。因此,可以利用引入噪声但提高神经网络训练效率的技术,而不会损害训练结果的准确度。
提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
通过参考附图进行的以下详细描述,所公开的主题的前述和其他目的、特征和优点将变得更加明显。
附图说明
图1是可以在所公开的技术的某些示例中实现的启用量化的系统的框图。
图2是描绘可以使用本文中公开的某些示例方法和装置来建模的深度神经网络的图。
图3是概述可以在所公开的技术的某些示例中执行的缩放用于训练量化神经网络的学习率的示例方法的流程图。
图4是概述可以在所公开的技术的某些示例中实现的在训练神经网络时调节超参数以补偿噪声的示例方法的流程图。
图5是图示可以在其中实现所公开的技术的某些示例的示例计算环境的图。
图6-图9是图示在执行所公开的技术的某些示例时可以观察到的实验结果的图表。
具体实施方式
I.一般考虑因素
在代表性实施例的上下文中阐述本发明,这些代表性实施例无意以任何方式进行限制。
除非上下文另有明确规定,否则如本申请中使用的,单数形式“一个(a)”、“一个(an)”和“该(the)”包括复数形式。另外,术语“包括(include)”表示“包括(comprise)”。此外,术语“耦合(couple)”包括将物品耦合或链接在一起的机械、电气、磁性、光学以及其他实际方式,并且不排除在耦合的项目之间的中间元件的存在。此外,如本文中使用的,术语“和/或”表示短语中的任何一个项目或项目组合。
本文中描述的系统、方法和装置不应当被解释为以任何方式进行限制。相反,本公开内容单独地并且以彼此的各种组合和子组合涉及各种公开的实施例的所有新颖和非明显的特征和方面。所公开的系统、方法和装置不限于任何特定方面或特征或其组合,所公开的事物和方法也不要求存在任何一个或多个特定优点或解决问题。此外,所公开的实施例的任何特征或方面可以以彼此的各种组合和子组合使用。
尽管为了方便呈现,以特定的顺序次序描述了一些所公开的方法的操作,但是应当理解,这种描述方式包括重新布置,除非下面阐述的特定语言需要特定顺序。例如,在某些情况下,顺序描述的操作可以重新布置或同时执行。此外,为了简单起见,附图可能未示出所公开的内容和方法可以与其他事物和方法结合使用的各种方式。另外,本说明书有时使用诸如“产生(produce)”、“生成(generate)”、“执行(perform)”、“选择(select)”、“接收(receive)”、“发射(emit)”、“验证(verify)”和“转换(convert)”等术语来描述所公开的方法。这些术语是对所执行的实际操作的高级描述。与这些术语相对应的实际操作将根据具体顺序而变化,并且受益于本公开的本领域普通技术人员可容易地辨别。
本文中参考本公开的装置或方法而呈现的操作理论、科学原理或其他理论描述已经被提供以便方便理解,而非不旨在限制范围。所附权利要求中的装置和方法不限于以这种操作理论描述的方式起作用的那些装置和方法。
所公开的任何方法可以实现为存储在一个或多个计算机可读介质(例如,计算机可读介质,诸如一个或多个光学介质盘、易失性存储器组件(诸如DRAM或SRAM)或非易失性存储器组件(诸如硬盘驱动器))上并且在计算机(例如,任何商用计算机,包括智能电话或包括计算硬件的其他移动设备)上执行的计算机可执行指令。用于实现所公开的技术的任何计算机可执行指令、以及在所公开的实施例的实现期间创建和使用的任何数据可以存储在一个或多个计算机可读介质(例如,计算机可读存储介质)上。计算机可执行指令可以是例如专用软件应用或经由网络浏览器访问或下载的软件应用或其他软件应用(诸如远程计算应用)的一部分。这样的软件可以例如在单个本地计算机上执行(例如,在任何合适的商用计算机上执行的通用和/或专用处理器),或者使用一个或多个网络计算机在网络环境中执行(例如,经由因特网、广域网、局域网、客户端服务器网络(诸如云计算网络)或其他这样的网络)。
为清楚起见,仅描述了基于软件的实现的某些所选择的方面。省略了本领域公知的其他细节。例如,应当理解,所公开的技术不限于任何特定的计算机语言或程序。例如,所公开的技术可以由用C、C++、Java或任何其他合适的编程语言编写的软件来实现。同样地,所公开的技术不限于任何特定计算机或硬件类型。合适的计算机和硬件的某些细节是公知的,并且不需要在本公开中详细阐述。
此外,可以通过合适的通信装置上载、下载或远程访问任何基于软件的实施例(包括例如用于使计算机执行所公开的任何方法的计算机可执行指令)。这种合适的通信装置包括例如因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信、或其他这样的通信装置。
II.神经网络和量化格式简介
人工神经网络(ANN或本文中通篇使用的“NN”)被应用于人工智能和机器学习中的很多应用,包括图像识别、语音识别、搜索引擎和其他合适的应用。这些应用的处理可以在诸如个人计算机或手机等个体设备上执行,但也可以在大型数据中心执行。同时,可与NN一起使用的硬件加速器包括专用NN处理单元,诸如被编程为加速神经网络处理的张量处理单元(TPU)和现场可编程门阵列(FPGA)。由于其灵活的特性和每单位计算量的低功耗,这样的硬件设备正被部署在消费设备和数据中心中。
传统上,已经使用单精度浮点(32位浮点或float32格式)被训练和部署NN。但是,已经表明,可以使用较低精度的浮点格式(诸如16位浮点(float16))或定点来执行具有最小准确度损失的推理操作。在专用硬件(诸如FPGA)上,精度降低格式可以大大提高DNN处理的延迟和吞吐量。
以普通精度浮点格式表示的数字(例如,以16位浮点格式、32位浮点格式、64位浮点格式或80位浮点格式(在本文中也称为普通精度浮点格式)表示的浮点数)可以被转换为量化精度格式数字,从而可以在执行操作时获取性能优势。特别地,NN权重和激活值可以以较低精度的量化格式表示,其中引入了可接受的误差水平。较低精度量化格式的示例包括具有减少位宽的格式(包括通过减少用于表示数字尾数或指数的位数)和块浮点格式,在块浮点格式中,两个或更多个数字共享相同的单个指数。
FPGA设备上的计算的特性之一是它通常缺乏硬件浮点支持。使用灵活的逻辑可以在惩罚下执行浮点运算,但在FPGA实现中,支持浮点所需要的逻辑数量通常是令人望而却步的。已经开发出一些支持浮点计算的较新FPGA,但即使在这些FPGA上,同一设备每单位时间产生的计算输出也比在整数模式下使用时多一倍。通常,NN是在考虑浮点计算的情况下创建的,但是当FPGA用于NN处理时,如果可以使用整数算术运算来表示神经网络,则将是有益的。所公开的技术的示例包括块浮点(BFP)的硬件实现,包括在NN、FPGA和其他硬件环境中使用BFP。
在很多人工智能操作中使用神经网络操作。通常,在实现神经网络时执行的大部分处理操作是执行矩阵×矩阵或矩阵×向量乘法。这样的操作是计算和存储器带宽密集型的,其中矩阵的大小可以是例如1000×1000个元素(例如,1000×1000个数字,每个数字包括符号、尾数和指数)或更大,并且使用很多矩阵。如本文中讨论的,BFP技术可以被应用于这样的操作,以减少对给定系统(无论该系统是FPGA、CPU还是其他硬件平台)中的计算以及存储器带宽的需求。如本文中使用的,本文中术语“元素”的使用是指这种矩阵或向量的成员。
如本文中使用的,术语“张量”是指可以用于表示NN的特性的多维阵列矩阵,并且包括一维向量以及二维、三维、四维或更大维。如本公开中使用的,除非特别说明,否则张量不需要任何其他数学属性。
如本文中使用的,术语“普通精度浮点”是指具有尾数、指数和可选的符号并且由原生或虚拟CPU原生支持的浮点数格式。普通精度浮点格式的示例包括但不限于:IEEE 754标准格式(诸如16位、32位、64位)或处理器支持的其他处理器(诸如Intel AVX、AVX2、IA32和x86_64 80位浮点格式)。
如本文中使用的,术语“量化精度浮点”是指其中张量的两个或更多个值已经被修改以模拟神经网络硬件的浮点数格式。具体地,量化精度浮点表示的很多示例包括块浮点格式,其中参考公共指数来表示张量的两个或更多个值。量化精度浮点数可以通过为张量的两个、更多个或所有元素选择公共指数并且移位个体元素的尾数以匹配共享的公共指数来生成。在一些示例中,张量内的元素的分组可以按照例如每行、每列、每块或其他基础上来共享公共指数。
III.所公开的技术的介绍
图1是概述可以实现所公开的技术的某些示例的示例性的启用量化的系统110的框图100。如图1所示,启用量化的系统110可以包括多个硬件资源,包括通用处理器120和诸如图形处理单元的专用处理器122。处理器耦合到存储器125和存储装置127,存储器125和存储装置127可以包括易失性或非易失性存储器设备。处理器120和122执行存储在存储器或存储装置中的指令以提供普通精度神经网络模块130。普通精度神经网络模块130包括允许该系统被编程以实现各种类型的神经网络的软件接口。例如,可以提供允许应用定义神经网络的软件功能,包括权重、激活值、和神经网络的各层之间的互连。普通精度神经网络模块130还可以提供允许训练和重新训练利用该模块实现的神经网络的实用工具。表示神经网络模块的值存储在存储器或存储装置中,并且由处理器之一执行的指令对其进行操作。
在一些示例中,向程序员提供专有或开源库或框架以实现神经网络创建、训练和评估。这样的库的示例包括TensorFlow、Microsoft认知工具包(CNTK)、Caffe、Theano和Keras。在一些示例中,诸如集成开发环境等编程工具为程序员和用户定义、编译和评估NN提供支持。
启用量化的系统110还包括量化域140。量化域140提供可以用于将普通精度神经网络模块130中以全精度浮点格式表示的数据转换为量化格式值的功能。在一些示例中,量化域被实现为对执行量化格式的NN操作进行建模的软件仿真器。在一些示例中,量化域包括硬件加速器,硬件加速器可以用于加速量化精度数字格式的推理操作和/或训练操作。在一些示例中,与量化域140之间的转换可以在普通精度软件域中执行,或者由量化域中的附加硬件执行(如图1所示)。下面将更详细地讨论这种功能。
普通精度神经网络模块130可以被用于使用工具流来指定、训练和评估神经网络模型,该工具流包括与硬件无关的建模框架131(也称为原生框架或机器学习执行引擎)、神经网络编译器132和神经网络运行时环境133。存储器包括用于工具流的计算机可执行指令,包括建模框架131、神经网络编译器132和神经网络运行时环境133。工具流可以用于生成神经网络数据200,神经网络数据200表示神经网络模型的全部或一部分,诸如以下关于图2讨论的神经网络模型。应当注意,虽然工具流被描述为具有三个单独的工具(131、132和133),但在各种示例中,工具流可以具有更少或更多的工具。例如,不同工具(131、132和133)的功能可以组合到单个建模和执行环境中。
神经网络数据200可以存储在存储器125中。神经网络数据200可以以一种或多种格式表示。例如,与给定神经网络模型相对应的神经网络数据200可以具有与工具流的每个相应工具相关联的不同格式。通常,神经网络数据200可以包括节点、边、分组、权重、偏置、激活函数和/或张量值的描述。作为特定示例,神经网络数据200可以包括用于表示神经网络模型的源代码、可执行代码、元数据、配置数据、数据结构和/或文件。
建模框架131可以被用于定义和使用神经网络模型。作为一个示例,建模框架131可以包括可以被用于指定神经网络模型的一个或多个方面的预定义API和/或编程原语。预定义API可以包括较低级别的API(例如,激活函数、成本或误差函数、节点、边和张量)和较高级别的API(例如,层、卷积神经网络、循环神经网络、线性分类器等)两者。“源代码”可以用作对建模框架131的输入以定义给定神经网络模型的图的拓扑。特别地,可以在源代码内实例化和互连建模框架131的API,以指定复杂的神经网络模型。数据科学家可以通过使用不同API、不同数目的API以及以不同方式互连API来创建不同神经网络模型。
除了源代码,存储器125还可以存储训练数据。训练数据包括用于应用于神经网络模型200的一组输入数据和针对输入数据的每个相应数据集来自神经网络模型的期望输出。建模框架131可以被用于利用训练数据训练神经网络模型。训练的输出是与神经网络模型的每个节点相关联的权重和偏置。在训练神经网络模型之后建模框架131可以被用于对被应用于经训练的神经网络模型的新数据进行分类。具体地,经训练的神经网络模型使用训练得到的权重和偏置来对未用于训练神经网络模型的数据执行分类和识别任务。建模框架131通常仅使用CPU 120来执行神经网络模型,因此对于某些分类任务可能无法实现实时性能。建模框架131也可以支持使用GPU 122来执行神经网络模型,但性能可能仍达不到实时性能。
编译器132分析为神经网络模型提供的源代码和数据(例如,从训练模型中学习到的权重和偏置),并且将模型转换为可以在量化域140和/或可选的神经网络加速器180中加速的格式,这将在下面进一步详细描述。具体地,编译器132将源代码转换为可执行代码、元数据、配置数据和/或数据结构,以将神经网络模型和存储器表示为神经网络数据200。在一些示例中,编译器132可以将神经网络模型划分为使用CPU 120和/或GPU 122的部分(例如,神经网络200)和可以在神经网络加速器180上执行的其他部分(例如,神经网络子图)。编译器132可以生成可执行代码(例如,运行时模块),以执行被指派给CPU 120的子图并且与被指派给可选加速器180的子图通信。编译器132可以为加速器180生成配置数据,该配置数据用于配置加速器资源,以评估被指派给可选加速器180的子图。编译器132可以创建数据结构,以用于存储由神经网络模型在执行和/或跟踪期间生成的值并且用于CPU 120与加速器180之间的通信。编译器132可以生成元数据,该元数据可以用于在运行时期间标识子图、边分组、训练数据和关于神经网络模型的各种其他信息。例如,元数据可以包括用于在神经网络模型的不同子图之间进行对接的信息。
运行时环境133提供可执行环境或解释器,该可执行环境或解释器可以用于在训练模式期间训练神经网络模型,并且可以用于在训练、推理或分类模式下评估神经网络模型。在推理模式期间,可以将输入数据应用于神经网络模型输入,并且可以根据神经网络模型的训练对输入数据进行分类。输入数据可以是存档数据或实时数据。
运行时环境133可以包括部署工具,部署工具在部署模式期间可以用于将神经网络的全部或部分部署或安装到量化域140。运行时环境133还可以包括调度器,调度器管理不同运行时模块的执行以及运行时模块与量化域140之间的通信。因此,运行时环境133可以被用于控制在普通精度神经网络模块130上建模的节点与量化域140之间的数据流。
量化域140从普通精度神经网络模块130接收普通精度值150。普通精度值可以以16位、32位、64位或其他合适的浮点格式来表示。例如,可以接收表示神经网络的一部分值,包括边权重、激活值或其他合适的量化参数。普通精度值150被提供给普通精度浮点到量化浮点转换器152,转换器152将普通精度值转换为量化值。然后,可以对量化值执行量化浮点操作154。然后,可以使用产生普通精度浮点值的量化浮点到普通浮点转换器,将量化值转换回普通浮点格式。
由转换器152和156执行的普通浮点与量化浮点之间的转换通常是对被表示为向量或多维矩阵的数字集执行的。在一些示例中,可以基于普通精度格式来执行附加的普通精度操作158(包括在特定神经网络实现中可能需要的操作),包括向神经网络的一个或多个节点添加偏置,向从量化浮点格式转换回的普通精度值应用双曲正切函数或其他这样的sigmoid函数、或整流函数(例如,ReLU操作)。
在一些示例中,量化值实际上作为普通浮点值存储在存储器中。换言之,量化域140量化针对神经网络模型的输入、权重和激活,但是底层操作是以常规浮点执行的。在其他示例中,量化域提供量化的完整仿真,包括仅存储共享指数的一个副本并且以减小的尾数宽度进行操作。在以普通浮点数执行底层操作的版本中,某些结果可以有所不同。例如,完整仿真版本可以检查有限的量化位宽(例如,3、4或5位宽的尾数)的下溢或上溢情况。
DNN的大部分计算成本是矩阵与向量以及矩阵与矩阵乘法。这些操作在输入大小上是二次的,而诸如偏置添加和激活函数等操作在输入大小上是线性的。因此,在一些示例中,量化仅应用于矩阵向量乘法运算,这最终将在诸如TPU或FPGA等NN硬件加速器上实现。在这样的示例中,所有其他操作均以普通精度格式进行,诸如float16。因此,从用户或程序员的角度来看,启用量化的系统110从/向普通精度神经网络模块130接受和输出普通精度float16值,并且输出float16格式值。与块浮点格式之间的所有转换都可以对程序员或用户隐藏。在一些示例中,程序员或用户可以为量化操作指定某些参数。在其他示例中,量化操作可以利用块浮点格式来降低计算复杂度。
在某些示例中,可选的神经网络加速器180用于加速神经网络子图的评估和/或训练,通常具有增加的速度并且减少的延时,这当仅在量化域140中评估子图时不会被实现。在所示示例中,加速器包括张量处理单元182和/或可重配置逻辑器件184(例如,被包含在一个或多个FPGA或可编程电路结构中),但是可以使用任何合适的硬件加速器来模拟神经网络。加速器180可以包括提供软CPU的配置逻辑。软CPU监督加速器180上的加速子图的操作,并且可以管理与普通精度神经网络模块130和/或量化域140的通信。软CPU还可以被用于配置逻辑并且控制加速器上来自RAM的数据的加载和存储,例如在FPGA中的Block RAM中。
在一些示例中,量化域140被用于对神经网络模型200的全部或部分的训练、推理或分类进行原型制作(prototype)。例如,可以基于通过在量化域140内对网络进行原型制作而获取的准确度或性能结果来选择量化参数。在选择了一组期望量化参数之后,量化模型可以被编程到加速器180中以执行其他操作。在一些示例中,利用量化域140实现的最终量化模型与将被编程到加速器180中的量化模型相同。在其他示例中,被编程到加速器中的模型在某些方面可以不同。
编译器132和运行时133提供普通精度神经网络模块130、量化域140和(可选的)加速器180之间的快速接口。实际上,神经网络模型的用户可能不知道模型的一部分正在所提供的加速器上正在被加速。例如,节点值通常通过将张量值写入包括标识符的数据结构来在模型中传播。运行时133将子图标识符与加速器相关联,并且向加速器提供用于转换消息的逻辑,以将权重、偏置和/或张量的值透明地写入量化域140和/或(可选的)加速器180,而无需程序干预。同样,由量化域140和(可选的)加速器180输出的值可以被透明地用消息发送回普通精度神经网络模块130,该消息包括服务器处的接收节点的标识符和有效载荷,有效载荷包括发送回整个神经网络模型的权重、偏置和/或张量等值。
IV.示例深度神经网络拓扑
图2示出了可以用于执行增强图像处理的深度神经网络(DNN)200的简化拓扑。一个或多个处理层可以使用量化和BFP矩阵/向量运算来实现,包括使用上述启用量化的系统110中的多个(210个)神经网络核心中的一个或多个。应当注意,本文中公开的神经网络实现的应用不限于DNN,而是还可以与其他类型的神经网络一起使用,诸如卷积神经网络(CNN)(包括具有长短期记忆(LSTM)或门控循环单元(GRU)的实现)或可以适于使用本文中公开的BFP方法和装置的其他合适的人工神经网络。
如图2所示,第一节点集合210(包括节点215和216)形成输入层。集合210中的每个节点连接到由第二节点集合220(包括节点225和226)形成的第一隐藏层中的每个节点。第二隐藏层由包括节点235的第三节点集合230形成。输出层由第四节点集合240(包括节点245)形成。在示例200中,给定层的节点与其相邻层的节点完全互连。换言之,一个层可以包括与该层的其他节点具有共同输入和/或向该层的其他节点的共同目的地提供输出的节点。在其他示例中,一个层可以包括与该层的其他节点具有共同输入的子集和/或向该层的其他节点的共同目的地的子集提供输出的节点。
每个节点通过将权重应用于从前一节点生成的每个输入并且收集权重以产生输出值来产生输出。在一些示例中,每个个体节点可以应用激活函数和/或偏置。例如,任何适当编程的处理器或FPGA可以被配置为实现所描绘的神经网络200中的节点。在一些示例神经网络中,隐藏组合节点n的激活函数f()可以产生在数学上表达为下式的输出:
Figure BDA0003122256910000131
其中wi是应用于(乘以)输入边xi的权重,再加上偏置值bi。在一些示例中,激活函数产生在0到1之间的连续值(表示为浮点数)。在一些示例中,激活函数产生二进制的1或0值,具体取决于求和是高于还是低于阈值。
可以通过调节激活函数的组成值来训练和重新训练神经网络。例如,通过调节节点的权重wi或偏置值bi,神经网络的行为通过网络输出张量值的相应变化来调节。例如,成本函数C(w,b)可以用于为网络找到合适的权重和偏置,并且在数学上描述为:
Figure BDA0003122256910000141
其中w和b表示所有权重和偏置,n是训练输入的数目,a是针对训练输入x的输入向量的来自网络的输出值的向量。通过调节网络权重和偏置,可以使用各种搜索技术(例如,随机梯度下降)将成本函数C驱动到目标值(例如,为零(0))。
在诸如随机梯度下降等技术中,可以调节各种参数以在训练期间调谐NN的性能。在本文中被称为“超参数”的这些参数包括影响成本函数C被驱动到目标值的速率的学习率参数。如下面进一步讨论的,可以调节诸如学习率等超参数以补偿由NN参数的量化而引入的噪声。与非量化NN相比,这样的调节可以使得量化NN的训练具有相同或更好的准确度。此外,这样的调节可以使得成本函数C更快地收敛到目标值(例如,在更少的训练期之后收敛)。
根据所公开的技术的某些方面,可以提高NN训练和推理的性能。例如,通过使用基于至少一个噪声信号度量来调节学习率的某些公开示例,可以使用更少存储器和/或以更高准确度更快地实现量化NN的训练,这取决于特定示例,尽管量化引入了噪声。特别地,通过减少训练所花费的时间,包括反向传播,可以减少任何特定训练期的持续时间。此外,通过使用某些公开的调节学习率的示例,可以减少训练期的数目。
这样的神经网络BFP实现的合适应用的示例包括但不限于:执行图像识别、执行语音识别、对图像分类、将语音转换为文本和/或其他语言、面部或其他生物识别、自然语言处理、自动语言转换、搜索引擎中的查询处理、自动内容选择、分析电子邮件和其他电子文档、关系管理、生物医学信息学、标识候选生物分子、提供建议或其他分类和人工智能任务。
在一些示例中,每个卷积层中的一组并行乘法累加(MAC)单元可以用于加速计算。同样,并行乘法器单元可以用于全连接和密集矩阵乘法阶段。也可以使用一组并行分类器。这种并行化方法可以以增加控制复杂性为代价进一步加速计算。
受益于本公开的本领域普通技术人员将容易理解,神经网络实现的应用可以用于使用神经网络的不同方面,无论是单独的还是与其他神经网络组合或子组合使用。例如,所公开的实现可以用于经由梯度下降和/或神经网络的反向传播操作来实现神经网络训练。
V.缩放学习率的示例方法
图3是流程图300,其概述了如可以在所公开的技术的某些示例中使用的缩放学习率以在启用量化的系统中训练NN(例如,DNN)的示例方法。例如,图1的系统可以用于结合图2所示的DNN拓扑来实现所示方法。
在过程框310处,获取具有以普通精度浮点格式表示的一个或多个NN参数值的第一张量。第一张量可以包括NN的一个或多个层的一个或多个或所有参数的值。例如,这可以包括激活权重、边权重等的值。例如,第一张量可以采用矩阵形式。
在过程框320处,获取NN的第二张量,第二张量具有与第一张量相同的值,但具有以量化精度格式表示的值,这引入了噪声。在一些示例中,通过将第一张量的值转换(例如,通过处理器)为量化精度格式来获取第二张量。量化精度格式可以是如下格式,其中被选择以表示指数或尾数的位宽相对于普通精度浮点格式而被调节。替代地,量化精度格式可以是块浮点格式。相同的量化精度格式可以用于NN的所有参数。然而,在其他示例中,不同的量化精度格式可以用于NN内的不同参数。
在过程框330处,为NN生成至少一个噪声信号度量。例如,至少一个噪声信号度量可以包括一个或多个噪声信号比。在这样的示例中,如下面在第VI节中进一步讨论的,可以通过以下方式来计算NN的第l层的激活权重X的量化噪声信号比
Figure BDA0003122256910000161
首先计算第二张量的(量化)激活权重与第一张量的(非量化)激活权重之间的差ξ(l),其中ξ(l)表示量化激活权重中的量化噪声,然后将该差ξ(l)除以第一张量的激活权重的绝对值。第l层的激活权重X可以表示为向量,在这种情况下,差ξ(l)和比值
Figure BDA0003122256910000162
也可以表示为向量。此外,还可以通过以下方式来计算多个层k中的每一层的边权重w的量化噪声信号比
Figure BDA0003122256910000163
计算第二张量的(量化)边权重与第一张量的(非量化)边权重之间的差γ(k),其中γ(k)表示量化边权重中的量化噪声,并且将该差除以第一张量的边权重的绝对值。第k层的边权重γ可以表示为矩阵,在这种情况下,差γ(k)和比值
Figure BDA0003122256910000164
也可以表示为矩阵。在一些示例中,至少一个噪声信号度量包括在第l层之后的层(例如,第l+1层)以及NN的在第l+1层之后的所有其他层的量化噪声信号比。
在不脱离本公开的范围的情况下,还可以在过程框330处计算其他噪声信号度量。例如,可以计算NN的任何量化参数或NN的量化参数的任何向量或矩阵的噪声信号比。
在过程框340处,基于至少一个噪声信号度量计算缩放因子。例如,如下面在第VI节中进一步讨论的,缩放因子g可以在DNN的上下文中通过以下等式来计算:
Figure BDA0003122256910000165
其中
Figure BDA0003122256910000166
表示在批大小以及张量元素上的NN的第l层的噪声信号比向量的平均值,
Figure BDA0003122256910000171
表示每个样本的在张量元素上的噪声信号比的平均值,
Figure BDA0003122256910000172
表示NN的第l+1层到L层(例如,NN中在第l层之后的所有层)的平均值
Figure BDA0003122256910000173
之和。该公式考虑了噪声信号比的一阶近似值,并且可以在需要时进行修改以包括更高阶的噪声水平。替代地,可以在RNN的上下文中通过不同等式(例如,下面在第VII节中阐述的等式(34))来计算缩放因子g。
在过程框350处,使用在过程框340处计算的缩放因子来缩放NN的学习率。已缩放学习率可以是NN的预定学习率(例如,用于在训练的反向传播阶段计算NN所有层的梯度更新的“全局”学习率)。例如,如下面在第VI节中进一步讨论的,可以将已缩放学习率计算为缩放因子与神经网络的预定学习率的乘积。已缩放学习率可以针对神经网络的每一层而有所不同。
在过程框360处,训练NN。这可以包括执行一个或多个训练期。在一些示例中,训练可以继续直到实现NN输出的收敛。随机梯度下降训练是可以用于训练NN的合适技术的一个示例;然而,在不脱离本公开的范围的情况下,可以使用其他技术来训练NN。
如图所示,在过程框360处训练量化NN包括使用已缩放学习率(例如,如在过程框350处确定的)来确定梯度更新。梯度更新可以被应用于NN的一个或多个层的一个或多个参数(例如,权重)。在一些示例中,在340处计算的缩放因子是针对NN的单个层的,并且用于仅针对该层的参数来确定梯度更新。然而,在其他示例中,为单个层而计算的缩放因子也可以用于针对其他层的参数(例如,针对NN的每一层)来确定梯度更新。
替代地,已缩放学习率可以用于仅针对值具有与用于在过程框330处计算至少一个噪声信号度量的参数的值相同的量化精度格式的NN的参数来确定梯度更新。实验结果表明,对于具有相同量化精度格式(例如,相同位宽)的参数,根据本公开而计算的噪声信号比的方差较低。因此,根据本公开针对不同量化精度格式和NN架构/拓扑而计算的缩放因子可以存储在存储器中,诸如在查找表中。在这样的示例中,针对给定NN参数确定梯度更新可以包括访问查找表中与该参数或该层的参数的特定量化精度格式(例如,位宽)相对应的条目,以获取先前为该格式而确定的缩放因子。
在NN的训练期间缩放用于确定梯度更新的学习率可以有利地提高训练结果的准确度。例如,下面在第X节中讨论的实验结果表明,量化NN的训练结果的准确度可以得到提高,以匹配或甚至超过在训练等效的非量化NN时达到的准确度。因此,根据图3的方法来缩放学习率可以促进在训练NN时使用较低精度的量化格式,并且从而提高实现训练的硬件的效率。
VI.计算DNN的已调节学习率
在本节中将针对具有L层的DNN模型来描述上面在第V节中讨论的计算的理论基础。在这样的模型中,使用随机梯度下降针对第l层的梯度更新可以表示如下:
Figure BDA0003122256910000181
其中ε是学习率,N是训练数据集的总大小,
Figure BDA0003122256910000182
是第l层相对于量化权重的实际/真实梯度更新,
Figure BDA0003122256910000183
是相对于量化权重的估计梯度更新,其是在大小为B的小批量上评估的。特别地,
Figure BDA0003122256910000184
并且
Figure BDA0003122256910000185
假定底层DNN模型是基于修正线性单元(ReLU)作为非线性来设计的,则DNN的隐藏层l的梯度更新值可以计算如下:
Figure BDA0003122256910000191
这里,Xi (l)是输入样本i在第l层中的激活向量,
Figure BDA0003122256910000192
是由于量化而在激活向量中引入的噪声,outi表示在输入样本i的Softmax层之后DNN的输出,
Figure BDA0003122256910000193
表示在Softmax层之前的最后一层中的净值。符号wj表示第j层的权重矩阵,γj是其对应量化噪声。
同样:
Figure BDA0003122256910000194
鉴于梯度误差α定义为
Figure BDA0003122256910000195
之间的差,所以梯度误差的均值和方差可以计算为:
Figure BDA0003122256910000196
等式(5)中的第一步是使用期望操作的线性属性导出的。梯度噪声的方差为:
Figure BDA0003122256910000201
等式(6)中的每一项可以计算如下:
Figure BDA0003122256910000202
等式(7)中的项λ可以忽略,因为它是γ和ξ值的乘积并且比其他项小几个数量级。在等式(7)中,量化噪声信号比向量和矩阵(
Figure BDA0003122256910000203
Figure BDA0003122256910000204
)由其对应期望值近似。因此:
Figure BDA0003122256910000205
Figure BDA0003122256910000206
表示输入样本i的第l层激活中的平均量化噪声信号比。这个值一般小于1,并且可以替换为样本上的期望值;如果编码方法选择得好,则不同数据样本i的
Figure BDA0003122256910000207
的方差远小于等式(8)中的量化系数中的其他项的方差。从而,
Figure BDA0003122256910000208
Figure BDA0003122256910000211
描述平均梯度协方差的矩阵可以表示为F(w(l)),它是当前参数/权重值的函数。特别地,
Figure BDA0003122256910000212
因此,得到下式:
Figure BDA0003122256910000213
Figure BDA0003122256910000214
采用中心极限定理并且利用高斯随机噪声对梯度误差α进行建模,等式(6)中的
Figure BDA0003122256910000215
相当于:
Figure BDA0003122256910000216
等式(13)是近似,其中给定Cov(aY,Z)=aCov(Y,Z),并且给定对于独立随机变量的两个部分和(YB和YN,其中B<N),Cov(YB,YN)=Cov(YB,YB+YN-YB)=Cov(YB,YB)+Cov(YB,YN-YB)=Var(YB)。因此,等式(6)中的梯度噪声的方差相当于:
Figure BDA0003122256910000217
继续,将等式(1)解释为随机微分方程的离散更新会得到:
Figure BDA0003122256910000218
其中t是连续变量,η(t)表示期望值为0的梯度噪声,并且E(η(t)η(t′))=gF(w(l))δ(t-t′)。常数g(替代地在本文中称为缩放因子)控制动力学中随机波动的尺度。
等式1和15彼此相关,因为
Figure BDA0003122256910000221
为了使缩放因子g保持恒定,该梯度更新中的方差可以等于等式(1)中的方差,如下:
Figure BDA0003122256910000222
Figure BDA0003122256910000223
只要分母保持正数,则等式(17)成立。
VII.计算循环神经网络的已调节学习率
现在将在循环神经网络(RNN)的上下文中描述上面在第V部分中讨论的计算的理论基础。RNN是一种由长短期记忆(LSTM)单元组成的神经网络。
考虑到LSTM层,正向传递激活/状态计算如下:
遗忘门ft=σ(Wf·xt+Uf·outt-1+bf),
输入门It=σ(WI·xt+UI·outt-1+bI),
输入激活at=tanh(Wa·xt+Ua·outt-1+ba),
输出门ot=σ(Wo·xt+Uo·outt-1+bo),
内部状态statet=at⊙It+ft⊙statet-1
输出状态outt=tanh(statet)⊙ot。(18)
通过将LSTM变量定义为
Figure BDA0003122256910000224
Figure BDA0003122256910000231
并且
Figure BDA0003122256910000232
关于每个变量的反向传播梯度可以计算如下:
Figure BDA0003122256910000233
Figure BDA0003122256910000234
Figure BDA0003122256910000235
Figure BDA0003122256910000236
Figure BDA0003122256910000237
Figure BDA0003122256910000238
Figure BDA0003122256910000239
Figure BDA00031222569100002310
这里,ΔT是由任何后续层计算的输出差异。
对内部参数的更新又可以根据下式来评估:
Figure BDA00031222569100002311
Figure BDA00031222569100002312
Figure BDA00031222569100002313
使用随机梯度下降的每组权重的梯度更新可以表示如下:
Figure BDA00031222569100002314
其中εq是学习率,N是训练数据集的总大小,
Figure BDA00031222569100002315
是相对于量化权重的实际/真实梯度值,
Figure BDA0003122256910000241
是在大小为B的小批量上评估的估计梯度。
特别地,
Figure BDA0003122256910000242
并且
Figure BDA0003122256910000243
这样,可以相应地计算关于每个权重矩阵的梯度。例如,
Figure BDA0003122256910000244
上述等式的每一部分可以如下计算。为了找到封闭形式的解决方案,我们必须坚持一组假定:(i)输出门上的量化噪声在计算损失值(例如,L2差)时被吸收;(ii)与对应平均值相比,层内的噪声信号比的方差相对较小,并且因此,每个神经元/激活的噪声信号比可以替换为该层中的对应平均值;(iii)二阶量化噪声可以忽略不计;以及(iv)量化噪声(量化值与浮点值之间的差)小到足以位于tanh的线性区域内。
Figure BDA0003122256910000251
在一阶假定下,主导因素相当于:
Figure BDA0003122256910000252
这意味着:
Figure BDA0003122256910000261
其中平均值是在数据样本数(N)和时间戳(T)上计算的。
假定梯度误差α定义为
Figure BDA0003122256910000262
之间的差值,则梯度误差的均值和方差可以计算为:
Figure BDA0003122256910000263
等式(26)中的第一步骤是使用期望操作的线性属性导出的。梯度噪声的方差为:
Figure BDA0003122256910000264
描述平均梯度协方差的矩阵可以由F(Wa)表示,F(Wa)是当前参数/权重值的函数。特别地,
Figure BDA0003122256910000265
因此:
Figure BDA0003122256910000266
Figure BDA0003122256910000267
这里,η是根据等式(25)定义的。通过采用中心极限定理并且利用高斯随机噪声对梯度误差α进行建模,得到等式(27)中的
Figure BDA0003122256910000271
相当于:
Figure BDA0003122256910000272
等式(30)是近似的,其中给定Cov(aY,Z)=aCov(Y,Z),并且对于独立随机变量的两个部分和(YB和YN,其中B<N),Cov(YB,YN)=Cov(YB,YB+YN-YB)=Cov(YB,YB)+Cov(YB,YN-YB)=Var(YB)。因此,等式(27)中的梯度噪声的方差相当于:
Figure BDA0003122256910000273
继续,等式(18)可以如下解释为随机微分方程的离散更新:
Figure BDA0003122256910000274
其中t是连续变量,β(t)是期望值为0的梯度噪声,并且E(β(t)β(t′))=gF(Wa)δ(t-t′)。这里,再次,常数g控制动力学中随机波动的尺度,并且替代地称为缩放因子。
等式(18)和(32)彼此相关,因为:
Figure BDA0003122256910000275
为了使缩放因子g保持恒定,该梯度更新的方差可以等于等式(18)中的方差。
Figure BDA0003122256910000276
Figure BDA0003122256910000277
这里,εq是量化模型的学习率,ε是用于训练浮点网络的学习率。类似的方法可以应用于LSTM层中的其他参数/权重。
VIII.补偿其他类型的噪音
与上述方法类似的方法可以用于补偿神经网络中可以测量的任何类型的噪声。例如,除了量化噪声,为了提高效率,还可以将其他类型的噪声引入神经网络。这包括通过在低电压模式下训练神经网络而引入的噪声,例如,其中施加到实现神经网络的硬件的电压低于硬件的额定电压的模式。作为另一示例,在训练过程中可以使用相对有损介质(诸如DRAM)来存储神经网络的参数,从而导致噪声引起的比特翻转。又例如,神经网络的一些参数值可以设置为等于0或以其他方式被忽略,从而引入噪声;这个过程被称为“修剪”。噪声也可以经由块稀疏训练被引入,其中神经网络的选定参数值针对一个或多个但不是所有的训练期或迭代而被修剪。作为另一示例,可以通过将神经网络的一些或所有参数转换为不同数据类型来引入噪声,该数据类型不像量化中那样具有较低位宽,但以另一种方式中噪声更大。替代地,神经网络训练可以经由基于模拟的训练系统来执行,这也会引入噪声。
图4是概述如可以在所公开的技术的某些示例中使用的在训练NN时调节超参数以补偿噪声的示例方法的流程图400。例如,图1的系统可以用于实现所示的方法。
在过程框410处,测量NN中的噪声。噪声可以是与可测量的神经网络相关的任何类型的噪声。例如,如以上参考图3所讨论的,所测量的噪声可以是由NN的一个或多个参数的值的量化产生的量化噪声。作为另一示例,所测量的噪声可以是在低电压模式下训练神经网络而引入的噪声、在训练期间将神经网络的参数存储在相对有损介质(诸如DRAM)中而引入的噪声、修剪或块稀疏训练而引入的噪声、将神经网络的部分或全部参数转换为非量化但有噪声的数据类型而引入的噪声、针对NN使用基于模拟的训练系统而引入的噪声等。
在过程框420处,使用所测量的噪声针对NN计算至少一个噪声信号比。在一些示例中,这可以包括在引入噪声之前获取一个或多个信号的第一组值,在引入噪声之后获取一个或多个信号的第二组值,以及计算第一组值与第二组值之间的差值与第一组值的比率。
在过程框430处,基于在过程框420处计算的噪声信号比来调节NN的超参数。如本文中使用的,“超参数”是指确定学习率或神经网络的结构的变量。例如,在过程框430处调节的超参数可以是学习率、学习率调度、偏置、随机梯度下降批大小、神经网络中的神经元数目、神经网络中的层数、网络的稀疏程度、或与数据隐私相关的参数(例如,差分隐私协议)。
在过程框440处,使用已调节超参数训练NN。在其中已调节超参数是学习率的示例中,使用已调节超参数训练NN可以可选地包括在反向传播期间使用已调节学习率来计算梯度更新。在其中已调节超参数是学习率调度的示例中,使用已调节超参数训练NN可以可选地包括根据已调节学习率调度在反向传播期间计算梯度更新。在其中已调节超参数是偏置的示例中,使用已调节超参数训练NN可以可选地包括在前向传播期间使用已调节偏置来计算节点输出。在其中已调节超参数是随机梯度下降批大小的示例中,使用已调节超参数训练NN可以可选地包括随着噪声信号比的增加而增加随机梯度下降批大小。在其中已调节超参数是神经网络中的神经元数目的示例中,使用已调节超参数训练NN可以可选地包括随着噪声信号比的增加而增加神经网络中的神经元数目。在其中已调节超参数是神经网络中的层数的示例中,使用已调节超参数训练NN可以可选地包括随着噪声信号比的增加而增加神经网络中的层数。在其他非限制性示例中,使用已调节超参数训练NN可以包括使用已调节超参数来计算在前向传播或反向传播期间使用的值。
IX.示例计算环境
图5示出了可以在其中实现所描述的实施例、技术和科技的合适的计算环境500的一般化示例。例如,计算环境500可以实现所公开的技术,以将处理器配置为实现所公开的软件架构和神经网络,和/或将代码编译成计算机可执行指令和/或配置比特流以执行包括神经网络在内的这些操作,如本文中所述。
计算环境500不旨在对技术的使用范围或功能提出任何限制,因为该技术可以在不同的通用或专用计算环境中实现。例如,所公开的技术可以用其他计算机系统配置来实现,包括手持设备、多处理器系统、可编程消费电子器件、网络PC、小型计算机、大型计算机等。所公开的技术还可以在分布式计算环境中实现,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
参考图5,计算环境500包括至少一个处理单元510、可选的神经网络加速器515、和存储器520。在图5中,这个最基本的配置530被包括在虚线内。处理单元510执行计算机可执行指令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力,因此,多个处理器可以同时运行。加速器515可以包括张量处理单元(TPU)和/或可重配置逻辑器件,诸如包含在FPGA或可编程电路结构中的那些。存储器520可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)、或两者的某种组合。存储器520存储可以例如实现本文中描述的技术的软件580、图像和视频。计算环境可以具有附加特征。例如,计算环境500包括存储装置540、一个或多个输入设备550、一个或多个输出设备560、以及一个或多个通信连接570。互连机制(未示出)(诸如总线、控制器或网络)互连计算环境500的组件。通常,操作系统软件(未示出)为在计算环境500中执行的其他软件提供操作环境,并且协调计算环境500的组件的活动。
存储装置540可以是可移动的或不可移动的,并且包括磁盘、磁带或盒式磁带、CD-ROM、CD-RW、DVD、或者可以用于存储信息并且可以在计算环境500内被访问的任何其他介质。存储装置540存储可以用于实现本文中描述的技术的软件580的指令。
输入设备550可以是向计算环境500提供输入的触摸输入设备,诸如键盘、小键盘、鼠标、触摸屏显示器、笔或轨迹球、语音输入设备、扫描设备或其他设备。对于音频,输入设备550可以是接受模拟或数字形式的音频输入的声卡或类似设备,或者是向计算环境500提供音频样本的CD-ROM读取器。输出设备560可以是显示器、打印机、扬声器、CD刻录机、或提供来自计算环境500的输出的另一设备。
通信连接570使得能够通过通信介质(例如,连接网络)与另一计算实体通信。通信介质以调制数据信号传送诸如计算机可执行指令、压缩图形信息、视频或其他数据等信息。通信连接570不限于有线连接(例如,兆位或千兆以太网、Infiniband、光纤通道或光纤通道连接),还包括无线技术(例如,经由Bluetooth、WiFi(IEEE 802.11a/b/n)、WiMax、蜂窝、卫星、激光、红外线的RF连接)以及用于为所公开的方法提供网络连接的其他合适的通信连接。在虚拟主机环境中,通信连接可以是由虚拟主机提供的虚拟化网络连接。
所公开方法的一些实施例可以使用在计算云590中实现所公开的技术的全部或一部分的计算机可执行指令来执行。例如,所公开的编译器、处理器和/或神经网络是利用位于计算环境中的服务器来实现的,或者所公开的编译器、处理器和/或神经网络可以在位于计算云590中的服务器上实现。在一些示例中,所公开的编译器在传统中央处理单元(例如,RISC或CISC处理器)上执行,中央处理单元被扩展为包括向量处理指令或向量处理器。
计算机可读介质是可以在计算环境500内访问的任何可用介质。作为示例而非限制,利用计算环境500,计算机可读介质包括存储器520和/或存储装置540。如本文中使用的,术语计算机可读存储介质包括用于数据存储的全部有形介质,诸如存储器520和存储装置540,而不包括诸如调制数据信号等传输介质。
X.实验结果
图6至图9是一系列图表,其示出了在具有和没有学习率缩放以补偿量化噪声的情况下在训练量化神经网络时观察到的实验结果。
图6是示出根据本公开的在具有和没有学习率缩放的情况下使用各种量化级别针对测试神经网络模型而测量的准确度的图表600。本实验中使用的测试神经网络模型是具有16层的VGG-16神经网络,并且训练使用CIFAR-10数据来执行。在基线神经网络中,神经网络的权重的值以普通精度float32格式表示。绘制了基线float32模型(由标有“基线”的图表示)以及具有四种不同量化精度格式的参数的模型的结果:8位共享指数格式,其具有一个尾数位和一个符号位(由标有“1M_1S_8Exp_bk16(已缩放)”和“1M_1S_8Exp_bk16(无缩放)”的图表示);8位共享指数格式,其具有两个尾数位和一个符号位(由标有“2M_1S_8Exp_bk16(已缩放)”和“2M_1S_8Exp_bk16(无缩放)”的图表示);8位共享指数格式,其具有三个尾数位和一个符号位(由标有“3M_1S_8Exp_bk16(已缩放)”和“3M_1S_8Exp_bk16(无缩放)”的图表示);以及8位共享指数格式,其具有四个尾数位和一个符号位(由标有“4M_1S_8Exp_bk16(已缩放)”和“4M_1S_8Exp_bk16(无缩放)”的图表示)。实验的其他参数包括批归一化,其中在计算每个批次的平均值之前或之后量化梯度,并且使用常见的深度学习库,包括PyTorch、TensorFlow和Keras。
如图所示,与使用与基线float32模型相同的学习率相比,以所公开的方式来缩放学习率提高了训练的准确度。例如,在训练以具有四个尾数位和一个符号位的8位共享指数格式量化的模型期间实现的准确度高于通过基线float32模型实现的准确度。此外,这个量化模型比基线模型收敛得更快,因此需要更少的训练期。如图所示,当以所公开的方式来缩放学习率时,对于其他量化格式,在准确度和收敛训练期数方面实现了类似的改进。因此,以所公开的方式来缩放学习率可以有利地提高量化神经网络的训练的准确度和效率,进而改进了用于实现训练的计算硬件的操作。
图7是示出根据本公开的针对具有以具有五个尾数位和一个符号位的8位共享指数格式量化的参数的测试神经网络模型而测量的准确度的图表700。本次实验使用的测试神经网络模型是具有16个层的ResNet50神经网络,并且训练使用ImageNet数据库来执行。在基线神经网络中,神经网络的权重的值以普通精度float32格式表示。绘制了以下各项的结果:基线float32模型(由标有“基线”的图表示);以及没有学习率缩放的具有五个尾数位和一个符号位的8位共享指数格式的参数的模型(表示为标有“M5S1t16Exp8_NoScaling”;具有学习率缩放和第一学习率调度的同一模型(由标有“M5S1t16Exp8_Scaled”的图表示);具有学习率缩放和不同于第一学习率调度的第二学习率调度的同一模型(由标有“M5S1t16Exp8_Scaled(不同的lr进度表)”的图表示)。实验的其他参数包括批归一化、后量化梯度和Keras库的利用。
如图所示,没有学习率缩放的量化模型的准确度和收敛时期数与基线模型的相似。缩放学习率可以利用学习率缩放来提高两个量化模型的准确度和减少收敛时期数。例如,与没有学习率缩放的量化模型的准确度相比,缩放学习率将量化模型的准确度提高了大约1.24%。此外,使用不同学习率调度,量化模型的收敛时期数可以显著减少。特别地,如图所示,当利用学习率缩放来训练量化模型时,使用第二学习率调度将收敛时期数减少了几乎50%。这些结果进一步证明,以所公开的方式缩放学习率可以有利地提高量化神经网络训练的准确度和效率,从而改进用于实现训练的计算硬件的操作。此外,这些结果表明,调节学习率调度可以通过减少收敛训练期数来提供进一步的改进,从而使用于实现训练的计算硬件更有效地操作。
图8是示出针对具有以具有一个符号位和不同数目的尾数位的8位共享指数格式量化的参数的测试神经网络模型而测量的准确度的图表800。在这个实验中,根据本公开,除了基线之外的所有结果都是使用已缩放学习率获取的。本实验中使用的测试神经网络模型是具有16个层的ResNet50神经网络,并且训练使用ImageNet数据库来执行。在基线神经网络中,神经网络的权重的值以普通精度float32格式表示。绘制了以下各项的结果:基线float32模型(以标有“baseline”的图表示),以及具有比例学习率并且具有具有一个符号位和三个、四个、五个、六个、七个或八个尾数位的8位共享指数格式的参数的量化模型(分别由标有“M3S1t16Exp8”、“M4S1t16Exp8”、“M5S1t16Exp8”、“M6S1t16Exp8”、“M7S1t16Exp8”和“M8S1t16Exp8”的图表示)。实验的其他参数包括批归一化、后量化梯度和TensorFlow库的利用。
如图8所示,与基线模型相比,除了具有已缩放学习率的量化模型之一之外,所有模型都实现了更高的准确度。具体地,具有已缩放学习率并且具有具有一个符号位和4、5、6、7或8个尾数位的8位共享指数格式的参数的量化模型比非量化基线模型获取更高的准确度,而具有已缩放学习率并且具有具有一个符号位和三个尾数位的8位共享指数格式的参数的量化模型的精度不如基线模型。正如该实验的结果所证明的,基线模型仍然需要修改以匹配最先进的准确度。
图9是示出相对于非量化基线模型对于针对具有不同量化格式的参数使用已缩放学习率的实验所实现的平均准确度提高的图表900。本实验中使用的测试神经网络模型是具有128个层的ResNet50神经网络,并且训练使用ImageNet数据库来执行。在基线神经网络中,神经网络的权重的值以普通精度float32格式表示。对于具有8位共享指数格式(具有3、4、5、6、7或8个尾数位)的参数的量化模型,相对于基线模型,示出了通过使用已缩放学习率而实现的平均准确度提高(分别由标有“M3_T128”、“M4_T128”、“M5_T128”、“M6_T128”、“M7_T128”和“M8_T128”的区域表示)。实验的其他参数包括后量化梯度和TensorFlow库的使用。
如图9所示,通过使用已缩放学习率实现的准确度提高的平均百分比取决于量化格式的精度水平。应当理解,由于模型中尾数位的相对数目,M8_T128模型比M7_T128模型更精确,M7_T128模型比M6_T128模型更精确,以此类推。在本实验中,具有4、5、6、7和8个尾数位的模型实现了准确度提高,其中具有7个尾数位的模型(M7_T128)实现了最高的准确度提高(大于1.5%)。
然而,具有8个尾数位的模型的准确度提高是最小的;具有已缩放学习率的该模型所实现的准确度大致相当于没有已缩放学习率的同一模型所实现的准确度。因此,对于具有相对较高噪声信号比的量化格式(例如,具有8个尾数位的模型),使用已缩放学习率进行训练可以提供与通过不已缩放学习率进行训练所实现的准确度相当的准确度。此外,具有3个尾数位的模型所实现的准确度低于不使用已缩放学习率的训练所实现的准确度。这些结果表明,对于具有相对较低噪声信号比的量化格式(例如,具有3个尾数位的模型),缩放学习率可能不会提高准确度,因为量化噪声数量占主导地位。
因此,通过缩放在某些类型的量化格式神经网络张量的训练中使用的学习率,可以实现性能改进。例如,基于在训练量化神经网络时实现可接受的准确度水平所需要的降低的程序员生产力和努力,如果没有本文中公开的方法和装置,这样的性能增益将不会那么容易实现。因此,使用某些公开的方法和装置可以实现改进的程序员生产力和最终改进的硬件加速(通过使用量化精度格式)。
XI.所公开的技术的其他示例
根据以上示例公开了所公开的技术的附加示例。
在所公开的技术的一些示例中,可以通过以下方法来训练利用启用量化的系统实现的神经网络,该方法包括:利用启用量化的系统,获取张量,该张量包括以量化精度格式表示的神经网络的一个或多个参数的值;生成表示张量中存在的量化噪声的至少一个噪声信号度量;并且基于至少一个噪声信号度量生成已缩放学习率。该方法还可以包括使用张量的值执行神经网络的训练期,包括使用已缩放学习率计算一个或多个梯度更新。
在一些示例中,张量是通过将第一张量的值从普通精度浮点格式转换为量化精度格式而获取的第二张量,并且一个或多个参数是在神经网络的训练期的前向传播阶段使用的权重。此外,在一些示例中,一个或多个参数表示神经网络的边权重和激活权重,并且生成至少一个噪声信号度量包括:对于神经网络的多个层中的每一层,生成针对该层的激活权重的噪声信号比并且生成针对该层的边权重的噪声信号比。
在一些示例中,生成针对多个层中的每一层的激活权重的噪声信号比包括:计算第二张量的针对该层的激活权重与第一张量的针对该层的激活权重之间的差,并且将该差除以第一张量的针对该层的激活权重的绝对值。类似地,在一些示例中,生成针对多个层中的每一层的边权重的噪声信号比包括:计算第二张量的针对该层的边权重与第一张量的针对该增的边权重之间的差,并且将所计算的差除以该层的第一张量的边权重的绝对值。
在一些示例中,该方法还包括基于至少一个噪声信号度量来生成缩放因子。例如,对于包括总共L层的神经网络,神经网络第l层的缩放因子可以基于第l层的激活权重的噪声信号比的平均值以及神经网络的第l+1到第L层的边权重的噪声信号比的平均值的总和来生成。此外,在一些示例中,训练神经网络包括经由随机梯度下降来训练神经网络。在这样的示例中,神经网络的第l层的已缩放学习率通过以下等式来计算:
Figure BDA0003122256910000361
其中εq表示已缩放学习率,ε表示神经网络的预定学习率,
Figure BDA0003122256910000362
以向量形式表示在随机梯度下降批大小上的第l层的激活权重的噪声信号比的平均值,
Figure BDA0003122256910000363
以矩阵形式表示每个样本的神经网络的第k层的边权重的噪声信号比的平均值。
在一些示例中,使用已缩放学习率计算一个或多个梯度更新包括使用已缩放学习率针对第l层的一个或多个参数计算梯度更新。另外地或替代地,使用已缩放学习率计算一个或多个梯度更新可以包括使用为第l层而生成的相同的已缩放学习率针对神经网络的一个或多个其他层的一个或多个参数来计算梯度更新。
在一些示例中,该方法还包括基于至少一个噪声信号度量生成缩放因子。在这样的示例中,普通精度浮点格式可以表示具有第一位宽的值,量化精度格式可以表示具有第二位宽的值,第二位宽低于第一位宽,并且该方法还可以包括将缩放因子存储在查找表中针对第二位宽的条目中;通过访问查找表中针对第二位宽的条目以获取针对第二位宽的缩放因子,计算针对神经网络的一个或多个其他参数的梯度更新,该一个或多个其他参数以第二位宽表示;以及使用针对第二位宽的缩放因子,计算一个或多个其他参数的梯度更新。
在一些示例中,神经网络的训练期是在神经网络的第一训练期之后执行的第二时期。在这样的示例中,该方法还可以包括:在生成已缩放学习率之前,使用张量的值执行第一训练期,包括使用神经网络的预定学习率来计算一个或多个梯度更新。此外,基于至少一个噪声信号度量生成已缩放学习率可以包括基于至少一个噪声信号度量来缩放预定学习率。
在所公开的技术的一些示例中,一种用于训练利用启用量化的系统实现的神经网络的系统可以包括存储器;耦合到存储器并且适于执行量化精度操作的一个或多个处理器;以及存储计算机可读指令的一个或多个计算机可读存储介质,该计算机可读指令在由一个或多个处理器执行时引起该系统执行训练神经网络的方法。例如,一个或多个处理器可以包括具有张量处理单元的神经网络加速器。
该方法可以包括引起该系统以量化精度格式表示神经网络的一个或多个参数值的指令;使该系统计算表示以量化精度格式表示的值中存在的量化噪声的至少一个度量的指令;以及使该系统基于至少一个度量来调节神经网络的学习率的指令。
在一些示例中,神经网络的一个或多个参数包括神经网络的一层的多个权重;并且至少一个度量包括噪声信号比。该噪声信号比可以通过计算以量化精度格式表示的权重的值与以普通精度浮点格式表示的权重的值之间的差,并且将该差除以以普通精度浮点格式表示的权重的值的绝对值来计算。
在一些示例中,一个或多个参数可以包括神经网络的第一层的激活权重和边权重。在这样的示例中,计算至少一个度量可以包括计算针对第一层的激活权重的第一噪声信号比和针对第一层的边权重的第二噪声信号比,并且该系统还可以包括使该系统利用以量化精度格式表示的参数的至少一些值来训练神经网络的指令,包括使该系统使用已调节的学习率针对第一层和神经网络的至少一个其他层来计算梯度更新的指令。
在一些示例中,一个或多个参数可以包括神经网络的第一层的权重和神经网络的第二层的权重。在这样的示例中,引起该系统计算至少一个度量的指令可以包括引起该系统计算针对第一层的权重的第一噪声信号比和针对第二层的权重的第二噪声信号比的指令。此外,引起该系统基于至少一个度量调节学习率的指令可以包括引起该系统进行以下操作的指令:基于第一噪声信号比针对第一层计算第一缩放因子;通过使用第一缩放因子缩放神经网络的全局学习率来针对第一层计算已缩放学习率;基于第二噪声信号比针对第二层计算第二缩放因子;并且通过使用第一缩放因子缩放神经网络的全局学习率来针对第一层计算已缩放学习率。该系统还可以包括引起该系统利用以量化精度格式表示的第一层和第二层的权重来训练神经网络的指令,包括使用第一层的已缩放学习率针对第一层的权重计算第一梯度更新,并且使用第二层的已缩放学习率针对第二层的权重计算第二梯度更新。
在所公开的技术的一些示例中,一种用于在神经网络的训练期间补偿噪声的方法可以包括计算表示神经网络中存在的噪声的至少一个噪声信号比;基于至少一个噪声信号比调节神经网络的超参数;以及使用已调节超参数训练神经网络。超参数可以包括以下中的至少一项:学习率、学习率调度、偏置、随机梯度下降批大小、神经网络中的神经元数目或神经网络中的层数。替代地,可以使用其他超参数。
在一些示例中,计算至少一个噪声信号比包括在将噪声引入神经网络之前获取包括神经网络的一个或多个参数的值的第一张量;将噪声引入神经网络;在将噪声引入神经网络之后获取包括一个或多个参数的值的第二张量;计算第二张量的一个或多个值与第一张量的一个或多个对应值之间的差;以及将该差除以第一张量的一个或多个对应值的绝对值。
在一些示例中,将噪声引入神经网络可以包括以下中的一项或多项:改变神经网络的一个或多个参数的值的数据类型,减少神经网络的一个或多个层的随机梯度下降批大小,减少提供给实现神经网络的硬件的电压,实现神经网络的基于模拟的训练,或者将神经网络的一个或多个参数的值存储在DRAM中。
在一些示例中,基于至少一个噪声信号比调节超参数包括:基于至少一个噪声信号比来计算缩放因子;并且使用缩放因子缩放超参数。如本文中讨论的,可以调节超参数以补偿神经网络中存在的噪声对在神经网络的训练期间计算的梯度更新的准确度的影响。
鉴于可以应用所公开的主题的原理的很多可能的实施例,应当认识到,所示的实施例仅是优选示例,而不应当被视为限制所要求保护的主题的范围。相反,所要求保护的主题的范围由所附权利要求限定。因此,我们要求将落入这些权利要求范围内的所有内容作为我们的发明。

Claims (15)

1.一种用于训练利用启用量化的系统实现的神经网络的方法,所述方法包括:
利用所述启用量化的系统:
获取张量,所述张量包括以量化精度格式表示的所述神经网络的一个或多个参数的值;
生成表示所述张量中存在的量化噪声的至少一个噪声信号度量;
基于所述至少一个噪声信号度量生成已缩放学习率;以及
使用所述张量的所述值执行所述神经网络的训练期,包括使用所述已缩放学习率计算一个或多个梯度更新。
2.根据权利要求1所述的方法,其中:
所述张量是通过将第一张量的值从普通精度浮点格式转换为所述量化精度格式而获取的第二张量,以及
所述一个或多个参数是在所述神经网络的训练期的前向传播阶段使用的权重。
3.根据权利要求2所述的方法,其中:
所述一个或多个参数表示所述神经网络的边权重和激活权重,以及
生成所述至少一个噪声信号度量包括:对于所述神经网络的多个层中的每一层,生成针对所述层的所述激活权重的噪声信号比并且生成针对所述层的所述边权重的噪声信号比。
4.根据权利要求3所述的方法,其中:
生成针对所述多个层中的每一层的所述激活权重的所述噪声信号比包括:计算所述第二张量的针对所述层的所述激活权重与所述第一张量的针对所述层的所述激活权重之间的差,并且将所述差除以所述第一张量的针对所述层的所述激活权重的绝对值;以及
生成针对所述多个层中的每一层的所述边权重的所述噪声信号比包括:计算所述第二张量的针对所述层的所述边权重与所述第一张量的针对所述层的所述边权重之间的差,并且将所述差除以所述第一张量的针对所述层的所述边权重的绝对值。
5.根据权利要求3所述的方法,还包括基于所述至少一个噪声信号度量来生成缩放因子,其中:
所述神经网络包括总共L层;以及
针对所述神经网络的第l层的所述缩放因子是基于针对所述第l层的所述激活权重的所述噪声信号比的平均值以及针对所述神经网络的第l+1层到第L层的所述边权重的所述噪声信号比的平均值的总和来生成的。
6.根据权利要求5所述的方法,其中:
训练所述神经网络包括经由随机梯度下降来训练所述神经网络;以及
所述神经网络的所述第l层的所述已缩放学习率通过下式来计算:
Figure FDA0003122256900000021
其中εq表示所述已缩放学习率,ε表示所述神经网络的预定学习率,
Figure FDA0003122256900000022
以向量形式表示在随机梯度下降批大小上的所述第l层的所述激活权重的所述噪声信号比的平均值,
Figure FDA0003122256900000023
以矩阵形式表示针对每个样本的、所述神经网络的第k层的所述边权重的所述噪声信号比的平均值。
7.根据权利要求6所述的方法,其中使用所述已缩放学习率计算所述一个或多个梯度更新包括:使用所述已缩放学习率来计算针对所述第l层的一个或多个参数的梯度更新。
8.根据权利要求7所述的方法,其中使用所述已缩放学习率计算所述一个或多个梯度更新还包括:使用针对所述第l层生成的相同的已缩放学习率,计算针对所述神经网络的一个或多个其他层的一个或多个参数的梯度更新。
9.根据权利要求2所述的方法,还包括基于所述至少一个噪声信号度量生成缩放因子,其中:
所述普通精度浮点格式表示具有第一位宽的所述值;
所述量化精度格式表示具有第二位宽的所述值,所述第二位宽低于所述第一位宽;以及
所述方法还包括:
将所述缩放因子存储在查找表中针对所述第二位宽的条目中;
通过访问所述查找表中针对所述第二位宽的所述条目以获取针对所述第二位宽的所述缩放因子,计算针对所述神经网络的一个或多个其他参数的梯度更新,所述一个或多个其他参数以所述第二位宽表示;以及
使用针对所述第二位宽的所述缩放因子,计算针对所述一个或多个其他参数的所述梯度更新。
10.根据权利要求1所述的方法,其中所述神经网络的所述训练期是在所述神经网络的第一训练期之后执行的第二期,所述方法还包括:
在生成所述已缩放学习率之前,使用所述张量的所述值执行所述第一训练期,包括使用所述神经网络的预定学习率来计算一个或多个梯度更新,
其中基于所述至少一个噪声信号度量生成所述已缩放学习率包括:基于所述至少一个噪声信号度量来缩放所述预定学习率。
11.一种用于训练利用启用量化的系统实现的神经网络的系统,所述系统包括:
存储器;
一个或多个处理器,耦合到所述存储器并且适于执行量化精度操作;
一个或多个计算机可读存储介质,存储计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时使所述系统执行训练神经网络的方法,所述指令包括:
使所述系统以量化精度格式表示所述神经网络的一个或多个参数的值的指令;
使所述系统计算表示量化噪声的至少一个度量的指令,所述量化噪声存在于以所述量化精度格式表示的所述值中;以及
使所述系统基于所述至少一个度量来调节所述神经网络的学习率的指令。
12.根据权利要求11所述的系统,其中:
所述神经网络的所述一个或多个参数包括所述神经网络的层的多个权重;以及
所述至少一个度量包括噪声信号比,所述噪声信号比通过如下方式而计算:计算以所述量化精度格式表示的所述权重的值与以普通精度浮点格式表示的所述权重的值之间的差,并且将所述差除以以所述普通精度浮点格式表示的所述权重的所述值的绝对值。
13.根据权利要求11所述的系统,其中:
所述一个或多个参数包括所述神经网络的第一层的激活权重和边权重;
计算所述至少一个度量包括计算针对所述第一层的所述激活权重的第一噪声信号比和针对所述第一层的所述边权重的第二噪声信号比;以及
所述系统还包括使所述系统利用以所述量化精度格式表示的所述参数的至少一些值来训练所述神经网络的指令,包括使所述系统使用已调节的所述学习率来计算针对所述第一层和所述神经网络的至少一个其他层的梯度更新的指令。
14.根据权利要求11所述的系统,其中所述一个或多个处理器包括具有张量处理单元的神经网络加速器。
15.根据权利要求11所述的系统,其中所述学习率被调节以补偿所述量化噪声对在所述神经网络的后续训练期间计算的梯度更新的准确度的影响。
CN201980084632.1A 2018-12-19 2019-12-10 用于训练dnn的缩放学习 Pending CN113196304A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/226,475 US20200202213A1 (en) 2018-12-19 2018-12-19 Scaled learning for training dnn
US16/226,475 2018-12-19
PCT/US2019/065306 WO2020131464A1 (en) 2018-12-19 2019-12-10 Scaled learning for training dnn

Publications (1)

Publication Number Publication Date
CN113196304A true CN113196304A (zh) 2021-07-30

Family

ID=69024732

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980084632.1A Pending CN113196304A (zh) 2018-12-19 2019-12-10 用于训练dnn的缩放学习

Country Status (4)

Country Link
US (1) US20200202213A1 (zh)
EP (1) EP3899801A1 (zh)
CN (1) CN113196304A (zh)
WO (1) WO2020131464A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117058657A (zh) * 2023-09-05 2023-11-14 上海保隆汽车科技(武汉)有限公司 汽车可行驶区域识别方法、深度学习模型构建方法和装置
WO2024065848A1 (en) * 2022-09-30 2024-04-04 Intel Corporation Improving accuracy of machine learning operations by compensating for lower precision with scale shifting

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645093B2 (en) 2018-08-30 2023-05-09 Express Scripts Strategic Development, Inc. Systems and methods for user interface adaptation for per-user metrics
US10896048B1 (en) 2018-08-30 2021-01-19 Express Scripts Strategie Development, Inc. Systems and methods for user interface adaptation for per-user metrics
US11847567B1 (en) 2018-12-05 2023-12-19 Perceive Corporation Loss-aware replication of neural network layers
US11610154B1 (en) 2019-04-25 2023-03-21 Perceive Corporation Preventing overfitting of hyperparameters during training of network
US11900238B1 (en) 2019-04-25 2024-02-13 Perceive Corporation Removing nodes from machine-trained network based on introduction of probabilistic noise during training
US11531879B1 (en) 2019-04-25 2022-12-20 Perceive Corporation Iterative transfer of machine-trained network inputs from validation set to training set
US11847568B2 (en) 2019-07-30 2023-12-19 Perceive Corporation Quantizing neural networks using shifting and scaling
US11568180B2 (en) * 2019-09-13 2023-01-31 Rohde & Schwarz Gmbh & Co. Kg Method and cloud server for training a neural network for triggering an input signal in a measurement device and method for autonomous determining a trigger type/parameter
US11657282B2 (en) * 2019-09-16 2023-05-23 Qualcomm Incorporated Efficient inferencing with fast pointwise convolution
JP7354736B2 (ja) * 2019-09-30 2023-10-03 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム
US10877540B2 (en) * 2019-10-04 2020-12-29 Intel Corporation Content adaptive display power savings systems and methods
US11941520B2 (en) * 2020-01-09 2024-03-26 International Business Machines Corporation Hyperparameter determination for a differentially private federated learning process
CN111985495B (zh) * 2020-07-09 2024-02-02 珠海亿智电子科技有限公司 模型部署方法、装置、系统及存储介质
CN112101524A (zh) * 2020-09-07 2020-12-18 上海交通大学 可在线切换比特位宽的量化神经网络的方法及系统
CN112023279A (zh) * 2020-09-11 2020-12-04 杭州珞珈质子科技有限公司 质子治疗的参数监测装置及系统
CN113177627B (zh) * 2021-01-11 2024-05-10 联合微电子中心有限责任公司 优化系统、重新训练系统及其方法及处理器和可读介质
KR20220154902A (ko) * 2021-05-14 2022-11-22 삼성전자주식회사 전자 장치 및 이의 제어 방법
CN113238988B (zh) * 2021-06-08 2023-05-30 中科寒武纪科技股份有限公司 优化深度神经网络的参数的处理系统、集成电路及板卡
CN113434750B (zh) * 2021-06-30 2022-09-06 北京市商汤科技开发有限公司 神经网络搜索方法、装置、设备及存储介质
KR20230126110A (ko) * 2022-02-22 2023-08-29 삼성전자주식회사 보완된 신경망 양자화 연산을 이용한 데이터 처리 방법 및 데이터 처리 장치
CN117787375A (zh) * 2022-09-20 2024-03-29 华为技术有限公司 神经网络模型的训练方法、装置、设备及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180107926A1 (en) * 2016-10-19 2018-04-19 Samsung Electronics Co., Ltd. Method and apparatus for neural network quantization
US11842280B2 (en) * 2017-05-05 2023-12-12 Nvidia Corporation Loss-scaling for deep neural network training with reduced precision
US11429862B2 (en) * 2018-03-20 2022-08-30 Sri International Dynamic adaptation of deep neural networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024065848A1 (en) * 2022-09-30 2024-04-04 Intel Corporation Improving accuracy of machine learning operations by compensating for lower precision with scale shifting
CN117058657A (zh) * 2023-09-05 2023-11-14 上海保隆汽车科技(武汉)有限公司 汽车可行驶区域识别方法、深度学习模型构建方法和装置

Also Published As

Publication number Publication date
EP3899801A1 (en) 2021-10-27
US20200202213A1 (en) 2020-06-25
WO2020131464A1 (en) 2020-06-25

Similar Documents

Publication Publication Date Title
CN113196304A (zh) 用于训练dnn的缩放学习
US11645493B2 (en) Flow for quantized neural networks
US20230267319A1 (en) Training neural network accelerators using mixed precision data formats
US11586883B2 (en) Residual quantization for neural networks
US20190340499A1 (en) Quantization for dnn accelerators
US20200265301A1 (en) Incremental training of machine learning tools
US20200210840A1 (en) Adjusting precision and topology parameters for neural network training based on a performance metric
US20200264876A1 (en) Adjusting activation compression for neural network training
EP3906616B1 (en) Neural network activation compression with outlier block floating-point
US20240152758A1 (en) Neural network activation compression with non-uniform mantissas
US20200210838A1 (en) Neural network activation compression with narrow block floating-point
US20230037227A1 (en) Dual exponent bounding box floating-point processor

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