首页> 中国专利> 不适当神经网络输入检测和处理

不适当神经网络输入检测和处理

摘要

描述了用于执行不适当输入数据检测的系统和方法。在一个实例中,一种系统包括:硬件电路,所述硬件电路被配置成接收输入数据并且基于所述输入数据执行神经网络的计算以生成计算输出;以及不适当输入检测模块,所述不适当输入检测模块被配置成:确定所述硬件电路的所述计算输出与参考输出之间的关系;基于所述关系确定所述输入数据不适当;并且基于确定所述输入数据不适当来执行动作。

著录项

  • 公开/公告号CN113196303A

    专利类型发明专利

  • 公开/公告日2021-07-30

    原文格式PDF

  • 申请/专利权人 亚马逊技术股份有限公司;

    申请/专利号CN201980081995.X

  • 申请日2019-12-06

  • 分类号G06N3/04(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人钱慰民;张鑫

  • 地址 美国华盛顿州

  • 入库时间 2023-06-19 12:02:28

说明书

背景技术

人工神经网络是具有基于生物神经网络的架构的计算系统。可以使用训练数据对人工神经网络进行训练,以了解如何针对应用执行某个计算任务。经过训练的人工神经网络然后可以执行计算任务以例如由输入数据生成推断。可以基于应用利用/解释推断结果。推断结果的实用性可能取决于输入数据与训练数据之间的不匹配程度。

附图说明

将参考附图根据本公开描述各个实施例,在附图中:

图1展示了使用本文所公开的技术处理数据的分类器装置的实例;

图2A和2B是展示了根据本公开的某些方面的使用本文所公开的技术的预测模型和计算的简化框图;

图3A和3B展示了根据本公开的某些方面的由图2A和2B的预测模型生成的输出的分布的实例;

图4A-4D展示了根据本公开的某些方面的由神经网络处理器支持的不适当输入检测的实例神经网络处理器和操作;

图5A-5C展示了根据本公开的某些方面的由神经网络处理器支持的不适当输入检测的另一个实例神经网络处理器和操作;

图6展示了根据本公开的某些方面的检测和处理神经网络的不适当输入数据的实例方法;并且

图7展示了根据本公开的某些方面的计算装置的实例。

具体实施方式

本公开的实例涉及神经网络处理,并且更具体地涉及可以检测和处理硬件实施的神经网络的不适当输入数据的系统。如本文所使用的,“不适当输入数据”可以是指偏离用于针对推断目标训练神经网络的训练数据的输入数据,其中所述偏差很大以至于基于输入数据的神经网络的推断操作没有实现推断目标。

本公开的实例包含一种方法。所述方法包括:基于从应用接收到的输入数据来执行计算以生成神经网络层的中间输出;基于对所述中间输出应用激活函数处理来生成所述神经网络层的输出;以及接收所述神经网络层的参考输出的平均值和标准偏差。所述方法进一步包括,对于所述神经网络层的所述输出中的每个输出:确定所述每个输出与所述平均值之间的差异;将所述差异与基于所述标准偏差的预定乘法器来确定一个或多个阈值进行比较;以及基于所述比较的结果来确定所述每个输出是否是异常值输出。所述方法进一步包括:确定所述异常值输出的总计数;基于所述总计数与第二阈值之间的比较来确定所述输入数据不适当;以及基于确定所述输入数据不适当来执行以下中的至少一个:向所述应用程序传输通知,或暂停随后的神经网络层的计算。

在一个方面,所述方法进一步包括:从所述应用接收指示所述预定乘法器的配置数据。

在一个方面,所述神经网络层的所述参考输出是通过处理由包含所述神经网络层的神经网络设定的训练数据集获得的。

在一个方面,所述方法进一步包括基于多个神经网络层的所述异常值输出的总数来确定所述输入数据不适当。

本公开的实例包含系统。所述系统包括:硬件电路,所述硬件电路被配置成接收输入数据并且基于所述输入数据执行神经网络的计算以生成计算输出;以及不适当输入检测模块,所述不适当输入检测模块被配置成:确定所述硬件电路的所述计算输出与参考输出之间的关系;基于所述关系确定所述输入数据不适当;并且基于确定所述输入数据不适当来执行动作。

在一些方面,所述输入数据与用于训练所述神经网络的训练数据集偏离至少预定裕量。

在一些方面,所述参考输出是由所述神经网络基于对所述训练数据集进行处理生成的。

在一些方面,所述硬件电路包括:算术电路,所述算术电路被配置成执行算术运算以生成中间输出;以及激活函数电路,所述激活函数电路被配置成对所述中间输出应用激活函数处理以生成所述计算输出。

在一些方面,所述不适当输入检测模块被配置成基于将所述计算输出与关于所述参考输出的平均值和标准偏差的一个或多个阈值进行比较来确定所述计算输出与所述参考输出之间的所述关系。

在一些方面,所述不适当输入检测模块被配置成对于所述计算输出中的每个计算输出:确定所述计算输出中的所述每个计算输出与所述平均值之间的差异,以及基于将所述差异与基于所述标准偏差的预定倍数的第一阈值进行比较来确定所述计算输出中的所述每个计算输出是否是异常值输出。所述不适当输入检测模块被进一步配置成确定所述异常值输出的计数,并且基于将所述计数与第二阈值进行比较来确定所述输入数据不适当。

在一些方面,所述不适当输入检测电路被配置成从提供所述输入数据的应用程序接收检测配置信息;并且其中所述检测配置信息包含所述第一阈值和所述第二阈值的定义。

在一些方面,所述神经网络包括多个神经网络层。所述不适当输入检测电路被配置成基于所述检测配置信息来基于所述多个神经网络层中的一个神经网络层的所述计算输出中的所述异常值输出的所述计数确定所述输入数据不适当。

在一些方面,基于所述检测配置信息,所述不适当输入检测模块被配置成基于所述一个神经网络层在所述神经网络内的位置来确定所述输入数据不适当。

在一些方面,所述不适当输入检测模块被配置成:确定所述计算输出的第一统计参数;接收所述参考输出的第二统计参数;以及基于将所述第一统计参数与所述第二统计参数进行比较来确定所述计算输出与所述参考输出之间的所述关系。

在一些方面,所述神经网络包括多个神经网络层。所述不适当输入检测模块被配置成:确定所述多个神经网络层中的每个神经网络层的所述计算输出的平均值和标准偏差;以及生成所述每个神经网络层的所述计算输出的所述平均值和所述标准偏差的记录。

在一些方面,所述不适当输入检测模块被配置成执行所述动作,所述动作包括以下中的至少一个:向使用所述硬件电路的所述计算输出的应用程序传输错误通知,或暂停所述硬件电路处所述神经网络层的计算。

在一些方面,所述硬件电路是神经网络处理器的一部分。所述不适当输入检测模块实施与所述神经网络处理器介接的应用。

本公开的实例包含一种方法。所述方法包括:从硬件电路接收神经网络的基于由应用程序提供的输入数据的计算输出;确定所述硬件电路的所述计算输出与所述神经网络的参考输出之间的关系,所述参考输出是通过由所述神经网络处理训练数据集来生成的;基于所述关系确定所述输入数据不适当;以及基于确定所述输入数据不适当来执行动作。

在一些方面,所述方法进一步包括接收所述参考输出的分布的平均值和标准偏差。确定所述硬件电路的所述计算输出与所述参考输出之间的所述关系包括:确定所述计算输出中的每个计算输出与所述平均值之间的差值;以及基于将所述差异与源自所述标准偏差的阈值进行比较来确定所述输入数据不适当。

在一些方面,所述动作包括以下中的至少一个:向所述应用程序传输错误通知,或暂停所述硬件电路处所述神经网络的计算。

人工神经网络(下文中为“神经网络”)可以包含多个处理节点。处理节点可以分成包含例如输入层、多个中间层(也称为隐藏层)和输出层的层。输入层的每个处理节点接收输入集的元素,并且用权重缩放元素以指示元素对输出的影响程度。中间层中的每个处理节点可以生成缩放元素的总和作为中间输出,并且然后通过对中间输出应用激活函数来生成(中间层的)输出。中间层的输出可以表示可以有助于神经网络的最终输出的较低水平的决策(例如,是否发现特征),所述决策可以由随后的中间层或随后的输出层处理以生成人工神经网络的最终输出/决策。

人工神经网络可以通过训练数据集来训练以生成决策,其中训练数据基于做出决策的推断目标被配置。作为一个实例,可以针对从猫的图像识别特定的猫的推断目标对人工神经网络进行训练,并且训练数据可以包含所述猫和其它猫的一组图像。作为另一个实例,可以针对从人声的音频信号识别人的声音的推断目标对人工神经网络进行训练,并且训练数据可以包含所述人的声音样品和其它人的声音样品。在两个实例中,通过训练,神经网络中的权重可以用使经过训练的神经网络由输入数据生成正确推断的可能性最大化的目标进行更新。

然而,神经网络生成正确推断的可能性可能取决于神经网络接收适当的输入数据。如果向神经网络提供不适当输入数据,则神经网络仍然可以生成推断结果,但是基于不适当输入数据的推断操作不满足推断目标。参考上文所描述的实例,可以利用一组猫的图像训练神经网络以从猫的图像识别特定的猫,但是然后向经过训练的神经网络输入狗的图像来生成推断结果。此外,可以利用一组人的声音样品训练神经网络以从人的声音的音频信号识别人的声音,但是然后向经过训练的神经网络输入非人音信号来生成推断结果。在两种情况中,输入数据不是神经网络被训练处理的数据类型,并且神经网络的推断操作没有实现推断目标。

目前,神经网络处理器不具有检测不适当输入数据或信号传递推断操作基于不适当数据的能力。因此,使用推断结果的应用没有用于确定推断结果的有效性的信息,并且可能基于无效的推断结果执行操作。例如,应用可以自动将视频馈送的狗的图像馈送到经过训练以从猫的图像识别猫的神经模型,接收狗的图像包含猫的推断结果并且向应用的用户指示检测到猫。因此,在没有意识到推断结果是基于不适当输入数据的情况下,用户可以使用或以其它方式依赖于推断结果。这样可能不仅降低了神经网络推断操作的实用性而且降低了用户体验。

本公开的实例涉及神经网络处理,并且更具体地涉及可以检测和处理硬件实施的神经网络的不适当输入数据的系统。在一些实例中,所述系统包括硬件电路,所述硬件电路被配置成接收来自应用的输入数据并且基于所述输入数据执行神经网络的计算以生成神经网络输出。所述系统进一步包括不适当输入检测电路,所述不适当输入检测电路被配置成确定硬件电路的神经网络输出与参考神经网络输出之间的关系。参考神经网络输出可以表示具有训练数据作为输入的神经网络的输出。所述系统可以基于比较结果和基于可配置的检测标准来检测输入数据不适当,并且基于所述检测执行一个或多个动作。所述动作可以包含例如向应用程序传输不适当输入数据的通知,暂停硬件电路处的神经网络的计算等。

与没有检测或信号传递不适当输入数据的能力的现有的神经网络处理器相比,本公开的实例使得能够检测到不适当输入数据。在一些实例中,将把不适当输入数据通知到的应用(和/或操作应用的用户)使用户能够意识到推断操作中的潜在限制并对推断输出的可靠性作出判断。此外,在一些实例中,在检测到不适当输入数据时,系统还可以暂停神经网络计算。此类布置可以降低在无效的推断操作时浪费宝贵的神经网络处理资源的可能性,这可以提高神经网络处理资源的管理和利用。进一步地,不适当输入数据的检测可以基于可配置的检测标准,并且检测标准可以针对不同的应用、使用情况和/或不同的用户独立地配置。这允许不适当输入数据检测变得更加灵活并且适应性更强,从而可以提高神经网络处理的实用性以及用户体验。

在本文的说明中,描述了各个实施例。出于解释的目的,阐述了具体配置和细节,以便提供对实施例的透彻理解。然而,对于本领域的技术人员来说还将显而易见的是,可以在没有具体细节的情况下实践实施例。此外,可以省略或简化众所周知的特征以免混淆正在描述的实施例。

图1展示了使用本文所公开的技术处理数据的实例分类器装置100。分类器装置100可以是例如操作软件应用程序102和预测模型103以预测包含在数据序列中的信息并且基于预测执行预定功能的计算装置。例如,分类器装置100可以是提供用于从图像中标识某些对象(例如,文本、人等)的图像识别服务的一部分。应理解,图像识别服务仅作为说明性实例提供,并且本文所公开的技术可以用于其它数据处理应用,包含例如基于文本的数据处理(例如,搜索查询的处理)、音频数据处理等。此外,分类器装置100可以操作许多不同预测模型以并行处理或在不同的时间处理不同的输入数据。

在一些实例中,可以在多租户计算服务系统中提供图像识别服务。多租户计算服务系统通常可以包含多个服务器,所述多个服务器可以托管数据并且由多个客户端或组织用于运行实例,如虚拟机实例或裸机实例(例如,直接在服务器硬件上运行的操作系统)。在大多数实例中,如在裸机或虚拟机实例中,可以将多租户计算服务系统在客户端需要时分配给客户端,并且在客户端不再需要时停止使用,使得可以将资源重新分配给其它客户端。在本公开中,术语“租户”、“客户端”和“顾客”可以互换使用,但是此类术语不一定意味着存在任何特定的业务布置。术语“实例”可以指例如直接在服务器硬件上执行或作为虚拟机执行的实例。不同类型的实例通常对应于不同的硬件功能和/或硬件布置(例如,不同数量的可用存储器和/或处理硬件)。在图1的实例中,多租户计算服务系统可以在客户端需要时提供图像识别服务,并且在客户端不再需要时停止使用,使得可以将支持图像识别服务的资源(例如,对软件应用程序102的访问和用于处理软件应用程序102的底层硬件资源)重新分配给其它客户端。不同的客户端(或一个客户端)可能要求应用程序102使用包含预测模型103的相同或不同的预测模型执行对不同输入数据的处理。

在图1的实例中,软件应用程序102可以接收来自用户的图像104的像素数据。图像104可以包含像素阵列。软件应用程序102可以对像素数据执行分析,并且预测在图像104中描绘的一个或多个对象106。分析可以包含例如将像素数据与预定的特征数据集进行比较。预定特征数据可以包含与一组预定视觉图像特征(例如鼻子对象、嘴巴对象等)相关联的数据。预定特征数据还可以包含与非视觉图像特征或视觉图像特征和非视觉图像特征组合相关联的数据。如将在下文更详细地论述的,软件应用程序102可以采用预测模型103以基于图像104的像素数据来计算一组评分。所述组评分可以表实例如图像104包含由特征数据表示的图像特征的可能性。软件应用程序102然后可以基于评分确定关于图像104的内容的其它信息。例如,基于评分,软件应用程序102可以确定图像104是例如熊猫、猫或其它对象的图像。本公开提供了允许在操作预测模型103的速度与精确度之间实现权衡的技术的实例。

预测模型103可以呈人工神经网络的形式。人工神经网络可以包含多个处理节点,其中每个处理节点被配置成处理输入像素数据的一部分,或者被配置成进一步处理来自其它处理节点的中间输出。图1展示了使用本文所公开的技术的预测模型103的实例。在图1中,预测模型103可以是多层神经网络如深度神经网络(DNN)、卷积神经网络(CNN)等。预测模型103可以包含输入层207、包含中间层209和211的一组中间层以及输出层(图2A中未示出)。应理解,预测模型103还可以包含其它不同类型的神经网络,包含例如长短期记忆(LSTM)、多层感知器(MTP)、多尺度密集网络(MSDNET)等。

层207可以处理表示图像104的不同部分的像素数据。例如,在图2A的实例中,层207可以处理图像204的像素数据。层207的每个处理节点被分配为接收与图像104内的预定像素相对应的像素值(例如,x

层209可以处理来自层207的经缩放输出以生成一组中间输出。例如,假设层209的处理节点210a连接到层207中的n个处理节点,则处理节点210a可以基于以下等式来生成从层207接收到的经缩放输出的总和:

此处,sum

在预测模型103是CNN的情况下,层209的每个处理节点可以基于对来自层207的一组处理节点的像素值的缩放来生成中间输出。中间输出可以表示一组像素值与包括权重值的滤波器之间的卷积结果。图2B展示了层209可以执行的卷积运算的实例。在图2B中,滤波器230可以包含权重的二维阵列。滤波器230中的权重可以表示要从图像中检测到的某些特征的像素的空间分布。所述二维阵列的高度可以是R行并且宽度可以是S列,并且通常小于高度为H像素和宽度为W像素的输入图像。可以将每个权重映射到像素值的具有相同R行和S列的矩形块中的像素。层209的处理节点(例如,处理节点210a)可以从输入层207的一组处理节点接收与来自输入图像的像素的第一矩形块相对应的像素值的组240,并且根据等式1基于对滤波器230的每个权重与组240中的每个对应像素之间的乘法结果的求和来生成卷积输出242,从而生成由滤波器230表示的矩阵与由组240表示的矩阵之间的点积。层209的另一个处理节点还可以从输入层207的另一组处理节点中接收与来自输入图像的像素的第二矩形块相对应的像素值的组244,并且根据等式1基于对滤波器230的每个权重与组244中的每个对应像素之间的乘法结果的求和生成卷积输出246,从而生成滤波器230的矩阵与由组240表示的矩阵之间的点积。在一些实例中,图2B中的每个卷积输出(例如,卷积输出242、卷积输出346等)可以对应于层209的处理节点的输出。在一些实例中,输入图像中的像素数据可以被称为用于指示像素由对应于某个或某些特征的相同滤波器(或相同滤波器组)处理的输入特征图。卷积输出可以被称为用于指示输出是用滤波器处理输入特征图的结果的输出特征图。

如图2B中所示出的,卷积运算可以被布置在滑动窗口中,使得第二矩形块与输入图像中的第一矩形块重叠或者以其它方式与其相邻。例如,在图2B的实例中,D可以是每个卷积运算的滑动窗口的步幅距离(按像素计),使得与组244相对应的像素块可以位于距与组240相对应的像素块的距离D(用像素表示)处,并且下一像素块也可以位于距组244相同的距离D处。层209的其它处理节点也可以接收与其它矩形块相对应的像素组并且生成其它中间输出。卷积输出可以是卷积输出阵列的一部分。与输入图像相比,卷积输出阵列可以具有较小的高度和较小的宽度。卷积输出的矩形块可以被进一步分组,并且可以在卷积输出组与另一组滤波器权重之间的层211处执行卷积运算,以生成另一组卷积输出。

返回参考图2A,层209的一个处理节点可以被配置成生成一个卷积输出阵列的卷积输出元素,并且层209的处理节点的组M可以对应于卷积输出阵列的组M。层209的处理节点还可以用激活函数处理每个卷积输出以生成激活输出。激活函数可以将卷积输出转换为是否将卷积输出转发到中间层211的决策以影响分类器决策(类似于触发生物神经元)。激活函数的实例可以是根据以下等式定义的整流线性单位(ReLU):

除了ReLU外,还可以使用其它形式的激活函数,包含例如softplus函数(其可以是ReLU函数的光滑逼近)、双曲正切函数(tanh)、反正切函数(arctan)、sigmoid函数、高斯(Gaussian)函数等。

层209的处理节点(例如,处理节点210a)可以用ReLU函数处理总和以基于以下等式生成层209的第一输出:

first_output

层211可以通过例如基于不同组的滤波器执行另外的卷积运算来进一步处理来自层209的经缩放中间输出。可以将来自层211的每个处理节点的输出转发到其它较高的中间层,或者转发到输出层(图2A中未示出)。输出层可以形成表实例如图像104中包含某些特征的概率和/或图像204包含熊猫的图像的概率的输出向量。例如,可以将输出向量与同熊猫的鼻子对象相关联的参考向量或与熊猫相关联的参考向量进行比较。可以基于比较结果来确定关于图像104是否是熊猫的图像的决策。

如上文所描述的,神经网络计算可以包含乘法计算和求和计算以计算一组加权和(例如,等式1),然后对所述组加权和进行激活函数处理(等式2和3),从而为所述组加权和生成一组激活函数输出。激活函数输出中的每个激活函数输出可以表示加权和对决策的表决或影响(就程度和方向两方面而言)。例如,在输入是图像的像素数据的情况下,并且权重表示要从图像中识别的特征,每个激活函数输出可以表示像素对特征是否包含在图像中的决策的影响。

一些激活函数可以由一组加权和生成输出的分布。图3A展示了来自激活函数处理的输出的分布的实例。如图3A所示,tanh函数F(x)可以为介于-2与+2之间的输入范围输出一系列值。此外,如果输入值大于零,则ReLU函数G(x)还可以输出输入值。激活函数(如tanh函数和ReLU函数)可以将所述组加权和映射到一组输出,并且所述组输出可以通过分布函数300来建模。分布函数300可以特定于输入数据集并且可以在不同的输入数据集之间变化。例如,如图3A所示,输入值x0、x1、……、xn的激活函数输出的分布可以遵循平均值为xm和标准偏差为σ的高斯分布函数,但应当理解,其它不同的输入数据集可以生成遵循其它分布函数的激活函数输出。

在一些实例中,输入值x0、x1、……、xn的可以是用于(例如,通过修改权重)训练神经网络以执行具体的推断操作的训练数据集的一部分。来自所述训练数据集的激活函数输出分布可以提供可以充当推断决策基线的参考分布。作为一个实例,如图3B所示,生成处于平均值xm的一个sigma内的激活函数输出的输入像素可以被视为包含目标熊猫302,而生成介于与平均值xm偏离的一个标准偏差与三个标准偏差之间的激活函数输出的输入像素可以被视为包含不同的熊猫304。基于输入像素的激活函数输出与训练数据的激活函数输出分部之间的关系,可以通过神经网络作出推断目标的决策(例如,确定图像是否含有熊猫302或其它熊猫)。

然而,如果向神经网络提供神经网络未被训练处理的一组不适当输入数据,则决策的有效性或可靠性可能会降低,使得基于输入数据执行的推断操作没有实现推断目标。例如,如果神经网络未被训练处理大象图像,则含有大象306的图像数据(其可以生成处于三个标准偏差范围之外的激活函数输出)对于神经网络可能是不适当输入数据。在此类情况下,基于大象306的图像数据的推断操作没有实现目标推断目标(确定图像是否含有熊猫302或此实例中的其它熊猫),并且基于大象306的图像数据的任何推断决策应当用以下知识来解释:决策基于神经网络未被训练处理的输入数据。

图4A示出了根据本公开的一些实施例的设备400。设备400可以是计算机系统的一部分,例如,主机服务器。设备400可以是多租户计算服务系统的一部分并且可以与主机装置(图4中未示出)通信来为计算服务提供计算资源和存储器资源。例如,返回参考图1,设备400可以为用预测模型103的计算提供计算资源和存储器资源。主机装置可以操作软件应用程序102并且与设备400通信以基于利用预测模型103的计算执行一个或多个图像识别任务。主机装置可以传输与多个上下文相关联的多个图像数据集,并且向设备400提供所述多个图像数据集,所述设备可以生成多个输出来预测例如所述多个图像数据集中的每个图像数据集是否包含预定对象。

在图4A的实例中,设备400可以包含通过互连件418耦合到存储器412、直接存储器存取(DMA)控制器416以及主机接口414的神经网络处理器402。如将更详细论述的,神经网络处理器402可以提供计算资源以支持用预测模型103的计算。神经网络处理器402可以包含集成电路,例如片上系统(SoC)。存储器412可以被配置成存储从主机装置接收到的指令、输入数据(例如,图2B的像素组249和244)以及权重(例如,滤波器230)。存储器412还可以被配置成存储神经网络处理器402的输出(例如,图2B的卷积输出242和246)。存储器412可以包含任何合适的存储器,例如,动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双倍数据速率DRAM(DDR DRAM)、存储级存储器(SCM)、闪存装置等。

DMA控制器416可以被配置成执行DMA操作,以在神经网络处理器402与主机装置之间传输数据。例如,如上文所论述的,主机装置可以将指令、输入数据和权重存储在存储器412处。主机装置可以向神经网络处理器402提供所存储的指令、数据和权重的存储器地址(例如,以存储器描述符的形式)。神经网络处理器402然后可以基于主机装置提供的存储器地址来获得所存储的指令、数据和权重。神经网络处理器402还可以将计算结果(例如,一个或多个图像识别决策)存储在存储器412处,并且将所存储结果的存储器地址提供到主机装置。

主机接口414可以被配置成实现主机装置与神经网络处理器402之间的通信。例如,主机接口414可以被配置成在主机装置与神经网络处理器402之间传输包含所存储数据(例如,输入数据、权重、计算结果等)的存储器地址的存储器描述符。主机接口414可以包含例如外围组件快速互连(PCIe)接口或用于与主机装置通信的任何合适的接口。

神经网络处理器402可以提供计算资源以支持用预测模型103的一个或多个实例进行的计算。如图3A所示,神经网络处理器402可以包含状态缓冲器422、计算引擎424、输出缓冲器428、激活函数引擎430、不适当输入检测模块432以及计算控制器434。

状态缓冲器422可以提供对用于在计算引擎424处进行计算的数据的高速缓存。在状态缓冲器422处高速缓存的数据可以包含例如从存储器412获取的输入数据、权重和偏置以及在计算引擎424处的计算的中间输出。高速缓存可以降低(例如,由存储器412、DMA控制器416、互连件418等处的等待时间引起的)存储器存取瓶颈对计算引擎424的性能的影响。状态缓冲器322可以是片上存储器装置并且可以包含例如静态随机存取存储器(SRAM)。

状态缓冲器422可以由计算控制器434控制以将到神经网络层的权重、偏置和输入数据取出到计算引擎424。计算引擎424可以基于权重、偏差和输入数据执行所述神经网络层的神经网络计算以生成加权和。计算引擎424可以包含被配置成执行涉及神经网络计算的一个或多个算术运算的一组电路系统。例如,计算引擎424可以包含用于执行利用相关联的权重对输入数据执行缩放的一组乘法器和用于生成如上面所论述的表示点积和卷积结果的乘法结果的总和的一组加法器。可以在输出缓冲器428处收集并积累加权和以生成中间输出数据。输出缓冲器428可以向激活函数引擎430提供中间输出数据来执行激活函数处理,从而生成神经网络层的输出。可以将输出存储于状态缓冲器422中,所述状态缓冲器可以将输出以及一组新的权重和偏置取出到计算引擎424,从而为下一神经网络层执行神经网络计算。

另外,不适当输入检测模块432可以检测存储在状态缓冲器422中的并供应到计算引擎424以执行神经网络计算的不适当输入数据。不适当输入数据可以包含具体神经网络层、整个神经网络等的输入数据。如下文将描述的,不适当输入检测模块432可以基于激活函数引擎430生成的输出数据和基于来自计算控制器434的检测配置数据450来执行检测。在一些实例中,检测配置数据450可以包含例如用于确定来自激活函数引擎430的(输出数据的)输出数据元素是否是异常值的阈值信息,所述异常值可以指示对应于输出数据元素的输入数据元素不适当。检测配置数据450还可以包含阈值信息,所述阈值信息(针对一个神经网络层、多个神经网络层等)设定要检测以供不适当输入检测模块432确定供应到计算引擎424的所述整个输入数据集的许多异常值数据元素。

尽管图4A展示了不适当输入检测模块432是神经网络处理器402的一部分,但是应当理解,不适当输入检测模块432还可以是与神经网络处理器402介接的软件应用程序或固件的一部分。此外,尽管图4A展示了不适当输入检测模块432基于激活函数引擎430的输出来对不适当输入数据执行检测,但是应当理解,下文所公开的技术还可以用于如在其它后处理阶段(例如,池化)等基于来自计算引擎424内的算术电路的某些中间输出数据来检测在神经网络处理的其它阶段处的不适当输入数据。

在一些实例中,不适当输入检测模块432还可以获得参考输出统计参数452(例如,来自存储器412或来自状态缓冲器422)以用于参考输出的分布模型,如图3A-图3B的分布300。如上文所描述的,参考输出可以包含由关于用于训练神经网络的所述训练数据集的经过训练的神经网络模型生成的输出,并且可以与提供到计算引擎424的所述权重集相关联。如下文将描述的,不适当输入检测模块432可以将参考输出统计参数452与检测配置数据450组合以确定阈值和/或用于检测不适当输入数据的其它信息。

图4B展示了可以由不适当输入检测模块432用于基于参考输出的分布(例如,分布300)来确定输出数据元素是否是异常值的异常值检测方案460的实例。如图4B所示,分布300的平均值为xm并且标准偏差为σ。对于具体的推断操作,可以基于与平均值xm偏离标准偏差的倍数来设定一对阈值,并且所述阈值可以设定一定范围,超过所述范围,输出数据元素可以确定为异常值,这可能意味着对应于输出数据元素的输入数据元素不适当。例如,如图4B所示,阈值462可以通过将平均值xm减去三个标准偏差(xm-3σ)来设定,而阈值464可以通过向平均值xm加上三个标准偏差(xm+3σ)来设定。处于阈值462与464之间的范围466内的以平均值xm为中心的输出数据元素可以被确定为非异常值,然而处于所述范围之外(例如,小于阈值462或大于阈值464)的输出数据元素可以被确定为异常值。在一些实例中,范围466可以移位xm以成为以零为中心,并且阈值462和464可以是从零加上或减去的标准偏差的倍数。还可以使输出数据元素移位xm(例如,通过从输出数据元素中减去xm),并且可以将经过移位的输出数据元素与进行比较

检测配置数据450和参考输出统计参数452可以将信息提供到不适当输入检测模块432来实施检测方案460。例如,参考输出统计参数452可以包含分布300的统计参数,如平均值xm和标准偏差σ。此外,检测配置数据450可以限定用于设定阈值462和464的标准偏差乘法器(如图4B中的三),并且所述乘法器特定于推断目标、应用、用户等。

图4C展示了不适当输入检测模块432的内部组件的实例。如图4C所示,不适当输入检测模块432可以包含一组减法器470(例如,减法器470a、470b、……、470N等)、一组比较器472(例如,比较器472a、472b、……、472N等)、阈值生成器476和异常值计数处理逻辑478。可以控制减法器470、比较器472和阈值生成器476以基于检测配置数据450和参考输出统计参数452执行异常值检测方案460。在一个实例中,比较器472中的每个比较器可以接收来自激活函数引擎430的输出数据元素(例如,out0、out1、……、outN等之一)并从输出数据中减去平均值xm(从参考输出统计参数452中供应)以生成经过移位的输出数据元素,所述输出数据元素可以与图4B的范围466进行比较,所述范围也经过移位变为以零为中心。

另外,阈值生成器476还可以接收来自参考输出统计参数452以及标准偏差乘法器480的标准偏差σ以生成图4B的阈值462和464。在范围466以零为中心的情况下,阈值生成器476可以通过将标准偏差σ与由标准偏差乘法器480设定的乘法器值(例如,三)相乘以生成倍数来生成阈值462和464。阈值462和464可以分别是倍数的负版本和正版本。比较器472中的每个比较器可以将经过移位的输出数据元素与由阈值生成器476提供的阈值462和464进行比较来确定经过移位的输出数据元素是否是异常值。

可以将来自比较器472中的每个比较器的异常值决策提供到异常值计数处理逻辑478,所述异常值计数处理逻辑可以基于包含在检测配置数据450中的计数阈值482来处理异常值决策,从而确定例如对应于输出数据元素out0、out1、……、outN的输入数据集是否是无效输入数据。作为一个实例,如果计数阈值482限定10k的阈值,并且确定大于10k的输出数据元素是异常值,则异常值计数处理逻辑478可以确定对应于输出数据元素out0、out1、……、outN的输入数据集是无效的输入数据。

在一些实例中,不适当输入检测模块432可以基于多个神经网络层的异常值计数来确定输入数据集不适当,优先考虑特定的神经网络层。优先级可以特定于特定的推断目标、应用等。作为一个实例,对于一些应用,可以对较低水平层的神经网络进行训练以识别广泛的基本特征,并且对于较低水平层甚至对于适当的输入数据,异常值计数可能很大。相比之下,可以对高水平层进行训练以将较低水平层识别的特征合并成更小的特征集,并且基于所述更小的特征集生成决策影响。来自高水平层的异常值计数可以小得多。在此类实例中,不适当输入检测模块432仅基于高水平层的异常值计数来确定输入数据是否不适当,或向高水平层的异常值计数分配较大权重。

图4D展示了实例方案,在所述方案中不适当输入检测模块432基于多个神经网络层的异常值计数来执行不适当输入检测。如图4D所示,不适当输入检测模块432可以基于异常值计数处理逻辑478输出的异常值计数来保持每个神经网络层的异常值计数的记录486。不适当输入检测模块432还可以从检测配置数据450接收每个神经网络层的异常值计数的权重集484,其中将较高权重分配到预定具有少数异常值输出的神经网络层。可以为不同的推断目标、应用、用户等配置不同的权重。异常值计数处理逻辑478可以基于记录486中的异常值计数的加权和来确定总异常值490,其中神经网络层的每个异常值计数根据权重484进行加权。可以通过比较器492将加权和与计数阈值482进行比较以生成不适当输入数据决策。

不适当输入检测模块432可以基于对不适当输入数据的检测来执行一个或多个动作。在一个实例中,不适当输入检测模块432可以向将输入数据提供到神经网络处理器402的应用(例如,图1的软件应用程序102)传输通知。通知可以在神经网络计算过程中进行传输,和/或利用推断结果提供输入数据不适当指示和/或推断结果是基于不适当输入数据集生成的。在另一个实例中,不适当输入检测模块432还可以向计算控制器434或管理神经网络处理器402的操作的其它软件/硬件组件传输通知,从而暂停基于不适当输入数据集的神经网络计算。此类布置可以在处理不适当输入数据时将浪费神经网络处理资源的可能性最小化,这可以提高神经网络处理资源的利用率。

在一些实例中,不适当输入检测模块432可以基于其它技术(如基于确定激活函数引擎430的输出的分布模型)执行不适当输入检测。然后可以将分布模型与参考输出分布(例如,分布300)进行比较以确定激活函数引擎430的输出是否由不适当输入生成。在一些情况下,通过将输出数据视为一个整体,而不是确定单独的异常值输出数据元素,此类检测方案可以提供更准确的检测。例如,可以通过具有广泛且相对均匀的分布的训练数据集来对神经网络进行训练。选择用于异常值数据识别和计数的阈值以反映训练数据集的广泛和(相对)均匀的分布可能是困难的。在此类实例中,将输出的分布模型与参考输出分布进行比较可能是有利的。比较可以基于例如比较输出和参考输出的分布的统计参数。

图5A展示了用于基于分布模型比较来标识不适当输入的不适当输入检测模块432的内部组件的实例。如图5A所示,不适当输入检测模块432可以包含统计参数确定模块502和分布模型比较模块504。统计参数确定模块502可以确定一组统计参数506,如平均值和标准偏差以表示激活函数引擎430的输出的分布模型(例如,out0、out1、……、outN)。在一些实例中,统计参数确定模块502可以包含算术电路(例如,加法器、乘法器、除法器等)以(例如,通过计算平均值)计算激活函数引擎430的输出的平均值并且(例如,通过计算每个输出与平均值之间的平方差的平均值)计算标准偏差。在图5A的实例中,统计参数确定模块502可以确定激活函数引擎430的输出的平均值等于m1,而输出的标准偏差等于s1。在一些实例中,统计参数确定模块502可以计算每个神经网络层的统计参数506。

分布模型计算模块504可以将激活函数引擎430的输出的统计参数506与参考输出统计参数452进行比较以确定输入数据是否不适当。比较可以基于检测配置数据450中限定的一套规则和阈值(图4D中未示出)。例如,分布模型比较模块504可以应用两步比较方案。作为第一步,分布模型比较模块504可以确定激活函数引擎430的输出的平均值m1与参考输出统计参数452的平均值xm之间的差异。如果所述差异超过第一阈值,则分布模型比较模块504可以确定输入数据不适当。如果平均值之间的差异在第一阈值内,则分布模型比较模块504可以确定激活函数引擎430的输出的标准偏差s1与参考输出统计参数452的标准偏差σ之间的差异。如果所述差异超过第二阈值,则分布模型比较模块504可以确定输入数据不适当。但如果所述差异还是在第二阈值内,则分布模型比较模块504可以确定输入数据是适当的。

在一些实例中,分布模型比较模块504还可以将激活函数引擎430的输出的分布模型与使用其它技术(如库尔贝克-莱布勒(Kullback-Leibler)散度分析)的参考输出的分布模型进行比较。为了支持库尔贝克-莱布勒散度分析,统计参数确定模块502可以对激活函数引擎430的输出和参考输出执行分箱操作。图5B展示了分箱操作的结果的实例。如图5B所示,统计参数确定模块502可以维护表示激活函数的输出的值的范围的一组箱,包含x0、x1、x2、x3和x4中的每一个的箱。例如,箱x0表示以x0为中心的范围,箱x1表示以x1为中心的范围等。输出激活函数引擎430以及参考输出可以映射到每个箱中。可以获得每个箱的计数分布以表示激活函数引擎430的输出的分布模型和参考输出的分布模型。例如,激活函数引擎430的输出的分布模型可以包含分别用于箱x0、x1、x2、x3和x4的计数Q0、Q1、Q2、Q3和Q4。此外,参考输出的分布模型可以包含分别用于箱x0、x1、x2、x3和x4的计数P0、P1、P2、P3和P4。统计参数确定模块502还可以基于分布的相应计数和总计数来计算每个箱的概率。例如,激活函数引擎430的输出落入箱x0中的概率可以基于以下等式来确定:

在等式4中,P(0)表示激活函数引擎430的输出落入箱x0中的概率,P0是激活函数引擎430的落入箱x0中的输出的计数,而是激活函数引擎430跨包含P0、P1、P2、……、Pn的所有箱的输出的计数的总和。可以使用等式4来计算其它箱的概率P(1)、P(2)、……、P(n)以表示激活函数引擎430的输出的分布模型。

此外,参考输出落入箱x0中的概率可以基于以下等式来确定:

在等式5中,Q(0)表示参考输出落入箱x0中的概率,Q0是参考输出落入箱x0中的输出的计数,而是参考输出跨包含Q0、Q1、Q2、……、Qn的所有箱的计数的总和。其它箱的概率Q(1)、Q(2)、……、Q(n)可以使用等式5来计算以表示参考输出的分布模型。

激活函数引擎430的输出的分布模型与参考输出的分布模型之间的库尔贝克-莱布勒(KL)散度可以基于以下等式来计算:

在等式6中,表示KL散度,其可以通过将参考输出的箱的概率(来自等式5的Q(i))和Q(i)与激活函数引擎430的输出的箱的概率(来自等式4的P(i))之比的自然对数相乘来获得。较大值可以指示分布模型之间的较大差异,而较小值可以指示分布模型之间的小差异。KL散度值可以与阈值进行比较以确定输入数据是适当的。

在一些实例中,通过统计参数确定模块502计算的统计参数506可以用于支持其它操作,如调试操作。例如,如图5C所示,统计参数确定模块502可以生成列出每个神经网络层的激活函数输出的平均值和标准偏差的记录510。记录510可以用作调试工具以确定例如支持每个神经网络层的计算需要的硬件资源。例如,在处理训练数据集时,记录510可以与经过训练的神经网络的输出的一组参考平均值和标准偏差进行比较。基于比较,可以确定哪一层开始表现出与参考平均值和标准偏差的很大的偏离。然后可以对提供用于所述神经网络层的计算的硬件资源进行调整(例如,通过具有计算引擎424以表示更多的处理节点,增加计算引擎424中算术电路的精确度等)以使偏离最小化。

图6展示了用于检测和处理神经网络的不适当输入的过程600的实例流程图。过程600可以通过如图4A-图5B中描述的神经网络处理器402的各种内部组件(包含例如不适当输入检测模块432)来执行,并且可以包含上文描述的技术。

在操作602处,不适当输入检测模块432从硬件电路接收神经网络的基于由应用程序提供的输入数据的计算输出。硬件电路可以包含激活函数引擎430,并且计算输出可以包含用于神经网络层的计算的激活函数引擎430的输出。

在操作604处,不适当输入检测模块432确定神经网络层的计算输出与参考输出之间的关系,参考输出是通过处理由神经网络设定的训练数据集来生成的。关系的确定可以基于关于图4B描述的技术。例如,限定范围(例如,范围466)的一对阈值可以基于参考输出的分布的标准偏差来确定,并且每个计算输出可以与阈值进行比较以确定计算输出是否在范围内。如果计算输出在范围内,则可以确定计算输出不是异常值,然而如果计算输出超出范围,则可以确定计算输出是异常值。还可以对异常值计算输出的数量进行计数。作为另一个实例,还可以确定计算输出的分布模型的统计参数(例如,平均值和标准偏差),并且计算输出和参考输出的统计参数还可以基于关于图5A所描述的技术进行比较。

在操作606处,不适当输入检测模块432基于关系确定输入数据不适当。确定可以基于例如对超过阈值的异常值计算输出的计数,如关于图4C和图4D所描述。确定还可以基于计算输出和参考输出的分布的比较。例如,可以将计算输出分布的平均值和标准偏差与超过另一个阈值的参考输出分布的平均值和标准偏差进行比较,如关于图5A所描述。还可以确定分布之间的库尔贝克-莱布勒(KL)散度,如关于图5B所描述。

在操作608处,不适当输入检测模块432可以基于确定输入数据是不适当来执行一个或多个动作。在一个实例中,不适当输入检测模块432可以向提供输入数据的应用程序(例如,图1的软件应用程序102)传输通知。通知可以在神经网络计算过程中进行传输,和/或利用推断结果提供输入数据不适当指示和/或推断结果是基于不适当输入数据集生成的。在另一个实例中,不适当输入检测模块432还可以向计算控制器434或管理神经网络处理器402的操作的其它软件/硬件组件传输通知,从而暂停基于不适当输入数据集的神经网络计算。

本公开的实施例还可以根据以下条款进行描述:

1.一种方法,其包括:

基于从应用接收到的输入数据来执行计算以生成神经网络层的中间输出;

基于对所述中间输出应用激活函数处理来生成所述神经网络层的输出;

接收所述神经网络层的参考输出的平均值和标准偏差;

对于所述神经网络层的所述输出中的每个输出:

确定所述每个输出与所述平均值之间的差异;

将所述差异与一个或多个阈值进行比较,所述一个或多个阈值是基于所述标准偏差的预定乘法器来确定的;以及

基于所述比较的结果来确定所述每个输出是否是异常值输出;

确定所述异常值输出的总计数;

基于所述总计数与第二阈值之间的比较来确定所述输入数据不适当;以及

基于确定所述输入数据不适当来执行以下中的至少一个:向所述应用程序传输通知,或暂停随后的神经网络层的计算。

2.根据条款1所述的方法,其进一步包括:从所述应用接收指示所述预定乘法器的配置数据。

3.根据前述条款中任一项所述的方法,其中所述神经网络层的所述参考输出是通过处理由包含所述神经网络层的神经网络设定的训练数据集获得的。

4.根据前述条款中任一项所述的方法,其进一步包括:基于多个神经网络层的所述异常值输出的总数来确定所述输入数据不适当。

5.一种系统,其包括:

硬件电路,所述硬件电路被配置成接收输入数据并且基于所述输入数据执行神经网络的计算以生成计算输出;以及

不适当输入检测模块,所述不适当输入检测模块被配置成:

确定所述硬件电路的所述计算输出与参考输出之间的关系;

基于所述关系确定所述输入数据不适当;并且

基于确定所述输入数据不适当来执行动作。

6.根据条款5所述的系统,其中所述输入数据与用于训练所述神经网络的训练数据集偏离至少预定裕量。

7.根据条款5或6所述的系统,其中所述参考输出是由所述神经网络基于对所述训练数据集进行处理生成的。

8.根据条款5到7中任一项所述的系统,其中所述硬件电路包括:

算术电路,所述算术电路被配置成执行算术运算以生成中间输出;以及

激活函数电路,所述激活函数电路被配置成对所述中间输出应用激活函数处理以生成所述计算输出。

9.根据条款5到8中任一项所述的系统,其中所述不适当输入检测模块被配置成基于将所述计算输出与关于所述参考输出的平均值和标准偏差的一个或多个阈值进行比较来确定所述计算输出与所述参考输出之间的所述关系。

10.根据条款9所述的系统,其中所述不适当输入检测模块被配置成:

对于所述计算输出中的每个计算输出:

确定所述计算输出中的所述每个计算输出与所述平均值之间的差异;并且

基于将所述差异与基于所述标准偏差的预定倍数的第一阈值进行比较来确定所述计算输出中的所述每个计算输出是否是异常值输出;

确定所述异常值输出的计数;并且

基于将所述计数与第二阈值进行比较来确定所述输入数据不适当。

11.根据条款10所述的系统,其中所述不适当输入检测模块被配置成从提供所述输入数据的应用程序接收检测配置信息;并且

其中所述检测配置信息包含所述第一阈值和所述第二阈值的定义。

12.根据条款11所述的系统,其中所述神经网络包括多个神经网络层;并且

其中所述不适当输入检测模块被配置成基于所述检测配置信息来基于所述多个神经网络层中的一个神经网络层的所述计算输出中的所述异常值输出的所述计数确定所述输入数据不适当。

13.根据条款12所述的系统,其中所述不适当输入检测模块被配置成基于所述检测配置信息来基于所述一个神经网络层在所述神经网络内的位置确定所述输入数据不适当。

14.根据条款5到12中任一项所述的系统,其中所述不适当输入检测模块被配置成:

确定所述计算输出的第一统计参数;

接收所述参考输出的第二统计参数;并且

基于将所述第一统计参数与所述第二统计参数进行比较来确定所述计算输出与所述参考输出之间的所述关系。

15.根据条款14所述的系统,其中所述神经网络包括多个神经网络层;并且

其中所述不适当输入检测模块被配置成:

确定所述多个神经网络层中的每个神经网络层的所述计算输出的平均值和标准偏差;并且

生成所述每个神经网络层的所述计算输出的所述平均值和所述标准偏差的记录。

16.根据条款5到15中任一项所述的系统,其中所述不适当输入检测模块被配置成执行所述动作,所述动作包括以下中的至少一个:向使用所述硬件电路的所述计算输出的应用程序传输错误通知,或暂停所述硬件电路处所述神经网络层的计算。

17.根据条款5到16中任一项所述的系统,其中所述硬件电路是神经网络处理器的一部分;并且

其中所述不适当输入检测模块是与所述神经网络处理器介接的应用的一部分。

18.一种方法,其包括:

从硬件电路接收神经网络的基于由应用程序提供的输入数据的计算输出;

确定所述硬件电路的所述计算输出与所述神经网络的参考输出之间的关系,所述参考输出是通过由所述神经网络处理训练数据集来生成的;

基于所述关系确定所述输入数据不适当;以及

基于确定输入数据不适当来执行动作。

19.根据条款18所述的方法,其进一步包括:

接收所述参考输出的分布的平均值和标准偏差;

其中确定所述硬件电路的所述计算输出与所述参考输出之间的所述关系包括:

确定所述计算输出中的每个计算输出与所述平均值之间的差异;以及

基于将所述差异与源自所述标准偏差的阈值进行比较来确定所述输入数据不适当。

20.根据条款18或19所述的方法,其中所述动作包括以下中的至少一个:向所述应用程序传输错误通知,或暂停所述硬件电路处所述神经网络的计算。

图7展示了计算装置700的实例。计算装置700的功能和/或若干组件可以不受限制地与本公开中其它地方所公开的其它实施例一起使用,而不受限制。计算装置800可以执行计算以促进对任务的处理。作为说明性实例,计算装置800可以是多租户计算服务系统中的服务器的一部分。可以根据请求将计算装置700的各种硬件和软件资源(例如,与提供图像识别服务相关联的硬件和软件资源)分配到客户端。

在一个实例中,计算装置700可以包含处理逻辑702、总线接口模块708、存储器710和网络接口模块712。这些模块可以是硬件模块、软件模块或硬件和软件的组合。在某些情况下,在不背离本公开的范围的情况下,模块可以与组件或引擎可互换地使用。计算装置700可以包含此处未展示的另外的模块。在一些实施方案中,计算装置700可以包含更少的模块。在一些实施方案中,可以将模块中的一个或多个模块组合成一个模块。模块中的一个或多个模块可以通过通信信道714彼此通信。通信信道714可以包含一个或多个总线、网格、矩阵、织物、这些通信信道或一些其它合适的通信信道的组合。

处理逻辑702可以包含一个或多个集成电路,所述一个或多个集成电路可以包含专用集成电路(ASIC)、现场可编程门阵列(FPGA)、片上系统(SoC)、网络处理单元(NPU)、被配置成执行指令的处理器或被配置成执行逻辑算术运算和浮点运算的任何其它电路系统。可以包含于处理逻辑702中的处理器的实例可以包含由

可以向客户端授予对处理逻辑702的访问以提供客户端所请求的个人助理服务。例如,计算装置700可以托管虚拟机,在所述虚拟机上可以执行图像识别软件应用程序。图像识别软件应用程序在执行时可以访问处理逻辑702以预测例如图像中包含的对象。作为另一个实例,对处理逻辑702的访问也可以被授权为裸金属实例的一部分,其中在客户端装置(例如,远程计算机、智能电话等)上执行的图像识别软件应用程序可以直接访问处理逻辑702以执行图像的识别。

存储器710可以包含易失性或非易失性或者易失性类型的存储器和非易失性类型的存储器两者。存储器710可以例如包含随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器和/或其它一些合适的存储介质。在一些情况下,存储器710的部分或全部可以在计算装置700内部,而在其它情况下,存储器的部分或全部可以在计算装置700外部。存储器710可以存储操作系统,所述操作系统包括当由处理逻辑702执行时提供用于执行为计算装置700提供联网功能的指令的执行环境的可执行指令。存储器710还可以存储例如用于执行人工神经网络计算的软件应用程序。例如,存储器710可以存储与上文等式的计算有关的软件例程。在处理逻辑702呈FPGA形式的情况下,存储器710可以存储表示处理逻辑702的各种逻辑电路组件的网表数据。在一些实例中,存储器710可以包含存储器412。

总线接口模块708可以实现通过外部通信介质与如主机装置和/或计算系统中的其它组件等外部实体通信。总线接口模块708可以包含用于连接到电缆、插座、端口或其它到外部通信介质的连接的物理接口。总线接口模块708可以进一步包含用于管理传入和传出交易的硬件和/或软件。总线接口模块708可以实施局部总线协议,如基于外围组件互连(PCI)的协议、非易失性存储器快速(NVMe)、高级主机控制器接口(AHCI)、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)、串行AT附件(SATA)、并行ATA(PATA)、其它某个标准总线协议或专有总线协议。总线接口模块808可以包含用于这些总线协议中的任何一个的物理层,包含连接器、电源管理和错误处理等等。在一些实施方案中,计算装置700可以包含用于与多个外部实体通信的多个总线接口模块。这些多个总线接口模块可以实施相同的局部总线协议、不同的局部总线协议或者相同的总线协议和不同的总线协议的组合。

网络接口模块712可以包含用于与网络通信的硬件和/或软件。此网络接口模块712可以包含例如用于有线连接到网络的物理连接器或物理端口,和/或用于无线通信到网络的天线。网络接口模块712可以进一步包含被配置成实施网络协议栈的硬件和/或软件。网络接口模块712可以使用网络协议与网络通信,所述网络协议例如TCP/IP、无限带宽、RoCE、电气和电子工程师协会(IEEE)802.11无线协议、用户数据报协议(UDP)、异步传输模式(ATM)、令牌环、帧中继、高级数据链路控制(HDLC)、光纤分布式数据接口(FDDI)和/或点对点协议(PPP)等等。在一些实施方案中,计算装置700可以包含多个网络接口模块,每个网络接口模块被配置成与不同的网络通信。例如,在这些实施方案中,计算装置700可以包含用于与有线以太网网络、无线802.11网络、蜂窝网络、无限带宽网络等通信的网络接口模块。在一些实施例中,计算装置700可以通过网络接口模块712从服务器接收用于生成遗忘门因子、输入因子、输出因子等的一组参数,如上述权重向量。

上文所描述的计算装置700的各种组件和模块可以被实施为分立组件、片上系统(SoC)、ASIC、NPU、FPGA或其任何组合。在一些实施例中,SoC或其它组件可以通信地耦合到另一个计算系统以提供各种服务,如流量监测、流量整形、计算等。在所述技术的一些实施例中,SoC或其它组件可以包含如本文所公开的多个子系统。

本文所描述的模块可以是软件模块、硬件模块或其合适的组合。如果模块是软件模块,则模块可以在非暂时性计算机可读介质上具体化并且由本文所描述的计算机系统中的任何计算机系统的处理器处理。应当注意,可以在任何用户交互之前实时或以异步模式执行所描述的过程和架构。可以以图中建议的方式配置模块,和/或本文所描述的功能可以由作为单独模块存在的一个或多个模块提供,和/或本文所描述的模块功能可以分布在多个模块之上。

因此,说明书和附图将被视为是说明性的,而不是限制性的。然而,显而易见的是,在不脱离权利要求所阐述的本公开的更广泛的精神和范围的情况下,可以对其进行各种修改和改变。

其它变型处于本公开的精神内。因此,虽然所公开的技术易于进行各种修改和替代构造,但是其某些展示的实施例在附图中示出并且已经在上文中进行了详细描述。然而,应该理解的是,并非旨在将本公开限制于所公开的一种或多种具体形式,而是相反,其目的在于涵盖落在如所附权利要求限定的本公开的精神和范围内的所有修改、替代构造和等同物。

除非本文中另有指示或明显与上下文相矛盾,否则在描述所公开的实施例的上下文中(特别是在以下权利要求的上下文中)使用的术语“一个/种(a/an)”和“所述(the)”以及类似的指代词应被解释为涵盖单数和复数两者。除非另外指出,否则术语“包括(comprising)”、“具有(having)”、“包含(including)”和“包含(containing)”应被解释为开放式术语(即,意指“包含但不限于”)。术语“连接”应被解释为部分或全部地包含在内、附接到或接合在一起,即使在存在中间物的情况下也是如此。除非本文中另有指示,否则对本文中的值的范围的叙述仅旨在用作单独地提及落入所述范围内的每个单独值的速记方法,并且每个单独值并入本说明书中,如同所述单独值在本文中单独地叙述一样。除非本文中另有指示或明显与上下文相矛盾,否则本文所述的所有方法均可以以任何合适的顺序执行。除非另外声明,否则本文提供的任何和所有实例或示范性语言(例如,“如”)的使用仅旨在更好地说明本公开的实施例,而不对本公开的范围构成限制。本说明书中的任何语言都不应被解释为将任何未要求保护的要素指示为是实践本公开所必不可少的。

除非另有明确说明,否则如短语“X、Y或Z中的至少一个”等析取语言旨在在如通常用于表达项、术语等可以是X、Y或Z或其任何组合(例如,X、Y和/或Z)的上下文中进行理解。因此,此类析取语言通常不旨在并且不应暗示某些实施例要求X中的至少一个、Y中的至少一个或Z中的至少一个各自都存在。

本文中描述了本公开的各种实施例,包含诸位发明人已知的用于实施本公开的最佳模式。在阅读上述描述后,对本领域的普通技术人员而言,那些实施例的变化可能变得显而易见。诸位发明人预期技术人员可以在适当时采用此类变型,并且诸位发明人旨在使本公开以与本文具体描述的方式不同的其它方式来进行实践。因此,在适用法律允许的情况下,本公开包含所附权利要求中叙述的主题的所有修改和等同物。此外,除非本文另有指示或明显与上下文相矛盾,否则本公开涵盖上述要素在其所有可能变型中的任何组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号