首页 / 卷积神经网络压缩

卷积神经网络压缩实质审查 发明

技术领域

[0001] 本公开一般涉及卷积神经网络。

相关背景技术

[0002] 深度神经网络与大规模标记数据相结合,已成为近年来在监督式学习任务中实现最先进性能的标准方法。尽管取得了这些成功,但深度神经网络到高度非线性函数的能力也带来了高计算和存储需求。具体地,神经网络模型的参数的数量通常非常大,以考虑网络从其中学习的数据的规模、多样性和复杂性。这种神经网络通常在具有有限资源的移动或嵌入式设备中实现。可能难以平衡这种网络的大小、训练时间和预测准确性。虽然硬件的进步在某种程度上缓解了这个问题,但在移动和嵌入式设备上进行生产部署时,网络规模、速度和功耗都是限制因素。另一方面,众所周知,神经网络的权重之间存在显著的冗余。
[0003] 在这方面,已经实现了各种神经网络压缩技术。例如,网络压缩的一种通用方法是称为网络修剪的技术,其中从网络中移除网络的连接子集。然而,如果没有管理连接和/或参数的移除的约束,则网络修剪可能导致不规则的网络,这可能对网络的训练时间和存储器使用产生负面影响。此外,网络修剪可能导致不灵活的模型。
[0004] 以规模和速度的交易精度(trading accuracy)为目标的网络压缩的另一种方法是称为深度乘法器的技术,其中每层中的信道数量简单地减少固定分数部分并且网络被重新训练。深度乘法器包括约束,其中每个输入滤波器(或信道)必须完全连接到每个输出滤波器。网络压缩的其他方法包括量化和分解技术。可以在这样的网络上进一步执行网络正则化。正则化可以包括在网络训练期间将激活的子集随机设置为零。另一种正则化技术包括将权重或连接的子集随机设置为零。

具体实施方式

[0016] 现在将详细参考实施例,其一个或多个示例在附图中示出。通过说明实施例来提供每个示例,而不是限制本公开。实际上,对于本领域技术人员显而易见的是,在不脱离本公开的范围或精神的情况下,可以对实施例进行各种修改和变化。例如,作为一个实施例的一部分示出或描述的特征可以与另一个实施例一起使用,以产生又一个实施例。因此,意图是本公开的方面涵盖这些修改和变化。
[0017] 本公开的示例方面涉及用于卷积神经网络(CNN)的压缩技术。例如,这种压缩技术可以定义与CNN的两个或更多个卷积层相关联的输入滤波器和输出滤波器之间的部分连接模式。以这种方式,可以去激活CNN的卷积层中的滤波器之间的一个或多个连接。更具体地,可以推广二维(2D)卷积技术以使用稀疏但一致的连接结构。深度神经网络通常具有密集的计算和存储器需求。具体地,这种深度网络通常具有非常大量的相关联的参数,以考虑网络从中学习的数据的规模、多样性和复杂性。虽然硬件技术的进步在一定程度上缓解了该问题,但网络规模、速度和功耗都是在移动和/或嵌入式设备上实现这种网络的限制因素。根据本公开的示例方面的CNN提供CNN的规模、训练时间和预测准确度之间的平衡。
[0018] CNN架构通常包括一个或多个卷积层、池化层(pooling layer)和/或完全连接的层。根据对层的组织进行管理的拓扑来配置这些层。本公开的一个示例实现包括将给定输入架构转换为具有较少数量参数的压缩架构。可以至少部分地基于维持输入架构的一般拓扑的变换函数来执行这种变换。
[0019] 可以看出,缩小CNN的每个卷积层中的滤波器的数量可以导致更小、更快的网络,而仅导致很小的精度损失。例如,可以执行深度乘法器技术以将CNN的一个或多个卷积层的层深度减小固定分数。应当理解,以这种方式使用的术语“深度”是指单层的激活体积的第三维度,而不是整个CNN中的层数。例如,给定一个超参数α∈(0,1],每个卷积层中的滤波器数量可以按比例缩小α。设DI和DO分别为输入和输出滤波器的数量。考虑输出激活的空间位置x和y。对于每个输入滤波器k∈{1,...,DI}和输出滤波器l∈{1,...,DO},我们有:
[0020]
[0021] 其中这对滤波器的卷积核的大小为[W=2I+1,H=2J+1],b为输入,w为层参数,a为输出。
[0022] 由于DI和DO在深度乘法器方法中变为 和 因此参数的数量(和乘法的数量)变为原始数量的≈α2。在这方面,可以简单地收获在应用深度乘法器之前利用的任何计算节省。由此产生的网络更小更快。使用这种技术只需很小的精度损失就可以减小一些大型网络的规模。例如,在一些实现中,深度乘法器技术可以通过选择乘数α并按比例缩小每个滤波器深度 然后向上舍入来实现。
[0023] 与将深度乘法器视为去激活卷积层中的滤波器相反,可以从去激活滤波器之间的连接的角度来说明深度乘法器。在这方面,深度乘法器可以去激活两个或更多个卷积层之间的连接,使得在卷积层的空间维度上保持连接模式,并且所有剩余的输入滤波器完全连接到所有剩余的输出滤波器。
[0024] 通过放宽剩余输入滤波器和输出滤波器完全连接的约束,可以推广这种方法。更具体地,对于每个空间维度,可以实现输入滤波器和输出滤波器之间的固定的稀疏随机连接模式。以这种方式,可以随机确定输入滤波器和输出滤波器之间的连接。以这种方式,与深度乘法器技术中提供的少量滤波器之间的密集连接模式相反,本公开的示例方面可以在较多数量的滤波器之间提供稀疏随机连接。例如,对于具有DI信道的输入卷积层和具有DO信道的输出卷积层,输出卷积层的每个输出滤波器仅连接到输入卷积层的α部分输入滤波器。该技术的优势是可以快速执行卷积,因为仅在卷积运算的外环处引入稀疏性。以这种方式,仍然可以使用连续的存储器布局。
[0025] 在一些实现中,可以通过根据来自均匀分布的连接的可能性来激活输入滤波器和输出滤波器之间的连接以实现CNN架构。另外,可以执行激活,使得没有连接进入或离开死滤波器(dead filter)。以这种方式,任何连接必须具有到输入图像的路径和到最终预测的路径。保持与CNN相关联的任何完全连接层中的所有连接。在一些实现中,可以通过随机地去激活具有连接每层上的至少两个滤波器的参数的连接的分数α来实现CNN架构。如果相关联的参数连接仅剩下一个滤波器的层,则可以随机地去激活连接的分数 在一些实现中,可以通过选择性地将掩模应用于与适当的滤波器相关联的参数张量来激活和/或去激活连接。
[0026] 本公开的示例方面还涉及训练具有如上所述的部分连接的架构的CNN。具体地,可以在这样的CNN或其他部分连接的网络上执行增量训练技术。这种增量训练可以从具有一小部分(例如,1%、0.1%等)连接的网络开始。随着时间的推移可以逐渐添加连接,使得随着训练过程的进行,网络随着时间的推移而慢慢变得密集。例如,可以在训练过程的一个或多个训练迭代期间添加连接。这种增量训练可以允许网络通过引入附加连接来使用已经在新环境中训练的信道。以这种方式,当网络通过逐渐增加连接而随着时间的推移而变得密集时,所有信道已经具有一些可以在训练过程中利用的判别力。这种方法的优势是,通过使用小型网络启动训练过程,并随时间的推移而逐渐增加网络的规模,整个训练过程可以显著加快。应当理解,深度乘法器技术将不会受益于该方法,因为任何新激活的连接都需要从头开始训练新的滤波器。这样的过程可以使整个训练时间与从头开始的训练相当。
[0027] 现在参考附图,将更详细地讨论本公开的示例方面。例如,图1描绘了根据本公开的示例实施例的执行CNN压缩技术和/或增量训练技术的示例计算系统100的框图。系统100包括通过网络180通信地耦合的用户计算设备102、服务器计算系统130和训练计算系统150。
[0028] 例如,服务器计算系统130可以被配置为根据本公开的示例方面实现一种或多种网络压缩技术。服务器计算系统130包括一个或多个处理器132和存储器134。一个或多个处理器132可以是任何合适的处理设备(例如,处理器核、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或多个可操作连接的处理器。存储器134可以包括一个或多个非暂时性计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等,以及它们的组合。存储器134可以存储由处理器132运行的数据136和指令138,以使服务器计算系统130执行操作。
[0029] 在一些实现中,服务器计算系统130包括一个或多个服务器计算设备或以其他方式由一个或多个服务器计算设备实现。在服务器计算系统130包括多个服务器计算设备的情况下,这样的服务器计算设备可以根据顺序计算架构、并行计算架构或其某种组合来操作。
[0030] 如上所述,服务器计算系统130可以存储或以其他方式包括一个或多个CNN140。例如,CNN140可以包括一个或多个卷积层、一个或多个池化层、和/或一个或多个完全连接的层。例如,在一些实现中,池化层可以分离两个卷积层。每个层可以被配置为使用可能具有或不具有参数的一些可微函数将三维(3D)输入体积变换为3D输出体积。CNN140的层可以包括以三维(例如,宽度、高度和深度)布置的多个神经元。卷积层中的神经元仅连接到前一层的一小部分。以这种方式,卷积层可以被配置为计算连接到输入中的局部区域的神经元的输出。
[0031] 卷积层与作为卷积层的参数的可学习滤波器的集合(例如,一个或多个)相关联。滤光器可以在空间上较小(例如沿宽度和高度维度)。例如,滤波器在空间上可以与关联于卷积层的感受野在空间上相同。每个卷积层可以与一个或多个滤波器卷积以产生一个或多个激活图。
[0032] 如上所述,服务器计算系统130可以被配置为通过去激活与CNN140的两个或更多个卷积层相关联的一个或多个滤波器之间的一个或多个连接来压缩CNN140。以这种方式,如果那些参数连接每层上的至少两个滤波器,则服务器计算系统130可以随机地选择要去激活的连接的分数α。如果参数连接仅剩一个滤波器的层,则服务器计算系统130可以选择要去激活的连接的分数 在选择要去激活的连接时,服务器计算系统130可以去激活所选择的连接。例如,在一些实现中,可以通过将掩膜应用于适当的参数张量来去激活连接。
[0033] 服务器计算系统130可以经由与通过网络180通信地耦合的训练计算系统150的交互来训练CNN140。训练计算系统150可以与服务器计算系统130分离,或者可以是服务器计算系统130的一部分。
[0034] 训练计算系统150包括一个或多个处理器152和存储器154。一个或多个处理器152可以是任何合适的处理设备(例如,处理器核、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或可操作连接的多个处理器。存储器154可以包括一个或多个非暂时性计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等,以及它们的组合。存储器154可以存储由处理器152运行的数据156和指令158,以使训练计算系统150执行操作。在一些实现中,训练计算系统150包括一个或多个服务器计算设备或以其他方式由一个或多个服务器计算设备实现。
[0035] 训练计算系统150可以包括模型训练器160,其使用各种训练或学习技术(诸如,例如误差的向后传播)来训练存储在服务器计算系统130处的CNN140。在一些实现中,执行错误的向后传播可以包括通过时间执行缩短的反向传播。模型训练器160可以执行多个泛化技术(例如,重量衰减、dropout等)以改进被训练模型的泛化能力。具体地,模型训练器160可以基于一组训练数据162训练CNN140。
[0036] 具体地,训练计算系统150和/或服务器计算系统130可以被配置为通过逐渐增加CNN140的连接量以递增方式训练CNN140。例如,服务器计算系统130可以通过去激活除了一小部分(例如,1%、0.1%等)之外的所有连接来初始化用于增量训练的CNN140。模型训练器160可以在初始化的CNN140上发起合适的训练技术。然后,服务器计算系统130可以递增地增加CNN140的连接数量,使得模型训练器160然后在具有增加的连接数量的CNN140上执行训练。该过程可以重复一次或多次,使得服务器计算系统130逐渐增加CNN140中的连接数量,并且模型训练器160随着连接逐渐增加而训练CNN140。应当理解,服务器计算系统130可以根据用于训练CNN140的各种合适的训练技术以任何合适的方式来致密CNN140。例如,服务器计算系统130可以确定定义用于增加连接的时间间隔的致密方案,以及增加连接的量。
可以至少部分地基于模型训练器160用于训练CNN140的训练技术来确定致密方案。可以至少部分地基于卷积层的参数和/或CNN140内的多个可能连接来进一步确定致密方案。
[0037] 模型训练器160包括用于提供所需功能的计算机逻辑。模型训练器160可以用控制通用处理器的硬件、固件和/或软件来实现。例如,在一些实现中,模型训练器160包括存储在存储设备上、加载到存储器中并由一个或多个处理器执运行的程序文件。在其他实现中,模型训练器160包括一组或多组计算机可运行指令,其存储在有形计算机可读存储介质中,诸如RAM硬盘或光学或磁性介质。
[0038] 网络180可以是任何类型的通信网络,诸如局域网(例如,内联网)、广域网(例如,因特网)或其某种组合,并且可以包括任何数量的有线或无线链路。通常,通过网络180的通信可以经由任何类型的有线和/或无线连接,使用各种通信协议(例如,TCP/IP、HTTP、SMTP、FTP)、编码或格式(例如,HTML、XML)和/或保护方案(例如,VPN、安全HTTP、SSL)来承载。
[0039] 图1示出了可以用于实现本公开的一个示例计算系统。也可以使用其他计算系统。例如,在一些实现中,用户计算设备102可以包括模型训练器160和训练数据集162。在这样的实现中,通信辅助模型120可以被训练并且在用户计算设备102处局部使用。在一些这样的实现中,用户计算设备102可以实现模型训练器160以基于用户特定数据来个性化通信辅助模型120。
[0040] 用户计算设备102可以是任何类型的计算设备,诸如,个人计算设备(例如,膝上型或台式)、移动计算设备(例如,智能手机或平板电脑)、游戏控制台或控制器、可穿戴计算设备、嵌入式计算设备或任何其他类型的计算设备。
[0041] 用户计算设备102包括一个或多个处理器112和存储器114。一个或多个处理器112可以是任何合适的处理设备(例如,处理器核、微处理器、ASIC、FPGA、控制器、微控制器等),并且可以是一个处理器或多个可操作连接的处理器。存储器114可以包括一个或多个非暂时性计算机可读存储介质,诸如RAM、ROM、EEPROM、EPROM、闪存设备、磁盘等,以及它们的组合。存储器114可以存储由处理器112运行的数据116和指令118,以使用户计算设备102执行操作。
[0042] 用户计算设备102可以存储或包括一个或多个CNN 120。例如,CNN120可以是具有根据本公开的示例实施例的架构的CNN。在一些实现中,一个或多个CNN 120可以通过网络180从服务器计算系统130接收、存储在用户计算设备存储器114中、以及由一个或多个处理器112使用或以其他方式实现。在一些实现中,用户计算设备102可以实现单个CNN 120的多个并行实例。
[0043] 图2描绘了根据本公开的示例方面的连接模式200的示例图形表示。具体地,y轴表示输入层DI的信道,并且x轴表示输出层DO的信道。z轴表示层的空间维度(例如,宽度W和高度H)。如图2所示,连接模式200包括多个激活连接202和多个去激活连接204。根据本公开的示例方面,连接模式200是稀疏连接模式。具体地,连接模式200指定用于层DI和层DO之间的可能连接的仅一小部分的连接。以这种方式,与层DO相关联的每个输出滤波器仅连接到与层DI相关联的一小部分滤波器。如上所述,这样做的优点是可以快速计算卷积,因为仅在卷积运算的外环处引入稀疏性。以这种方式,可以利用连续的存储器布局。
[0044] 图3描绘了根据本公开的示例实施例的训练卷积神经网络的示例方法的流程图。方法(300)可以由一个或多个计算设备实现,所述计算机设备诸如图1中描绘的一个或多个计算设备。另外,图3描绘了出于说明和讨论的目的以特定顺序执行的步骤。使用本文提供的公开内容,本领域普通技术人员将理解,在不脱离本公开的范围的情况下,可以以各种方式调整、重新布置、扩展、省略或修改本文所讨论的任何方法的步骤。
[0045] 在(302)处,方法(300)可以包括实现具有第一连接模式的卷积神经网络。第一连接模式可以与卷积神经网络的至少两个卷积层的多个输入滤波器和多个输出滤波器相关联。第一连接模式可以定义稀疏的随机连接模式,其中仅建立一小部分可能的连接。具体地,第一连接模式可以指定多个输入滤波器和多个输出滤波器之间的一个或多个活动连接和一个或多个非活动连接。以这种方式,第一连接模式可以指定活动连接仅构成多个输入滤波器和多个输出滤波器之间的可能连接的第一子集。在一些实现中,第一子集可以对应于一小部分(例如,1%、0.1%等)可能的连接数量。
[0046] 在(304)处,方法(300)可以包括在施行第一连接模式的同时对卷积神经网络执行第一轮训练。可以使用各种合适的训练技术来执行第一轮训练。以这种方式,可以在实现第一连接模式的卷积神经网络上执行第一轮训练。
[0047] 在(306)处,方法(300)可以包括将第一连接模式调整为第二连接模式。具体地,第二连接模式可以指定多个输入滤波器和多个输出滤波器之间的一个或多个活动连接和一个或多个非活动连接。以这种方式,第二连接模式可以指定活动连接仅构成多个输入滤波器和多个输出滤波器之间的可能连接的第二子集。第二子集可以是比第一子集更大的子集,使得第二子集中的活动连接的数量大于第一子集中的活动连接的数量。以这种方式,第二连接模式可以对应于多个输入滤波器和多个输出滤波器之间相对于第一连接模式的增加的连接量。在一些实现中,第二连接模式可以对应于递增或逐渐增加的连接量。
[0048] 在(308)处,方法(300)可以包括在施行第二连接模式的同时对卷积神经网络执行第二轮训练。以这种方式,可以在实现第二连接模式的卷积神经网络上执行第二轮训练。
[0049] 应当理解,可以在具有进一步调整的连接模式的卷积神经网络上执行一轮或多轮额外的训练。以这种方式,可以根据与卷积神经网络相关联的连接的逐渐或递增以递增的方式执行训练。
[0050] 图4描绘了根据本公开的示例实施例的用于执行网络压缩的示例方法(400)的流程图。方法(400)可以由一个或多个计算设备实现,所述计算设备诸如图1中描绘的一个或多个计算设备。另外,图4描绘了出于说明和讨论的目的以特定顺序执行的步骤。
[0051] 在(402)处,方法(400)可以包括访问指示连接模式的数据,该连接模式指定与卷积神经网络的两个或更多个卷积层的多个输入滤波器和多个输出滤波器相关联的一个或多个活动连接以及一个或多个非活动连接。如所指出的,可以通过随机选择要激活和/或去激活的一部分连接来确定连接模式。
[0052] 在(404)处,方法(400)可以包括去激活与由连接模式指定的一个或多个非活动连接相对应的一个或多个连接。在一些实现中,可以通过将掩膜(mask)应用于与适当的滤波器相关联的参数张量来去激活一个或多个连接。
[0053] 在(406)处,方法(400)可以包括激活与由连接模式指定的一个或多个活动连接相对应的一个或多个连接。例如,在一些实现中,连接模式可以指定要激活当前不活动的连接。在这种情况下,可以通过移除与适当的滤波器的参数张量相关联的掩膜来激活当前不活动的连接。
[0054] 这里讨论的技术参考服务器、数据库、软件应用程序和其他基于计算机的系统,以及所采取的动作和发送到这些系统和从这些系统发送的信息。本领域普通技术人员将认识到,基于计算机的系统的固有灵活性允许组件之间和组件中的各种可能的配置、组合以及任务和功能的划分。例如,这里讨论的服务器进程可以使用单个服务器或多个服务器组合工作来实现。数据库和应用程序可以在单个系统上实现或分布在多个系统上。可以顺序地或并行操作分布式组件。
[0055] 虽然已经关于本发明的具体示例实施例详细描述了本主题,但是应当理解,本领域技术人员在获得对前述内容的理解之后可以容易地产生对这些实施例的改变、变化和等同物。因此,本公开的范围是示例性的而不是限制性的,并且本公开内容并不排除包含对本主题的这些修改、变化和/或添加,这对于本领域普通技术人员之一是显而易见的。

当前第1页 第1页 第2页 第3页
相关技术
积神经相关技术
网络压缩相关技术
M.桑德勒发明人的其他相关专利技术