首页> 中国专利> 基于人工神经网络类别的修剪

基于人工神经网络类别的修剪

摘要

本发明涉及基于人工神经网络类别的修剪。实现和使用用于针对特定监视状况配置人工神经网络的技术的方法和包括计算机程序产品的装置。选择监视状况特有的多个对象类别。对象类别形成人工神经网络针对其被训练的对象类别的总数的子集。访问包括人工神经网络内的神经元的激活频率值的数据库。激活频率值是对象类别的函数。从人工神经网络中去除具有低于所选择的对象类别的子集的阈值的激活频率值的那些神经元。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-09-10

    授权

    授权

  • 2018-12-25

    实质审查的生效 IPC(主分类):G06N3/06 申请日:20171128

    实质审查的生效

  • 2018-06-29

    公开

    公开

说明书

背景技术

本发明涉及一种人工神经网络,更具体地,涉及一种用于对象识别和验证的人工神经网络。近年来,对这种人工神经网络的改进主要是由于网络扩展和训练数据的增加。然而,复杂的人工神经网络架构通常包含数千万或数亿个参数。尽管这样的人工神经网络产生良好的精度,但是大量的参数可能使得部署变得不可行,特别是在经常具有有限计算能力的嵌入式系统上。随着人工神经网络规模的不断扩大,对人工神经网络的压缩越来越受到关注,以保持改进,同时使人工神经网络在具有有限计算能力的系统中得以实现。

由于人工神经网络通常非常大,如上所述,它们通常可能是“过度参数化的”。这使得能够在不显著影响人工神经网络的性能的前提下去除参数(如权重和偏差)或整个神经元。这个过程通常被称为“修剪(pruning)”人工神经网络。当神经元被去除时,能够回溯(back-trace)该神经元的计算。然后可以看出,通向该神经元的所有权重可被安全地去除。还能够跟踪神经元输出并去除从该神经元而来的权重。然而,在修剪过程中识别哪些神经元被去除以及以能够获得性能的方式实现修剪过程并不轻松。

修剪可应用于包含可训练参数的层,传统上完全连接的层和卷积(convolutional)层。这有助于简化和加速计算。例如,从完全连接的层中去除神经元相当于略过在矩阵行和向量之间的点积。结果,矩阵变小。从卷积层中去除神经元意味着略过一个矩阵行和一个矩阵列之间的点积,这与跳过一个卷积相同。神经元的去除将在下面的详细说明中进一步详细讨论。通过在训练/测试阶段期间分析神经元并且从所得到的识别哪些神经元“死亡”(即哪些神经元很少或者从来不产生非零输出)的数据,可在不严重影响人工神经网络的精度的前提下确定哪些神经元可被去除。决定神经元必须产生多少次非零输出才能被定义为死亡可通过比较使用不同阈值的性能来完成,并且在神经元被去除之后可进行重新训练以改善性能。这可以迭代地进行。

另一种修剪方法的重点是去除权重,已在训练步骤期间使用阈值或使用符合规范的正则化迫使一些权重为零。正则化是本领域普通技术人员熟知的数学/统计方法,用于强制条件,例如稀疏性(迫使某些值为零)或平滑度。有关用于修剪的正规化的更多细节,请参阅文章:“Memory bounded deep convolutional networks(记忆有界的深卷积网络)”arXiv CoRR 2014–Section 3:Regularization Updates available online at https://arxiv.org/abs/1412.1442(在https://arxiv.org/abs/1412.1442处可在线获得的正则化更新的第3章)。

通过以这些方式充分修剪人工神经网络,利用可避免对去除的参数的计算的实现,用于执行人工神经网络的计算低于用于全网络的计算。

发明内容

本发明的目的在于全部或部分地消除上述问题。该目的通过根据权利要求1所述的方法、根据权利要求9所述的计算机程序产品、根据权利要求15所述的存储介质来实现。

根据第一方面,本发明涉及一种在计算机系统中用于针对特定监视状况配置人工神经网络的方法。该方法的特征在于下述步骤:

-选择监视状况特有的多个对象类别,其中对象类别形成人工神经网络针对其被训练的对象类别的总数的子集;

-访问包括人工神经网络内的神经元的激活频率值的数据库,其中激活频率值是对象类别的函数;并且

-从人工神经网络中去除具有低于所选择的对象类别的子集的阈值的激活频率值的那些神经元。

这提供了一种创建轻量级的人工神经网络的方法,因此适合于诸如摄像机或移动设备的嵌入式设备。特别是,通过知道只有少数类别(即,所有可能的类别的一个子集)可被预期并且基于神经元使用的频率将人工神经网络修剪成这些类别,能够根据需要使大的人工神经网络适应于不同的先决条件,而不必像通常所做的那样重新训练人工神经网络。重新训练人工神经网络通常需要大量的时间以及用于重新训练的新的数据,而将人工神经网络修剪到类别的某一集合是快得多的操作。此外,该方法可与其他常规方法(例如,使用将权重二值化或正则化为零)组合使用,以可能去除更多数量的神经元,甚至进一步降低在嵌入式设备中部署人工神经网络的计算性能。

根据一个实施例,阈值是在人工神经网络的训练程序期间为每个类别确定的静态值。通过针对不同的相关类别允许不同的阈值,相比于针对每个相关类别全面地使用相同的阈值,能够提高系统的精度。

根据一个实施例,基于系统性能,阈值对每个类别是自适应的。通过具有基于系统性能的自适应阈值,可基于从部署系统的实际监视状况获得的数据来进一步增强系统。

根据一个实施例,可基于在特定时间段内收集到的数据,对监视状况特有的对象类别的选择进行优化,并且可针对对象类别的所优化的选择,重复选择、访问和去除步骤。这允许基于真实的观测数据和系统性能的评估进一步细化和微调系统。

根据一个实施例,选择、访问和去除步骤中的至少一些是响应于通过用户界面接收的用户输入来执行的。具有用户界面允许用户基于来自用户的输入决定修剪应该自动化的程度。例如,用户可决定添加或删除相关类别,改变各个类别的阈值等,以便进一步改善修剪后的人工神经网络的功能。

根据一个实施例,去除完全连接的人工神经网络中的神经元与从形成人工神经网络的各个层的数学表示的矩阵去除行和列相对应。通过去除整个神经元,与仅去除权重相反,可显着减少在计算来自人工神经网络的输出时所需的计算量。

根据一个实施例,从人工神经网络去除神经元包括去除足够数量的神经元,使得用于计算来自人工神经网络的输出所需的计算资源的减少超过用于维持关于去除的神经元的记录所需的计算资源的增加。也就是说,在修剪人工神经网络的情况下,可找到损益平衡点,使得与非修剪网络相比,所需的计算资源要低得多,从而使其适合在嵌入式设备中部署,而在同时人工神经网络的性能仍然很高。

根据一个实施例,人工神经网络被部署在嵌入式设备中。嵌入式设备可以是例如监视摄像机或蜂窝电话。通过能在这种类型的嵌入式设备中使用人工神经网络,可显着增强嵌入式设备的操作。

根据第二方面,本发明涉及一种用于针对特定监视状况配置人工神经网络的计算机程序。计算机程序包含与下述步骤对应的指令:

-选择监视状况特有的多个对象类别,其中对象类别形成人工神经网络针对其被训练的对象类别的总数的子集;

-访问包括人工神经网络内的神经元的激活频率值的数据库,其中激活频率值是对象类别的函数;并且

-从人工神经网络中去除具有低于所选择的对象类别的子集的阈值的激活频率值的那些神经元。

根据第三方面,本发明涉及一种包括这样的计算机程序的数字存储介质。计算机程序和存储介质包含与方法的那些优点对应的优点,并且可类似地被改变。

在附图和下面的描述中阐述了本发明的一个或多个实施例的细节。从说明书和附图以及权利要求中,本发明的其他特征和优点将是显而易见的。

附图说明

图1示出了根据一个实施例的修剪人工神经网络的过程100的流程图。

图2示出了根据一个实施例的人工神经网络200的示意图。

图3示出了根据一个实施例的、修剪前的图2的神经网络的全计算的等式300。

图4示出了根据一个实施例的、修剪后的图2的神经网络的计算的等式400。

在各个附图中相同的附图标记表示相同的要素。

具体实施方式

综述

如以上所讨论的,本发明的一个目标是修剪人工神经网络,以使人工神经网络能够在诸如摄像机和移动设备的嵌入式设备中使用。本文中所描述的各种实施例通过基于特定类别的图像的神经元的使用频率分别针对每类对象修剪权重来实现此目标。这可以以类似于常规技术的方式完成,例如通过在测试阶段期间分析人工神经网络的神经元,并且从这种分析的结果中识别哪些神经元较少使用。然而,根据本文中描述的实施例,仅通过人工神经网络馈送属于某个类别的图像,并且识别低性能神经元。

如本领域技术人员将理解的,本发明的各方面可体现为系统、方法或计算机程序产品。因此,本发明的各方面可以采取全部硬件实施例、全部软件实施例(包括固件、驻留软件、微代码等),或在本文中可全部通常被称为“电路”、“模块”或“系统”的结合软件和硬件方面的实施例的形式。此外,本发明的各个方面可采取计算机程序产品的形式,该计算机程序产品体现在一个或多个其上包含有计算机可读程序代码的计算机可读介质中。

可使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质可以是但不限于电子的、磁的、光学的、电磁的、红外的或半导体的系统、装置或设备,或前述的任何合适的组合。计算机可读存储介质的更具体的示例(非穷举列表)将包括以下:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或前述的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是可包含或存储由指令执行系统、装置或设备使用或与其结合使用的程序的任何有形介质。

计算机可读信号介质可包括其中体现计算机可读程序代码的传播数据信号,例如在基带中或作为载波的一部分。这样的传播信号可采取多种形式中的任何形式,包括但不限于电磁的、光学的或其任何合适的组合。计算机可读信号介质可以是不是计算机可读存储介质并且可传送、传播或传输供指令执行系统、装置或设备使用或与其结合使用的程序的任何计算机介质。

体现在计算机可读介质上的程序代码可使用任何适当的介质来传输,该介质包括但不限于无线、有线、光纤电缆、RF等,或前述的任何合适的组合。用于实现本发明方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,该编程语言包括诸如Java、Smalltalk、C++等的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言的常规的程序性编程语言。程序代码可以完全在用户的计算机上执行,部分在用户的计算机上作为独立的软件包执行,部分在用户的计算机上且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种场景下,远程计算机可通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。

下面参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述本发明的各个方面。将理解,流程图说明和/或框图的每个块以及在流程图说明和/或框图中的块的组合可通过计算机可用程序指令实现。这些计算机程序指令可被提供至通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得当由计算机或其他可编程数据处理装置的处理器执行该指令时,创建实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。

这些计算机程序指令还可存储在可引导计算机、其他可编程数据处理装置或其他设备以特定方式运行的计算机可读介质中,使得存储在计算机可读介质中的指令产生制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的指令。

计算机程序指令还可被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程设备或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的过程。

人工神经网络修剪

现在将通过举例的方式并参考图1至图4来描述根据本发明的各种实施例的技术。在本示例中,假设存在人工神经网络,已经对该人工神经网络的1000个类别进行了训练。然而,例如,在监视摄像机记录图像的情况下,用户可能只对1000个类别中的12个感兴趣。

图1是示出了根据本发明一个实施例的修剪人工神经网络的过程100的流程图。如图1所示,为了找出哪些神经元对这些类别是低性能的,在步骤102中访问数据库。该数据库包含作为对象类别的函数、人工神经网络内的神经元的激活频率值。

接下来,在步骤104中识别可安全地从人工神经网络去除的低性能神经元。例如,这可通过研究12个类别中的每个类别的神经元的激活频率值、并且使用定义什么激活频率值构成低性能神经元的阈值来完成。阈值可根据人工神经网络的训练程序期间不同的类别预先确定,或者可根据预测性能在推理程序期间自适应。也就是说,阈值可适应系统性能。

最后,在步骤106中,将低性能神经元从人工神经网络去除,这结束过程100,并导致能够根据用户的需要调整其架构的“自适应人工神经网络”。

在一些实施例中,该过程可能需要来自用户的通过用户界面(UI)的特定输入,并且可根据需要重复该过程。例如,在一个实施例中,可存在特定监视状况的完全评估的时间段(例如,一周),随后选择和修剪在该时间段期间已识别的类别。

可使用各种程度的自动化来帮助用户选择类别。例如,在一些实施例中,类别的选择可完全自动化。在其他实施例中,可向用户呈现自动选择的类别的子集,并且可从中进行手动用户选择。在又一些其他实施例中,用户可在所有类别中自由选择。一些实施例还允许用户对所选择的类别的集合进行添加,如果用户确定这样的添加对于在考虑中的具体情况将是有益的。基于具体情况,本领域普通技术人员可想到许多变化。

图2示出了仅由完全连接的层构成的小型人工神经网络200的示意图,利用上述技术,某些神经元(以虚线示出)已经从该人工神经网络去除,以创建自适应人工神经网络。图3示出了神经元被实际去除之前的人工神经网络的全计算300,图4示出了在去除对应于去除的神经元的计算之后的计算400,即,由所得到的自适应人工神经网络执行的计算。

通过分别比较图3和图4中的等式可以看出,在去除低性能神经元后,计算量明显减少。通常,如果修剪基于较少的类别(例如,如果用户只对6个类别而不是12个类别感兴趣),则可修剪更多的神经元和权重,因为训练数据的变化性降低,从而导致更线性的人工神经网络。

表示稀疏矩阵

修剪人工神经网络的传统方法是通过独立地查看权重值并去除低于特定阈值的权重来完成的。然而这在各个层中引入了稀疏性,该稀疏性是非结构化的。如果替代地修剪基于神经元,则所有对修剪掉的神经元有贡献的权重都可被去除,导致结构化的稀疏性。在具有完全连接的层的人工神经网络的情况下,这意味着输出计算中的整个行和列可被去除。

由于权重矩阵所需的唯一操作是乘法,因此可以去除与修剪掉的神经元对应的行和列,而不会影响结果。使用这种技术,矩阵的大小被减小,这在传统的修剪方法中也是常见的,但是用于表示稀疏矩阵的指数(indices)不是针对每个矩阵存储,而是仅针对所得到的矩阵,以重新构建最终完整大小的输出。这也可能会带来进一步的好处。例如,所得到的稀疏矩阵可具有需要较少的计算能力来处理“簿记(bookkeeping)”的结构,如将在下面进一步详细描述的。

只要有相当数量的修剪掉的神经元,所得到的稀疏矩阵乘法就比全矩阵乘法要快。这需要更多的簿记(即,跟踪修剪掉的神经元所在位置的指数),但是需要更少的乘法。与传统方法相比,还节省了存储空间和内存空间,并且可能有利于矢量操作,例如单指令多数据(SIMD),这在稀疏矩阵上通常是不可能的,并且会使操作更快。确切地说,构成“大量”修剪掉的神经元的因素在不同情况下会有所不同,但是在任何情况下,都会有一个在更少的计算中获得的收益将超过维护记录的损失的损益平衡点。

此外,稀疏矩阵在数学上可以用许多不同的方式来表示,并且通过对特定结构使用正确的表达式可以进一步降低达到这个损益平衡点的阈值。

最后,如本领域技术人员认识到的,当从本文中示出的计算中去除矩阵的整个行和列时,所得到的稀疏矩阵的维度将改变。因此,如果修剪掉神经网络的最后一层,就需要更新类标签文件,以便能够将特定的输出与特定的类别相关联。另一种选择是不修剪掉最后一层,在这种情况下,可原样使用原始类别标签文件。

附图中的流程图和框图图示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。就这一点而言,流程图或框图中的每个框可表示包括用于实现指定的逻辑功能的一个或多个可执行指令的代码的模块、段或部分。还应该注意的是,在一些替代实施方式中,框中提到的功能可以以不按照附图中提到的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可基本上同时执行,或者各个框有时可以以相反的顺序执行。还应该注意的是,框图和/或流程图说明中的每个框以及框图和/或流程图说明中的框的组合可由执行指定的功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实现。

本文中使用的术语仅用于描述特定实施例的目的,而不意图限制本发明。如本文中使用的,单数形式“一”和“该”旨在也包括复数形式,除非上下文另外清楚地指示。将进一步理解,术语“包括”和/或“包含”在本说明书中使用时指定存在所陈述的特征、整体、步骤、操作、元件和/或部件,但不排除一个或多个其他特征、整体、步骤、操作、元件、部件和/或其组合的存在或附加。

以下权利要求中的所有装置或步骤加功能要素的对应结构、材料、动作和等同物旨在包括用于结合具体要求保护的其他要求保护的要素执行功能的任何结构、材料或动作。已经出于说明和描述的目的呈现了本发明的描述,但是并不旨在穷尽的或者以所公开的形式限制于本发明。在不脱离本发明的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。例如,本文描述的方法不仅可以作为独立的方法执行,而且还可以与其他已知的方法组合以增强人工神经网络的修剪。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使得本领域的其他普通技术人员能够理解本发明的具有适合于预期的特定用途的各种修改的各种实施例。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号