CN113168555A - 减少卷积神经网络的资源消耗的系统及相关方法 - Google Patents

减少卷积神经网络的资源消耗的系统及相关方法 Download PDF

Info

Publication number
CN113168555A
CN113168555A CN201980078583.0A CN201980078583A CN113168555A CN 113168555 A CN113168555 A CN 113168555A CN 201980078583 A CN201980078583 A CN 201980078583A CN 113168555 A CN113168555 A CN 113168555A
Authority
CN
China
Prior art keywords
kernel
kernels
elements
subset
kernel elements
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
CN201980078583.0A
Other languages
English (en)
Inventor
Y.莫夫肖维茨-阿蒂亚斯
A.普恩
A.戈登
E.E.T.埃班
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.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN113168555A publication Critical patent/CN113168555A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/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
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种用于减少卷积神经网络的资源消耗的计算机实现的方法可以包括获得描述卷积神经网络的数据。卷积神经网络可以包括被配置为使用多个内核执行卷积的多个卷积层,每个内核包括多个内核元素。该方法可以包括针对一个或多个训练迭代使用包括组稀疏正则化项的损失函数来训练卷积神经网络,该组稀疏正则化项被配置为稀疏(一个或多个)内核的内核元素的相应子集;在至少一个训练迭代之后,针对(一个或多个)内核中的每个内核至少部分地基于内核元素的相应子集的相应值来确定是否修改这种内核以移除内核元素的相应子集;并且修改(一个或多个)内核中的至少一个内核以移除内核元素的相应子集。

Description

减少卷积神经网络的资源消耗的系统及相关方法
技术领域
本公开一般而言涉及卷积神经网络。更具体地,本公开涉及用于减少卷积神经网络的资源消耗的系统和相关方法。
背景技术
卷积神经网络一般包括卷积层,这些卷积层应用学习到的内核(也称为过滤器)对相应的输入数据执行卷积以产生相应的输出数据。对于许多现有的卷积神经网络,人类手动选择各种内核的相应尺寸(例如,维度)以平衡性能与计算需求。例如,在一些情况下,更大的内核可以提供更高的准确性和/或更好的性能。但是,增加的内核尺寸一般导致更大的计算需求,这会增加执行模型所需的时间。例如,更大的内核将包括更大数量的参数。网络的每个单独的参数值通常存储在存储器中,因此,当在设备上存储时,更大的内核将导致网络消耗附加的存储器资源。作为另一个示例,当实现网络以生成推理时,更大的内核将要求附加处理操作(例如,浮点操作或FLOP),因此,当在设备上实现时,更大的内核将导致网络消耗附加的处理资源和/或具有增加的时延。诸如存储器资源和/或处理器资源之类的增加的资源消耗一般是不期望的,并且如果在诸如移动设备、嵌入式设备和/或边缘设备之类的资源受限的环境中存储和/或实现网络,那么会特别成问题。
发明内容
本公开的实施例的方面和优点将在下面的描述中部分地阐述,或者可以从描述中获知,或者可以通过实施例的实践而获知。
本公开的一个示例方面针对用于减少卷积神经网络的资源消耗的计算机实现的方法。该方法可以包括由一个或多个计算设备获得描述卷积神经网络的数据。卷积神经网络可以包括被配置为使用多个内核执行卷积的多个卷积层。多个内核中的每个内核可以包括多个内核元素。该方法可以包括由一个或多个计算设备针对一个或多个训练迭代来使用包括组稀疏正则化项的损失函数训练卷积神经网络。组稀疏正则化项可以被配置为稀疏卷积神经网络的多个内核中的一个或多个内核中的每个内核的内核元素的相应子集。该方法可以包括:在至少一个训练迭代之后,由一个或多个计算设备针对一个或多个内核中的每个内核,至少部分地基于与这种内核相关联的内核元素的相应子集的相应值来确定是否修改这种内核以移除内核元素的相应子集。该方法可以包括由一个或多个计算设备修改一个或多个内核中的至少一个内核以移除内核元素的相应子集。
本公开的另一个示例方面针对可以包括一个或多个处理器和机器学习的模型的计算系统。机器学习的模型可以包括卷积神经网络,该卷积神经网络包括具有多个内核的多个卷积层。机器学习的模型可以被配置为接收模型输入并响应于模型输入的接收而输出模型输出。计算系统可以包括共同存储指令的一种或多种非暂态计算机可读介质,这些指令在由一个或多个处理器执行时使计算系统执行操作。操作可以包括获得描述卷积神经网络的数据。卷积神经网络可以包括被配置为使用多个内核执行卷积的多个卷积层。多个内核中的每个内核可以包括多个内核元素。操作可以包括,对于一个或多个训练迭代,使用包括组稀疏正则化项的损失函数来训练卷积神经网络,该组稀疏正则化项被配置为稀疏卷积神经网络的多个内核中的一个或多个内核中的每个内核的内核元素的相应子集。操作可以包括,在至少一个训练迭代之后,针对一个或多个内核中的每个内核,至少部分地基于与这种内核相关联的内核元素的相应子集的相应值来确定是否修改这种内核的相应尺寸以移除内核元素的相应子集。操作可以包括修改一个或多个内核中的至少一个内核的相应尺寸以移除内核元素的相应子集。
本公开的另一个示例方面针对计算系统,该计算系统可以包括一个或多个处理器以及一个或多个非暂态计算机可读介质,该计算机可读介质共同存储指令,这些指令在由一个或多个处理器执行时使计算系统执行操作。操作可以包括接收包括卷积神经网络的机器学习的模型。卷积神经网络可以包括被配置为使用多个内核执行卷积的多个卷积层。多个内核中的每个内核可以包括多个内核元素。操作可以包括由一个或多个计算设备针对多个内核中的至少一个内核,至少部分地基于与这种内核相关联的内核元素的相应子集的相应值来确定是否修改多个内核中的至少一个内核的相应尺寸以移除内核元素的相应子集。操作可以包括由一个或多个计算设备修改一个或多个内核中的至少一个内核的相应尺寸以移除内核元素的相应子集。
本公开的其它方面针对各种系统、装置、非暂态计算机可读介质、用户界面和电子设备。
参考以下描述和所附权利要求,将更好地理解本公开的各种实施例的这些和其它特征、方面和优点。结合在本说明书中并构成本说明书的一部分的附图图示了本公开的示例实施例,并且与本描述一起用于解释相关原理。
附图说明
在说明书中阐述了针对本领域普通技术人员的实施例的详细讨论,该说明书参考了附图,其中:
图1A描绘了根据本公开的示例实施例的示例计算系统的框图。
图1B描绘了根据本公开的示例实施例的示例计算系统的框图。
图1C描绘了根据本公开的示例实施例的示例计算系统的框图。
图2A描绘了根据本公开的示例实施例的在进行修改以移除内核元素的子集之前和之后的示例内核。
图2B描绘了根据本公开的示例实施例的在进行修改以移除内核元素的子集之前和之后的另一个示例内核。
图3A描绘了根据本公开的示例实施例的示例标准卷积过滤器的图形图。
图3B描绘了根据本公开的示例实施例的示例深度(depthwise)卷积过滤器的图形图。
图3C描绘了根据本公开的示例实施例的示例逐点卷积过滤器的图形图。
图4描绘了根据本公开的示例实施例的用于减少卷积神经网络的资源消耗的示例方法的流程图。
图5描绘了根据本公开的示例实施例的用于减少卷积神经网络的资源消耗的另一个示例方法的流程图。
图6是机器学习的模型的各种示例测试的准确性测量的图表,包括“fk_1e-3”和“fk_1e-4”,这些模型表示来自根据本公开的示例实施例进行了修改的机器学习的模型的结果。
图7是根据本公开的示例实施例的针对卷积神经网络的连续层内的选定内核的围绕内核的外边缘布置的内核元素的子集的L2范数与未沿着内核的外边缘暴露的内核元素的内部集合的L2范数的平均比率的图表。
图8描绘了根据本公开的示例实施例的针对使用第一正则化因子修改的卷积神经网络的连续层内的选定内核的内核元素值在输入深度的绝对值上的平均值。
图9描绘了根据本公开的示例实施例的针对使用第二正则化因子修改的卷积神经网络的连续层内的选定内核的内核元素值在输入深度的绝对值上的平均值。
在多个附图上重复的附图标记旨在识别各种实施方式中的相同特征。
具体实施方式
概述
一般而言,本公开针对用于减少卷积神经网络的资源消耗的计算系统和相关方法。此处描述的系统和相关方法可以以智能或学习到的方式确定和/或调整卷积神经网络中的内核的尺寸或其它特点。特别地,根据本公开的一方面,计算系统可以使用包括组稀疏正则化项的损失函数来训练卷积神经网络,该组稀疏正则化项被配置为稀疏卷积神经网络中包括的一个或多个内核中的每个内核的内核元素的相应子集。在一个示例中,内核元素的子集可以是围绕内核的外边缘布置的元素。因此,通过组稀疏正则化项的应用和操作,可以稀疏(例如,进行正则化以稀疏)对其相应内核的操作没有显著贡献的内核元素的(一个或多个)子集。在对卷积神经网络中包括的一个或多个内核的内核元素的相应子集进行正则化之后,可以执行分析以确定是否修改每个内核以移除内核元素的相应子集(例如,通过修改内核的尺寸)。例如,可以将内核元素的子集的值的范数与不包括在该子集中的内核元素的值的范数的比率与阈值进行比较,并且如果该比率小于阈值,那么可以从内核中移除内核元素的该子集。在其中内核元素的子集围绕内核的外边缘布置的一些实施方式中,内核元素的子集的移除可以导致内核被调整尺寸。作为一个示例,可以将5x5内核改变为3x3内核。可以在模型的训练之前或期间修改内核。由于移除了内核元素的子集,因此经修改的卷积神经网络具有更少的参数并因此需求更少的存储空间和/或需求更少的计算资源。然而,因为被移除的内核元素是进行正则化以稀疏的元素,因此它们的移除不会对模型的性能产生实质性的不利影响。另外,在一些情况下,本公开的方面可以通过减少过度拟合来改善模型的性能。
根据本公开的方面,计算系统可以减少卷积神经网络的资源消耗。特别地,计算系统可以获得描述卷积神经网络的数据,该卷积神经网络包括被配置为使用多个内核执行卷积的多个卷积层。多个内核中的每个内核可以包括多个内核元素。数据可以包括关于卷积神经网络的结构、各个层和/或内核的尺寸,和/或各个层和/或内核之间的连接的信息。
作为一个示例,例如,可以在工具和/或应用的套件内将根据本公开的方面的计算系统作为服务提供给用户。用户可以通过基于web的接口和/或应用程序接口访问计算系统。计算系统可以被配置为为用户训练和/或修改机器学习的模型。用户可以将他们自己的机器学习的模型上传到计算系统,或者从由计算系统存储的预先存在的机器学习的模型开始。用户可以控制或指导对机器学习的模型的训练或修改,如本文所述。用户可以修改一个或多个控制参数(例如,范数值的阈值比率)或以其它方式控制本文描述的系统和方法的方面。用户可以定义和/或修改内核元素的子集、组稀疏正则化项,或系统和方法的其它方面。
计算系统可以使用包括组稀疏正则化项的损失函数来针对一个或多个训练迭代训练卷积神经网络,该组稀疏正则化项被配置为稀疏卷积神经网络的内核元素的相应子集。
组稀疏正则化项在其上操作的内核元素的(一个或多个)子集可以在内核中以各种配置进行布置。每个子集可以包括多个内核元素。子集的内核元素在内核中可以具有定义的位置关系。作为一个示例,针对给定内核的内核元素的子集可以围绕内核的外边缘布置,例如,形成围绕内核的边界。因此,在一些示例中,内核元素的子集可以在内核内形成连续的形状(例如,边界)。
然而,在其它实施方式中,内核元素的子集可以在给定内核内形成一个或多个不连续的形状。例如,内核元素的子集可以包括元素的垂直条纹、元素的水平条纹、元素的网格和/或内核元素的其它布置。因此,内核元素的子集中的至少一些内核元素可以分散在内核内(例如,不限于沿着内核的外边缘布置的内核元素)。子集内的元素可以彼此相邻和/或不相邻。在一些实施方式中,根据某些布置移除内核元素的子集可以导致稀释的或“Atruos”内核。然而,内核元素的子集可以具有任何合适的形状。
在一些实施方式中,可以通过或部分地基于用户输入(例如,沿着内核的外边缘选择元素的用户输入)来选择内核元素的子集。在一些实施方式中,内核元素的子集可以被随机地选择。在一些实施方式中,可以根据内核元素的当前值来选择内核元素的子集(例如,可以选择一定数量或百分比的具有最小值的内核元素来包括在被正则化的内核元素的子集中)。
在一些实施方式中,为一个或多个内核中的每个内核选择内核元素的单个子集。作为另一个示例,可以在给定内核内定义多个子集,并且组稀疏正则化器可以操作以分别稀疏内核内的内核元素的多个子集。作为一个示例,可以沿着内核的外边缘(例如,内核元素的外边界)定义第一子集。第二子集可以被定义为与第一子集相邻但不沿着外边缘暴露的内核元素(例如,元素的正方形或环形集合)。因此,内核元素的同心环可以被定义为内核内的不同子集。
损失函数的组稀疏正则化项一般可以被配置为稀疏给定内核中的内核元素的相应子集。组稀疏正则化项可以提供与内核元素的子集的值的量值正相关的损失惩罚。作为一个示例,组稀疏正则化项可以包括内核元素的相应子集的相应值的范数,诸如L2范数。可以将内核元素的子集的值视为一维向量,并且可以计算一维向量的L2范数(例如,GroupLasso)。其它示例范数包括L1范数和绝对值范数。但是,可以使用任何合适的范数。
作为另一个示例,组稀疏正则化项可以包括学习到的缩放参数(例如,内核元素的每个子集有一个相应的缩放参数)。例如,学习到的参数可以通过已知的函数(诸如绝对值、指数函数、S型函数等)来缩放。内核元素的子集的值可以是得到的学习到的缩放参数的函数。因此,内核元素的子集中的每个元素可以具有部分地基于学习到的缩放参数的量值。因此,在一个示例中,包括在内核元素的给定子集中的每个内核元素可以具有形式∝ki,其中∝是缩放参数,并且ki是子集的第i个元素的缩放的值。组稀疏正则化项可以提供基于缩放参数∝的量值的惩罚。例如,稀疏正则化项可以对缩放参数∝的绝对值或缩放参数∝的函数(诸如exp(∝)、sigmoid(∝)等)进行操作。以这种方式,组稀疏正则化项可以将缩放参数∝的量值推向零,从而也稀疏作为缩放参数∝的函数的内核元素的子集的值。
在包括将组稀疏正则化项应用到内核元素的每个子集的至少一个训练迭代之后,可以执行分析以确定是否修改一个或多个内核(例如,修改内核的尺寸)以从内核中移除内核元素的相应子集。例如,可以在训练完成之后(例如,在已经执行所有训练迭代之后)或在训练期间(例如,在执行少于所有训练迭代之后)执行这个确定。
修改(一个或多个)内核可以包括至少部分地基于内核元素的相应子集的相应值来移除内核元素的子集。例如,与其它内核元素(例如,在同一内核内)相比,可以基于具有相对低的值来选择移除的内核元素。如本文所述修改内核可以减少推理时间的计算需求,而基本上不会不利地影响卷积神经网络的性能。
在一些实施方式中,确定是否修改(一个或多个)内核的(一个或多个)尺寸可以包括将内核元素的子集的值与内核元素的另一个集合(例如,在同一内核内)进行比较。更具体而言,可以计算内核元素的子集的值的第一范数与相应内核的多个内核元素中不包括在内核元素的相应子集中的至少一些的第二范数的比率。当该比率小于阈值时,可以移除内核元素的子集以修改内核的尺寸。阈值可以被选择为使得内核元素的子集具有足够小的值,并且对内核的作用提供相对小的贡献。换句话说,阈值可以被选择为使得移除内核的子集基本上不会对卷积神经网络的性能产生不利影响。在一些实施方式中,阈值可以是动态的,并且在训练网络时随时间改变。
计算系统可以修改其中至少一个内核的尺寸以移除内核元素的子集。作为一个示例,多个内核中的至少一个内核的尺寸可以是nxn,其中n是大于1的整数(例如,3x3、5x5、7x7等)。修改给定内核可以包括将内核的尺寸减小到至少n-1xn-1(例如,4x4、3x3、2x2或1x1)。
作为一个示例,可以沿着内核的外边缘(例如,内核元素的外边界)定义内核元素的第一子集。第二子集可以被定义为与第一子集相邻但不沿着外边缘暴露的内核元素(例如,元素的正方形或环形集合)。可以将内部集合定义为或者内核元素的第一子集或者内核元素的第二子集中不包含的内核元素。计算系统可以被配置为基于每个子集内的内核元素的相应值来移除第一和第二子集中的一个或两者。例如,可以通过移除第一子集将7x7内核修改为5x5内核。可以通过移除第一和第二子集将7x7内核修改为3x3内核。此类确定可以基于第一和/或第二子集的相应范数与内部子集的范数的比率,例如,如下所述。
在一些实施方式中,卷积神经网络可以包括具有多个深度位置的一个或多个内核。第一内核可以具有多个深度位置,并且至少对于第一内核,组稀疏正则化项可以被配置为在多个深度位置中的每个处分别稀疏内核元素的相应子集。确定是否修改第一内核的相应尺寸可以包括分别确定是否在多个深度位置中的每个处修改第一内核的相应尺寸。
在一些实施方式中,可以在每个深度位置处独立地修改内核的尺寸。换句话说,可以从第一深度位置移除内核元素。内核的第二深度位置的对应元素可以不必被移除。在一些情况下,得到的内核可能需要在推理时间之前附加的重组为具有相同形状和/或尺寸的两个或更多个内核。
然而,在一些实施方式中,组稀疏正则化项可以被配置为将多个深度位置中的每个处的内核元素的相应子集(至少对于一个内核)共同稀疏为单个组。更具体而言,可以在每个深度位置分别定义内核元素的子集。相应子集可以具有相同的布置和配置,使得一旦被移除,经修改的内核就跨多个深度位置具有统一的尺寸和/或形状。例如,对于给定内核的每个深度位置,可以将内核元素的子集定义为在每个深度位置处沿着内核的边缘布置的内核元素(例如,形成内核元素的边界)。如果此类子集被移除,那么得到的经修改的内核可以跨多个深度位置具有统一的形状。
在一些实施方式中,可以在修改(一个或多个)内核以移除内核元素的(一个或多个)子集之前修改一个或多个内核以增加(一个或多个)内核的维度尺寸,例如,作为放大和“收缩”(一个或多个)内核的循环的一部分。卷积神经网络的一些或所有内核可以被放大(例如,从3x3调整为5x5内核)。例如,可以放大所有内核(例如,统一地放大或放大不同的量),或者可以仅放大一些内核(例如,可以任意地放大随机选择的层或内核)。如上所述,组稀疏正则化项可以对内核元素的子集进行操作,这会导致对内核进行修改以移除该子集(例如,“收缩”一个或多个内核)。可以重复上述放大和收缩内核的过程,使得可以智能地选择内核的尺寸或配置(例如,以确定内核的最优尺寸或配置和/或改善(一个或多个)内核的配置)。因此,在一些实施方式中,计算系统可以被配置为增加一个或多个内核的(一个或多个)尺寸,这可以改善性能。
本公开的还有另一方面针对用于减少卷积神经网络的资源消耗的另一计算系统。该计算系统可以被配置为修改包括卷积神经网络的机器学习的模型。这种计算系统可以被配置为修改机器学习的模型,而不必对机器学习的模型执行任何训练。例如,在训练了机器学习的模型之后,计算系统可以接收包括卷积神经网络的机器学习的模型。卷积神经网络可以包括被配置为使用多个内核执行卷积的多个卷积层,并且多个内核中的每个内核可以包括多个内核元素。计算系统可以被配置为针对一个或多个内核中的每个内核至少部分地基于与内核相关联的内核元素的相应子集的相应值来确定是否修改内核的相应尺寸以移除内核元素的相应子集,例如,如上所述。计算系统可以被配置为修改一个或多个内核中的至少一个内核的相应尺寸,以移除内核元素的相应子集。因此,在至少一些实施方式中,可以在模型的训练完成之后执行卷积神经网络的修改。换句话说,本公开的至少一些方面不涉及或不要求执行对机器学习的模型的任何训练。
本公开的方面可以在包括卷积神经网络的任何机器学习的模型中找到应用。示例应用包括分类、标记或以其它方式分析“结构化数据”。结构化数据可以是指其数据表现出可以被利用来分析数据的特定结构或组织的任何数据集合。结构化数据的示例包括图像、视频、声音、文本等。因此,本文公开的系统和方法可以应用于被配置为对图像或视频中描绘的物体进行分类或标记的物体识别模型。本文公开的系统和方法还可以应用于音频分析模型,该音频分析模型被配置为对音频中包含或表示的声音进行分类或标记(例如,通过对音频执行卷积)。本文公开的系统和方法还可以应用于文本分析模型(例如,被配置为对文本数据中包含或表示的文本内容进行分类或标记(例如,通过对文本数据进行卷积)。因此,本公开的方面可以包括在至少一个或多个内核中的至少一个内核被修改之后利用卷积神经网络作为分类器。例如,各方面可以包括利用卷积神经网络对图像、视频和音频数据中的一个或多个进行分类。卷积神经网络可以被用于对传感器数据进行分类,以便改善对一个或多个外部元素的解释。分类可以被用于控制决策-制定过程。
本公开的系统和方法提供了多个技术效果和益处。本文描述的系统和方法可以以最小的性能降低来减少所需的计算需求和/或存储空间。通过根据本公开的方面修改(例如,缩减)机器学习的模型的一个或多个内核,减小模型的尺寸。因此,可以更容易地将模型发送到和/或存储在资源有限的设备(例如,移动设备)上。在与执行机器学习的模型相关联的推理时间减少计算需求可以提供所消耗的每单位资源的更好性能。照此,例如,当云计算不可用或以其它方式不期望时(例如,出于改善用户隐私和/或降低通信成本的原因),本公开的方面可以改善包括卷积神经网络的机器学习的模型的可访问性和有效性。而且,不仅可以在具有有限资源的设备(例如,移动设备)上更容易地执行模型,而且可以在功耗方面以降低的成本来执行模型。这在电池容量受限的设备(例如,移动设备)中可能特别重要。
作为一个示例,本公开的系统和方法可以在应用、浏览器插件的上下文中或其它上下文中被包括或以其它方式被采用。因此,在一些实施方式中,本公开的模型可以被包括在用户计算设备(诸如膝上型计算机、平板电脑或智能电话)中,或者以其它方式由其存储和实现。作为又一个示例,模型可以被包括在根据客户端-服务器关系与用户计算设备通信的服务器计算设备中,或者以其它方式由其存储和实现。例如,模型可以由服务器计算设备实现为web服务(例如,web电子邮件服务)的一部分。
现在参考附图,将进一步详细讨论本公开的示例实施例。
示例设备和系统
图1A描绘了根据本公开的示例实施例的执行用于减少卷积神经网络的资源消耗的方法的示例计算系统100的框图。系统100包括通过网络180通信地耦合的用户计算设备102、服务器计算系统130和训练计算系统150。
用户计算设备102可以是任何类型的计算设备,诸如例如个人计算设备(例如,膝上型计算机或台式计算机)、移动计算设备(例如,智能电话或平板电脑)、游戏控制台或控制器、可穿戴计算设备、嵌入式计算设备,或任何其它类型的计算设备。
用户计算设备102包括一个或多个处理器112和存储器114。一个或多个处理器112可以是任何合适的处理设备(例如,处理器核、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器114可以包括一个或多个非暂态计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等,以及它们的组合。存储器114可以存储由处理器112执行以使用户计算设备102执行操作的数据116和指令118。
用户计算设备102可以存储或包括一个或多个机器学习的模型120。例如,机器学习的模型120可以是或可以以其它方式包括各种机器学习的模型,该机器学习的模型包括卷积神经网络。神经网络可以是或包括残差神经网络、深度神经网络、其它多层非线性模型、循环神经网络(例如,长短期记忆循环神经网络)、前馈神经网络或其它形式神经网络。
在一些实施方式中,可以通过网络180从服务器计算系统130接收一个或多个机器学习的模型120,将其存储在用户计算设备存储器114中,并由一个或多个处理器112使用或以其它方式实现。在一些实施方式中,用户计算设备102可以实现单个总体(OVERALL)模型120的多个并行实例(例如,以执行并行操作)。
附加地或可替代地,一个或多个机器学习的模型140可以被包括在根据客户端-服务器关系与用户计算设备102通信的服务器计算系统130中或者以其它方式由其存储和实现。例如,机器学习的模型140可以由服务器计算系统140实现为web服务的一部分(例如,在用于创建或修改机器学习的模型的工具和/或应用服务的套件内)。因此,可以在用户计算设备102处存储和实现一个或多个模型120,和/或可以在服务器计算系统130处存储和实现一个或多个模型140。
用户计算设备102还可以包括一个或多个接收用户输入的用户输入组件122。例如,用户输入组件122可以是对用户输入对象(例如,手指或手写笔)的触摸敏感的触敏组件(例如,触敏显示屏或触摸板)。触敏组件可以用来实现虚拟键盘。其它示例用户输入组件包括麦克风、传统键盘或用户可以通过其输入讯息的其它手段。
服务器计算系统130包括一个或多个处理器132和存储器134。一个或多个处理器132可以是任何合适的处理设备(例如,处理器核、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器134可以包括一个或多个非暂态计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等,以及它们的组合。存储器134可以存储由处理器132执行以使服务器计算系统130执行操作的数据136和指令138。
在一些实施方式中,服务器计算系统130包括一个或多个服务器计算设备或以其它方式由其实现。在服务器计算系统130包括多个服务器计算设备的情况下,这样的服务器计算设备可以根据顺序计算体系架构、并行计算体系架构或其某种组合来操作。
如上所述,服务器计算系统130可以存储或以其它方式包括一个或多个机器学习的模型140。例如,模型140可以是或可以以其它方式包括各种机器学习的模型,诸如神经网络(例如,深度循环神经网络)或其它多层非线性模型。
服务器计算系统130可以经由与通过网络180通信耦合的训练计算系统150的交互来训练模型140。训练计算系统150可以与服务器计算系统130分离,或者可以是服务器计算系统130的一部分。
训练计算系统150包括一个或多个处理器152和存储器154。一个或多个处理器152可以是任何合适的处理设备(例如,处理器核、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作地连接的多个处理器。存储器154可以包括一个或多个非暂态计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等,以及它们的组合。存储器154可以存储由处理器152执行以使训练计算系统150执行操作的数据156和指令158。在一些实施方式中,训练计算系统150包括一个或多个服务器计算设备或以其它方式由其实现。
训练计算系统150可以包括模型训练器160,该模型训练器160使用各种训练或学习技术(诸如,例如,错误的后向传播)来训练存储在服务器计算系统130上的机器学习的模型140。在一些实施方式中,执行错误的后向传播可以包括随着时间的推移执行截断的向后传播。模型训练器160可以执行多种泛化技术(例如,权重衰退、丢弃等),以提高正被训练的模型的泛化能力。
特别地,模型训练器160可以基于训练数据142的集合来训练机器学习的模型140。训练数据142可以包括例如标记的或未标记的结构化数据集合。如上面所指示的,“结构化数据”可以指其数据表现出可以被利用来分析数据的特定结构或组织的任何数据集合。结构化数据的示例包括图像、视频、声音、文本等。在一些实施方式中,模型训练器160可以分别执行本文描述的任何方法以减少卷积神经网络的资源消耗,诸如例如图4和5的方法400和500。
在一些实施方式中,如果用户已经提供了同意,那么训练示例可以由用户计算设备102提供(例如,基于先前由用户计算设备102的用户提供的讯息)。因此,在此类实施方式中,提供给用户计算设备102的模型120可以由训练计算系统150在从用户计算设备102接收的特定用户的通信数据上进行训练。在一些情况下,这个过程可以被称为个性化模型。
模型训练器160包括用于提供期望功能的计算机逻辑。模型训练器160可以以控制通用处理器的硬件、固件和/或软件来实现。例如,在一些实施方式中,模型训练器160包括存储在存储设备上、加载到存储器中并由一个或多个处理器执行的程序文件。在其它实施方式中,模型训练器160包括计算机可执行指令的一个或多个集合,这些指令存储在诸如RAM硬盘或光学或磁性介质之类的有形的计算机可读存储介质中。
网络180可以是任何类型的通信网络,诸如局域网(例如,内联网)、广域网(例如,互联网)或其某种组合,并且可以包括任何数量的有线或无线链接。一般而言,可以使用各种各样的通信协议(例如,TCP/IP、HTTP、SMTP、FTP)、编码或格式(例如,HTML、XML)和/或保护方案(例如,VPN、安全HTTP、SSL)经由任何类型的有线和/或无线连接来传送通过网络180的通信。
图1A图示了可以被用于实现本公开的一个示例计算系统。也可以使用其它计算系统。例如,在一些实施方式中,用户计算设备102可以包括模型训练器160和训练数据集162。在这样的实施方式中,模型120可以在用户计算设备102处被本地训练和使用。在一些这样的实施方式中,用户计算设备102可以实现模型训练器160以基于特定用户数据来个性化模型120。
图1B描绘了根据本公开的示例实施例执行的示例计算设备10的框图。计算设备10可以是用户计算设备或服务器计算设备。
计算设备10包括许多应用(例如,应用1至N)。每个应用都包含其自己的机器学习库和(一个或多个)机器学习的模型。例如,每个应用可以包括机器学习的模型。示例应用包括文本消息传递应用、电子邮件应用、听写应用、虚拟键盘应用、浏览器应用等。
如图1B中所示,每个应用可以与计算设备的许多其它组件(诸如,例如,一个或多个传感器、上下文管理器、设备状态组件和/或附加组件)通信。在一些实施方式中,每个应用可以使用API(例如,公共API)与每个设备组件通信。在一些实施方式中,每个应用使用的API特定于该应用。
图1C描绘了根据本公开的示例实施例执行的示例计算设备50的框图。计算设备50可以是用户计算设备或服务器计算设备。
计算设备50包括多个应用(例如,应用1至N)。每个应用都与中央智能层通信。示例应用包括文本消息传递应用、电子邮件应用、听写应用、虚拟键盘应用、浏览器应用等。在一些实施方式中,每个应用可以使用API(例如,跨所有应用的共用API)与中央智能层(和存储在其中的(一个或多个)模型)通信。
中央智能层包括许多机器学习的模型。例如,如图1C中所示,可以为每个应用提供相应的机器学习的模型(例如,模型),并由中央智能层管理。在其它实施方式中,两个或更多个应用可以共享单个机器学习的模型。例如,在一些实施方式中,中央智能层可以为所有应用提供单个模型(例如,单个模型)。中央智能层包括在计算设备50的操作系统内或以其它方式由其实现。
中央智能层可以与中央设备数据层通信。中央设备数据层可以是用于计算设备50的数据的中央储存库。如图1C中所示,中央设备数据层可以与计算设备的多个其它组件(诸如,例如,一个或多个传感器、上下文管理器、设备状态组件和/或附加组件)通信。在一些实施方式中,中央设备数据层可以使用API(例如,私有API)与每个设备组件通信。
示例实施例
第一部分描述通过移除内核元素的示例子集来修改示例内核。第二部分描述本公开的方面在深度可分离卷积中的应用。
I.示例内核和内核元素的子集
在一些实施方式中,多个内核中的至少一个内核的尺寸可以为nxn,其中n是大于1的整数(例如,3x3、5x5、7x7等)。修改给定内核可以包括将内核的尺寸减小到至少n-1xn-1(例如,4x4、3x3、2x2或1x1)。
图2A描绘了根据本公开的示例实施例的在进行修改以移除内核元素的子集202之前和之后的示例内核200。可以修改内核200以移除内核元素的子集202。内核元素的子集202可以围绕内核200的外边缘(例如,内核元素的外边界)布置。
组稀疏正则化项可以对内核元素的子集202进行操作以稀疏(例如,进行正则化以稀疏)内核元素的子集202。可以至少部分地基于内核元素的相应子集202的相应值来确定是否修改内核200以移除内核元素的子集202。可以将内核元素的子集202的值与内核200的多个内核元素中不包括在内核元素的相应子集202中的至少一些内核元素的值进行比较。例如,可以计算内核元素的子集202的值的第一范数与内核元素的内部集合204的值的第二范数的比率。内核元素的内部集合204可以被定义为不包含在第一子集202内的内核元素和/或被定义为不沿着内核200的外边缘暴露的内核元素。
当该比率小于阈值时,可以移除内核元素的子集202以修改内核200的尺寸,从而产生经修改的内核206。阈值可以被选择为使得内核元素的子集202具有足够小的值并且对内核200的效果提供相对小的贡献。换句话说,阈值可以被选择为使得移除内核200的子集202基本上不会不利地影响卷积神经网络的性能。
图2B描绘了根据本公开的示例实施例的在进行修改以移除内核元素的子集之前和之后的另一个示例内核250。更具体而言,可以沿着内核250的外边缘(例如,内核元素的外边界)定义第一子集252。内核元素的第二子集254可以包括与第一子集252相邻但不沿着外边缘暴露的内核元素(例如,元素的正方形或环形集合)。因此,内核元素的同心环可以被定义为内核250内的不同子集252、254。内核元素的内部集合256可以被定义为或者内核元素的第一子集252或者内核元素的第二子集254中未包含的内核元素。
计算系统可以被配置为基于每个子集252、254内的内核元素的相应值来移除第一子集252和第二子集254中的一个或两者。可以计算内核元素的第一子集252的值的第一范数与内部子集256的值的内范数的第一比率。可以做出是否移除内核元素的第一子集252的第一确定。当第一比率小于第一阈值时,可以移除内核元素的第一子集252以修改内核250的尺寸。
可以计算内核元素的第二子集254的值的第二范数与内部子集256的值的内范数的第二比率。可以做出是否移除内核元素的第二子集252的第二确定。当第二比率小于第二阈值时,可以移除内核元素的第二子集254以修改内核250的尺寸。第二阈值可以与第一阈值相同或不同。
单个组稀疏正则化项可以在内核元素的第一子集252和第二子集254上操作以稀疏(例如,进行正则化以稀疏)第一子集252和第二子集254的内核元素。可替代地,第一组稀疏正则化项可以在第一子集252上操作,并且第二组稀疏正则化项可以在第二子集254上操作。
在模型的训练完成之后,可以做出是否修改内核250以分别移除第一子集252和第二子集254的第一和第二确定。换句话说,可以训练模型,然后可以移除第一子集252、第二子集254或两个子集252、254。
可替代地,可以在第一确定之后并且在第二确定之前完成至少一些训练迭代。换句话说,可以基于第一确定来移除第一子集252。在后续训练迭代之后,如果第二比率变得小于第二阈值,那么可以移除第二子集254。
在这个示例中,第一子集252被移除,但是第二子集254没有被移除,从而导致经修改的内核258。在这个示例中,未修改的内核250具有7x7尺寸,而经修改的内核258具有5x5尺寸。然而,应当理解的是,可以定义更多子集,使得可以修改内核以移除更多内核元素。例如,得到的经修改的内核可以是4x4、3x3、2x2,或者甚至是1x1。
在以上参考图2A和2B描述的示例中,组稀疏正则化项在其上操作的内核元素的子集202、252、254被布置在内核的外边缘周围,从而形成围绕内核的边界。在这些示例中,内核元素的子集202、252、254在内核内形成连续的形状(例如,边界、正方形或环形)。
在其它实施方式中,内核元素的(一个或多个)子集可以在给定内核内形成一个或多个不连续的形状。例如,内核元素的子集可以包括元素的垂直条纹、元素的水平条纹、元素的网格和/或内核元素的其它布置。因此,内核元素的子集的至少一些内核元素可以分散在内核内(例如,不限于沿着内核的外边缘布置的内核元素)。子集内的元素可以彼此相邻和/或不相邻。在一些实施方式中,根据某些布置移除内核元件的子集可以导致稀释的或“Atruos”内核。然而,内核元素的子集可以具有任何合适的形状。
在一些实施方式中,可以通过或部分地基于用户输入(例如,沿着内核的外边缘选择元素的用户输入)来选择内核元素的子集。在一些实施方式中,内核元素的子集可以被随机选择。在一些实施方式中,可以根据内核元素的当前值来选择内核元素的子集(例如,可以选择一定数量或百分比的具有最小值的内核元素来包括在被正则化的内核元素的子集中)。
在一些实施方式中,在修改(一个或多个)内核以移除内核元素的(一个或多个)子集之前,可以修改一个或多个内核以增加(一个或多个)内核的维度尺寸。卷积神经网络的部分或全部内核可以被放大(例如,从5x5调整为7x7内核)。例如,可以放大所有内核(例如,统一地放大或放大不同的量),或者可以仅放大一些内核(例如,可以任意地放大随机选择的层或内核)。如上所述,组稀疏正则化项可以对内核元素的子集进行操作,这会导致对内核进行修改以移除该子集(例如,“收缩”一个或多个内核)。可以重复上述放大和收缩内核的过程,使得可以智能地选择内核的尺寸或配置(例如,以确定内核的最优尺寸或配置和/或改善(一个或多个)内核的配置)。因此,在一些实施例中,计算系统可以被配置为增加一个或多个内核的(一个或多个)尺寸,这可以改善性能。
在一些实施方式中,卷积神经网络可以包括具有多个深度位置的一个或多个内核。第一内核可以具有多个深度位置,并且至少对于第一内核,组稀疏正则化项可以被配置为在多个深度位置中的每个处分别稀疏内核元素的相应子集。确定是否修改第一内核的相应尺寸可以包括分别确定是否在多个深度位置中的每个处修改第一内核的相应尺寸。
在一些实施方式中,可以在每个深度位置处独立地修改内核的尺寸。换句话说,可以从第一深度位置移除内核元素。可以不必移除内核的第二深度位置的对应元素。例如,参考图2B,在第一深度位置处,可以修改内核250以移除内核元素的第一子集252。在第二深度位置处,可以修改内核250以移除内核元素的第一子集252和第二子集254。在这个示例中,内核250可以在第一深度位置处具有5x5尺寸,并且在第二深度位置处具有3x3尺寸。在一些情况下,得到的内核可能需求在推理时间之前附加的重组为具有相同形状和/或尺寸的两个或更多个内核。
然而,在一些实施方式中,组稀疏正则化项可以被配置为将多个深度位置中的每个处的内核元素的相应子集(至少对于一个内核)共同稀疏为单个组。更具体而言,可以在每个深度位置处分别定义内核元素的子集。相应子集可以具有相同的布置和配置,使得一旦被移除,经修改的内核就跨多个深度位置具有统一的尺寸和/或形状。例如,对于给定内核的每个深度位置,可以将内核元素的子集定义为在每个深度位置处沿着内核的边缘布置的内核元素(例如,形成内核元素的边界)。如果此类子集被移除,那么得到的经修改的内核可以跨多个深度位置具有统一的形状。
II.深度可分离卷积
可以结合深度可分离卷积神经网络来实现本公开的方面。例如,在一些实施方式中,卷积神经网络可以包括至少一个深度可分离卷积层。深度可分离卷积层的至少一个内核可以如本文所述进行修改。
图3A至3C示出了如何可以将标准卷积(图3A)分解成深度卷积(图3B)和1×1逐点卷积(图3C)。示例标准卷积层将DF×DF×M特征图F作为输入,并产生DG×DG×N特征图G,其中DF是正方形输入特征图的空间宽度和高度,M是输入通道(输入深度)的数量,DG是正方形输出特征图的空间宽度和高度,并且N是输出通道(输出深度)的数量。为了简化符号,假设输出特征图具有与输入相同的空间维度,并且两个特征图都是正方形,然而这不是必需的。本文描述的模型收缩结果泛化为具有任意尺寸和纵横比率的特征图。
标准卷积层可以通过尺寸为DK×DK×M×N的卷积内核K进行参数化,其中DK是假设为正方形的内核的空间维度,M是输入通道的数量并且N是输出通道的数量,如先前定义的。
标准卷积的输出特征图(作为示例假设步幅为一并填充)被计算为:
Figure BDA0003089040820000181
标准卷积的计算成本为:
DK·DK·M·N·DF·DF (0)
其中计算成本乘法依赖于输入通道的数量M、输出通道的数量N、内核尺寸Dk×Dk和特征图尺寸DF×DF
标准卷积操作具有基于卷积内核过滤特征并组合特征以便产生新表示的效果。过滤和组合步骤可以经由使用称为深度可分离卷积的分解卷积被拆分为两个步骤,以大幅降低计算成本。
深度可分离卷积由两层组成:深度卷积和逐点卷积。深度卷积可以被用于在每个输入通道(输入深度)上应用单过滤器。然后,可以使用逐点卷积(简单的1×1卷积)来创建深度层输出的线性组合。
每个输入通道(输入深度)带有一过滤器的深度卷积可以写成:
Figure BDA0003089040820000182
其中
Figure BDA0003089040820000183
是尺寸为DK×DK×M的深度卷积内核,其中
Figure BDA0003089040820000184
中的第m个过滤器被应用于F中的第m个通道以产生经过滤的输出特征图
Figure BDA0003089040820000185
的第m个通道。
深度卷积的计算成本为:
DK·DK·M·DF·DF (0)
深度卷积相对于标准卷积非常高效。然而,它仅过滤输入通道,不会将它们组合以创建新特征。因此,可以使用经由1×1卷积计算深度卷积输出的线性组合的附加层来生成这些新特征。
深度卷积与1×1(逐点)卷积的组合被称为深度可分离卷积。
深度可分离卷积成本为:
DK·DK·M·DF·DF+M·N·DF·DF (0)
这是深度卷积和1×1逐点卷积的总和。
通过将卷积表示为过滤和组合的两步过程,可以在下式的计算中实现减少:
Figure BDA0003089040820000186
对于3×3尺寸的内核,深度可分离卷积使用比标准卷积少8到9倍之间的计算量,而准确性仅稍有降低。
再次参考图3A,本公开的方面可以包括修改标准卷积层的内核元素。例如,组稀疏正则化项可以被配置为将多个深度位置(在图3A中由M表示)中的每个处的内核元素的相应子集(至少对于一个内核)共同稀疏为单个组。更具体而言,可以在每个深度位置处分别定义内核元素的子集。相应子集可以具有相同的布置和配置,使得一旦被移除,经修改的内核就跨多个深度位置具有统一的尺寸和/或形状。例如,对于给定内核的每个深度位置,内核元素的子集可以被定义为在每个深度位置处沿着内核的边缘布置的内核元素,例如,如以上参考图2A和2B所述。如果移除了此类子集,那么得到的经修改的内核可以跨多个深度位置(在图3A中由M表示)具有统一的形状。换句话说,在一些实施方式中,内核可以在修改之前具有尺寸DK×DK并且在修改之后具有尺寸(DK-m)×(DK-m),其中m是大于1的整数。
再次参考图3B,在一些实施方式中,确定是否修改第一内核的相应尺寸可以包括在多个深度位置(在图3B中由M表示)的每个处分别确定是否修改第一内核的相应尺寸。组稀疏正则化项可以被配置为在多个深度位置M的每个处分别稀疏内核元素的相应子集。确定是否修改第一内核的相应尺寸可以包括在多个深度位置M的每个处分别确定是否修改第一内核的相应尺寸。因此,可以在不同的深度位置处移除不同的内核元素。在一些情况下,得到的内核可能需要在推理时间之前附加的重组为具有相同形状和/或尺寸的两个或更多个内核。
示例方法
图4描绘了根据本公开的示例实施例的用于减少卷积神经网络的资源消耗的示例计算机实现的方法400的流程图。虽然为了说明和讨论的目的,图4描绘了以特定次序执行的步骤,但是本公开的方法不限于特定示出的次序或布置。在不脱离本公开的范围的情况下,可以以各种方式省略、重新布置、组合和/或调整方法400的各个步骤。
方法400可以包括,在(402)处,由一个或多个计算设备获得描述卷积神经网络的数据。卷积神经网络可以包括被配置为使用多个内核执行卷积的多个卷积层,并且多个内核中的每个内核可以包括多个内核元素。数据可以包括关于卷积神经网络的结构的信息,诸如各个层和/或内核的维度尺寸,和/或各个层和/或内核之间的连接。
方法(400)可以包括,在(404)处,由一个或多个计算设备针对一个或多个训练迭代使用包括组稀疏正则化项的损失函数来训练卷积神经网络。组稀疏正则化项可以被配置为稀疏卷积神经网络的多个内核中的一个或多个内核中的每个内核的内核元素的相应子集。
组稀疏正则化项可以提供与内核元素的子集的值的量值正相关的损失惩罚。作为一个示例,组稀疏正则化项可以包括内核元素的相应子集的相应值的范数,诸如L2范数。可以将内核元素的子集的值视为一维向量,并且可以计算一维向量的L2范数(例如,GroupLasso)。其它示例范数包括L1范数和绝对值范数。但是,可以使用任何合适的范数。
作为另一个示例,组稀疏正则化项可以包括学习到的缩放参数(例如,内核元素的每个子集的一个相应的缩放参数)。例如,学习到的参数可以通过已知的函数(诸如绝对值、指数函数、S型函数等)来缩放。内核元素的子集的值可以是得到的学习到的缩放参数的函数。因此,内核元素的子集中的每个元素可以具有部分地基于学习到的缩放参数的量值。因此,在一个示例中,包括在内核元素的给定子集中的每个内核元素可以具有形式∝ki,其中∝是缩放参数,并且ki是子集的第i个元素的缩放的值。组稀疏正则化项可以提供基于缩放参数∝的量值的惩罚。例如,稀疏正则化项可以对缩放参数∝的绝对值或缩放参数∝的函数(诸如exp(∝)、sigmoid(∝)等)进行操作。以这种方式,组稀疏正则化项可以将缩放参数∝的量值推向零,从而也稀疏作为缩放参数∝的函数的内核元素的子集的值。
计算机实现的方法可以包括,在(406)处,在至少一个训练迭代之后,由一个或多个计算设备针对一个或多个内核中的每个内核至少部分地基于与这种内核相关联的内核元素的相应子集的相应值来确定是否修改这种内核以移除内核元素的相应子集。确定是否修改(一个或多个)内核的(一个或多个)尺寸可以包括将内核元素的子集的值与内核元素的另一个集合(例如,在同一内核内)进行比较。更具体而言,可以计算内核元素的子集的值的第一范数与相应内核的多个内核元素中不包括在内核元素的相应子集中的至少一些的第二范数的比率。当该比率小于阈值时,可以移除内核元素的子集以修改内核的尺寸。阈值可以被选择为使得内核元素的子集具有足够小的值,并且对内核的作用提供相对小的贡献。换句话说,阈值可以被选择为使得移除内核的子集基本上不会对卷积神经网络的性能产生不利影响。
计算机实现的方法可以包括,在(408)处,由一个或多个计算设备修改一个或多个内核中的至少一个内核,以移除内核元素的相应子集,例如,如上参考图2A至3C所述。
图5描绘了根据本公开的示例实施例的用于减少卷积神经网络的资源消耗的示例方法500的流程图。虽然为了说明和讨论的目的,图5描绘了以特定次序执行的步骤,但是本公开的方法不限于特定示出的次序或布置。在不脱离本公开的范围的情况下,可以以各种方式省略、重新布置、组合和/或调整方法500的各个步骤。
用于减少卷积神经网络的资源消耗的计算机实现的方法500可以包括,在(502)处,接收包括卷积神经网络的机器学习的模型。卷积神经网络可以包括被配置为使用多个内核执行卷积的多个卷积层。多个内核中的每个内核可以包括多个内核元素。
作为一个示例,用户可以提供用于修改的机器学习的模型,作为服务的一部分,该服务作为用于构建和/或修改机器学习的模型的工具和/或应用的套件的一部分而提供。用户可以例如通过基于web的接口和/或应用程序接口将机器学习的模型上传到计算系统。可替代地,用户可以从由计算系统存储的预先存在的机器学习的模型开始。用户可以控制或指导对机器学习的模型的训练或修改,如本文所述。用户可以修改一个或多个控制参数(例如,范数值的阈值比率)或以其它方式控制本文描述的系统和方法的方面。用户可以定义和/或修改内核元素的子集、组稀疏正则化项,或系统和方法的其它方面。
计算机实现的方法500可以包括,在(504)处,由一个或多个计算设备针对多个内核中的至少一个内核至少部分地基于与内核相关联的内核元素的相应子集的相应值来确定是否修改所述多个内核中的至少一个内核的相应尺寸以移除内核元素的相应子集,如本文所述,例如参考图2A、2B和4)。
计算机实现的方法500可以包括,在(506)处,由一个或多个计算设备修改一个或多个内核中的至少一个内核的相应尺寸,以移除内核元素的相应子集,如本文所述,例如参考图2A至3C。
因此,在至少一些实施方式中,可以在模型的训练完成之后对卷积神经网络执行修改。换句话说,本公开的至少一些方面不涉及或不要求执行对机器学习的模型的任何训练。
示例实验和结果
根据本公开的方面进行了包括修改各种机器学习的模型的实验。机器学习的模型在修改之前和之后进行了分析。
图6是用于四个图像识别机器学习的模型的准确性测量的图表:包括3x3卷积的模型、包括5x5卷积的模型,以及根据本公开的方面使用不同正则化强度训练和修改的两个模型,如下所述。更具体而言,选择包括3x3卷积的Resent_v1_50模型作为起点。创建了5x5Renset_v1_50模型,其中所有卷积的尺寸都被调整为5x5卷积。然后,根据本公开的方面,使用包括相应的组稀疏正则化项的相应损失函数分别对5x5 Renset_v1_50模型的两个版本进行了修改和训练。组稀疏正则化项包括不同的正则化强度参数,从而导致不同级别的正则化。
首先,为每个内核定义内核元素的子集。更具体而言,内核元素的子集被定义为围绕每个内核的相应外边缘布置的元素,如以上参考图2A的子集202所描述的。
接下来,使用在www.image-net.org上可获得的称为“ImageNet”的公开可用的图像数据库对模型进行训练。在训练每个模型期间,组稀疏正则化项对内核元素的子集进行操作以稀疏(例如,进行正则化以稀疏)内核元素的子集。
在训练之后,为每个内核计算子集的内核元素的L2范数与内核元素的内部集合的L2范数的比率。修改了包含比率小于阈值的子集的内核,以移除内核元素的子集,使得5x5内核变成3x3内核。
使用两个不同的正则化强度参数:1e-3和3e-4,对5x5 Renset_v1_50模型的两个实例重复上述过程。更具体而言,组稀疏正则化项包括内核元素的子集的L2范数乘以正则化强度参数以控制其相对效果。因此,越大的正则化强度导致内核元素的子集的越大的损失惩罚。
得到的模型分别被称为“fk_1e-3”和“fk_3e-4”。原始的3x3 Renset_v1_50模型和5x5 Renset_v1_50模型也使用不包括组稀疏正则化项的损失函数进行了训练,并且没有对内核进行修改或调整尺寸。
图6示出了四个模型中每个模型的准确性百分比。跨六次运行对四个得到的模型进行了测试,并计算出相应的准确性百分比。3x3 Renset_v1_50和5x5 Renset_v1_50的准确性结果分别被标记为“conv3”和“conv5”。如图6中所示,与conv5模型相比,fk_1e-3模型表现出最小的准确性降低,并且其表现明显优于conv3模型。fk_3e-4模型表现与conv5模型相当。基于每个模型的六次运行,示出误差条。虽然这里没有量化,但是可以相信的是,本公开的方面可以通过减少过度拟合来增加得到的模型的准确性。
图7图示了用于fk_1e-3模型的L2范数的平均比率。更具体而言,计算模型的相应层的每个内核的第一通道的L2范数的平均值。fk_1e-3模型包括16个卷积层,布置在从布置在输入附近的第一个卷积层(标记为“unit_0”)到布置在输出附近的最后一个卷积层(“unit_15”)的相应的输入和输出之间。越低的比率值指示内核元素的子集的越小的值。因此,具有越低比率值的内核更有可能被修改以移除内核元素的子集。如图7中所示,模型的输入附近的卷积层的平均比率低于模型的输出附近的平均比率。更具体而言,输入附近的卷积层包含内核,该内核包括更积极地进行正则化的内核元素的子集。
图8描绘了在fk_1e-3模型的连续层内针对选定内核的内核元素值在输入深度的绝对值上的平均值的“热图”。如图8中所示,模型的输入附近的卷积层比输出附近的卷积层被更强地正则化。更具体而言,将层unit_0到unit_11的子集的内核元素值正则化以稀疏,随后将其移除,从而生成3x3内核。然而,unit_12到unit_15的子集的内核元素值是非平凡(non-trivial)的,因此此类子集不被移除。更确切地说,卷积层unit_12到unit_15的内核仍然是5x5内核。
图9描绘了在fk_3e-4模型的连续层内针对选定内核的内核元素值在输入深度的绝对值上的平均值的“热图”。如预期的那样,由于较低的正则化强度参数,正则化的积极性较低。因此,更多的边缘内核元素的子集的值仍然是非平凡的,因此较少的内核被转换成3x3内核,而更多的内核仍然是5x5内核。
附加公开
本文讨论的技术参考服务器、数据库、软件应用和其它基于计算机的系统,以及对此类系统采取的动作以及发送到此类系统和来自此类系统的信息。基于计算机的系统的固有灵活性允许在组件之间进行任务和功能的多种可能的配置、组合以及划分。例如,本文讨论的过程可以使用单个设备或组件或组合工作的多个设备或组件来实现。数据库和应用可以在单个系统上实现,或者分布在多个系统上。分布式组件可以顺序或并行地操作。
虽然已经关于本发明的各种具体示例实施例详细描述了本主题,但是每个示例都是通过解释的方式提供的,而不是限制本公开。本领域技术人员在理解了前述内容后可以容易地产生此类实施例的变更、变化和等同物。因而,本主题公开不排除对本主题包括此类修改、变化和/或添加,如对于本领域普通技术人员来说是显而易见的。例如,作为一个实施例的一部分示出或描述的特征可以与另一个实施例一起使用,以产生又一个实施例。因此,意图是本公开覆盖此类变更、变化和等同物。

Claims (22)

1.一种用于减少卷积神经网络的资源消耗的计算机实现的方法,该方法包括:
由一个或多个计算设备获得描述卷积神经网络的数据,其中卷积神经网络包括被配置为使用多个内核执行卷积的多个卷积层,所述多个内核中的每个内核包括多个内核元素;
由所述一个或多个计算设备针对一个或多个训练迭代来使用包括组稀疏正则化项的损失函数训练卷积神经网络,组稀疏正则化项被配置为稀疏卷积神经网络的所述多个内核中的一个或多个内核中的每个内核的内核元素的相应子集;
在至少一个训练迭代之后,由所述一个或多个计算设备针对所述一个或多个内核中的每个内核,至少部分地基于与这种内核相关联的内核元素的相应子集的相应值来确定是否修改这种内核以移除内核元素的相应子集;并且
由所述一个或多个计算设备修改所述一个或多个内核中的至少一个内核以移除内核元素的相应子集。
2.如权利要求1所述的计算机实现的方法,其中,组稀疏正则化项为内核元素的每个相应子集提供与内核元素的子集的值的量值正相关的损失惩罚。
3.如前述权利要求中的任一项所述的计算机实现的方法,其中,组稀疏正则化项提供与不包括在内核元素的子集中的内核元素的值的量值不相关的损失惩罚。
4.如前述权利要求中的任一项所述的计算机实现的方法,其中,对于所述一个或多个内核中的每个内核,组稀疏正则化项包括内核元素的相应子集的相应值的范数。
5.如前述权利要求中的任一项所述的计算机实现的方法,其中,对于所述一个或多个内核中的每个内核,组稀疏正则化项包括内核元素的相应子集的相应值的L2范数。
6.如前述权利要求中的任一项所述的计算机实现的方法,其中,组稀疏正则化项包括学习到的缩放参数。
7.如权利要求6所述的计算机实现的方法,其中,内核元素的每个相应子集的每个元素具有部分地基于学习到的缩放参数的量值。
8.如前述权利要求中的任一项所述的计算机实现的方法,其中由所述一个或多个计算设备针对所述一个或多个内核中的每个内核确定是否修改这种内核以移除内核元素的相应子集包括针对所述一个或多个内核中的每个内核:
当内核元素的相应子集的值的第一范数与这种内核的多个内核元素中的不包括在内核元素的相应子集中的至少一些内核元素的值的第二范数的比率小于阈值时,由所述一个或多个计算设备针对所述一个或多个内核中的每个内核确定修改这种内核以移除内核元素的相应子集。
9.如前述权利要求中的任一项所述的计算机实现的方法,其中,对于所述一个或多个内核中的至少一个内核,内核元素的相应子集包括围绕内核的外边缘布置的元素。
10.如前述权利要求中的任一项所述的计算机实现的方法,其中,所述多个内核中的至少一个内核的尺寸是nxn,其中n是大于1的整数,并且其中由所述一个或多个计算设备修改所述一个或多个内核中的至少一个内核包括由所述一个或多个计算设备将所述一个或多个内核中的至少一个内核的尺寸减小到至少n-1xn-1。
11.如前述权利要求中的任一项所述的计算机实现的方法,其中,组稀疏正则化项被配置为分别稀疏所述一个或多个内核的同一内核的内核元素的至少两个不同子集。
12.如前述权利要求中的任一项所述的计算机实现的方法,其中,
所述一个或多个内核中的至少第一内核具有多个深度位置,并且至少对于第一内核,组稀疏正则化项被配置为分别稀疏所述多个深度位置的每个处的内核元素的相应子集;并且
由所述一个或多个计算设备确定是否修改第一内核包括由所述一个或多个计算设备分别确定是否在所述多个深度位置的每个处修改第一内核。
13.如前述权利要求中的任一项所述的计算机实现的方法,其中:
所述一个或多个内核中的至少第一内核具有多个深度位置;并且
由所述一个或多个计算设备确定是否修改第一内核包括由所述一个或多个计算设备确定是否在所述多个深度位置的所有位置处统一地修改第一内核。
14.如权利要求13所述的计算机实现的方法,其中,至少对于第一内核,组稀疏正则化项被配置为将所述多个深度位置的每个处的内核元素的相应子集共同稀疏为单个组。
15.如前述权利要求中的任一项所述的计算机实现的方法,其中,所述一个或多个内核中的至少一个内核包括在卷积神经网络的深度可分离卷积层中。
16.如前述权利要求中的任一项所述的计算机实现的方法,其中,由所述一个或多个计算设备修改所述一个或多个内核中的至少一个内核以移除内核元素的相应子集包括由所述一个或多个计算设备修改所述一个或多个内核中的至少一个内核的相应尺寸以移除内核元素的相应子集。
17.一种计算系统,包括:
一个或多个处理器;
机器学习的模型,其包括卷积神经网络,所述卷积神经网络包括具有多个内核的多个卷积层,机器学习的模型被配置为接收模型输入并响应于模型输入的接收而输出模型输出;
一种或多种非暂态计算机可读介质,其共同存储指令,所述指令在由所述一个或多个处理器执行时使计算系统执行操作,所述操作包括:
获得描述卷积神经网络的数据,其中卷积神经网络包括被配置为使用多个内核执行卷积的多个卷积层,所述多个内核中的每个内核包括多个内核元素;
对于一个或多个训练迭代,使用包括组稀疏正则化项的损失函数来训练卷积神经网络,该组稀疏正则化项被配置为稀疏卷积神经网络的所述多个内核中的一个或多个内核中的每个内核的内核元素的相应子集;
在至少一个训练迭代之后,针对所述一个或多个内核中的每个内核,至少部分地基于与这种内核相关联的内核元素的相应子集的相应值来确定是否修改这种内核的相应尺寸以移除内核元素的相应子集;并且
修改所述一个或多个内核中的至少一个内核的相应尺寸以移除内核元素的相应子集。
18.如权利要求17所述的计算系统,其中,组稀疏正则化器包括内核元素的预定义子集的相应值的范数、学习到的参数或包括学习到的参数的标度中的至少一个。
19.如权利要求17至18中的任一项所述的计算系统,其中,由所述一个或多个计算设备针对所述一个或多个内核中的每个内核确定是否修改这种内核的相应尺寸以移除内核元素的相应子集包括针对所述一个或多个内核中的每个内核:
当内核元素的相应子集的值的第一范数与这种内核的所述多个内核元素中的不包括在内核元素的相应子集中的至少一些内核元素的值的第二范数的比率小于阈值时,由所述一个或多个计算设备确定修改所述至少一个或多个内核的相应子集以移除内核元素的相应子集。
20.一种计算系统,包括:
一个或多个处理器;
一种或多种非暂态计算机可读介质,其共同存储指令,所述指令在由所述一个或多个处理器执行时使计算系统执行操作,所述操作包括:
接收包括卷积神经网络的机器学习的模型,其中卷积神经网络包括被配置为使用多个内核执行卷积的多个卷积层,所述多个内核中的每个内核包括多个内核元素;
由所述一个或多个计算设备针对所述多个内核中的至少一个内核,至少部分地基于与这种内核相关联的内核元素的相应子集的相应值来确定是否修改所述多个内核中的所述至少一个内核的相应尺寸以移除内核元素的相应子集;并且
由所述一个或多个计算设备修改所述一个或多个内核中的至少一个内核的相应尺寸以移除内核元素的相应子集。
21.一种计算系统,包括:
一个或多个处理器;
一种或多种非暂态计算机可读介质,其共同存储指令,所述指令在由所述一个或多个处理器执行时使计算系统执行如权利要求1至16中的任一项所述的方法。
22.一种计算机程序产品,其包括计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时使所述一个或多个处理器执行如权利要求1至16中的任一项所述的方法。
CN201980078583.0A 2018-11-29 2019-01-10 减少卷积神经网络的资源消耗的系统及相关方法 Pending CN113168555A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862772654P 2018-11-29 2018-11-29
US62/772,654 2018-11-29
PCT/US2019/013034 WO2020112152A1 (en) 2018-11-29 2019-01-10 Systems and related methods for reducing the resource consumption of a convolutional neural network

Publications (1)

Publication Number Publication Date
CN113168555A true CN113168555A (zh) 2021-07-23

Family

ID=65244633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980078583.0A Pending CN113168555A (zh) 2018-11-29 2019-01-10 减少卷积神经网络的资源消耗的系统及相关方法

Country Status (4)

Country Link
US (1) US20220036191A1 (zh)
EP (1) EP3888010A1 (zh)
CN (1) CN113168555A (zh)
WO (1) WO2020112152A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112800874A (zh) * 2021-01-14 2021-05-14 上海汽车集团股份有限公司 一种人脸检测和识别方法及相关装置
US11860720B2 (en) * 2021-06-22 2024-01-02 International Business Machines Corporation Non-linear causal modeling from diverse data sources

Also Published As

Publication number Publication date
EP3888010A1 (en) 2021-10-06
US20220036191A1 (en) 2022-02-03
WO2020112152A1 (en) 2020-06-04

Similar Documents

Publication Publication Date Title
US11508146B2 (en) Convolutional neural network processing method and apparatus
CN107622302B (zh) 用于卷积神经网络的超像素方法
CN108351984B (zh) 硬件高效的深度卷积神经网络
US20180130203A1 (en) Automated skin lesion segmentation using deep side layers
EP3674986A1 (en) Neural network apparatus and method with bitwise operation
EP3800585A1 (en) Method and apparatus with data processing
US20210073644A1 (en) Compression of machine learning models
EP3543856A1 (en) Systems and methods of data processing
EP3528181A1 (en) Processing method of neural network and apparatus using the processing method
US20200389182A1 (en) Data conversion method and apparatus
US20210232912A1 (en) Systems and Methods for Providing a Machine-Learned Model with Adjustable Computational Demand
CN111709415B (zh) 目标检测方法、装置、计算机设备和存储介质
KR102082293B1 (ko) 컨볼루션 신경망의 이진화 연산 장치 및 방법
CN113168555A (zh) 减少卷积神经网络的资源消耗的系统及相关方法
CA3143928C (en) Dynamic image resolution assessment
US20240005157A1 (en) Methods and systems for unstructured pruning of a neural network
US20220092387A1 (en) Systems and Methods for Producing an Architecture of a Pyramid Layer
US20230360181A1 (en) Machine Learning for High Quality Image Processing
KR102235784B1 (ko) 행동 인식을 위한 시공간의 평활화 피처를 정규화하는 방법 및 시스템
Battiato High performance median filtering algorithm based on NVIDIA GPU computing
CN116755714B (zh) 深度神经网络模型的运行方法、装置、设备和存储介质
Recaido et al. Visual Explainable Machine Learning for High-Stakes Decision-Making with Worst Case Estimates
US20210248472A1 (en) Neural Network Layers with a Controlled Degree of Spatial Invariance
CN115769236A (zh) 经由lambda函数以减少的特征物化进行长程交互的建模
CN114341870A (zh) 用于使用图像平铺进行对象检测的系统和方法

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