CN114386565A - 提供神经网络 - Google Patents

提供神经网络 Download PDF

Info

Publication number
CN114386565A
CN114386565A CN202111221355.XA CN202111221355A CN114386565A CN 114386565 A CN114386565 A CN 114386565A CN 202111221355 A CN202111221355 A CN 202111221355A CN 114386565 A CN114386565 A CN 114386565A
Authority
CN
China
Prior art keywords
neural network
neural
data
neural networks
networks
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
CN202111221355.XA
Other languages
English (en)
Inventor
M·J·奥康纳
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.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN114386565A publication Critical patent/CN114386565A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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
    • 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
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Neurology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Multimedia (AREA)
  • Image Analysis (AREA)

Abstract

一种提供用于处理数据的神经网络组的计算机实现的方法,该方法包括:识别包括主神经网络和一个或多个子神经网络的神经网络组,每个神经网络包括多个参数,并且其中每个子神经网络的一个或多个参数由该子神经网络和该主神经网络共享;将训练数据输入到每个神经网络中,并且调整每个神经网络的参数;使用经调整的参数来计算每个神经网络的性能得分;通过将该性能得分与使用这些经调整的参数为每个神经网络计算的损失函数的值组合,生成该神经网络组的组合得分;重复该识别和该输入和该调整和该计算以及该生成;以及基于每组神经网络的组合得分的值来选择用于在多个硬件环境中处理数据的神经网络组。

Description

提供神经网络
背景技术
技术领域
本公开涉及一种提供用于在多个硬件环境中处理数据的神经网络组的计算机实现的方法。本发明还公开了一种相关系统和一种非暂态计算机可读存储介质。本发明还公开了一种识别用于在硬件环境中处理数据的神经网络的计算机实现的方法,和相关的设备以及相关的非暂态计算机可读存储介质。
相关技术说明
神经网络用于多种多样的应用诸如图像分类、语音识别、字符识别、图像分析、自然语言处理、手势识别等。许多不同类型的神经网络诸如卷积神经网络“CNN”、当前神经网络“RNN”、生成对抗网络“GAN”和自动编码器已被开发和定制用于此类应用。
神经元是神经网络的基本单元。神经元具有一个或多个输入并基于这些输入生成输出。通常将施加到每个输入的数据的值乘以“权重”,并对结果求和。将求和后的结果输入到“激活函数”中,以便确定神经元的输出。该激活函数具有通过向神经元的激活提供阈值来控制该神经元的输出的“偏差”。神经元通常被布置在层中,这些层可包括输入层、输出层以及布置在该输入层和该输出层之间的一个或多个隐藏层。权重确定网络中神经元之间的连接的强度。权重、偏差和神经元连接是神经网络的“可训练参数”的示例,其在神经网络“训练”过程期间“学习”,或换句话讲,能够被训练。神经网络(尤其是在包括归一化层的神经网络中的神经网络)的可训练参数的另一个示例是(批量)归一化参数。在训练期间,(批量)归一化参数是从流经归一化层的数据的统计值中学习的。
神经网络还包括用于控制神经网络训练过程的“超参数”。根据所涉及的神经网络的类型,超参数可例如包括以下中的一者或多者:学习速率、衰减速率、动量、学习时间表和批量大小。学习速率控制在训练期间进行的权重调整的量值。批量大小在本文中被定义为用于在每次迭代中训练神经网络模型的数据点的数量。
训练神经网络的过程包括调整连接神经网络中的神经元的权重,以及调整激活函数的控制神经元的输出的偏差。有两种主要的训练方法:监督学习和无监督学习。监督学习涉及为神经网络提供包括输入数据和对应的输出数据的训练数据集。该训练数据集表示神经网络在训练之后将可能被用于分析的输入数据。在监督学习期间,权重和偏差被自动调整,使得当与输入数据一起呈现时,神经网络准确地提供对应的输出数据。据说利用该对应的输出数据对该输入数据进行“标记”或“分类”。在无监督学习中,神经网络通过同样自动调整权重和偏差来决定其自身如何基于输入数据中的共同特征对包括无标记输入数据的训练数据集进行分类或根据该训练数据集生成另一种类型的预测。半监督学习是另一种训练方法,其中训练数据集包括带标记数据和无标记数据的组合。通常,该训练数据集包括带标记数据的一小部分。在训练期间,使用来自带标记数据的引导自动调整神经网络的权重和偏差。
无论使用何种训练过程,训练神经网络通常都涉及输入大型训练数据集,以及对神经网络参数进行多次调整迭代,直到该经训练的神经网络提供准确的输出。应当理解,为了执行该优化过程,通常需要大量的处理资源。训练通常使用图形处理单元“GPU”或专用神经处理器诸如神经处理单元“NPU”或张量处理单元“TPU”来执行。因此,训练通常采用集中式方法,其中基于云或基于主机的神经处理器用于训练神经网络。在利用训练数据集进行训练之后,可将经训练的神经网络部署到用于分析新数据的设备。称为“推断”的过程。推断可由中央处理单元“CPU”、GPU、NPU在服务器上或在云中执行。
然而,仍然需要提供改善的神经网络。
发明内容
根据本公开的第一方面,提供了一种计算机实现的方法,该方法提供用于在多个硬件环境中处理数据的神经网络组。该方法包括:
-识别包括主神经网络和一个或多个子神经网络的神经网络组,该神经网络组中的每个神经网络包括多个参数,并且其中每个子神经网络的一个或多个参数由该子神经网络和该主神经网络共享;
-将训练数据输入到该神经网络组中的每个神经网络中,并且使用基于在每个神经网络的输出处生成的输出数据与预期输出数据之间的差值计算的目标函数来调整每个神经网络的参数;
-使用经调整的参数计算该神经网络组中的每个神经网络的性能得分,该性能得分表示每个神经网络在相应硬件环境中的性能;
-通过将该神经网络组中的每个神经网络的该性能得分与使用经调整的参数为该神经网络组中的每个神经网络计算的损失函数的值组合来生成该神经网络组的组合得分;
-对于两次或更多次迭代,重复该识别和该输入和该调整和该计算以及该生成;以及
-基于每组神经网络的该组合得分的值,从由该重复生成的多组神经网络中选择用于在多个硬件环境中处理数据的神经网络组。
根据本公开的第二方面,提供了一种计算机实现的方法,该方法识别用于在硬件环境中处理数据的神经网络。该方法包括:
-i)接收根据本公开的该第一方面的方法提供的神经网络组,该神经网络组包括表示该神经网络组中的每个神经网络的目标硬件环境和/或硬件需求的元数据;以及
-基于该元数据从该神经网络组中选择神经网络来处理数据;或者
-ii)接收根据上述方法提供的神经网络组;以及
-基于响应于将测试数据输入到该相应神经网络中而生成的该相应神经网络的输出,计算该神经网络组中的一个或多个神经网络的性能得分,并且在该硬件环境中用该相应神经网络处理该测试数据;以及
-从该神经网络组中选择神经网络以基于该性能得分的值来处理数据。
在一些示例中,通过在连续迭代中同时调整每个神经网络的参数来执行每个神经网络的参数的调整。
在一些示例中,通过在连续迭代中调整每个神经网络的参数来执行每个神经网络的参数的调整,i)直到目标函数的值满足停止标准,或者ii)进行预先确定的迭代次数。
在一些示例中,还基于在该神经网络组中的每个神经网络的输出处生成的输出数据之间的差值来计算目标函数。
在一些示例中,该识别包括提供主神经网络,以及从该主神经网络的一个或多个部分提供一个或多个子神经网络中的每一个子神经网络。
在一些示例中,该识别包括执行神经架构搜索,并且/或者其中该识别包括使该神经网络组中的神经网络之间共享的参数数量的计数最大化。
在一些示例中,识别、输入、调整、计算、生成、重复和选择的操作由第一处理系统执行,并且这些操作包括将所选择的神经网络组部署到第二处理系统。
在一些示例中,该重复包括i)针对预先确定的迭代次数执行该重复或ii)执行该重复,直到该神经网络组的该组合得分满足预先确定条件。
根据本公开的其他方面提供了一种系统、一种设备和一种非暂态计算机可读存储介质。与本公开的第一方面的计算机实现的方法相关的所公开的功能也可以以对应的方式在该系统和非暂态计算机可读存储介质中实现。与本公开的第二方面的计算机实现的方法相关的所公开的功能也可以以对应的方式在该设备和非暂态计算机可读存储介质中实现。
本公开的其他方面、特征和优点将从参考附图做出的以下示例性描述中变得显而易见。
附图说明
图1是示出示例性神经网络的示意图。
图2是示出示例性神经元的示意图。
图3是示出了根据本公开的一些方面的提供用于在多个硬件环境中处理数据的神经网络组的计算机实现方法的示例的流程图。
图4是示出了根据本公开的一些方面的用于提供用于在多个硬件环境中处理数据的神经网络组的系统500的示例的示意图。
图5是示出了根据本公开的一些方面的包括主神经网络100和两个子神经网络200、子神经网络300的神经网络组的示例的示意图。
图6是示出了根据本公开的一些方面的输入S110训练数据,并且使用目标函数410调整S120每个神经网络的参数的示例的示意图。
图7是示出了根据本公开的一些方面的通过在相应硬件环境130、硬件环境230、硬件环境330的模拟中将测试数据430输入到每个神经网络100、神经网络200、神经网络300来计算S130针对主神经网络和针对两个子神经网络200、子神经网络300中的每一者的性能得分120、性能得分220、性能得分320的示例的示意图。
图8是示出了根据本公开的一些方面的识别用于在硬件环境中处理数据的神经网络的计算机实现的方法的示例的流程图。
具体实施方式
参考以下描述和附图来提供本公开的示例。在本说明书中,出于解释的目的,阐述了某些示例的许多具体细节。本说明书中对“示例”、“具体实施”或类似语言的引用意指结合该示例描述的特征、结构或特性包括在至少该一个示例中。还应当理解,关于一个示例描述的特征也可用于另一个示例中,并且为了简洁起见,不一定重复所有特征。例如,关于一种计算机实现的方法所描述的特征也可以以相应的方式在非暂态计算机可读存储介质中或者在系统中实现。关于另一计算机实现的方法所描述的特征也可以以相应的方式在非暂态计算机可读存储介质中或在设备中实现。
在本公开中,参考了深度前馈神经网络形式的神经网络的示例。然而,应当理解,所公开的方法不限于与该特定神经网络架构一起使用,并且该方法可与其他神经网络架构诸如例如CNN、RNN、GAN、自动编码器等一起使用。还参考了其中神经网络处理图像数据形式的输入数据,并且使用图像数据生成预测或“分类”形式的输出数据的操作。应当理解,这些示例性操作仅用于解释的目的,并且所公开的方法不限于用于对图像数据进行分类。所公开的方法通常可用于基于输入生成预测,并且该方法可将其他形式的输入数据处理成图像数据,诸如音频数据、运动数据、振动数据、视频数据、文本数据、数字数据、财务数据、光检测和测距“LiDAR”数据等。
图1是示出示例性神经网络的示意图。图1中的示例性神经网络是深度前馈神经网络,其包括布置在输入层、三个隐藏层h1至h3和输出层中的神经元。图1中的示例性神经网络在其输入层中的神经元的输入(输入1至输入k)处接收以数字或二进制输入值形式的输入数据,借助其隐藏层h1至h3中的神经元处理这些输入值,并且在其输出层中的神经元的输出(输出1..n)处生成输出数据。输入数据可例如表示图像数据或音频数据等。输入层中的每个神经元表示输入数据的一部分,诸如例如图像的像素。对于一些神经网络,输出层中神经元的数量取决于神经网络被编程为执行的预测的数量。对于回归任务,诸如对货币汇率的预测,输出层中的神经元可以是单个神经元。对于分类任务,诸如将图像分类为猫、狗、马等中的一者,输出层中每个分类类别通常具有一个神经元。
如图1所示,输入层的神经元耦接到第一隐藏层h1的神经元。输入层的神经元在其输入(输入1至输入k)处将未经修改的输入数据值传递到第一隐藏层h1的神经元的输入。因此,第一隐藏层h1中的每个神经元的输入耦接到输入层中的一个或多个神经元,并且第一隐藏层h1中的每个神经元的输出耦接到第二隐藏层h2中的一个或多个神经元的输入。同样,第二隐藏层h2中的每个神经元的输入耦接到第一隐藏层h1中的一个或多个神经元的输出,并且第二隐藏层h2中的每个神经元的输出耦接到第三隐藏层h3中的一个或多个神经元的输入。因此,第三隐藏层h3中的每个神经元的输入耦接到第二隐藏层h2中的一个或多个神经元的输出,并且第三隐藏层h3中的每个神经元的输出耦接到输出层中的一个或多个神经元。
图2是示出示例性神经元的示意图。图2所示的示例性神经元可用于提供图1的隐藏层h1至h3中的神经元以及图1的输出层中的神经元。如上所述,输入层的神经元通常在其输入(输入1至输入k)处将未经修改的输入数据值传递到第一隐藏层h1的神经元的输入。图2中的示例性神经元包括利用∑符号标记的求和部分和利用S形符号标记的激活函数。在操作中,将数据输入I0至Ij-1乘以对应的权重w0至wj-1并与偏差值B求和。将中间输出值S输入到激活函数F(S)以生成神经元输出Y。该激活函数充当数学门,并且确定在其基于其输入值S的输出为Y时神经元应当被激活的强度。该激活函数通常还将其输出Y归一化为例如在0和1之间或在-1和+1之间的值。可使用各种激活函数,诸如Sigmoid函数、Tanh函数、阶跃函数、整流线性单元“ReLU”、Softmax和Swash函数。
上文参考图1和图2所述的示例性前馈深度神经网络的变型(这些变型用于其他类型的神经网络中)可例如包括使用不同数量的神经元、不同数量的层、不同类型的层、神经元和层之间的不同连接性,以及使用具有与上文参考图1和图2所示例的不同的激活函数的层和/或神经元。例如,卷积神经网络包括附加滤波器层,并且递归神经网络包括将反馈信号发送到彼此的神经元。然而,如上所述,神经网络共有的特征是它们包括多个“神经元”,这些神经元是神经网络的基本单元。
如上所述,训练神经网络的过程包括自动调整连接神经网络中的神经元的上述权重,以及激活函数的控制神经元的输出的偏差。这通过将训练数据集输入到该神经网络中并基于目标函数的值调整或优化该神经网络的参数来进行。在监督学习中,向神经网络呈现具有已知分类的(训练)输入数据。该输入数据可例如包括已用动物“类型”分类的动物(诸如猫、狗、马等)的图像。该目标函数的值通常取决于该神经网络的输出与该已知分类之间的差值。在监督学习中,训练过程使用目标函数的值来自动调整权重和偏差,以便使该目标函数的值最小化。在神经网络的输出准确地提供已知分类时,就会发生这种情况。可例如向神经网络呈现对应于每个类别的各种图像。该神经网络分析每个图像并预测其分类。该目标函数的值表示预测分类与已知分类之间的差值,并且用于“反向传播”调整神经网络中的权重和偏差,使该预测分类更接近该已知分类。通过从输出层开始并且在神经网络中向后进行直到到达输入层来进行调整。在第一训练迭代中,神经元的初始权重和偏差通常是随机化的。神经网络然后预测分类,该操作基本上是随机的。然后使用反向传播来调整权重和偏差。当表示预测分类与已知分类之间的差值或误差的目标函数值在训练数据的可接受范围内时,教导过程终止。在稍后的阶段,经训练的神经网络被部署并且呈现没有任何分类的新图像。如果训练过程成功,则经训练的神经网络准确地预测新图像的分类。
已知用于训练的反向传播阶段的各种算法。已经特别为此目的开发出了算法诸如随机梯度下降“SGD”、Momentum、Adam、Nadam、Adagrad、Adadelta、RMSProp和Adamax“优化器”。实质上,基于预测分类和已知分类之间的差值来确定损失函数(诸如均方误差或Huber损失或交叉熵)的值。反向传播算法使用该损失函数的值来调整权重和偏差。例如,在SGD中,使用激活函数计算损失函数相对于每个权重的导数,并且该导数用于调整每个权重。
因此,参考图1和图2,对于隐藏层h1至h3和输出层中的神经元,训练图1中的神经网络包括调整应用于图2的示例性神经元的权重w0至wj-1和偏差值B。训练过程在计算上是复杂的,因此通常采用使用专用神经处理器的基于云的、或基于服务器的或基于主机的处理系统。在图1中对神经网络的训练期间,神经网络的参数或更具体地权重和偏差经由前述反向传播过程进行调整,使得表示已知分类和响应于将训练数据输入到学生神经网络中而在神经网络的输出1至输出n处生成的分类之间的差值的目标函数满足停止标准。换句话讲,训练过程用于优化神经网络的参数,或者更具体地优化权重和偏差。在监督学习中,该停止标准可以是目标函数值,即在输出1至输出n处生成的输出数据和输入数据的标记之间的差值在预先确定的余量内。例如,如果输入数据包括猫图像,并且如果猫的明确分类由输出1处的概率值表示,则停止标准可以是:对于每个输入猫图像,神经网络在输出1处均生成大于75%的值。在无监督学习中,停止标准可能是由神经网络自身基于输入数据中的共性被确定的自生成分类同样在输出1处生成大于75%的值。在训练期间,也可以类似的方式使用另选的停止标准。
在神经网络诸如参考图1和图2所述的神经网络已被训练之后,可部署该神经网络。部署可涉及将该神经网络传输到另一个计算设备以便执行推断。在推断期间,将新数据输入到该神经网络并对其进行预测。例如,新的输入数据可由该神经网络分类。执行推断的处理要求显著小于训练期间所需的那些要求。这允许该神经网络部署到各种计算设备,诸如膝上型计算机、平板电脑、移动电话等。为了进一步缓解部署该神经网络的设备的处理要求,还可执行对该神经网络的参数进行进一步改变的进一步优化技术。此类技术可在部署该神经网络之前或之后发生,并且可包括称为压缩的过程。
压缩在本文中被定义为删减和/或量化和/或权重聚类。删减神经网络在本文中被定义为神经网络中的一个或多个连接的移除。删减涉及从神经网络移除一个或多个神经元,或者移除由神经网络的权重定义的一个或多个连接。这可涉及完全移除其权重中的一个或多个权重,或者将其权重中的一个或多个权重设置为零。删减允许神经网络由于连接数量减少或由于处理零值权重所涉及的计算时间减少而被更快地处理。神经网络的量化涉及降低其权重或偏差中的一者或多者的精度。量化可涉及减少用于表示权重的位数,例如从32减少到16,或者将权重的表示从浮点改变为固定点。量化允许量化的权重被更快地处理,或者由不太复杂的处理器处理。神经网络中的权重聚类涉及识别神经网络中的多组共享权重值并存储每组共享权重值的公共权重。权重聚类允许以较少的位存储权重,并且减少权重的存储要求以及在处理权重时传输的数据量。上述压缩技术中的每一种压缩技术都用于增加或以其他方式减轻神经网络的处理要求。用于删减、量化和权重聚类的示例性技术在Han、Song等人的文档中有所描述。(2016)名称为“Deep Compression:CompressingDeep Neural Networks with Pruning,Trained Quantization and Huffman Coding”,arXiv:1510.00149v5,在ICLR2016作为会议论文公布。
可在大量硬件环境中执行推断,并且还可通过在设计神经网络时考虑硬件环境来改善推断期间该神经网络的性能。例如,ARM M级处理器诸如Arm Cortex-M55、Arm Cortex-M7和Arm Cortex-M0对于可用于中间值的SRAM的量通常具有硬限制,并且在处理小神经网络方面是有效的。相比之下,ARM A级处理器诸如Arm Cortex-A78、Arm Cortex-A57和ArmCortex-A55通常接受较大的神经网络并且它们的多个核提高了它们在执行大矩阵乘法方面的效率。又如,许多神经处理单元“NPU”具有非常高的计算吞吐量,并且更倾向于存储器换取计算吞吐量。设计用于特定硬件环境(诸如这些示例性处理器)的神经网络在该硬件环境中可具有比设计用于通用硬件环境的神经网络改善的性能。该性能可根据诸如准确度、延迟和能量来测量。这三种相互竞争的性能测量在很多情况下彼此权衡。然而,在设计神经网络时,神经网络设计者可能不完全知道该神经网络将用于执行推断的特定硬件环境。神经网络设计者因此可考虑为保守目标硬件环境(诸如CPU)设计神经网络,或者考虑为多个特定硬件环境中的每一者设计神经网络。前一种方法具有实现亚最佳延迟的风险,因为执行推断的该设备最终可具有优于CPU的处理能力。后一种方法有浪费精力来设计和优化用于从不使用神经网络的硬件环境的神经网络的风险。因此,这两种方法都可能导致亚最佳的神经网络性能。
本发明人已发现一种提供用于在多个硬件环境中处理数据的神经网络的改进方法。该方法可用于提供神经网络诸如上文参考图1所述的深度前馈神经网络或实际上具有其他架构的神经网络。
图3是示出了根据本公开的一些方面的提供用于在多个硬件环境中处理数据的神经网络组的计算机实现方法的示例的流程图。该计算机实现的方法包括:
-识别S100神经网络组,该神经网络组包括主神经网络100和一个或多个子神经网络200、子神经网络300,该神经网络组中的每个神经网络100、神经网络200、神经网络300包括多个参数,并且其中每个子神经网络的一个或多个参数由该子神经网络和该主神经网络100共享;
-将训练数据400输入S110到神经网络组中的每个神经网络100、神经网络200、神经网络300中,并且使用基于在每个神经网络100、神经网络200、神经网络300的输出110、输出210、输出310处生成的输出数据与预期输出数据420之间的差值计算的目标函数410来调整S120每个神经网络100、神经网络200、神经网络300的参数;
-使用经调整的参数来计算S130神经网络组中的每个神经网络100、神经网络200、神经网络300的性能得分120、性能得分220、性能得分320,该性能得分表示每个神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中的性能;
-通过将该神经网络组中的每个神经网络100、神经网络200、神经网络300的性能得分120、性能得分220、性能得分320与使用经调整的参数为该神经网络组中的每个神经网络100、神经网络200、神经网络300计算的损失函数的值组合来生成S140该神经网络组的组合得分;
-对于两次或更多次迭代,重复S150该识别S100和该输入S110和该调整S120和该计算S130以及该生成S140;以及
-基于每组神经网络的该组合得分的值,从由该重复S150生成的多组神经网络中选择S160用于在多个硬件环境130、硬件环境230、硬件环境330中处理数据的神经网络组。
下面进一步参考图4至图7详细描述上述方法的各方面。还提供了用于实现上述方法的对应系统。因此,图4是示出了根据本公开的一些方面的用于提供用于在多个硬件环境中处理数据的神经网络组的系统500的示例的示意图。该系统500包括第一处理系统550,该第一处理系统包括被配置为执行方法的一个或多个处理器,该方法包括:
-识别S100神经网络组,该神经网络组包括主神经网络100和一个或多个子神经网络200、子神经网络300,该神经网络组中的每个神经网络100、神经网络200、神经网络300包括多个参数,并且其中每个子神经网络的一个或多个参数由该子神经网络和该主神经网络100共享;
-将训练数据400输入S110到神经网络组中的每个神经网络100、神经网络200、神经网络300中,并且使用基于在每个神经网络100、神经网络200、神经网络300的输出110、输出210、输出310处生成的输出数据与预期输出数据420之间的差值计算的目标函数410来调整S120每个神经网络100、神经网络200、神经网络300的参数;
-使用经调整的参数来计算S130神经网络组中的每个神经网络100、神经网络200、神经网络300的性能得分120、性能得分220、性能得分320,该性能得分表示每个神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中的性能;
-通过将该神经网络组中的每个神经网络100、神经网络200、神经网络300的性能得分120、性能得分220、性能得分320与使用经调整的参数为该神经网络组中的每个神经网络100、神经网络200、神经网络300计算的损失函数的值组合来生成S140该神经网络组的组合得分;
-对于两次或更多次迭代,重复S150该识别S100和该输入S110和该调整S120和该计算S130以及该生成S140;以及
-基于每组神经网络的该组合得分的值,从由该重复S150生成的多组神经网络中选择S160用于在多个硬件环境130、硬件环境230、硬件环境330中处理数据的神经网络组。
系统500还可包括下文参考图3所示的方法描述的另外的特征。为了简洁起见,对这些特征中的每个特征的描述对于系统以及方法都不做重复。
图3所示的计算机实现的方法从操作S100开始,并且其中识别包括主神经网络100和一个或多个子神经网络200、子神经网络300的神经网络组。该神经网络组中的每个神经网络100、神经网络200、神经网络300包括多个参数,并且其中每个子神经网络的一个或多个参数由该子神经网络和主神经网络100共享。
图5是示出了根据本公开的一些方面的包括主神经网络100和两个子神经网络200、子神经网络300的神经网络组的示例的示意图。参考图5的上部部分,示例性主神经网络100包括被布置在标记为i=1..5的五个层中的多个神经元(由正方形框指示)。层i=1表示主神经网络100的输入层,层i=5表示主神经网络100的输出层,并且层i=2..4表示主神经网络100的隐藏层。图5中的层i=2..5中的每个神经元可例如由图2所示的神经元提供。因此,多个权重(图5中未示出)提供主神经网络100的层i=1至i=2之间、以及层i=2至i=3之间、以及层i=3至i=4之间,以及层i=4至i=5之间的连接,并且图5中的主神经网络100的层i=2..5中的每个神经元还包括偏差值,如上文参考图2中的神经元所述。图5所示的主神经网络100包括层i=5中的输出110,该输出可例如包括矢量或一个或多个值的阵列。
图5的中心部分示出了子神经网络200,并且图5的下部部分示出了另一个子神经网络300。子神经网络200包括表示为=1..4的四个层,并且子神经网络300包括表示为i=1..3的三个层。与主神经网络100一样,对子神经网络200和神经网络300的输入位于层i=1中。子神经网络200、子神经网络300的输出分别被标记为210、310。子神经网络200包括层i=2和层i=3中的两个隐藏层,并且子神经网络300包括层i=2中的一个隐藏层。与主神经网络一样,子神经网络200、子神经网络300中的每一者包括神经元(由正方形框指示)和多个权重(图5中未示出)。
图5中的神经元用参考标记“A”、参考标记“B”、参考标记“C”标记。主神经网络的神经元参考“C”来识别,子神经网络200的神经元参考“B”来识别,并且子神经网络300的神经元参考“A”来识别。如在图5的上部部分所示的示例性主神经网络100中可见,子神经网络200的所有神经元,即标记为B的所有神经元,由子神经网络200和主神经网络100共享。虽然图5中的神经元之间的单独连接未被指示,但是以这种方式共享神经元还旨在指示子神经网络200的所有参数,即,可训练参数,由子神经网络200和主神经网络100共享。在图5所示的示例性主神经网络100中可见,子神经网络300的所有神经元,即标记为A的神经元,也由子神经网络300和主神经网络100共享。因此,子神经网络300的所有参数由子神经网络300和主神经网络100共享。在图5所示的示例性神经网络组中,可以说每个子神经网络200、子神经网络300的参数表示主神经网络100的参数的子集。
在图5中的示例性主神经网络100还可以看出,子神经网络300的所有神经元,即标记为A的神经元,由子神经网络300和子神经网络200共享。因此,子神经网络300的所有参数由子神经网络300和子神经网络200共享。因此,图5上部部分所示的神经网络组包括主神经网络100和两个子神经网络200、子神经网络300,其中子神经网络300的参数是子神经网络200的参数的子集,并且子神经网络200的参数是主神经网络100的参数的子集。该神经网络组中的神经网络可被称为嵌套在彼此内;即,子神经网络300嵌套在子神经网络200内,并且子神经网络200嵌套在主神经网络100内。这种“嵌套”在图5中通过子神经网络300、子神经网络200和主神经网络100之间的竖直箭头来指示。
图5所示的主神经网络100仅为根据本公开的神经网络组的一个示例,并且可另选地提供其他神经网络组。如本文所用,与主神经网络相关的术语“子神经网络”定义具有由神经网络和主神经网络共享的一个或多个参数(即,可训练参数)的神经网络。换句话讲,每个子神经网络的一个或多个参数由子神经网络和主神经网络共享。
因此,还设想了图5所示的示例性神经网络组的变型。设想了其中每个子神经网络200和子神经网络300的一个或多个参数由相应的子神经网络和主神经网络共享的示例。此外,并非如在“嵌套式”神经网络200、神经网络300中那样,子神经网络的所有参数都是另一个子神经网络的参数的子集,或者子神经网络和另一个子神经网络可共享子神经网络的一个或多个参数。
在一个示例中,神经网络组中的每个神经网络100、神经网络200、神经网络300包括单独的输出。在一个示例中,提供了神经网络组,其中该神经网络组中最低神经网络的参数由该神经网络组中的所有神经网络共享。
该神经网络组可以各种方式在操作S100中被识别。在一些示例中,从多个神经网络中识别该神经网络组。该多个神经网络可包括神经网络的集合。因此,该识别可包括从神经网络的集合或“池”中识别该神经网络。在一些示例中,在操作S100中,通过提供主神经网络100并且从主神经网络的一个或多个部分提供子神经网络来识别神经网络组。例如,在具有3个通道(RGB)的16×16图像上操作的完整CNN可充当主神经网络,其中隐藏层具有10个通道,之后是全局池化操作和Softmax输出层。第一子神经网络可由该主神经网络的隐藏层的前4个通道提供,并且该第一子神经网络的输出取自主神经网络的Softmax输出层,其中零用于不存在的通道的输入。同样,第二子神经网络可由来自该主神经网络的隐藏层的不同组的4个通道提供,并且该第二子神经网络的输出取自主神经网络的Softmax输出层,其中零用于不存在的通道的输入。这样,布置成每个子神经网络的参数由该子神经网络和该主神经网络共享。
在一些示例中,在操作S100中,通过用现有层和/或附加层中的附加神经元增强初始子神经网络来识别神经网络组,以获得主神经网络,其中该初始子神经网络中的一些神经元由该子神经网络和该主神经网络共享。
在一些示例中,在操作S100中通过执行神经架构搜索来识别神经网络组。可采用各种神经架构搜索技术,包括但不限于随机搜索、模拟退火、进化方法、代理神经架构搜索、可微分的神经架构搜索等。当采用微分神经架构搜索时,在操作S130中计算的性能得分可通过使用每个神经网络的可微分性能模型针对相应硬件环境进行估计。可微分的性能模型可例如通过训练第二神经网络以估计该神经网络组中的每个神经网络的性能得分来提供。神经架构搜索技术可用于从神经网络的搜索空间或神经网络的各部分中识别主神经网络和子神经网络。识别操作S100可另选地或除此之外包括使该神经网络组中的神经网络之间共享的参数的数量的计数最大化。使共享参数的数量的计数最大化可减小该神经网络组中神经网络的大小。操作S100可任选地包括调整神经网络的超参数以便尝试选择更好的值。
设想了神经网络组的示例与图5所示的示例性神经网络组具有不同数量的子神经网络、神经网络中不同数量的层、神经网络中不同的层连接性以及具有不同架构的神经网络。这些神经网络通常可选自具有相同或不同架构的一系列可用神经网络。这些神经网络可例如选自具有CNN、RNN、GAN、自动编码器架构等的神经网络的搜索空间,并且不限于图5所示的深度前馈架构。
返回图3的方法,该方法从识别操作S100继续操作S110,其中将训练数据400输入到神经网络组中的每个神经网络100、神经网络200、神经网络300中。在操作S120中,使用基于在每个神经网络100、神经网络200、神经网络300的输出110、输出210、输出310处生成的输出数据与预期输出数据420之间的差值计算的目标函数410来调整每个神经网络100、神经网络200、神经网络300的参数,即,可训练参数。使用执行分类任务的神经网络的示例,预期输出数据420可表示训练数据的标签,并且操作S110和操作S120一起在一定程度上训练每个神经网络100、神经网络200、神经网络300以对该训练数据进行分类。
现在参考图6描述操作S110和S120,该图是示出根据本公开的一些方面的输入S110训练数据并使用目标函数410调整S120每个神经网络的参数的示例的示意图。图6包括图5的上部部分中所示的主神经网络100,并且图6包括子神经网络200和子神经网络300。如朝向图6的左侧所示,在操作S110中,将训练数据400输入到主神经网络100和子神经网络200、子神经网络300中的每一者中。来自每个神经网络的输出数据分别在输出110、输出210、输出310处生成。目标函数410确定在每个神经网络100、神经网络200、神经网络300的输出110、输出210、输出310处生成的输出数据与预期输出数据420之间的差值。该目标函数可由各种函数提供,包括例如均方误差、Huber损失或交叉熵。在操作S120中,可通过反向传播使用该目标函数的值来调整每个神经网络100、神经网络200、神经网络300的参数。通常对这些参数进行调整,以使该目标函数的值最小化。已知各种算法用于反向传播,包括随机梯度下降“SGD”、Momentum、Adam、Nadam、Adagrad、Adadelta、RMSProp和Adamax。
在一些示例中,通过在连续迭代中同时调整每个神经网络100、神经网络200、神经网络300的参数来执行调整操作S120。在一些示例中,通过在连续迭代中调整每个神经网络100、神经网络200、神经网络300的参数来执行调整操作S120,i)直到目标函数410的值满足停止标准,或者ii)进行预先确定的迭代次数。该停止标准可例如为目标函数410的值处于预先确定范围内。该预先确定范围指示神经网络组中的神经网络100、神经网络200、神经网络300中的每一者已被训练到一定程度。该训练可以是部分的或完全的。由部分训练产生的目标函数的值可给出神经网络用该训练数据训练的能力的指示。完全训练明显需要更多的时间,并且由完全训练产生的该目标函数的值给出经训练神经网络的最终准确性的指示。
在一些示例中,还基于在神经网络组中的每个神经网络100、神经网络200、神经网络300的输出110、输出210、输出310处生成的输出数据之间的差值来计算目标函数410。使用该差值作为指导该神经网络的参数的调整的附加约束可导致经训练的神经网络中的参数数量减少和/或在执行推断时延迟减少。这些神经网络的输出之间的差值可使用函数诸如均方误差、Huber损失或交叉熵来确定。
返回图3,该方法继续操作S130,其中使用经调整的参数为神经网络组中的每个神经网络100、神经网络200、神经网络300计算性能得分120、性能得分220、性能得分320。经调整的参数是由调整操作S120产生的参数,并且表示每个神经网络的部分或完全训练的参数。该性能得分表示每个神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中的性能。该硬件环境表示可在其中执行推断的处理器和/或存储器。该硬件环境可由技术特征诸如存储器的量和类型、多个处理器内核、处理速度、是否支持浮点处理等来定义。硬件环境的一个示例是Arm Cortex-M55,与Arm Cortex-M7相比,其特征在于Arm Helium矢量处理技术,而Arm Cortex-M7则没有。硬件环境的另一个示例是Arm Cortex-A55,其支持多达8个内核和4MB的共享三级缓存,而Arm Cortex-M55的单核具有高达64KB的数据缓存。
作为一些非限制性示例,可基于以下中的一者或多者来计算性能得分:
-神经网络组中的神经网络100、神经网络200、神经网络300共享的参数的数量的计数;
-相应神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中处理测试数据430中的延迟;
-相应神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中处理测试数据430中的处理利用率;
-相应神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中处理测试数据430中的触发器计数,即每秒浮点操作的数量;
-相应神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中处理测试数据430中的工作存储器利用率;
-相应神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中处理测试数据430中的存储器带宽利用率;
-相应神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中处理测试数据430中的能量消耗利用率;
-相应神经网络100、神经网络200、神经网络300在相应硬件环境130、硬件环境230、硬件环境330中的压缩比。
在一个示例中,使用经调整的参数来计算神经网络组中的每个神经网络100、神经网络200、神经网络300的性能得分120、性能得分220、性能得分320包括:响应于输入S110训练数据400,在生成输出数据期间将相应硬件环境130、硬件环境230、硬件环境330的模型应用于每个神经网络100、神经网络200、神经网络300。在该示例中,可使用将处理时间应用于每个神经网络中的每个参数或神经元的模型来估计响应于输入数据而从该神经网络生成输出的延迟。该模型同样可将存储器利用率应用于神经网络中的每个参数或神经元的处理,以便估计每个神经网络的存储器需求。低延迟和/或低存储器利用率可与高性能相关联。
在另一个示例中,使用经调整的参数计算神经网络组中的每个神经网络100、神经网络200、神经网络300的性能得分120、性能得分220、性能得分320包括:在相应硬件环境130、硬件环境230、硬件环境330的模拟中将测试数据430输入到每个神经网络100、神经网络200、神经网络300。这参考图7示出,该图是示出了根据本公开的一些方面的通过在相应硬件环境130、硬件环境230、硬件环境330的模拟中将测试数据430输入到每个神经网络100、神经网络200、神经网络300来计算S130针对主神经网络和针对两个子神经网络200、子神经网络300中的每一者的性能得分120、性能得分220、性能得分320的示例的示意图。图7示出了硬件环境130、硬件环境230、硬件环境330中的每一者,以及将测试数据430输入到相应硬件环境中的主神经网络100和子神经网络200、子神经网络300中的每一者中以生成相应的性能得分120、性能得分220、性能得分330。在该示例中,该模拟可例如将该神经网络可用的存储器的量和/或处理器内核的数量限制为每个硬件环境中可用的那些,从而得到相应硬件环境中的神经网络的性能得分,诸如延迟。
在一些示例中,该性能得分用于计算上述目标函数410。在这些示例中,性能得分120、性能得分220、性能得分320因此可影响在操作120中对每个神经网络100、神经网络200、神经网络300的参数的调整。在这些示例中,在操作S120中调整每个神经网络100、神经网络200、神经网络300的参数包括在连续迭代中调整这些参数,并且在每次迭代中计算每个神经网络100、神经网络200、神经网络300的性能得分120、性能得分220、性能得分320。在每次迭代中,还基于该神经网络组中的每个神经网络100、神经网络200、神经网络300的性能得分120、性能得分220、性能得分320,使用经调整的参数来计算目标函数410。这通过图3中的虚线箭头指示,其中在已经计算性能得分并将其值结合到目标函数410中之后,该目标函数的值用于调整每个神经网络的参数。可例如将表示例如延迟的性能得分结合到目标函数中,以便通过使高延迟增加目标函数410的输出来对高延迟进行罚分。如上所述,在操作S120中,通常调整每个神经网络的参数,以便使目标函数的值最小化。操作S120中的每个神经网络100、神经网络200、神经网络300的参数的调整因此尝试减小目标函数410的值,并且因此调整这些参数以便减小延迟。以这种方式将性能得分结合到目标函数410中有助于改善每个神经网络针对其相应硬件环境的训练。
无论该性能得分是否用于计算上述目标函数410,图3所示的方法都继续操作S140,其中通过将该神经网络组中的每个神经网络100、神经网络200、神经网络300的性能得分120、性能得分220、性能得分320,与使用经调整的参数为神经网络组中的每个神经网络100、神经网络200、神经网络300计算的损失函数的值组合来生成该神经网络组的组合得分。该组合得分提供该神经网络组中的神经网络100、神经网络200、神经网络300用于在硬件环境130、硬件环境230、硬件环境330的范围内处理训练数据的总体适用性的指示。可例如通过对性能得分和损失函数的值求和来生成组合得分。该性能得分和损失函数的值可另选地以其他方式组合,诸如通过将它们的值相乘等等。以示例的方式,这些硬件环境可包括ARM M类处理器诸如Arm Cortex-M55、ARM A类处理器诸如Arm Cortex-A78、以及“NPU”诸如Arm Ethos-U55。该组合得分提供神经网络100、神经网络200、神经网络300在整个硬件环境范围内处理训练数据的总体适用性的指示。
可针对神经网络组中的每个神经网络100、神经网络200、神经网络300计算损失函数的值:
-i)基于在每个神经网络100、神经网络200、神经网络300的输出110、输出210、输出310处生成的输出数据与预期输出数据420之间的差值;并且/或者
-ii)基于响应于将测试数据430输入到神经网络中而在每个神经网络100、神经网络200、神经网络300的输出110、输出210、输出310处生成的输出数据与期望的输出数据之间的差值。
就执行分类任务的神经网络而言,该损失函数的值表示该神经网络的准确性。该组合得分连同该神经网络组的参数可存储在例如图4所示的非暂态计算机可读存储介质560中。
返回图3,该方法继续操作S150,其中识别操作S100和输入操作S110和调整操作S120和计算操作S130以及生成S140操作重复两次或更多次迭代。该重复可例如执行少于十次、或数十次、或数百次、或数千次、或更多次迭代。在一些示例中,重复操作S150执行预先确定的迭代次数。在其他示例中,执行重复操作S150,直到在操作S140中确定的神经网络组的组合得分满足预先确定条件。该预先确定的条件可以是例如该组合得分超过或小于预先确定的值,或者在预先确定的范围内。这样,规定由重复操作S150生成的神经网络组中的至少一个神经网络中的神经网络足以适用于在硬件环境130、硬件环境230、硬件环境330的范围内处理训练数据。
继续参考图3,该方法继续操作S160,该操作包括从由重复S150生成的多组神经网络中选择S160神经网络组以用于基于每组神经网络的组合得分的值在多个硬件环境130、硬件环境230、硬件环境330中来处理数据。如上所述,该组合得分提供该神经网络组中的神经网络100、神经网络200、神经网络300用于在整个硬件环境范围内处理训练数据的总体适用性的指示。在一些示例中,高组合得分与高适合性相关,因此可以在操作S160中选择具有最高组合得分的网络组。在其他示例中,低组合得分与高适合性相关,因此可在操作S160中选择具有最低组合得分的网络组。这样,提供了用于在整个硬件环境范围内处理训练数据的最合适的神经网络组。
以上述方式提供的神经网络组的示例减轻了由于目标推断硬件环境和实际推断硬件环境之间的失配而导致较差的神经网络性能的风险。可通过使用此类示例性神经网络组来改善实际硬件环境中的推断,因为该神经网络组包括适合于不同硬件环境的神经网络。因此,客户端设备可从该神经网络组中选择最适合于执行推断的实际硬件环境的神经网络。此外,在此类示例中,由于该神经网络组中的神经网络包括共享参数,因此与具有完全独立参数的神经网络相比,该神经网络组的大小及其训练负担可减小。
如图3中通过虚线轮廓所示,上述方法可任选地继续操作S170。根据在上述操作S110和操作S120中执行的每个神经网络的调整参数的迭代次数,由操作S160提供的该神经网络组中的神经网络可被部分或完全训练。在操作S170中,可提供另外的训练以进一步优化每个神经网络的参数。操作S170包括通过将第二训练数据输入到该神经网络组中的每个神经网络100、神经网络200、神经网络300中来训练S170所选神经网络组中的每个神经网络100、神经网络200、神经网络300,以用于在相应硬件环境130、硬件环境230、硬件环境330中处理数据,并且使用基于每个神经网络100、神经网络200、神经网络300的输出110、输出210、输出310处生成的输出数据与预期输出数据之间的差值计算的第二目标函数来调整每个神经网络100、神经网络200、神经网络300的参数。如果该神经网络组中的神经网络被设计成执行分类任务,则预期输出数据可表示第二训练数据的标签。
如图3中通过虚线轮廓所示,上述方法还可任选地继续操作S180,并且其中部署所选择的神经网络组。参考图4,识别S100、输入S110、调整S120、计算S130、生成S140、重复S150和选择S160的操作可由第一处理系统550执行,并且在操作S180中,将所选择的神经网络组部署到第二处理系统6501.k。该神经网络组可任选地在其在操作S180中部署之前被压缩。在操作S180中,所选择的神经网络组的该部署可以通过任何数据通信装置(包括通过有线或无线数据通信)来进行,并且可以例如经由互联网、以太网,或者通过借助便携式计算机可读存储介质(诸如USB存储器设备、光盘或磁盘等)传输数据来进行。然后可使用第二处理系统6501.k对来自部署的神经网络组的一个或多个神经网络的新数据执行推断。
图4所示的第一处理系统550可以是例如基于云的处理系统、或基于服务器的处理系统或基于主机的处理系统,并且在一些示例中,其一个或多个处理器可包括一个或多个神经处理器或神经处理单元“NPU”、一个或多个CPU或一个或多个GPU。还可以设想,第一处理系统550可由分布式计算系统提供。第一处理系统可与一个或多个非暂态计算机可读存储介质560通信,该一个或多个非暂态计算机可读存储介质共同存储用于执行该方法的指令、表示由该方法生成的神经网络组的数据、它们的参数值、它们的组合得分、训练数据400、来自该训练数据的预期输出数据420、第二训练数据、来自第二训练数据的预期输出数据、测试数据430等。
图4所示的第二处理系统6501..k可包括一个或多个处理器。该一个或多个处理器可与一个或多个非暂态计算机可读存储介质6601..k进行通信。一个或多个非暂态计算机可读存储介质6601..k共同地存储用于执行下文所述的另一种方法的指令,并且还可存储表示由第一处理系统部署的神经网络组的数据、其参数值等。每个第二处理系统6501..k可形成设备6001..k的一部分,该设备可为客户端设备,如下文所更详述。
图4的下部部分示出了可与系统500通信的多个设备6001..k。每个设备6001..k可例如为客户端设备或远程设备或移动设备。每个设备6001..k可以是例如以下设备:所谓的边缘计算设备或物联网“IOT”设备,诸如膝上型计算机、平板电脑、移动电话;或“智能电器”,诸如智能门铃、智能冰箱、家庭助理、安全相机、声音检测器或振动检测器或大气传感器;或“自主设备”,诸如车辆、或无人机或机器人等。每个设备6001..k和系统500之间的通信可经由任何数据通信装置,包括经由有线或无线数据通信,并且可经由互联网、以太网等。如上所述,每个设备6001..k包括第二处理系统6501..k,并且也可包括一个或多个非暂态计算机可读存储介质6601..k
每个设备6001..k适用于识别用于在硬件环境中处理数据的神经网络,并且每个设备包括第二处理系统650,该第二处理系统包括被配置为执行方法的一个或多个处理器,该方法包括:
-i)接收S200根据上述方法提供的神经网络组,该神经网络组包括表示该神经网络组中的每个神经网络100、神经网络200、神经网络300的目标硬件环境130、硬件环境230、硬件环境330和/或硬件需求的元数据;以及
-基于该元数据从该神经网络组中选择S210神经网络以处理数据;
-或者
-ii)接收S200根据上述方法提供的神经网络组;
-基于响应于将测试数据430输入到相应神经网络中并且在硬件环境130、硬件环境230、硬件环境330中用相应神经网络处理测试数据430而生成的相应神经网络的输出来计算S220神经网络组中的一个或多个神经网络的性能得分;以及
-从该神经网络组中选择S230神经网络以基于该性能得分的值来处理数据。
因此,在i)中,该元数据由第二处理系统650用于从该神经网络组中选择最合适的神经网络,以用于在第二处理系统650的硬件环境中处理数据。在ii)中,由第二处理系统650计算性能得分,以便从该神经网络组中选择最合适的神经网络,以用于在第二处理系统650的硬件环境中处理数据。该性能得分可例如为上述性能得分之一。
然后,设备6001..k的第二处理系统6501..k可用于在第二处理系统6501..k的硬件环境中用所选择的神经网络处理新的输入数据。由第二处理系统6501..k处理的新数据可以是任何类型的数据,诸如图像数据和/或音频数据和/或振动数据和/或视频数据和/或文本数据和/或LiDAR数据和/或数字数据。该新数据可经由任何形式的数据通信诸如有线或无线数据通信来接收,并且可经由互联网、以太网或通过借助便携式计算机可读存储介质(诸如USB存储设备、光盘或磁盘等)传输数据来接收。在一些示例中,数据是从传感器诸如相机、麦克风、运动传感器、温度传感器、振动传感器等接收的。在一些示例中,该传感器可包括在设备6001..k内。
因此,每个设备6001..k可执行识别用于在硬件环境中处理数据的神经网络的计算机实现的方法,该方法包括:
-i)接收S200根据权利要求1所述的方法提供的神经网络组,该神经网络组包括表示该神经网络组中的每个神经网络100、神经网络200、神经网络300的目标硬件环境130、硬件环境230、硬件环境330和/或硬件需求的元数据;以及
-基于该元数据从该神经网络组中选择S210神经网络以处理数据;
或者
-ii)接收S200根据权利要求1所述的方法提供的神经网络组;以及
-基于响应于将测试数据430输入到相应神经网络中并且在硬件环境130、硬件环境230、硬件环境330中用相应神经网络处理测试数据430而生成的相应神经网络的输出来计算S220神经网络组中的一个或多个神经网络的性能得分;以及
-从该神经网络组中选择S230神经网络以基于该性能得分的值来处理数据。
在一些示例中,由设备6001..k执行的方法还可包括:
-在硬件环境130、硬件环境230、硬件环境330中用所选择的神经网络处理S240输入数据,并且响应于为满足指定条件的处理而计算的性能得分,在硬件环境130、硬件环境230、硬件环境330的多个处理器之间动态地移位S250神经网络对输入数据的处理。
这样,可实现对设备6001..k的处理能力的更优化的使用。
由设备6001..k执行的上述方法的示例,或者由系统500执行的方法可由非暂态计算机可读存储介质提供,该非暂态计算机可读存储介质包括存储在其上的一组计算机可读指令,该组计算机可读指令当由至少一个处理器执行时使得该至少一个处理器执行该方法。换句话讲,上文所述方法的示例可由计算机程序产品提供。计算机程序产品可由专用硬件或能够与适当软件合作地运行软件的硬件提供。当由处理器提供时,这些操作可由单个专用处理器、单个共享处理器或处理器中的一些处理器可共享的多个单独处理器提供。此外,术语“处理器”或“控制器”的明确使用不应被理解为仅是指能够运行软件的硬件,并且可隐含地包括但不限于数字信号处理器“DSP”硬件、GPU硬件、NPU硬件、用于存储软件的只读存储器“ROM”、随机存取存储器“RAM”、NVRAM等。此外,本公开的具体实施可采用可从计算机可用存储介质或计算机可读存储介质访问的计算机程序产品的形式,该计算机程序产品提供程序代码以供计算机或任何指令执行系统使用或与其结合使用。出于本说明书的目的,计算机可用存储介质或计算机可读存储介质可以是可包括、存储、传送、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用的任何装置。介质可以是电子、磁、光学、电磁、红外或半导体系统或设备或传播介质。计算机可读介质的示例包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器“RAM”、只读存储器“ROM”、刚性磁盘和光盘。光盘的当前示例包括光盘只读存储器“CD-ROM”、光盘读/写“CD-R/W”、Blu-RayTM和DVD。
上述示例应被理解为对本公开的例示性说明。还设想了另外的具体实施。例如,关于方法所述的具体实施还可以计算机程序产品、计算机可读存储介质、系统或设备来实现。因此,应当理解,关于任何一个具体实施所述的特征可单独使用,或与所述的其他特征结合使用,并且还可与另一个具体实施的一个或多个特征或与其他具体实施的组合结合使用。此外,在不脱离所附权利要求中限定的本公开的范围的情况下,也可采用上文未描述的等同物和修改形式。权利要求中的任何附图标记不应被理解为限制本公开的范围。

Claims (10)

1.一种提供用于在多个硬件环境中处理数据的神经网络组的计算机实现的方法,所述方法包括:
识别(S100)神经网络组,所述神经网络组包括主神经网络(100)和一个或多个子神经网络(200,300),所述神经网络组中的每个神经网络(100,200,300)包括多个参数,并且其中每个子神经网络的一个或多个参数由所述子神经网络和所述主神经网络(100)共享;
将训练数据(400)输入(S110)到所述神经网络组中的每个神经网络(100,200,300)中,并且使用目标函数(410)调整(S120)每个神经网络(100,200,300)的所述参数,所述目标函数基于在每个神经网络(100,200,300)的输出(110,210,310)处生成的输出数据与预期输出数据(420)之间的差值来计算;
使用所述经调整的参数计算(S130)所述神经网络组中的每个神经网络(100,200,300)的性能得分(120,220,320),所述性能得分表示每个神经网络(100,200,300)在相应硬件环境(130,230,330)中的性能;
通过将所述神经网络组中的每个神经网络(100,200,300)的所述性能得分(120,220,320)与使用所述经调整的参数为所述神经网络组中的每个神经网络(100,200,300)计算的损失函数的值组合来生成(S140)所述神经网络组的组合得分;
对于两次或更多次迭代,重复(S150)所述识别(S100)和所述输入(S110)和所述调整(S120)和所述计算(S130)以及所述生成(S140);以及
基于每组神经网络的所述组合得分的所述值,从由所述重复(S150)生成的多组神经网络中选择(S160)用于在所述多个硬件环境(130,230,330)中处理数据的神经网络组。
2.根据权利要求1所述的计算机实现的方法,其中所述调整(S120)每个神经网络(100,200,300)的所述参数包括在连续迭代中调整所述参数,并且其中所述计算(S130)每个神经网络(100,200,300)的性能得分(120,220,320)在每次迭代中执行,并且其中还基于使用所述经调整的参数的所述神经网络组中的每个神经网络(100,200,300)的所述性能得分(120,220,320)在每次迭代中来计算所述目标函数(410)。
3.根据权利要求1所述的计算机实现的方法,其中所述神经网络组中的每个神经网络(100,200,300)的所述性能得分(120,220,320)基于以下中的一者或多者来计算:
由所述神经网络组中的所述神经网络(100,200,300)共享的参数的数量的计数;
相应神经网络(100,200,300)在所述相应硬件环境(130,230,330)中处理测试数据(430)的延迟;
所述相应神经网络(100,200,300)在所述相应硬件环境(130,230,330)中处理测试数据(430)的处理利用率;
所述相应神经网络(100,200,300)在所述相应硬件环境(130,230,330)中处理测试数据(430)的触发器计数;
所述相应神经网络(100,200,300)在所述相应硬件环境(130,230,330)中处理测试数据(430)的工作存储器利用率;
所述相应神经网络(100,200,300)在所述相应硬件环境(130,230,330)中处理测试数据(430)的存储器带宽利用率;
所述相应神经网络(100,200,300)在所述相应硬件环境(130,230,330)中处理测试数据(430)的能量消耗利用率;
所述相应神经网络(100,200,300)在所述相应硬件环境(130,230,330)中的压缩比。
4.根据权利要求1所述的计算机实现的方法,其中使用所述经调整的参数来计算(S130)所述神经网络组中的每个神经网络(100,200,300)的性能得分(120,220,320)包括:
响应于所述输入(S110)训练数据(400),在所述生成输出数据期间将所述相应硬件环境(130,230,330)的模型应用于每个神经网络(100,200,300);并且/或者
在所述相应硬件环境(130,230,330)的模拟中将测试数据(430)输入到每个神经网络(100,200,300)。
5.根据权利要求1所述的计算机实现的方法,其中针对所述神经网络组中的每个神经网络(100,200,300)计算所述损失函数的所述值:
i)基于在每个神经网络(100,200,300)的所述输出(110,210,310)处生成的所述输出数据与所述预期输出数据(420)之间的差值;并且/或者
ii)基于响应于将测试数据(430)输入到所述神经网络中而在每个神经网络(100,200,300)的所述输出(110,210,310)处生成的输出数据与期望的输出数据之间的差值。
6.根据权利要求1所述的计算机实现的方法,所述方法包括:
通过将第二训练数据输入到所述神经网络组中的每个神经网络(100,200,300)中来训练(S170)所选择的神经网络组中的每个神经网络(100,200,300)以用于在所述相应的硬件环境(130,230,330)中处理数据,以及使用基于在每个神经网络(100,200,300)的输出(110,210,310)处生成的输出数据与预期输出数据之间的差值计算的第二目标函数来调整每个神经网络(100,200,300)的所述参数。
7.根据权利要求1所述的计算机实现的方法,其中每组神经网络中的最低神经网络的所述参数由所述神经网络组中的所有神经网络共享。
8.一种识别用于在硬件环境中处理数据的神经网络的计算机实现的方法,所述方法包括:
i)接收(S200)根据权利要求1所述的方法提供的神经网络组,所述神经网络组包括表示所述神经网络组中的每个神经网络(100,200,300)的目标硬件环境(130,230,330)和/或硬件需求的元数据;以及
基于所述元数据从所述神经网络组中选择(S210)神经网络以处理数据;
或者
ii)接收(S200)根据权利要求1所述的方法提供的神经网络组;以及
基于响应于将测试数据(430)输入到所述相应神经网络中并在所述硬件环境(130,230,330)中用所述相应神经网络处理所述测试数据(430)而生成的所述相应神经网络的输出,计算(S220)所述神经网络组中的一个或多个神经网络的性能得分;以及
从所述神经网络组中选择(S230)神经网络以基于所述性能得分的值来处理数据。
9.根据权利要求8所述的计算机实现的方法,包括在所述硬件环境(130,230,330)中用所述所选择的神经网络处理(S240)输入数据,以及响应于为满足指定条件的所述处理计算的性能得分,在所述硬件环境(130,230,330)的多个处理器之间动态地移位(S250)所述神经网络对所述输入数据的处理。
10.根据权利要求1所述的计算机实现的方法,其中所述识别(S100)神经网络组包括:
i)执行神经架构搜索;或者
ii)执行微分神经架构搜索;并且其中所述计算(S130)所述神经网络组中的每个神经网络(100,200,300)的性能得分(120,220,320)包括使用每个神经网络(100,200,300)的可微分性能模型来估计所述神经网络组中的每个神经网络(100,200,300)的性能得分(120,220,320)以用于所述相应硬件环境(130,230,330)。
CN202111221355.XA 2020-10-21 2021-10-20 提供神经网络 Pending CN114386565A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/076,392 2020-10-21
US17/076,392 US20220121927A1 (en) 2020-10-21 2020-10-21 Providing neural networks

Publications (1)

Publication Number Publication Date
CN114386565A true CN114386565A (zh) 2022-04-22

Family

ID=81185374

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111221355.XA Pending CN114386565A (zh) 2020-10-21 2021-10-20 提供神经网络

Country Status (3)

Country Link
US (1) US20220121927A1 (zh)
KR (1) KR20220052844A (zh)
CN (1) CN114386565A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102587263B1 (ko) 2023-02-27 2023-10-12 주식회사 노타 인공지능 기반의 모델의 벤치마크 결과를 제공하기 위한 방법 및 디바이스

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832466A (en) * 1996-08-12 1998-11-03 International Neural Machines Inc. System and method for dynamic learning control in genetically enhanced back-propagation neural networks
US11720813B2 (en) * 2017-09-29 2023-08-08 Oracle International Corporation Machine learning platform for dynamic model selection
US11610117B2 (en) * 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
KR102647690B1 (ko) * 2020-08-21 2024-03-14 주식회사 딥엑스 최적화된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛

Also Published As

Publication number Publication date
KR20220052844A (ko) 2022-04-28
US20220121927A1 (en) 2022-04-21

Similar Documents

Publication Publication Date Title
KR102644947B1 (ko) 뉴럴 네트워크를 위한 트레이닝 방법, 뉴럴 네트워크를 이용한 인식 방법 및 그 장치들
CN109754078B (zh) 用于优化神经网络的方法
US11803744B2 (en) Neural network learning apparatus for deep learning and method thereof
US20210089925A1 (en) Training method for quantizing the weights and inputs of a neural network
JP6859332B2 (ja) 選択的バックプロパゲーション
US20210019630A1 (en) Loss-error-aware quantization of a low-bit neural network
KR102570706B1 (ko) 분류를 위한 강제된 희소성
US11585918B2 (en) Generative adversarial network-based target identification
US11068747B2 (en) Computer architecture for object detection using point-wise labels
US11593619B2 (en) Computer architecture for multiplier-less machine learning
US20230073669A1 (en) Optimising a neural network
CN115358305A (zh) 一种基于边界样本迭代生成的增量学习鲁棒性提升方法
KR20230088714A (ko) 개인화된 뉴럴 네트워크 프루닝
US11003909B2 (en) Neural network trained by homographic augmentation
CN114386565A (zh) 提供神经网络
WO2020195940A1 (ja) ニューラルネットワークのモデル縮約装置
WO2021158830A1 (en) Rounding mechanisms for post-training quantization
EP3971782A2 (en) Neural network selection
KR102191346B1 (ko) 버스트 스파이크에 기반한 스파이킹 신경망 생성 방법 및 스파이킹 신경망 기반 추론 장치
KR20230069010A (ko) 정규화를 시행하는 딥 뉴럴 네트워크 학습 장치 및 그 방법
KR102090109B1 (ko) 학습 및 추론 장치 및 그 방법
WO2022242076A1 (en) Methods and systems for compressing trained neural network and for improving efficiently performing computations of compressed neural network
Ramadhan et al. Catbreedsnet: An Android Application for Cat Breed Classification Using Convolutional Neural Networks
US20230289563A1 (en) Multi-node neural network constructed from pre-trained small networks
Awad et al. A Comparison Review of Optimizers and Activation Functions For Convolutional Neural Networks

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