CN116868205A - 经层式分析的神经网络剪枝方法和系统 - Google Patents

经层式分析的神经网络剪枝方法和系统 Download PDF

Info

Publication number
CN116868205A
CN116868205A CN202180092350.3A CN202180092350A CN116868205A CN 116868205 A CN116868205 A CN 116868205A CN 202180092350 A CN202180092350 A CN 202180092350A CN 116868205 A CN116868205 A CN 116868205A
Authority
CN
China
Prior art keywords
neural network
nodes
subset
generated
layer
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
CN202180092350.3A
Other languages
English (en)
Inventor
严恩勖
胥栋宽
刘嘉超
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.)
Moxin International Co ltd
Original Assignee
Moxin International Co 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 Moxin International Co ltd filed Critical Moxin International Co ltd
Publication of CN116868205A publication Critical patent/CN116868205A/zh
Pending legal-status Critical Current

Links

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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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/0499Feedforward networks
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Neurology (AREA)
  • Medical Informatics (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Databases & Information Systems (AREA)
  • Image Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Investigating Or Analysing Biological Materials (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)

Abstract

本公开实施例允许神经网络被剪枝。通过参考神经网络生成的输入和输出用于剪枝该参考神经网络。经剪枝的神经网络可以具有该参考神经网络中的权重子集。

Description

经层式分析的神经网络剪枝方法和系统
相关申请的交叉引用
本申请要求在2020年11月30日提交的申请号为17/107,046的美国非临时专利申请的优先权,其公开的全部内容通过引用并入本文。
技术领域
本公开实施例一般涉及人工智能。更具体地,本公开实施例涉及对神经网络、例如深度神经网络,进行剪枝的方法和系统。
背景技术
神经网络,例如深度神经网络(DNN)、卷积神经网络(CNN)等,已经成为人工智能(AI)中广泛使用的方法,其用于从例如图像、视频、音频和文本等较低级别数据中提取高级别信息。然而,神经网络昂贵的计算成本可能会阻碍其在能耗、处理能力/资源、存储空间和/或延迟容忍度的预算较紧的应用中的使用。例如,移动电话和监控摄像头之类的边缘设备可能不具有大量存储/处理资源等。
神经网络的计算成本可能来自多种来源。第一,神经网络参数可以为数百万或数千万的数量级,导致巨大的存储成本,并且可以阻止神经网络参数在内存空间中的存储。第二,神经网络中的神经元数量会消耗大量内存空间,并且在运行时可能需要数十亿次算术运算。第三,基于神经网络生成的向量表示的搜索引擎可能在计算方面是昂贵的,例如人脸比较引擎,部分原因在于神经网络的高维密集向量表示(嵌入)。
附图说明
在附图的图示中以示例而非限制的方式示出了本公开实施例,其中相似的附图标记指示相似的元素。
图1为根据本公开一个或多个实施例示出神经网络的运算的示意图;
图2为根据本公开一个或多个实施例示出示例神经网络的示意图;
图3为根据本公开一个或多个实施例示出示例剪枝引擎的示意图;
图4为根据本公开一个或多个实施例示出用于进行神经网络剪枝的示例过程的流程图;
图5为根据本公开一个或多个实施例示出示例计算设备的框图。
具体实施方式
将参考以下讨论的细节描述本公开的各个实施例和方面,并且附图将示出各个实施例。以下描述和附图是本公开的说明并且不应被解释为限制本公开。描述许多具体细节以提供对本公开的各种实施例的全面理解。然而,在某些情况下,为了提供对本公开的实施例的简要讨论,没有描述公知或常规的细节。
说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性可以包括在本公开的至少一个实施例中。在说明书中的各个位置出现的短语“在一个实施例中”不一定都指同一实施例。
神经网络可以包括数千或数百万个节点和/或权重。存储这些权重和/或节点可以使用大量的存储空间。此外,可以使用更多的处理/计算资源来执行神经网络200(例如,以使用神经网络200处理/分析输入数据)。例如,各权重可以应用于由神经网络执行的使计算和/或运算数量增加的输入。因此,减少神经网络中权重/连接和/或节点的数量可能是有用的。这将减少用于存储神经网络的存储空间量,并且将减少所使用的处理/计算资源。
图1为根据本公开一个或多个实施例示出示例神经网络100的示意图。神经网络可以为深度神经网络。深度神经网络可以为包括多个中间层(例如,节点之间的多个节点层和/或权重层/连接层)的神经网络。在一个实施例中,神经网络可以为卷积神经网络(CNN),其可以为一种类型/类别的深度神经网络。神经网络(例如CNN)可以使用卷积和池化操作来处理输入并生成和输出例如推理、决策等。CNN通常可以用于执行图像分析和/或处理。
如图1所示,可以将输入110提供给(例如传送至、馈入等)神经网络100。例如,输入110可以包括一个或多个将由神经网络100处理和/或分析的图像(例如数字图像、图片等)。输入110可以由第一内核115处理。第一内核115也可以指卷积滤波器。卷积滤波器可以包括一个或多个内核(例如卷积内核)。例如,输入(例如图像)可以具有多个通道(例如多个输入通道,如用于图像各像素的红、蓝、绿输入通道)。第一内核115可以包括用于各通道的滤波器。第一内核115可以用于对输入110执行卷积运算。卷积运算可以指可以将两组信息合并为一个输出的运算。例如,第一内核115可以包括权重(例如值),其可以应用于部分输入以生成输出。第一内核115也可以指神经网络的层(例如中间层)。
在一个实施例中,由第一内核115生成的输出可以为特征图120。特征图120可以为将第一内核115(例如一组权重)应用于输入的值的结果。例如,特征图120可以是逐元素矩阵乘法的结果以及该结果的和。
在一个实施例中,神经网络100还可以包括和/或执行对特征图120执行的池化操作。池化操作可以指对特征图进行下采样,以在保持相同深度的同时,减少特征图120的高度和权重。例如,可以将最大池化(例如,可以使用池化窗口的最大值的一种池化)应用于特征图120。特征图120可以为第一内核115的输出(例如第一层的输出),也可以为提供给第二内核125的输入(例如第二层、后续层的输入)。
第二内核125可以接收特征图120(例如,输入特征图),以及可以对特征图120进行卷积运算以生成特征图130。如上所述,可以对特征图130执行一次或多次池化操作。特征图130可以为第二内核125的输出(例如,一层的输入),也可以为提供给第三内核135的输入(例如,另一层、后续层的输入)。第三内核135可以接收特征图130(例如,输入特征图),以及可以对特征图130进行卷积运算以生成特征图140。如上所述,可以对特征图140执行一次或多次池化操作。特征图140可以为第三内核135的输出(例如,一层的输出),也可以为提供给第四内核145的输入(例如,另一层、后续层的输入)。
第四内核145可以接收特征图140(例如,输入特征图),以及可以对特征图140进行卷积运算以生成特征图150。如上所述,可以对特征图150执行一次或多次池化操作。特征图150可以作为第四内核145的输出(例如,一层的输出),也可以为提供给全连接层160的输入。
如图1所示,神经网络100也包括全连接层160和170。在一个实施例中,全连接层160和170可以使用先前层的输出(例如,特征图120、130、140和/或150),以及可以生成神经网络100的最终输出(例如,最终推理、决策等)。
图2为根据本公开一个或多个实施例示出示例神经网络200的示意图。神经网络200可以用于对(例如复杂的)输入和输出之间的关系进行建模,或者在数据中找出模式,其中输入和输出之间的相关性可能不容易查明。神经网络200也可以为计算模型,其可以用于通过各种计算确定输入数据中的特征。例如,神经网络200可以根据结构确定输入数据中(例如音频数据、图像数据、视频数据等)的特征(例如数字、形状、模式等),该结构定义了将要执行的计算的顺序。
神经网络200可以为卷积神经网络(CNN)。CNN可以为前馈神经网络。前馈神经网络可以是节点之间的连接不形成循环的一种神经网络。例如,信号、消息、数据、信息等从左至右从神经网络200的输入层210(例如从输入节点)、经过中间层220向前流至输出层220(例如至输出节点)。信号、消息、数据、信息等可能不会通过神经网络向后移动(例如,可能不会从右向左移动)。CNN可以用于图像分析。连接和/或其关联权重可以采用卷积滤波器(和/或卷积内核)的形式,卷积滤波器(和/或卷积内核)可以应用于输入(例如,可以应用于图像的不同像素)。尽管本公开可以指用于CNN的图像分析,在其他实施例中,CNN可以用于其他类型的数据和输入。
神经网络200包括输入层210、中间层220和输出层220。输入层210、中间层220和输出层220中的每一层包括一个或多个节点205。输入层210、中间层220和输出层220中的每一层可以具有不同数量的节点205。神经网络200可以为深度神经网络(DNN)或深度CNN。如果存在一个以上的中间层220(例如,如果存在四个、十个或一些其他适当数量的中间层220),神经网络可以为深度的(例如,深度神经网络)。如图2所示,神经网络200包括两个中间层220(例如,两列节点205)。在一个实施例中,中间层220可以包括中间层220中的节点205以及联接到节点205的连接/权重。中间层220的节点可以接收用于中间层220的输入(例如,由先前层生成的输出,如特征图)。权重(例如内核/滤波器)可以应用于输入以生成当前中间层的输出(例如特征图)。
一层中的各节点205连接到下一级别(例如下一个子层)中的节点205或另一层中的节点205,如由节点205之间的箭头/线所表示的。例如,输入层中的节点205各自被联接至第一中间层220中的至少一个节点205。神经网络200可以为全连接神经网络。例如,在存在后续的层或级别的情况下(例如,输出层220中的节点205不连接到其他节点),各层或级别中的各节点205与随后的层或级别中的各节点相连接。
各连接可以与权重或权重值相关联(例如,可以具有权重)。权重或权重值可以定义应用于计算的系数。例如,权重或权重值可以是两个或多个节点205之间的缩放因子。各节点205可以代表其输入的总和,并且与连接相关联的权重或权重值可以代表该连接中与节点205的输出相乘的系数或缩放因子。可以在神经网络的训练过程中对节点205之间的权重进行确定、计算、生成、赋值、学习等。例如,反向传播可以用于设置权重,使得神经网络200在考虑到标记训练数据中的相应值的情况下产生预期输出值。因此,中间层220的权重可被认为对数据中有意义的模式的编码。节点205之间连接的权重可以通过额外的训练进行修改。
尽管神经网络200被描绘为具有特定数量的节点205、层和连接,但是在其他实施例中可以使用各种神经网络架构/配置。例如,可以使用不同的全连接神经网络和部分连接神经网络(例如相邻层中的所有节点都不连接的情况)。
尽管本公开可以涉及卷积神经网络,但是在其他实施例中可以使用其他类型的神经网络和/或深度神经网络。例如,在其他实施例中可以使用部分连接深度神经网络、递归神经网络、长短时记忆(LSTM)神经网络等。
如上所述,神经网络200可以包括数千或数百万个节点和/或权重。由于大量的节点和/或权重,存储神经网络200可以使用大量存储空间。此外,可以使用更多的处理/计算资源来执行神经网络200(例如,以使用神经网络200处理/分析输入数据)。因此,减少神经网络200中的权重/连接和/或节点的数量可能是有用的。这将减少用于存储神经网络的存储空间量,并且将减少所使用的处理/计算资源。
图3为根据本公开一个或多个实施例示出示例剪枝引擎300的示意图。剪枝引擎300可以位于计算设备380中。计算设备380可以包括硬件,如处理设备(例如处理器、中央处理单元(CPU)、可编程逻辑设备(PLD)等)、存储器(例如随机存取存储器(例如RAM)、存储设备(例如硬盘驱动器(HDD)、固态驱动器(SSD)等)和其他硬件设备(例如声卡、视频卡等)。计算设备380可以是具有可编程处理器的任何合适类型的计算设备或机器,包括例如服务器计算机、台式计算机、膝上型计算机、平板计算机、智能手机、机顶盒等。在一些示例中,计算设备380可以包括单个机器或者可以包括多个互相连接的机器(例如,在集群中配置的多个服务器)。计算设备380可以执行或包括操作系统(OS)。OS可以管理其他组件(例如,软件、应用程序等)的执行和/或可以管理对计算设备380的硬件(例如,处理器、内存、存储设备等)进行的访问。尽管本公开可以涉及计算设备380,但是在其他实施例中,剪枝引擎300可以位于如虚拟环境之类的其他类型的计算环境中。例如,在其他实施例中,剪枝引擎300可以位于虚拟机(VM)、容器等。
如上所述,神经网络310可以包括数千或数百万个节点和/或权重。由于大量的节点和/或权重,存储神经网络310可以使用大量存储空间。此外,可以使用更多的处理/计算资源来执行神经网络310(例如,以使用神经网络310处理/分析输入数据)。减少神经网络中权重/连接和/或节点的数量(例如,对神经网络进行剪枝、对神经网络进行稀疏化)可以缓解上述问题。
然而,在对神经网络进行剪枝后,通常会对神经网络进行重新训练。如上所述,训练神经网络可能是一个耗时、处理密集和/或成本高昂的过程。为了训练神经网络,在对神经网络的节点之间的连接的权重进行合理设置之前,可能需要将训练数据350传递给(例如提供给)神经网络数百或数千次。通过使训练数据350数百/数千次(甚至更多次)地经历神经网络可能大大增加训练神经网络所需的时间(例如,天、星期等)。此外,数百/数千次地将训练数据350传递通过神经网络还可能使用大量的处理资源和/或功率。
在一个实施例中,剪枝引擎300可以获得和/或分析神经网络310。例如,剪枝引擎300可以从数据存储(例如存储器、磁盘驱动器等)中检索和/或访问神经网络310。如图3所示,神经网络310包括一组节点(在神经网络310中被示为圆圈)和一组连接(被示为节点/圆圈之间的线),该组连接将该组节点中的节点互连。节点之间的连接也可以指权重。神经网络310也可以指原始神经网络、参考神经网络、教师神经网络等。
在一个实施例中,剪枝引擎300可以基于神经网络310(例如第一神经网络)生成神经网络320(例如第二神经网络)。神经网络320可以包括神经网络310中的连接子集。例如,可以通过从神经网络310的各层中确定、选择、识别连接子集或通过其他动作以生成神经网络320。来自神经网络310的各层的连接子集可以被用于生成神经网络320。神经网络320还可以包括神经网络310中的节点子集。例如,在从神经网络310中选择了连接子集之后,神经网络320中的一些节点可以不经由连接,连接至任何其他节点。可以从神经网络320中去除这些节点。对神经网络中的连接子集和/或节点子集进行确定、选择、识别等可以指如对神经网络进行剪枝、对神经网络进行稀疏化等。
在一个实施例中,剪枝引擎300可以通过分析神经网络310的中间层生成第二神经网络。对于神经网络310中的各中间层,剪枝引擎300可以确定(例如识别、选择等)各中间层的权重子集。剪枝引擎300可以使用来自各中间层的不同连接子集以生成神经网络320。例如,神经网络320可以具有和神经网络310一样的层数。然而,神经网络320可以在一层或多层中几乎没有连接。
在一个实施例中,剪枝引擎300可以在不训练和/或重新次训练神经网络320的情况下生成神经网络320。例如,剪枝引擎300可以不使用任何训练数据来生成神经网络320。剪枝引擎300可以基于输入和参考生成所述神经网络320,该输入提供给神经网络310的不同层,该参考由神经网络310的不同层生成,如下详述。例如,神经网络310的各层可以接收输入(例如输入数据、特征图、先前层的输出等)以及可以基于输入生成输出(例如特征图)。剪枝引擎可以使用神经网络310的中间层的输入和/或输出来识别要用于神经网络320的层的连接(例如权重)子集。提供给神经网络310的中间层的输入可以被称为参考输入,由神经网络310的中间层生成的输出可以被称为参考输出。
在一个实施例中,剪枝引擎300可以能够同时(或基本上同时)确定神经网络320的各层的连接子集。如上所述,剪枝引擎300可以访问神经网络310的各层的所有参考输入和参考输出。这可以允许剪枝引擎300并行地确定神经网络320的各中间层的连接子集。
在一个实施例中,剪枝引擎300可以使用训练数据350生成神经网络320。然而,相较于标准神经网络训练过程,剪枝引擎300不用将训练数据350数百或数千次地提供给神经网络320。相反,剪枝引擎300可以将训练数据350传递给神经网络320的次数可以小于训练数据350被提供给神经网络310以训练神经网络310的次数。例如,可以将训练数据350传递给神经网络320一次或两次。剪枝引擎可以基于参考输出生成神经网络320,该参考输出通过神经网络310的不同层生成,如下详述。
在一个实施例中,可以逐层生成神经网络320。例如,剪枝引擎300可以基于提供给神经网络320的输入生成用于第一层的内核/滤波器。这一输入可以用于基于第一参考输出特征图(例如,由神经网络310生成的特征图)生成第一滤波器。该输入可以为训练数据350。第一滤波器的输出可以被用于生成第二滤波器。例如,剪枝引擎300可以基于第二参考输出特征图和第一滤波器的输出确定第二滤波器。因此,可以依序、逐层确定神经网络320的多个滤波器。
如上所述,可以基于一个或多个神经网络310、神经网络310的中间层的参考输入、以及神经网络310的中间层的参考输出生成神经网络320。在一个实施例中,可以基于如下方程式(1)生成神经网络320。
minW||X*W-Y||2+Q (1)
在确定(例如选择、识别、计算等)神经网络320的中间层中的每一个时,可以使用和/或应用方程式(1)。例如,可以使用和/或应用方程式(1)来确定中间层(例如卷积层)的连接/权重。
在一个实施例中,方程式(1)中的项X可以表示提供给神经网络310的中间层的一个或多个特征图(例如一个或多个参考输入)。如上所述,神经网络320可以具有与神经网络310相同数量的层。神经网络320的各中间层与神经网络310的层可以相对应和/或可以相关联。提供给神经网络310的层的相同的特征图(例如X)可以用于确定神经网络320的对应层的连接/权重。该一个或多个特征图X可以具有维度(例如形状)[N,H,W,C],其中H为高度,W为宽度,C为输入通道的数量,N为样本的数量(例如特征图的数量)。例如,多个特征图(例如N个特征图)可以包含于X。各特征图可以具有三个通道(例如C=3),分别用于红色、蓝色、绿色。
在一个实施例中,Y可以为由神经网络310的对应层生成的参考输出。例如,Y可以表示由神经网络310的对应层基于提供给神经网络310的该对应层的特征图X生成的一个或多个特征图。该一个或多个特征图Y可以具有维度(例如形状)[N,H,W,K],其中H为高度,W为宽度,K为输出通道的数量,N为样本的数量(例如,特征图的数量)。
在一个实施例中,W为要为神经网络320的层确定的滤波器(例如包括连接/权重的一个或多个内核)。例如,W可以为包含于神经网络320的对应层的滤波器。因此,方程式(1)可以指示剪枝引擎300获得(例如确定、计算等)W(例如滤波器),W使Y(例如参考输出)之间的差值最小化,Y为将滤波器W应用于输入X所得的结果。W可以具有维度(例如形状)[R,S,C,K],其中R为高度,S为宽度,C为输入通道的数量,而K为输出通道的数量。滤波器W可以在卷积运算(例如方程式(1)中的*运算)中被应用于输入X。
方程式(1)可以表示(例如分解、解构、转换、简化等)为K个独立的问题,每个输出通道k表示一个问题。如下方程式(2)可以用于表示K个独立问题中的各个问题。
如上所述,方程式(1)中的项X可以表示提供给神经网络310的中间层的一个或多个特征图(例如一个或多个参考输入)。项Yk可以表示用于输出通道k的参考输出,参考输出由神经网络310的对应层生成。Wk可以表示要为神经网络320的层的输出通道k确定的滤波器(例如包括连接/权重的一个或多个内核)。Wk可以具有维度(例如形状)[R,S,C],其中,R为高度,S为宽度,C为输入通道的数量。
卷积运算(例如“*”)可以简化为R x S矩阵乘法问题,C个变量中的每一个如以下方程式(3)所示:
Xr,s可以为具有维度[N,H,W,C]的特征图。如上所述,H为高度,W为宽度,C为输入通道的数量,N为样本的数量(例如特征图的数量)。Xr,s可以通过将X沿H轴线移动r和将X沿W轴线移动s来获得(例如生成、计算、确定等)。
可以修改方程式(3)中的项以生成如下方程式(4):
再参照方程式(3),可以将wr,s进行堆叠以形成方程式(4)中的向量w。向量w可以具有尺寸R x S x C。此外,可以堆叠方程式(3)的Xr,s以获得(例如生成)方程式(4)的矩阵矩阵/>可以具有尺寸或维度[(N x H x W),(Rx S x C)]。例如,可以通过取不同的特征图Xr,s中的每一个并将它们依次堆叠而获得矩阵/>(例如,第二特征图Xr,s堆叠在第一特征图Xr,s之下,第三特征图Xr,s堆叠在第二特征图Xr,s之下,等等)。可以展平方程式(3)的Yk以获得方程式(4)的yk。使用方程式(4)可以允许将方程式(3)的卷积运算转换为矩阵乘法运算。方程式(4)还可被修改为如方程式(5a)、(5b)以及(5c)所示。
如方程式(5a)所示,可以被重写为/> 运算tr()可以指跟踪运算,用于确定位于矩阵主对角线上的值的和(例如,从矩阵左上角开始向右下角的值的总和)。方程式(5a)中的“T”表示方程式(5a)中一个或多个项的转置。将方程式(5a)的左侧展开得到方程式(5b)。例如,可以将不同的项彼此相乘并相加/相减以扩展等式(5a)的左侧。方程式(5b)可以进一步简化,如方程式(5c)所示。
参见以上方程式(5c),项可以为具有维度(例如形状)[RSC,RSC]的矩阵,其中RSC为矩阵的高度和宽度(例如,RSC x RSC的矩阵)。项/>可以是在求解w时可能不使用(例如可以忽略)的常数项。在方程式(5c)中,项/>可以替代项/>项bk可以替代项
基于如上方程式(1)至(5c),剪枝引擎300可以求解项w。例如,剪枝引擎300可以执行回归分析、线性分析和/或统计回归以求解项w。求解项w将产生用于神经网络320的中间层的内核。如上所述,剪枝引擎300可以同时和/或依次(例如逐层)为各中间层确定(例如计算、确定、获得等)内核。
在一个实施例中,方程式(1)至(5c)可以允许剪枝引擎300在不使用任何训练数据的情况下生成神经网络320(例如,确定在神经网络320的内核/滤波器中使用的权重)。例如,剪枝引擎300可以使用由神经网络310(例如参考神经网络、教师神经网络等)生成的输入和/或输出来生成内核/滤波器。在另一个实施例中,剪枝引擎350逐层依次生成用于神经网络320的中间层的内核/滤波器(例如,生成用于第一中间层的内核,然后生成用于第二中间层的内核,等等)。与将训练数据传递通过神经网络数百次或数千次的一般训练过程相比,逐层生成内核可以允许剪枝引擎300将训练数据350传递通过神经网络320的次数更少(例如一到两次)。
剪枝引擎300可以减少可用于创建剪枝的(例如稀疏化的)神经网络(例如神经网络320)的时间、精力、计算/处理资源等。通过抑制使用训练数据350(例如根本不使用训练数据350)或减少使用训练数据350的次数(例如使用一到两次),剪枝引擎300可以在生成神经网络320时节省时间和/或资源。例如,剪枝引擎300能够生成神经网络320,而无需将训练数据360传递通过神经网络320数百或数千次。这可以大大提高效率和/或减少剪枝神经网络所需的时间。
图4为根据本公开一个或多个实施例示出用于进行深度神经网络剪枝的示例过程400的流程图。过程400可以由处理逻辑执行,处理逻辑可以包括硬件(例如电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如在处理设备上运行/执行的指令)、固件(例如微码)或其组合。在一些实施例中,过程400可以由计算设备(例如图3所示的计算设备380)和剪枝引擎(例如图3所示的剪枝引擎300)中的一个或多个执行。
参见图4,过程400示出了各种实施例所使用的示例功能。尽管在过程400中公开了特定的功能块(“块”),但是这样的块为示例。也就是说,实施例适于执行过程400中列举的各种其它块或其变化。可以理解的是,过程400中的块可以以不同于所呈现的顺序来执行,并且过程400中并非所有的块都需要被执行。此外,可以在图4所示的块之间插入额外的其它块(图4中未示出)。
过程400自块405开始,在块405,过程400获得第一神经网络。第一神经网络可以为应被剪枝(例如稀疏化)的神经网络,以减少神经网络的尺寸和/或以减少所使用的计算/处理资源的量。在块410,过程400可以基于第一神经网络生成第二神经网络。
块410包括额外的块411、412以及413。在块411,过程400可以分析第一神经网络的一个或多个中间层。例如,过程400可以获得提供给第一神经网络的中间层的输入(例如参考输入特征图)和/或由第一神经网络的中间层生成的输出(例如参考输出特征图)。在块412,过程400可以确定(例如识别、选择、计算等)用于各中间层的权重子集。例如,第一神经网络的各层可以包括权重集。过程400可以识别各层的权重子集以确定第二神经网络的对应层。如上所述,过程400可以堆叠、展平和/或处理各种矩阵以识别各层的权重集。选择权重子集可以指生成用于层的滤波器。在一个实施例中,过程400可以识别各层的权重子集或同时识别所有层的权重子集。例如,过程400可以访问由第一神经网络的每一层生成的输入和/或输出。这可以允许过程400同时为第二神经网络中的各对应层生成滤波器(例如,同时为所有层求解W)。在另一个实施例中,过程400可以依次为各层生成各滤波器。例如,过程400可以在生成用于当前层的当前滤波器之后生成用于下一层的下一滤波器。在块413,过程400可以基于为各层识别的权重子集,生成第二神经网络。
图5为根据一些实施例示出示例计算设备500的框图。计算设备500可以连接到LAN、内联网、外联网和/或互联网中的其他计算设备。计算设备可以作为客户端-服务器网络环境的服务器,或者作为对等网络环境中的客户端进行操作。计算设备可以由个人计算机(PC)、机顶盒(STB)、服务器、网络路由器、交换机或桥接器、或者能够(依次或以其他方式)执行指定该机器要采取的动作的一组指令的任何机器来提供。此外,虽然仅示出了单个计算设备,但术语“计算设备”还应被视为包括单独或联合执行一组(或多组)指令以执行本文所讨论的方法的计算设备的任何集合。
示例计算设备500可以包括处理设备(例如通用处理器、可编程逻辑设备(PLD)等)502、主存储器504(例如,同步动态随机存取存储器(DRAM)、只读存储器(ROM)、静态存储器506(例如闪存)和数据存储设备518),其可以经由总线530彼此通信。
处理设备502可以由一个或多个通用处理设备提供,例如微处理器、中央处理单元等。在一个说明性示例中,处理设备502可以包括复杂指令集计算(CISC)微处理器、精简指令集运算(RISC)微处理器、超长指令字(VLIW)微处理器、或者实现其他指令集的处理器或实现指令集组合的处理器。处理设备502还可以包括一个或多个专用处理设备,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。根据本公开的一个或多个方面,处理设备502可以被配置为执行本文描述的操作,用于执行本文讨论的操作和步骤。
计算设备500还可以包括可以与网络520通信的网络接口设备508。计算设备500还可以包括视频显示单元510(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备512(例如键盘)、光标控制设备514(例如鼠标)和声学信号生成设备516(例如扬声器)。在一个实施例中,视频显示单元510、字母数字输入设备512以及光标控制设备514可以组合为单个组件或设备(例如LCD触摸屏)。
根据本公开的一个或多个方面,数据存储设备518可以包括计算机可读存储介质528,其上可以存储一组或多组剪枝引擎指令525,例如,用于执行本文描述的操作的指令。剪枝引擎指令525也可以在由计算设备500执行期间完全或至少部分地驻留在主存储器504内和/或在处理设备502内,主存储器504和处理设备502构成计算机可读介质。可以经由网络接口设备508通过网络520发送或接收剪枝引擎指令525。
尽管计算机可读存储介质528在说明性示例中被示为单个介质,但术语“计算机可读存储媒体”应被视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应被视为包括能够存储、编码或用于由机器执行的指令集并使机器执行本文公开的方法。术语“计算机可读存储介质”应被视为包括但不限于固态存储器、光学介质和磁性介质。
除非另有特别说明,否则术语如“获得”、“生成”、“分析”、“确定”、“堆叠”、“展平”等,指的是由计算设备执行或实现的动作和过程,这些动作和过程将计算设备寄存器和存储器中表示为物理(电子)量的数据操纵和转换为计算设备存储器或寄存器或其他此类信息存储、传输或显示设备中类似地表示为物理量的其他数据。此外,本文中使用的术语“第一”、“第二”、“第三”、“第四”等意味着作为区分不同元素的标记,不一定具有顺序意义。
本文所述的示例还涉及用于执行本文所述操作的装置。该装置可以是为预期目的而专门构造的,或者它可以包括由存储在计算设备中的计算机程序选择性地编程的通用计算设备。这样的计算机程序可以被存储在计算机可读非暂态存储介质中。
本文所描述的方法和示例与任何特定的计算机或其他装置没有内在联系。可以根据本文所述的教导使用各种通用系统,或者这可能证明了可以方便地构建更专业的装置来执行所需的方法步骤。各种这些系统所需的结构如上文所述。
以上描述旨在说明性的,而不是限制性的。尽管已经参考具体的说明性示例描述了本公开,但是将认识到本公开不限于所描述的示例。本公开的范围应参照以下权利要求以及权利要求所涉及的全部等效范围来确定。
如本文所用,除非上下文另有明确指示,否则单数形式“一”、“一个”和“该”也旨在包括复数形式。应进一步理解的是,术语“包括”、“包含”和/或“含有”在本文中使用时,指特征、整型、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整型、步骤、操作、元素和/或组件的存在或附加。因此,本文中使用的术语仅用于描述特定实施例的目的,而不旨在进行限制。
还应注意的是,在一些替代实施方式中,所述的功能/动作与附图中所示顺序不同地发生。根据所涉及的功能/动作,连续显示的两个附图实际上可以基本上同时执行,或者有时可以以相反的顺序执行。
尽管方法操作是按特定顺序描述的,但应该理解,在所描述的操作之间可以执行其他操作,所描述的操作可以被调整以使得它们在稍微不同的时间发生,或者所描述的操作可以分布在允许以与处理相关联的各种间隔发生处理操作的系统中。
各种单元、电路或其他组件可以被描述或声称为“配置为”或“可配置为”执行一项或多项任务。在这样的上下文中,短语“配置为”或“可配置为”通过指示单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如电路)来表示结构。因此,即使在指定的单元/电路/组件当前不可操作(例如不开启)时,单元/电路或组件也可以被称为配置为执行任务,或者可配置为执行任务。与“配置为”或“可配置为”一起使用的单元/电路/组件包括硬件,例如电路、存储可执行以实现操作的程序指令的存储器等。在记载单元/电路/组件“配置为”执行一个或多个任务,或“可配置为”执行一个或者多个任务的情况下,则明确表示不对该单元/电路/组件援引《美国法典》第35卷第112节第6段中的规定。此外,“配置为”或“可配置为”可以包括由软件和/或固件(例如,FPGA或执行软件的通用处理器)操纵的通用结构(例如通用电路),以能够执行所讨论的任务的方式进行操作。“配置为”还可以包括调整制造工艺(例如半导体制造设施)以制造适于实现或执行一个或多个任务的设备(例如集成电路)。“可配置为”明确表示不适用于空白介质、未编程处理器或未编程通用计算机、或未编程可编程逻辑设备、可编程门阵列或其他未编程设备,除非伴随有赋予未编程设备配置以执行所公开功能的能力的编程介质。
为了解释的目的,前面的描述已经参考具体实施例进行了描述。然而,上面的说明性讨论并非旨在穷举或将本发明限制于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。选择和描述这些实施例是为了最好地解释这些实施例的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用这些实施例和可能适合于预期的特定用途的各种修改。因此,本实施例被认为是说明性的而非限制性的,并且本发明不限于本文给出的细节,而是可以在所附权利要求的范围和等同物内进行修改。

Claims (20)

1.一种方法,包括:
获得第一神经网络,其中:
使用第一训练数据集训练所述第一神经网络;
所述第一神经网络包括第一组节点;以及
所述第一神经网络包括第一组连接,所述第一组连接使所述第一组节点互连;
基于所述第一神经网络生成第二神经网络,其中:
所述第二神经网络包括使第二组节点互连的第二组连接,以及所述第二组连接包括所述第一组连接的子集;以及
在不使用所述第一训练数据集的情况下生成所述第二神经网络。
2.根据权利要求1所述的方法,其中,基于所述第一神经网络生成第二神经网络,包括:
分析所述第一神经网络的一组中间层;
确定各中间层的权重子集;以及
基于所述各中间层的权重子集生成所述第二神经网络。
3.根据权利要求2所述的方法,其中,确定各中间层的权重子集,包括:
基于提供给所述中间层的输入以及参考输出,为各中间层生成相应的滤波器,其中,所述相应的滤波器包括权重子集。
4.根据权利要求3所述的方法,其中,所述输入通过以下方式生成:
堆叠第一组输入特征图以生成第一组合特征图,其中所述输入包括所述第一组合特征图。
5.根据权利要求4所述的方法,其中,所述第一组输入特征图是通过所述第一神经网络的第一滤波器生成的。
6.根据权利要求3所述的方法,其中,所述参考输出通过以下方式生成:
将输出特征图展平以生成向量,其中,所述参考输出包括所述向量。
7.根据权利要求6所述的方法,其中,所述输出特征图是基于所述第一神经网络的第二滤波器生成的。
8.根据权利要求1所述的方法,其中,所述各中间层的权重子集是为所述各中间层同时确定的。
9.根据权利要求1所述的方法,其中,生成所述第二神经网络,包括:
在不训练所述第二神经网络的情况下,生成所述第二神经网络。
10.根据权利要求1所述的方法,其中,所述第二组节点包括所述第一组节点的子集。
11.一种方法,包括:
获得第一神经网络,其中:
通过将训练数据集传递通过所述第一神经网络第一次数,训练所述第一神经网络;
所述第一神经网络包括第一组节点;以及
所述第一神经网络包括第一组连接,所述第一组连接使所述第一组节点互连;
基于所述第一神经网络生成第二神经网络,其中:
所述第二神经网络包括使第二组节点互连的第二组连接,以及所述第二组连接包括所述第一组连接的子集;以及
通过将所述训练数据集传递通过所述第二神经网络第二次数,生成所述第二神经网络,其中,所述第二次数小于所述第一次数。
12.根据权利要求11所述的方法,其中,基于所述第一神经网络生成第二神经网络,包括:
分析所述第一神经网络的一组中间层;
确定各中间层的权重子集;以及
基于所述各中间层的权重子集生成所述第二神经网络。
13.根据权利要求12所述的方法,其中,确定所述各中间层的权重子集,包括:
基于提供给所述中间层的输入以及参考输出,为各中间层生成相应的滤波器,其中,所述相应的滤波器包括权重子集。
14.根据权利要求13所述的方法,其中,所述输入通过以下方式生成:
堆叠第一组输入特征图以生成第一组合特征图,其中,所述输入包括所述第一组合特征图。
15.根据权利要求14所述的方法,其中,所述第一组输入特征图是通过所述第二神经网络的先前层生成的。
16.根据权利要求13所述的方法,其中,所述参考输出通过以下方式生成:
将输出特征图展平以生成向量,其中,所述参考输出包括所述向量。
17.根据权利要求16所述的方法,其中,所述输出特征图是基于所述第一神经网络的第二滤波器生成的。
18.根据权利要求11所述的方法,其中,所述各中间层的权重子集是按顺序逐层确定的。
19.根据权利要求1所述的方法,其中,所述第二组节点包括所述第一组节点的子集。
20.一种装置,包括:
存储器,被配置为存储数据;
与所述存储器联接的处理器,所述处理器被配置为:
获得第一神经网络,其中:
使用第一训练数据集训练所述第一神经网络;
所述第一神经网络包括第一组节点;以及
所述第一神经网络包括第一组连接,所述第一组连接使所述第一组节点互连;
基于所述第一神经网络生成第二神经网络,其中:
所述第二神经网络包括使第二组节点互连的第二组连接,以及所述第二组连接包括所述第一组连接的子集;以及
在不使用所述第一训练数据集的情况下生成所述第二神经网络。
CN202180092350.3A 2020-11-30 2021-10-28 经层式分析的神经网络剪枝方法和系统 Pending CN116868205A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/107,046 2020-11-30
US17/107,046 US20220172059A1 (en) 2020-11-30 2020-11-30 Neural network pruning method and system via layerwise analysis
PCT/US2021/057095 WO2022115202A1 (en) 2020-11-30 2021-10-28 Neural network pruning method and system via layerwise analysis

Publications (1)

Publication Number Publication Date
CN116868205A true CN116868205A (zh) 2023-10-10

Family

ID=81752611

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180092350.3A Pending CN116868205A (zh) 2020-11-30 2021-10-28 经层式分析的神经网络剪枝方法和系统

Country Status (7)

Country Link
US (1) US20220172059A1 (zh)
EP (1) EP4252156A1 (zh)
JP (1) JP2023551865A (zh)
KR (1) KR20230110355A (zh)
CN (1) CN116868205A (zh)
TW (1) TW202223759A (zh)
WO (1) WO2022115202A1 (zh)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160293167A1 (en) * 2013-10-10 2016-10-06 Google Inc. Speaker recognition using neural networks

Also Published As

Publication number Publication date
JP2023551865A (ja) 2023-12-13
KR20230110355A (ko) 2023-07-21
US20220172059A1 (en) 2022-06-02
WO2022115202A1 (en) 2022-06-02
TW202223759A (zh) 2022-06-16
EP4252156A1 (en) 2023-10-04

Similar Documents

Publication Publication Date Title
US10096134B2 (en) Data compaction and memory bandwidth reduction for sparse neural networks
Huang et al. Learning to prune filters in convolutional neural networks
US20220391665A1 (en) Method for splitting neural network model by using multi-core processor, and related product
CN107622302B (zh) 用于卷积神经网络的超像素方法
US11645529B2 (en) Sparsifying neural network models
Mahmoud et al. Diffy: A Déjà vu-free differential deep neural network accelerator
WO2021057056A1 (zh) 神经网络架构搜索方法、图像处理方法、装置和存储介质
WO2022001805A1 (zh) 一种神经网络蒸馏方法及装置
WO2021218517A1 (zh) 获取神经网络模型的方法、图像处理方法及装置
US11113601B1 (en) Method and system for balanced-weight sparse convolution processing
US11544542B2 (en) Computing device and method
CN112529069B (zh) 一种半监督节点分类方法、系统、计算机设备和存储介质
JP2023541350A (ja) 表畳み込みおよびアクセラレーション
Mukhopadhyay et al. Systematic realization of a fully connected deep and convolutional neural network architecture on a field programmable gate array
US11948090B2 (en) Method and apparatus for video coding
WO2020062299A1 (zh) 一种神经网络处理器、数据处理方法及相关设备
WO2022127603A1 (zh) 一种模型处理方法及相关装置
CN116868205A (zh) 经层式分析的神经网络剪枝方法和系统
WO2021179117A1 (zh) 神经网络通道数搜索方法和装置
CN117688984A (zh) 神经网络结构搜索方法、装置及存储介质
CN115461754A (zh) 深度过参数化
KR102311659B1 (ko) 컨볼루션 신경망 모델에 기초한 컴퓨팅 장치 및 그 동작 방법
Yuhui et al. Irregular convolutional auto-encoder on point clouds
CN113365072B (zh) 特征图压缩方法、装置、计算设备以及存储介质
CN114331827B (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