掌桥专利:专业的专利平台
掌桥专利
首页

用于使用二元权重处理卷积神经网络的设备和方法

文献发布时间:2024-04-18 19:58:30


用于使用二元权重处理卷积神经网络的设备和方法

技术领域

本申请大体上涉及人工智能、机器学习和神经网络。具体地,本申请的一些实施例涉及神经网络的实现和训练。

背景技术

卷积神经网络(convolutional neural network,CNN)是主要的深度学习计算系统,它一直是近来取得瞩目成绩的计算机视觉、图像识别等领域的支柱。CNN是一个更普遍的概念深度神经网络(deep neural network,DNN)的特殊架构。DNN是一种计算系统,它的灵感来自构成动物大脑的生物神经网络。可以通过考虑示例来训练深度神经网络来执行任务,通常无需使用任何任务特定的规则进行编程。例如,在图像识别中,深度神经网可以被训练来通过以下方式识别包含车辆的图像:通过分析已经手动标记为包括或不包括车辆的示例性图像并使用结果来识别其它图像中的车辆。深度神经网络能够在没有任何关于汽车的先验知识的情况下做到这一点。相反,他们会自动学习以从训练数据中识别特征。通常,深度神经网络或机器学习模型的训练可能是一个比较耗费资源的过程。此外,经训练的机器学习模型的复杂度对于某些设备来说可能太高。

发明内容

本申请内容的目的是以简化的形式介绍在以下详细说明中进一步描述的概念选择。本申请内容并非旨在确定请求保护的主题的关键特征或必要特征,也并非旨在用于限制请求保护的主题的范围。

本申请的目的是提供具有低复杂度的神经网络。此外,还公开了训练神经网络的高效方法。上述和其它目的可以通过独立权利要求的特征来实现。根据从属权利要求、说明书以及附图,其它实现方式是显而易见的。

在下文中,表述“二元”或其任何衍生词可以是指处于两个互斥条件中的一个条件的状态。在一些实施例中,二元可以是布尔(Boolean)型的。在一些实施例中,二元可以由对应于两个互斥条件中的一个条件的状态的true/false值表示。在一些实施例中,二元可以由对应于两个互斥条件中的一个条件的状态的数值表示。例如,对于两个互斥条件,数值可以是0和1,或者对于两个互斥条件,数值可以是–1和1。

根据第一方面,提供了一种用于处理卷积神经网络(convolutional neuralnetwork,CNN)的设备。该设备可用于提供CNN,该CNN具有配置有二元权重的卷积核。该设备还可以用于使用卷积核训练CNN,以确定卷积核的二元权重集合。该设备还可以用于使用二元权重集合进行CNN的推断。该方案能够以低复杂度实现CNN神经网络的二元实现。

根据第一方面的一种实现方式,所述设备用于通过以下操作训练所述CNN:在所述CNN的神经元处接收来自所述CNN的下游层的至少一个神经元的反向传播信号,其中,所述反向传播信号可以指示损失函数相对于所述神经元的输出的变化的趋势;在所述神经元处评估预激活函数,其中,所述预激活函数的输入包括所述神经元的第i二元权重和与所述第i二元权重相关联的所述神经元的相应输入;确定所述预激活函数相对于所述第i二元权重的反转的趋势;基于所述预激活函数相对于所述第i二元权重的所述反转的所述趋势和所述损失函数相对于所述神经元的所述输出的所述变化的所述趋势,确定是否反转所述第i二元权重。该方案支持反向传播,以便以低复杂度使用二元权重训练CNN。

根据第一方面的实现方式,所述损失函数相对于所述神经元的所述输出的所述变化的所述趋势可以指示所述神经元的所述输出的所述变化使所述损失函数增大还是减小。所述预激活函数相对于所述第i二元权重的所述反转的所述趋势可以指示所述第i二元权重的所述反转使所述预激活函数增大还是减小。该方案能够确定损失函数的趋势和预激活函数的趋势,以便以低复杂度使用二元权重训练CNN。

根据第一方面的一种实现方式,所述设备还可以用于响应于确定所述第i二元权重的所述反转使所述损失函数减小,确定反转所述第i二元权重。所述设备还可以用于响应于确定所述第i二元权重的所述反转使所述损失函数增大,确定不反转所述第i二元权重。该方案能够在二元域中确定是否反转特定的二元权重,以使用二元权重高效地训练CNN。

根据第一方面的一种实现方式,所述设备还可以用于:如果所述激活函数相对于所述第i二元权重的反转增大,并且所述损失函数相对于所述神经元的所述输出增大,则确定所述第i二元权重的所述反转使所述损失函数增大。所述设备还可以用于:如果所述激活函数相对于所述第i二元权重的反转增大,并且所述损失函数相对于所述神经元的所述输出减小,则确定所述第i二元权重的所述反转使所述损失函数减小。所述设备还可以用于:如果所述激活函数相对于所述第i二元权重的反转减小,并且所述损失函数相对于所述神经元的所述输出增大,则确定所述第i二元权重的所述反转使所述损失函数减小。所述设备还可以用于:如果所述激活函数相对于所述第i二元权重的反转减小,并且所述损失函数相对于所述神经元的所述输出减小,则确定所述第i二元权重的所述反转使所述损失函数增大。该方案能够确定第i二元权重的反转如何影响损失函数,以便以低复杂度使用二元权重训练CNN。

根据第一方面的一种实现方式,所述设备还可以用于:基于所述损失函数相对于所述神经元的第i输入的变化的趋势,确定所述CNN的至少一个上游神经元的第i上游反向传播信号。该方案能够确定二元域中的反向传播信号,以降低使用二元权重训练CNN的复杂度。

根据第一方面的一种实现方式,所述设备还可以用于使用二元输入值作为所述CNN的神经元的输入。该方案能够以低复杂度实现CNN神经网络的二元实现。

根据第一方面的一种实现方式,所述卷积核的卷积算子是二元值算子。该方案能够以低复杂度实现CNN神经网络的二元实现。

根据第一方面的一种实现方式,所述设备还可以用于:基于所述卷积核,使用所述CNN的卷积确定所述CNN的神经元的预激活值。所述设备还可以用于:基于阈值,将所述预激活值中的所述神经元的输出确定为二元输出。该方案能够以低复杂度实现CNN神经网络的二元实现。

根据第一方面的一种实现方式,所述阈值是为所述CNN的所述训练要学习的参数。该方案能够通过使用阈值作为CNN或其神经元的附加可训练参数来改善CNN的训练。

根据第一方面的一种实现方式,所述设备可以包括多个可配置的基本逻辑。每个基本逻辑可以包括馈送受体,用于提供所述神经元的输入;可配置位,用于实现相应二元权重;耦合到所述馈送受体和所述可配置位的卷积算子,用于相对于所述输入和所述相应二元权重执行卷积运算。该方案为卷积核提供了高效的硬件实现。

根据第一方面的一种实现方式,所述设备可以包括用于存储所述CNN神经元的预激活值的存储器。该方案为以低复杂度使用二元权重训练CNN提供了高效的硬件实现。

根据第二方面,提供了一种用于处理卷积神经网络(convolutional neuralnetwork,CNN)的方法。所述方法可以包括配置所述CNN用于利用具有二元权重的卷积核。所述方法可以包括使用卷积核训练CNN,以确定卷积核的二元权重集合。所述方法可以包括使用二元权重集合进行CNN的推断。该方案能够以低复杂度实现CNN神经网络的二元实现。

根据第二方面的一种实现方式,所述CNN的所述训练可以包括:在所述CNN的神经元处接收来自所述CNN的下游层的至少一个神经元的反向传播信号,其中,所述反向传播信号指示损失函数相对于所述神经元的输出的变化的趋势。所述训练可以包括:在所述神经元处评估预激活函数,其中,所述预激活函数的输入包括所述神经元的第i二元权重和与所述第i二元权重相关联的所述神经元的相应输入。所述训练可以包括:确定所述预激活函数相对于所述第i二元权重的反转的趋势。所述训练可以包括:基于所述预激活函数相对于所述第i二元权重的所述反转的所述趋势和所述损失函数相对于所述神经元的所述输出的所述变化的所述趋势,确定是否反转所述第i二元权重。该方案支持反向传播,以便以低复杂度使用二元权重训练CNN。

根据第二方面的实现方式,所述损失函数相对于所述神经元的所述输出的所述变化的所述趋势可以指示所述神经元的所述输出的所述变化使所述损失函数增大还是减小。所述预激活函数相对于所述第i二元权重的所述反转的所述趋势可以指示所述第i二元权重的所述反转使所述预激活函数增大还是减小。该方案能够确定损失函数的趋势和预激活函数的趋势,以便以低复杂度使用二元权重训练CNN。

根据第二方面的一种实现方式,所述方法还可以包括:响应于确定所述第i二元权重的所述反转使所述损失函数减小,确定反转所述第i二元权重。所述方法还可以包括:响应于确定所述第i二元权重的所述反转使所述损失函数增大,确定不反转所述第i二元权重。该方案能够在二元域中确定是否反转特定的二元权重,以使用二元权重高效地训练CNN。

根据第二方面的一种实现方式,所述方法还可以包括:如果所述激活函数相对于所述第i二元权重的反转增大,并且所述损失函数相对于所述神经元的所述输出增大,则确定所述第i二元权重的所述反转使所述损失函数增大。所述方法还可以包括:如果所述激活函数相对于所述第i二元权重的反转增大,并且所述损失函数相对于所述神经元的所述输出减小,则确定所述第i二元权重的所述反转使所述损失函数减小。所述方法还可以包括:如果所述激活函数相对于所述第i二元权重的反转减小,并且所述损失函数相对于所述神经元的所述输出增大,则确定所述第i二元权重的所述反转使所述损失函数减小。所述方法还可以包括:如果所述激活函数相对于所述第i二元权重的反转减小,并且所述损失函数相对于所述神经元的所述输出减小,则确定所述第i二元权重的所述反转使所述损失函数增大。该方案能够确定第i二元权重的反转如何影响损失函数,以便以低复杂度使用二元权重训练CNN。

根据第二方面的一种实现方式,所述方法还可以包括:基于所述损失函数相对于所述神经元的第i输入的变化的趋势,确定所述CNN的至少一个上游神经元的第i上游反向传播信号。该方案能够确定二元域中的反向传播信号,以降低使用二元权重训练CNN的复杂度。

根据第二方面的一种实现方式,二元输入值可以用作所述CNN的神经元的输入。该方案能够以低复杂度实现CNN神经网络的二元实现。

根据第二方面的一种实现方式,所述卷积核的卷积算子可以是二元值算子。该方案能够以低复杂度实现CNN神经网络的二元实现。

根据第二方面的一种实现方式,所述方法还可以包括:基于所述卷积核,使用所述CNN的卷积确定所述CNN的神经元的预激活值。所述方法还可以包括:基于阈值,将所述预激活值中的所述神经元的输出确定为二元输出。该方案能够以低复杂度实现CNN神经网络的二元实现。

根据第二方面的一种实现方式,所述阈值可以是为所述CNN的所述训练要学习的参数。该方案能够通过使用阈值作为CNN或其神经元的附加可训练参数来改善CNN的训练。

根据第二方面的一种实现方式,所述卷积核可以利用多个可配置的基本逻辑来提供。每个基本逻辑可以包括馈送受体,用于提供所述神经元的输入;可配置位,用于实现相应二元权重;耦合到所述馈送受体和所述可配置位的卷积算子,用于相对于所述输入和所述相应二元权重执行卷积运算。该方案为卷积核提供了高效的硬件实现。

根据第二方面的一种实现方式,所述方法可以包括将所述CNN的神经元的预激活值存储到存储器中。存储器可以是非瞬时性存储器。该方案为以低复杂度使用二元权重训练CNN提供了高效的硬件实现。

根据第三方面,提供了一种用于处理CNN的计算机程序。所述计算机程序可以包括程序代码,当所述计算机程序在计算机上执行时,所述程序代码用于执行所述第二方面所述的任一实现方式。计算机程序可以被配置用于训练CNN。

因此,本申请的实现方式可以提供用于以低复杂度处理和训练神经网络的设备、方法、计算机程序。根据下文描述的一个或多个示例性实施例,本申请的这些和其它方面是显而易见的。

任何方面都可用于使CNN能够原生嵌入到边缘设备中以进行边缘计算,即提供在该设备上直接训练的CNN。边缘计算也可以被称为边缘上人工智能(artificialintelligence,AI),需要计算量较小的CNN,因为边缘设备的功能可能比专用设备的功能相对要弱得多。它们还可能具有有限的存储资源和/或存储的资源。

附图说明

附图用于提供对示例性实施例的进一步理解,并构成本说明书的一部分,这些附图示出了示例性实施例,并与说明书一起帮助解释示例性实施例。在附图中:

图1示出了本申请实施例提供的机器学习模型的训练和推理的示例;

图2a和图2b分别示出了本申请实施例提供的机器学习模型的训练和推理的标准方法和机器学习模型的训练和推理的改进方法的示例;

图3示出了用于实施本申请的一个或多个实施例的设备的示例;

图4示意性地示出了本申请实施例提供的根据第一方法(上路径)和根据第二改进方法(下路径)训练机器学习模型的示例;

图5示出了本申请实施例提供的变分反向传播方法的示例;

图6示出了本申请实施例提供的二元卷积核的硬件实现的示例;

图7a和图7b分别示出了本申请实施例提供的用于配置全精度CNN的拓扑和用于CNN二元配置的拓扑的示例;

图8a和图8b分别示出了本申请实施例提供的全精度CNN和具有二元权重的CNN的测试性能的示例;

图9示出了本申请实施例提供的用于处理CNN的方法的示例。

在附图中,类似的附图标记用于表示类似的部件。

具体实施方式

现在将详细参考示例性实施例,其示例在附图中示出。下面结合附图提供的详细描述旨在作为对本实施例的描述,并不意图表示本示例可以被构造或使用的唯一形式。描述阐述了示例的功能以及构建和操作示例的操作顺序。但是,相同或等效的函数和序列可以通过不同的示例来实现。

图1示出了本申请实施例提供的机器学习模型的训练和推理的示例。在本示例中,由卷积神经网络(convolutional neural network,CNN)表示的机器学习模型110可以基于称为人工神经元的连接单元或节点的集合,所述连接单元或节点以松散方式对生物大脑中的神经元进行建模。每一个连接,就像生物大脑中的突触一样,都可以从一个人工神经元向其它神经元发送信号。接收信号的人工神经元可以处理信号,然后激活连接到信号的附加人工神经元。人工神经元可以聚集成层,其中,不同的层可以对其输入进行不同类型的变换。人工神经元之间的连接可以与在CNN训练期间调整的权重相关联。该权重会增加或减少连接处信号的强度。本文公开的CNN可以具有多个层。

在常见的CNN设计中,人工神经元之间的连接处的信号是实数,每个神经元的输出由其输入之和的某个非线性函数计算得出。人工神经元之间的连接通常具有随着学习进行而调整的权重。该权重会增加或减少连接处信号的强度。人工神经元可以具有阈值,使得只有在聚集信号超过该阈值时,才发送信号。

图1示出了CNN的训练和推理过程的一般方案。其中,模型110可以包括例如具有给定架构的卷积神经网络。该过程可分为两个阶段。在训练阶段,模型110可以用给定的训练数据集120训练,以调整其权重,或者通常调整模型110的任何可学习参数。然后,在推理阶段,经训练模型112可用于对测试数据集122的看不见数据执行预测。经训练模型112的输出或结果例如可以包括将测试数据集122的图像分类为狗或猫的类别。

CNN(包括本文公开的CNN)可以用于许多应用,例如与现代通信网络相关的应用。因此,CNN可能在未来网络中的设备(例如智能手机、传感器和/或可穿戴设备)中发挥非常重要的作用。此外,还可以包括其它追求节能的设备,如数据中心设备。例如,CNN可以应用于智能手机中的各种应用,包括图像识别、人像模式摄影、文本预测、用户画像、图像过滤器、去噪和相机增强。因此,一个动机是将CNN原生嵌入边缘设备中,即神经网络直接在设备上训练,边缘上AI正在成为一大产业趋势。边缘上AI需要计算量小的CNN,因为边缘设备的功能相对比专用设备低得多。还可能具有存储和/或存储的资源有限,以及能量峰值问题。

二元神经网络(binary neural network,BNN)可以形成为CNN。根据概念,BNN中的所有权重和激活都可以由二进制数表示,二进制数使用1位而不是全精度CNN使用的32位。这可能会显著减少内存占用空间。

使用低精度权重(即使是单层权重)训练神经网络是一个NP硬优化问题。例如,由于权重离散化,连续CNN的反向传播算法(可以基于计算损失函数的梯度)可能无效。当表示数字的位数小于8时,可能会出现梯度不稳定的问题。

因此,低精度神经网络(neural network,NN)的高效训练可以基于梯度近似的使用,这可能需要存储浮点权重和低精度权重,并使用浮点运算执行某种形式的反向传播(从而放弃一些离散化优势)。为了解决这个问题,可以为每个权重保留一个全精度值,然后(i)可以对该值进行二值化,(ii)可以通过直通估计器针对在二值化值上评估的梯度更新全精度值。

但是,需要说明的是,如果设计严格依赖具有梯度下降反向传播的全精度网络进行网络训练,则可能被认为是一种限制。因此,虽然获得的BNN可以减少预测阶段的内存使用,但它需要全精度网络训练,因此可能无法解决网络训练的阻塞内存问题。

训练BNN的另一种方法是使用受统计物理学启发的算法。其局限性在于,此类算法通常是为特定类型的网络设计的,可能不适用于CNN和深度架构。它们也不一定可用于具有多个层的NN。

克服梯度信息缺乏的另一种方法是将训练作为组合优化问题来解决,并将已知的方法应用于此类问题。一种方法是使用进化算法,但它可能会受到性能和可扩展性问题的影响。首先,虽然可以只考虑低精度权重,但存储在存储器中的权重数量可以乘以群体(population)大小,因此,即使对于二元权重和适度群体大小100,内存占用空间也可能大于存储具有16、32或64位浮点表示的十进制权重。其次,在训练期间,可能需要为群体中的所有成员进行一次前向传递。即使这可以并行完成,但在移动设备上使用与群体大小一样多的并行处理器进行训练可能难以实现。最后,群体大小应该随着权重的数量(优化参数空间的维度)增加而增加,这使得大型神经网络的缩放成为问题。

因此,可以寻求其它方案来完全在智能手机上训练低精度CNN。例如,可以通过在云上使用浮点运算来执行计算要求较高的训练阶段,其中资源限制得到放松。然后,可以在智能手机上提供CNN的低精度版本,以对看不见的数据执行要求较低的推理(前馈)阶段。但是,这样的方法可能仅产生固定的预训练低精度CNN,这不是期望的。低精度神经网络可以在软件或硬件中实现。具体地,二元神经网络可以基于逐位运算(在软件中)或数字逻辑电路,如NOR或XNOR(在硬件中)高效地实现。

本申请实施例可以应用于大大减少机器学习模型的资源需求,使得它们可以在资源受限的设备上直接实现和/或训练。一方面,公开了用于构建纯二元神经元的硬件电路(BOOLNET)的示例。此外,公开了一种不需要全精度算法的神经网络训练方法。所公开的神经网络的一个领域是边缘上AI(也是“边缘AI”),它可以在通信网络中的无线接口附近实现。例如,边缘AI受益于使用具有低内存和计算要求的神经网络,因为这使神经网络能够直接在边缘设备上训练。所公开的神经网络可以应用于例如计算机视觉、图像识别、对象检测、自动驾驶汽车,或作为用于第六代(sixth generation,6G)通信系统的本地AI。

图2a和图2b分别示出了本申请实施例提供的机器学习模型的训练和推理的标准方法和机器学习模型的训练和推理的改进方法的示例。在这两种情况下,可以应用用于训练和推理CNN的一般方案,例如如上文在图1的上下文中所示(图2a和图2b中未示出的一些部分)。

典型的CNN设计需要巨大的计算能力、能量、内存、数据用于训练和测试。在典型的CNN设计中,所有输入、输出、权重、偏置和激活函数都被认为是实数;通常各自在计算机中由32位序列表示,并使用实值算术运算。需要说明的是,在深度学习计算机视觉应用中,CNN可能具有数千个神经元,其中每个神经元可能有许多输入,从而产生数百万个这样的32位序列。因此,移动应用目前部署在分散的环境中:CNN在外部专用基础设施上训练,然后将经训练的网络与移动设备共享。这种策略可能不适合边缘上AI。

在标准方法的示例中,如图2a所示,训练例如在云计算系统等计算系统210中远程执行。此处,经训练模型112可以首先形成为第一经训练模型112-1,然后压缩成第二经训练模型112-2,其中,与第二经训练模型112-2相比,第一经训练模型112-1在内存使用等资源消耗方面更大。以此方式,虽然第一经训练模型112-1可能不适合边缘上AI,但第二经训练模型112-2可能适合用于此目的。第二经训练模型112-2可以被传输到远程设备200,例如用于边缘计算的边缘设备,从而可以用于推理。远程设备200还可以用于为计算系统210提供训练数据集120,以训练模型。

相比之下,图2b示出了本申请实施例提供的机器学习模型的训练和推理的改进方法的示例,其中,训练在远程设备200中执行。远程设备200可用于提供训练数据集120,使得模型训练可以在远程设备200内执行。然后,可以提供适合于边缘上AI的单个经训练模型112-3,该经训练模型112-3可以是二元模型。该模型既可以被训练,也可以被用于在远程设备处进行推理,使得不是必须使用计算系统210来提供模型。

图3示出了用于实施本申请的一个或多个实施例的设备的示例。设备300可以是如上所述的远程设备200。设备300可用于处理卷积神经网络(convolutional neuralnetwork,CNN),例如以提供和/或训练CNN。设备300可以包括至少一个处理器302。至少一个处理器302可以包括,例如各种处理设备中的一个或多个,例如协处理器、微处理器、控制器、数字信号处理器(digital signal processor,DSP)、包括或不包括DSP的处理电路,或者包括集成电路的各种其它处理设备,集成电路包括专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)、微控制器单元(microcontroller unit,MCU)、硬件加速器、专用计算机芯片,等等。

设备300还可以包括至少一个存储器304。存储器304可用于存储例如计算机程序代码等,例如操作系统软件和应用程序软件。存储器304还可以用于存储一个或多个神经网络。存储器304可以包括一个或多个易失性存储器设备、一个或多个非易失性存储器设备和/或它们的组合。例如,存储器304可以体现为磁存储设备(例如硬盘驱动器、软盘、磁带等)、光磁存储设备或半导体存储器(例如掩模型ROM、可编程ROM(programmable ROM,PROM)、可擦除PROM(erasable PROM,EPROM)、闪存ROM、随机存取存储器(random accessmemory,RAM)等)。

设备300还可以包括通信接口308,该通信接口308用于使设备300能够发送和/或接收信息。通信接口308可以用于提供至少一个无线连接,例如3GPP移动宽带连接(例如3G、4G、5G);无线局域网(wireless local area network,WLAN)连接,例如符合IEEE 802.11系列或Wi-Fi联盟标准的连接;短距离无线网络连接,例如蓝牙、近距离无线通信技术(nearfield communication,NFC)或RFID连接;本地有线连接,例如局域网(local areanetwork,LAN)连接或通用串行总线(universal serial bus,USB)连接等;或有线互联网连接。

设备300还可以包括用户界面310,该用户界面310包括至少一个输入设备和/或至少一个输出设备。输入设备可以采取各种形式,例如键盘、触摸屏或一个或多个嵌入式控制按钮。输出设备例如可以包括显示器、扬声器、振动马达等。

当设备300用于实现一些功能时,设备的某一组件和/或一些组件(例如至少一个处理器和/或至少一个存储器)可以用于实现该功能。此外,当至少一个处理器用于实现某一功能时,该功能可以使用例如包括在存储器304中的程序代码306来实现。

本文描述的功能可以至少部分地由一个或多个计算机程序产品组件(例如软件组件)来执行。根据实施例,设备包括处理器或处理器电路,例如微控制器,该处理器或处理器电路当被执行以执行本文描述的操作和功能的实施例时,由程序代码配置。可选地,或者另外,本文中描述的功能可以至少部分地由一个或多个硬件逻辑组件执行。例如,在不限于此情况下,可以使用的硬件逻辑组件的示例性类型包括现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(application-specific integratedcircuit,ASIC)、特殊应用标准产品(application-specific standard product,ASSP)、片上系统(system-on-a-chip,SOC)、复杂可编程逻辑器件(complex programmable logicdevice,CPLD)和图形处理单元(graphics processing unit,GPU)等。

设备300可以包括用于执行本文描述的一个或多个方法的装置或被配置用于执行本文描述的一个或多个方法。在一个示例中,所述装置包括至少一个处理器、包括程序代码的至少一个存储器,所述程序代码用于当由所述至少一个处理器执行时使所述设备执行所述方法。

设备300例如可以包括计算设备,例如移动电话、平板电脑、笔记本电脑、物联网(internet of things,IoT)设备、服务器等。IoT设备的示例包括但不限于消费电子产品、可穿戴设备、传感器和智能家电。尽管设备300示出为单个设备,但可以理解的是,在适用的情况下,设备300的功能可以分布到多个设备,例如,作为云计算服务实现示例性实施例。

图4示意性地示出了本申请实施例提供的根据第一方法(上路径)和根据第二改进方法(下路径)训练机器学习模型的示例。输入特征图作为上游数据集400提供。CNN的训练可以包括前馈传递和反向传递的迭代循环(也简称为“前馈”和“反向传播”)。

在第一种方法中,在来自输入特征图的CNN的前馈期间用于CNN的第一卷积核410可以是二元核。在前馈期间,可以使用实数算术来到达下游数据集412,下游数据集412可以是二元特征图。对于反向传播414,全精度梯度图可以用作下游数据集412。相应地,全精度梯度下降反向传播可以用于反向传播414。在反向传播414期间,可以使用第二卷积核410,其中,第二卷积核是全精度核。

第二方法可用于提供本申请的一个或多个优点,包括能够以低复杂度进行CNN神经网络的二元实现。这里,在来自上游数据集400的CNN的前馈期间用于CNN的卷积核420可以是与在CNN的反向传播424期间使用的卷积核420相同。卷积核是二元核,并且在前馈期间可以利用二元逻辑来到达下游数据集422,该下游数据集422可以是二元特征图。对于反向传播424,可以使用二元变分反向传播(在这里也指示为二元变分训练),该二元变分反向传播可以包括作为下游数据集422的二元变分信号。与第一种方法相比,这种方法可以显着减少所需的内存。

根据本申请,可以提供利用1位信息的二元CNN。为此,可以使用一个或多个二元卷积核和二元逻辑。CNN可以用于直接在二元域中训练。根据一个实施例,提供了一种CNN。CNN的神经元可以配置有二元权重。因此,CNN可以具有配置有二元权重的卷积核。二元权重还可以与相应的二元输入相关联。具有卷积核的CNN可以被训练以确定卷积核的二元权重集合。所述二元权重集合可以用于所述CNN的推理。处理CNN可以包括配置CNN以利用具有二元权重的卷积核。

根据一个实施例,卷积核(也称为卷积过滤器,或者在这里,简称为核)可以是维度为(h

根据一个实施例,卷积核包括卷积算子,该卷积算子可以用二元逻辑定义。可以单独或以任意组合使用XOR、AND OR等二元逻辑来定义卷积算子。或者或另外,可以单独或以任何组合使用负二元逻辑,例如NOR、NAND和XNOR。具体地,XOR或XNOR逻辑具有对称性并且正好与数值实现具有兼容性,因此被认为是高效的。可以使用二元卷积算子来代替通常使用的实数算术算子。例如,如果X是经过核W卷积的数据的一部分,则X可以具有与W相同的维度。现在,y可以指示X和W的卷积的结果。在标准卷积中,y可以通过以下(等式1)得到:

其中涉及标准乘法和加法(求和)。

根据本申请,X和W可以是二元的,并且y作为它们的卷积可以通过以下(等式2)得到:

其中,BLO是二元逻辑算子,例如XOR或XNOR。例如,BLO可以指示标准二元算子,例如XOR(异或算子),输出例如值1(指示TRUE),值0(指示FALSE)。因此,上述等式中的求和是在{0,1}上执行的,并且可以被视为TRUE值的计数器。

又例如,D和W可以表示维度为(h

其中,BLO可以是任何二元逻辑算子,例如如上所述。

二元卷积算子可以以简单的方式与二元数据类型一起使用。由于两个组({True,False},XOR)与({–1,+1},*)之间具有对偶性,其中,“*”是标准乘法器算子,例如如上所述,二元卷积算子可以直接应用于具有乘法器算子“*”的二元值。下面的表1总结了一个示例(其中,BLO=XOR,作为一个特别高效的示例)。

表1

在一个实施例中,激活(“输出”)可用于从预激活值创建二元输出,例如卷积y的间接或直接结果,如下(等式4)所示:

输出可以指示CNN的神经元的输出。它可以是二元激活。阈值T可用于从预激活值确定输出。阈值T可以是固定的,也可以设置为CNN训练期间要学习的参数。

这种设计支持二元变分反向传播,用于直接在二元域中训练CNN。

图5示出了本申请实施例提供的变分反向传播方法的示例。这可用于CNN的训练。如上所述,训练可以包括前馈传递和反向传递的迭代循环。前馈传递可以是简单的,而本申请的上下文中的隐藏细节可以在反向传递中找到。训练可以用于使得循环的目标是减小或最小化损失函数的值,该损失函数测量真实标签与在前馈传递期间由CNN预测的标签之间的差异。损失函数可以是预定义的,也可以是固定的。

图5示出在CNN的层上执行的反向传递。信号Z可以在CNN的神经元处从下游接收。对于反向传播,可以在神经元处使用二元变分训练500。该信号可以指示损失函数如何相对于其每个神经元输出的变化而变化。它还可以访问存储器502,该存储器502可以用于在先前的前馈传递期间存储预激活值。它还可以访问其它存储的信息。出于这些目的,提供CNN的设备可以包括耦合到其神经元的一个或多个存储器。对于二元变分训练,可以执行规则集,以便决定是否反转二元权重。信号Z'也可以针对神经元的上游传输进行计算。规则集可以是预定义的,也可以是固定的。该集合对于该过程的所有组件可以是通用的。

例如,规则集可以包括以下类型的规则,其中任何类型的规则都可以单独使用,也可以与其它规则结合使用:

-二元信号:二元信号可以取{True,False}中的值。对于二元信号b,用b

-二元信号的变化:如果二元信号b从False转变为True,则可以指示为增大,如果它从True转变为False,则可以指示为减小。

-实信号:实信号可以取实字段中的值。对于实信号x,表示x

-反向传播信号:如果反向传播信号Z的值为True或Z<0,则可以认为损失函数随着所指示的层输出的增大而减小。相反,如果反向传播信号Z的值为False或Z≥0,则可以认为损失函数随着所指示的层输出的增大而增大。

上述规则集是该领域合格人员可以定义的各种可能集合中的一个。因此,本申请不限于该特定规则集。这样的规则集可以用作在整个过程中建立二元变分训练的共同基础。具体地,需要说明的是,反向传播信号可以指示预定义的损失函数如何随着每层输出的变化而变化。它可以是二元值或实值的。此外,如上所述,可以为二元变分训练定义二元信号的变化方向。

二元变分反向传播可用于直接在二元域中训练CNN。CNN的权重可以通过二元逻辑优化,该二元逻辑可以从二元变分训练合成。在前馈传递期间,神经元的输出可以根据等式2和3提供,如上文所示。训练可用于优化卷积核的二元权重w

-建立变分真值表,以将二元权重的变化与损失函数的变化联系起来。继续反转二元权重,以评估反转权重的二元逻辑算子的新结果及其对应输入,以确定预激活如何相对于反转变化(例如,是增大、减小还是保持不变)。然后,利用反向传播信号,评估在进行二元权重的这种反转时损失函数如何变化(例如,是增大、减小或保持不变)。

-基于变分真值表,接收(合成的)二元逻辑规则,该规则指示在何种条件下反转二元权重,以使损失函数减小。

-遵循二元逻辑规则反转或保持每个二元权重。这种二元变分原理可用于遵循(合成的)二元逻辑规则的损失函数最小化的双重目标。

这可用于允许在二元域中保持CNN训练,同时正确优化二元核。重要的是,无需使用梯度下降的全精度CNN进行训练,因此仅从经训练的全精度网络中提取二元网络用于推理阶段。

反向传播信号也可以以不同于标准全精度CNN的方式计算,对于标准全精度CNN,反向传播信号是损失函数的导数。反向传播信号的计算可以按照上述规则集执行,遵循与上述二元变分训练相同的二元变分原理:

-建立变分真值表,以将输入的变化与损失函数的变化联系起来,同时考虑卷积核的结构和接收的信号Z。这可以以与权重的变分训练基本相同的方式进行。

-基于变分真值表,接收(合成的)二元逻辑规则,以确定输入的变化与损失函数的变化之间的相对变化。这导致信号反向传播到一个或多个上层。

可以通过二元卷积算子的结构在二元域中,同时保持可学习性所需的弹性激活特性并且通过用于优化二元权重的二元变分训练促进直接在二元域中训练CNN。根据本申请,CNN的训练和推理阶段均使用二元权重,无需全精度版本进行训练。CNN的输入可以是二元或非二元的,例如实值的。神经元的一个或多个非二元输入可以转换为二元数据,以便无论输入是二元或非二元,二元数据都可以用于卷积。二元逻辑可用于对二元权重和二元数据(例如转换或非转换输入)执行的卷积运算。二元激活函数(如Bool、Sign或Step函数)可用于维持二元域中的网络,同时提供可学习性的特性。

图6示出了本申请实施例提供的二元卷积核600的硬件实现的示例。核600可以包括多个可配置的基本逻辑。每个可配置的基本逻辑可以包括馈送受体620,用于提供所述神经元的输入;可配置位630,用于实现相应二元权重;耦合到所述馈送受体和所述可配置位的卷积算子620,用于相对于所述输入和所述相应二元权重执行卷积运算。卷积运算可以如上所述,例如XOR、AND、OR和/或XNOR。这里的输入可以是转换的或非转换的输入,这取决于神经元的初始输入是二元输入还是非二元输入。相应地,核600或可配置的基本逻辑可以包括用于将输入转换为二元数据的转换单元。卷积算子可以被配置用于对两个二元数据集(即二元权重和(非)转换的二元输入)执行卷积。多个可配置的基本逻辑可以根据指定的布局来布置,例如,正方形布局等矩形布局。对于激活,预激活门640(例如求和门)可以耦合到核600,用于提供来自可配置的基本逻辑的输出的预激活。二元类型的激活门650可以耦合到预激活门640,用于提供来自预激活的激活。激活可以作为神经元的输出提供。激活可以作为二元值提供。存储器660可以耦合到预激活门640,用于存储预激活值。包括预激活门640和/或激活门650的激活部分可以结合在卷积核600中或实现为分离部分。

图7a和图7b分别示出了本申请实施例提供的用于配置全精度CNN的拓扑和用于CNN二元配置的拓扑的示例。这提供了性能测试的示例。在测试中,将根据本申请(图7b)的方案(CONV BOOLNET)与全精度CNN进行比较。全精度CNN被配置有如图7a所示的最佳拓扑。为了公平比较,CONV BOOLNET被设置为如图7b所示的拓扑,例外是,它不包括DropOut层。这两个网络都用MNIST数据集测试,它们的性能按对应的顺序在图8a和图8b中示出。如图所示,CONV BOOLNET可以实现至少与全精度CNN相当的性能,同时将训练内存减少到分数1/64。需要说明的是,上述拓扑是深度学习社区针对全精度CNN进行了大量优化的架构。显然,这种拓扑可能不一定是CONV BOOLNET的最佳拓扑。因此,期望缩小CONV BOOLNET与全精度CNN之间的任何性能差距,以获得CONV BOOLNET的最佳拓扑。还发现,CONV BOOLNET可以支持提供数值稳定性,其中,全精度网络在梯度计算以及对数、逆运算和指数运算中遇到严重的数值不稳定性。

下面提供了三个示例。对于所有这些示例,使用了如上所述的(通用)规则集。

示例1:具有XOR逻辑的二元核的二元输入

在这种情况下,输入x和权重w是二元的,而反向传播信号Z可以是实值的或二元的。

(a)权重的二元变分训练

表2:变分真值表

合成逻辑:

如果XOR(x,w,zbool)=True,则反转w。

处理步骤:

(1)将variational_momentum初始化为0,与权重核具有相同维度;

(2)计算:p=XOR(x,z

(3)计算:p=(–1)

(4)如果z是实信号,则将|z|合并到p:p←|z|.p=z.x

(5)将激活效果v合并到p:p←v.p;

(6)在批维度上取p的和:q:=sum(批维度上的p);

(7)将q添加到variational_momentum存储器中;

(8)获得索引:I0=(w=False and variational_momentum<=–1),I1=(w=Trueand variational_momentum>=1);

(9)在索引I0和I1下反转w;

(10)在索引I0和I1下将variational_momentum重置为0。

备注:

·对于二元输入和权重,请跳过步骤(2)。

·如果z是实数,则可以直接从步骤(4)计算p。

如果激活函数是可微的,则激活效果v实际上是在预激活值处获得的激活函数的导数。但是,为了符合本申请的利益,可以使用布尔(也称为阈值)激活。在这种情况下,v可以是用于指示预激活值如何远离阈值的任何因子。在实施例中,v可以近似为0.5*tanh'或sigmoid'。

(b)二元变分反向传播

这是为了计算要反向传播到上游的信号。

表3:(T=True,F=False,Inc=增大,Dec=减小)

合成逻辑:

反向传播信号=XOR(w,z

处理步骤:

(1)计算:p=XOR(w,z

(2)计算:p=(–1)

(3)如果z是实信号,则合并|z|:p←|z|.p=z.w

(4)合并激活导数:p←v.p;

(5)在层维度上取p的和:q=sum(层输出维度上的p);

(6)对于实值反向传播信号,反向传播q,对于布尔反向传播信号,q

·对于二元输入和权重,请跳过步骤(1)。

·如果z是实数,则可以直接从步骤(3)计算p。

示例2:具有XOR逻辑的二元核的二元输入

在这种情况下,输入x和权重w是二元的,而反向传播信号Z可以是实值的或二元的。

(a)权重的二元变分训练

表4:变分真值表

合成逻辑:

-如果x=False:忽略

如果x=True:如果XOR(z

处理步骤:

(1)将variational_momentum初始化为0,与权重核具有相同维度;

(2)获得:p=z

(3)如果z是实信号,则合并|z|:p←|z|.p=z;

(4)合并激活导数v:p←v.p;

(5)计算:p=x

(6)在批维度上取p的和:q=sum(批上的p);

(7)将q添加到variational_momentum存储器中;

(8)获得索引:I0=(w=False and variational_momentum<=–1),

I1=(w=True and variational_momentum>=1);

(9)在索引I0和I1下反转w;

(10)在索引I0和I1下将variational_momentum重置为0。

(b)二元变分反向传播

表5:(T=True,F=False,Inc=增大,Dec=减小)

合成逻辑:

·如果w=False:忽略(或变化=0);

·如果w=True:反向传播=z

处理步骤:

(1)获得:p=z

(2)获得:p=(–1)

(3)如果z是实信号,则合并|z|:p←|z|.p=z;

(4)合并激活导数:p←v.p;

(5)计算:p=w

(6)在层输出维度上取和:q=sum(层输出维度上的p);

(7)对于实值反向传播信号,反向传播q,对于布尔反向传播信号,q

备注:

·对于实信号z,步骤(1至5)可以在一个步骤中执行:p=w

示例3:使用二元核的实输入

在这种情况下,输入数据x是实数,卷积核w是二元的,卷积算子是标准的实数算术卷积。

(a)权重的二元变分训练

表6:变分真值表

备注:此示例的变分真值表直接对应于示例1的变分真值表。

合成逻辑:

如果XOR(x

处理步骤:

(1)将variational_momentum初始化为0,与权重核具有相同维度;

(2)计算:p=XOR(x

(3)计算:p=(–1)

(4)合并|x|:p←|x|.p=x.z

(5)如果z是实信号,则将|z|合并到p:p←|z|.p=z.x→类似于实数层;

(6)将激活效果v合并到p:p←v.p;

(7)在批维度上取p的和:q:=sum(批维度上的p);

(8)将q添加到variational_momentum存储器中;

(9)获得索引:I0=(w=False and variational_momentum<=–1),I1=(w=Trueand variational_momentum>=1);

(10)在索引I0和I1下反转w;

(11)在索引I0和I1下将variational_momentum重置为0。

备注:

·直接转到步骤(4)。

·此外,如果z是实数,则可以直接转到步骤(5)。

·此过程可以直接应用于二元数据类型。

(c)二元变分反向传播

表7:(Inc=增大,Dec=减小)

合成逻辑:

·如果w=False:忽略(或变化=0);

·如果w=True:反向传播=z

备注:这直接对应于示例2。

处理步骤:

·遵循实施例2的步骤。

图9示出了本申请实施例提供的用于处理CNN的方法900的示例。

在901,方法可以包括配置CNN用于利用具有二元权重的卷积核。

在902,方法可以包括使用卷积核训练CNN,以确定卷积核的二元权重集合。

在903,方法可以包括使用二元权重集合进行C的推断。

方法900的其它特征直接来自用于提供和/或训练一个或多个二元神经网络的设备300的功能,如在所附权利要求书中和整个说明书中所述,因此在此不重复。还可以应用方法的不同变化,如结合各种示例性实施例所述。

本申请实施例提供的CNN(也简称“神经网络”)可以包括具有神经元i

根据实施例,对神经网络的输入可以包括图像。例如,神经网络可以用于对图像进行分类或识别和/或对图像中的对象进行分类。根据实施例,神经网络的输入可以包括自主导航数据,例如,关于车辆的位置或速度的信息、由车辆的一个或多个传感器(例如相机、雷达、激光雷达等)捕获的数据。神经网络可以用于确定对车辆的导航或控制指令。神经网络可以在通信网络的边缘设备上实现,该边缘设备例如在通过无线接入网连接到设备(例如手机或汽车)的核心网的边缘。

所公开的CNN涉及神经元,该神经元是二元神经元。本申请实施例提供的二元神经元的设计可以满足以下标准。首先,布尔神经元的运算可以在二元域内进行,包括权重,但也可以例如一个或多个输入和/或一个或多个输出。其次,二元神经元可以具有激活函数,该激活函数具有非线性性质,从而使神经网络能够推广到看不见的数据。神经元是神经网络的二元神经元B的一个示例。神经元可以具有二元权重w

二元算子BLO(也是“二元函数”)可以包括例如AND、OR、NAND、NOR、XNOR(异或非)或XOR(异或)算子。异或运算也可以用“⊕”表示。神经元可以针对每个二元权重和相应输入评估二元函数BLO(b

根据本申请的预激活可以通过激活函数进一步处理。激活函数通常可以包括将预激活从值(例如整数值)映射到输出(可以是二元输出)的任何函数。因此,激活函数可以包括二元激活函数。需要说明的是,根据本申请实施例,预激活在概念上可以仅是整数值,而在神经元的硬件实现中,关联信号可以是二元的。根据示例性实施例,激活函数可以包括阈值函数。阈值函数可以应用在预激活y上,以提供布尔值作为输出,例如根据等式4,其中,T是预激活值y的阈值。阈值T可以是整数。以下条件对于阈值适用:0

作为二元神经元的硬件实现的示例,根据本申请实施例,神经元可以包括逻辑阈值门(logic threshold gate,LTG)。考虑等式5,在预激活部分中,二元输入可以暂时从二元域转变到整数域。这使得可以使用具有非线性特性的激活函数。但是,这可能并不总是理想的,因为它可能与将神经元完全保持在二元域中的目标相冲突。但是,这可以通过应用特定类型的硬件(例如逻辑阈值门(logic threshold gate,LTG))来避免。LTG包括求和和决策,从而可以在门本身内做出决策,因此可以直接从二元输入产生纯二元输出。因此,LTG可以用于实现等式5的总和以及基于阈值的激活函数。这使单个LTG能够进行简单的硬件实现。此外,这使得计算保持在二元域中。因此,基于神经元构建的CNN可以是纯二元的。

神经元的二元输入b

根据示例性实施例,神经元的输出可以例如通过以下(等式6)确定:

例如,阈值T可以设置为T=(m+1)/2。例如,BLO可以是XOR。

根据本申请实施例,变分反向传播能够在二元域中使用合成的二元逻辑训练二元CNN。下面提供了在层上执行反向传递的操作示例。考虑的层(例如神经网络的第二隐藏层)的神经元可以从下游层接收二元反向传播信号Z。信号Z可以包括指示损失函数如何相对于每个神经元输出变化的二元信号。当取值为第一二元值(例如FALSE)时,Z可以指示损失函数相对于神经元输出增大。当取值为第二二元值(相对于第一二元值互斥,例如TRUE)时,Z可以指示损失函数相对于神经元输出减小。在这方面,如果神经元输出从第二二元值转变为第一二元值,则它可以称为增大。如果神经元输出从第一二元值转变为第二二元值,则它可以称为减小。

用于变分反向传播的操作可以包括权重的变分训练。该操作可以将接收的二元反向传播信号Z作为输入,并考虑神经元函数,以便建立每个二元权重与损失函数之间的变分关系的二元变分真值表。基于真值表,可以确定合成规则(或逻辑),以便在训练迭代中决定是改变还是保持每个二元权重。根据运算时从变分训练中给出的合成逻辑,每个神经元的权重可以相应地调整。

用于变分反向传播的运算可以包括计算上游层的二元反向传播信号Z′。该信号的规格可能与信号Z的规格相同。例如,目的是如果损失函数随着神经元的输入增大而增大,则发送第一二元值,否则发送第二二元值。为此,可以建立损失函数与神经元输入之间变分关系的真值表,以便合成用于确定反向传播信号Z′的逻辑。这种变分反向传播方法至少具有以下优点:它的变分原理可以直接应用于布尔域,并可以用来替换二元CNN的梯度下降方法。它还具有梯度下降方法的所有期望特征,例如适合于迷你批处理训练,在迷你批处理训练中,并非使用一个数据样本而是使用数据样本的子集进行一次训练迭代。此外,它能够完全在二元域中使用二元逻辑训练二元CNN,从而达到设计纯二元CNN的目标,从而大大减少内存和计算能量。

在变分反向传播中,可以使用指定预定义损失函数如何随神经元输出变化的二元反向传播信号来调整二元权重。改变或保持二元权重的决策可以基于逻辑规则作出,逻辑规则可以从变分真值表合成。变分反向传播还可以包括基于逻辑规则计算要反向传播到上层的信号,逻辑规则可以从更新的权重、神经元函数和接收的反向传播信号合成。

神经网络的层可以包括一个或多个神经元。例如,考虑的层的神经元可以从对应的下游层的一个或多个神经元(1……N)接收二元反向传播信号Z。对于一个训练数据样本,神经元可以从下游层的第j神经元接收反向传播信号z

在训练期间,可以基于包括神经元的第i二元权重和神经元的相应输入的输入来评估神经元的二元函数(或相应地,预激活函数)。此外,可以确定二元函数(或相应地,预激活函数)相对于第i二元权重的反转的趋势,并最终可以做出是否反转第i二元权重的决策。确定是否反转第i二元权重可以基于二元函数(或预激活函数)相对于第i二元权重的反转的趋势和损失函数相对于神经元的输出的变化的趋势,如下文将进一步描述。二元函数(或预激活函数)相对于第i二元权重的反转的趋势可以指示反转使二元函数(或预激活函数)增大还是减小。

基于真值表,可以确定损失函数的变化,例如,损失函数相对于神经元的输出的变化的趋势。例如,如果接收的二元反向传播信号z

例如,变分训练可以包括:如果预激活函数或二元函数(例如BLO)相对于w

变分训练还可以包括:如果预激活函数或二元函数(例如BLO)相对于w

变分训练还可以包括:如果预激活函数或二元函数(例如BLO)相对于w

变分训练还可以包括:如果预激活函数或二元函数(例如BLO)相对于w

由于目标可能是最小化损失函数,因此只有当改变使损失减小时,神经元的第i权重w

经训练的神经网络的一个或多个神经元可以用于例如针对神经元和相应输入的每个二元权重评估二元函数(例如XOR)。当针对每个二元权重和相应输入评估二元函数时,一个或多个神经元还可以基于二元函数的至少二元输出的总和确定一个或多个预激活值。一个或多个神经元还可以用于基于预激活值的阈值确定一个或多个神经元的输出,该输出可以是二元输出,如上所述。一个或多个神经元可以例如基于逻辑阈值门实现。

但是,下游层可以有多个神经元。这些神经元可以反向传播不同的信号(Z=[z

变分训练还可以包括,如果指示w

例如如上所述,随着在变分反向传播操作时更新权重,可以计算上游层(例如CNN的第一层)的第i二元反向传播信号

为了确定一个或多个上游二元反向传播信号的值,可以执行变分分析。

第i二元上游反向传播信号

如上所述,下游层可以具有多个神经元,这些神经元可以发送独立的二元反向传播信号z

上游反向传播信号u

根据示例性实施例,变分反向传播可以与迷你批处理训练一起应用,该迷你批处理训练在每个训练循环中不仅使用一个数据样本,而且使用多个数据样本,因此反向传播信号Z可以是数据样本上的矩阵。例如,对于第d数据样本:神经元的前馈输入可以是

在一个示例中,神经元的预激活值可以被结合到合成逻辑中,以便提高性能。可以为多个数据样本中的每一个确定神经元812的数据样本特定预激活值。与上面类似,可以确定指示w

通过将缩放函数应用于指示w

例如,使用迷你批处理的权重w

使用迷你批处理训练的变分反向传播还可以包括确定上游层的一个或多个二元反向传播信号。如上所述,用于确定上游二元反向传播的流程可以扩展到类似于训练权重的迷你批处理训练。例如,可以针对多个数据样本d中的每一个确定指示将第i二元上游反向传播信号设置为第一二元值的二元反向传播信号

可以使用缩放函数f缩放指示将第i二元上游反向传播信号设置为第一二元值或第二二元值的反向传播信号

例如,确定(组合)二元反向传播信号u

因此,本文公开的实施例提供了一种基于二元神经元的神经网络的低复杂度实现,该神经网络可以用简单的逻辑阈值门实现。还公开了能够在二元域中训练神经网络的方法,用于基于单个数据样本和小批量数据样本的训练。

设备可以用于执行或使得执行本文描述的一个或多个方法的任何方面。此外,计算机程序可以包括程序代码,当计算机程序在计算机上执行时,该程序代码用于执行本文所述的一个或多个方法的一个方面。此外,计算机程序产品可以包括存储有程序代码的计算机可读存储介质,该程序代码包括用于执行本文所述的一个或多个方法的任何方面的指令。此外,设备可以包括用于执行本文所述的一个或多个方法的任何方面的装置。根据示例性实施例,所述装置包括至少一个处理器和包括程序代码的一个存储器,所述至少一个处理器,所述程序代码用于当由所述至少一个处理器执行时执行所述一个或多个方法的任何方面。

例如,设备可以用于执行二元神经网络的变分训练,如本文所公开。此外,一种方法可以包括提供和/或执行本文描述的一个或多个二元神经网络的推理。用于训练神经网络的方法可以包括用于制造神经网络的方法。

本文给出的任何范围或设备值均可以扩展或更改,但不会丢失所寻求的效果。除非明确禁止,否则任何实施例还可以与另一实施例组合。

尽管已经以结构特征和/或动作特定的语言描述了主题,但是应该理解的是,所附权利要求书定义的主题不必局限于上面描述的具体特征或动作。相反,上文描述的具体特性和动作作为实施权利要求书的示例进行公开,并且其它等效特征和动作旨在包含于权利要求书的范围内。

应该理解的是,上面描述的优点和优势可以涉及一个实施例,或者可以涉及多个实施例。实施例不限于解决任意或全部所述问题,也不限于具有任意或全部所述优点和优势的实施例。还应该理解的是,提及“一个”项目时可以指这些项目中的一个或多个项目。

本文描述的方法的步骤或操作可以按任何适合的次序进行,或在适当时同时进行。此外,可以在不脱离本文描述的主题的范围的情况下从方法中的任何一个中删除个别方框、操作或元素。上面描述的任意实施例的方面可以与所描述的任何其它实施例的方面组合以形成更多实施例,而不影响所要达到的效果。

本文使用的术语“包括”意指包括所标识的方法、方框、操作或元素,但此类项目不包括排他性列表,且方法或设备可以包括附加的方框、操作和/或元素。

虽然主题可被称为“第一”或“第二”主题,但这不一定指示主题的任何顺序或重要性。相反,这些属性可以仅用于区分主题的目的。

应该理解的是,以上描述仅作为示例提供,并且本领域技术人员可以进行各种修改。以上说明书、示例和数据完整描述了示例性实施例的结构和使用。尽管上文相对详细地或结合一个或多个单独实施例描述了各种实施例,但本领域技术人员可以对所公开的实施例进行各种变更,而不脱离本申请的范围。

相关技术
  • 用于处理运动的成件货物的设备和方法,具有用于处理运动的成件货物的设备的输送、处理和/或包装机组
  • 一种用于彩钢板运输预处理的包装设备及其使用方法
  • 用于卷发的理发设备的控制方法和使用这种方法的理发设备
  • 应用于卷积神经网络的信息处理方法和装置
  • 二元关系提取装置、使用二元关系提取处理的信息检索装置、二元关系提取处理方法、使用二元关系提取处理的信息检索处理方法、二元关系提取处理程序、以及使用二元关系提取处理的信息检索处理程序
  • 将二元信息信号的数据比特流转换成约束二元信道信号数据比特流的方法、用于编码的设备,包括约束二元信道信号数据比特流的信号,记录载体和用于解码的设备
技术分类

06120116499203