没有合适的资源?快使用搜索试试~ 我知道了~
0聚类卷积核以压缩深度神经网络0Sanghyun Son,Seungjun Nah和Kyoung Mu Lee0韩国首尔国立大学电子与计算机工程系,ASRI,08826,首尔,韩国thstkdgus35@snu.ac.kr,seungjun.nah@gmail.com,kyoungmu@snu.ac.kr0摘要。在本文中,我们提出了一种通过从一小组空间卷积核重构网络来压缩CNN的新方法。从预训练模型开始,我们使用k-means聚类提取代表性的2D卷积核质心。每个质心替换相同聚类的卷积核,并且我们使用索引表示而不是保存整个卷积核。相同聚类中的卷积核共享它们的权重,并且我们在保持压缩状态的同时对模型进行微调。此外,我们还提出了一种在压缩的卷积层中消除冗余计算的高效方法。我们通过实验证明,我们的技术在不损害广泛使用的CNN的准确性的情况下运作良好。此外,我们的ResNet-18在ILSVRC2012分类任务中的性能甚至超过了未压缩的对应模型,压缩比超过10倍。0关键词:CNN,压缩,量化,权重共享,聚类01 引言0计算机视觉的最近时代见证了深度学习的显著进步。[35]中的分析表明,CNN不仅可以识别场景类型,还可以很好地识别空间模式。因此,最先进的卷积神经网络[15, 16,31]及其变体应用于广泛的问题,如图像分类、目标检测、分割、图像恢复等。然而,大多数CNN都是设计用于具有大量内存和计算能力的高端GPU上执行的。在计算资源有限的移动或嵌入式环境中,这些网络需要进行压缩以实现实际应用[12,34]。网络压缩的大部分研究都是为了找出权重的冗余[6]和不必要的参数[14,24]。然后,这些参数可以在保持模型原始性能的同时被删除。在[7,20]中,权重矩阵和张量被分解和近似为低秩,以实现高效计算。修剪在最近的工作中变得流行起来[10, 13, 26,27],因为它直接节省存储和计算。另一方面,基于量化的方法也变得常见。关于二进制和三进制网络的广泛研究[4, 5, 12, 17, 25, 29, 39]证明了即使是1或2个02 S. Son,S. Nah和K. M. Lee0比特参数可以使CNN工作。其他工作尝试将权重张量的相邻元素量化为向量量化的形式[9,34]。这些方法利用k-means聚类,以便我们可以将压缩模型表示为码本和索引的形式。特别地,[34]从通道维度中的权重张量中提取子向量以利用乘积量化。在本文中,我们提出了一种更结构化的量化方法,该方法建立在2D卷积核之上。由于卷积本身在本质上是空间的,我们选择使用权重张量的空间切片作为要压缩的单位。除非另有说明,我们将这些2D切片称为卷积核。根据我们的表达式,单个卷积层的权重张量由C out × Cin个卷积核组成,其中C out和Cin分别表示输出和输入通道。例如,广泛使用的VGG-16 [31]和ResNets[15]由超过一百万个3 × 3的卷积核组成。与向量量化方法[9, 34]类似,我们对3 ×3的卷积核进行聚类,并用它们的质心替换冗余的卷积核。因此,我们用一组质心和每个卷积核对应的聚类索引表示压缩模型。因此,具有相同索引的卷积核共享它们的权重。在保持压缩状态的同时,我们通过权重共享来训练我们的模型。当同一个质心在单个层中重复出现时,我们还提出了加速卷积的方法。我们的压缩方法带来了以下贡献和好处。首先,我们提出了一种通过将k-means聚类应用于2D卷积核来压缩和加速CNN的新方法。据我们所知,这是第一种考虑卷积核的冗余空间模式的网络压缩方法。其次,我们的变换不变聚类方法通过几何变换扩展了卷积核质心的有效数量。我们改进的实验结果表明,变换不变性施加了正则化效果。最后,我们广泛的实验证明,我们的方法通常适用于各种CNN架构和数据集。特别是,我们压缩的ResNet[15]在ILSVRC12图像分类中的准确性比原始模型高出10倍以上。02 相关工作0网络量化是压缩深度神经网络的典型方法之一。它专注于减少表示每个参数所需的位数。早期的工作利用权重共享和参数的索引表示来节省存储空间。Han等人首次证明了对于单个卷积层,25个不同的权重足够,并提出了CNN的5位量化。为了节省更多的存储空间,HashedNets利用哈希函数来减少存储索引项的开销。这些方法不限制精度,但通过共享完整精度权重来减少每个参数的多样性。尽管它们的实现可能有些棘手,但我们可以使用传统的梯度下降来训练这些模型。0聚类卷积核以压缩深度神经网络30(a)0(b)0图1:我们将给定CNN的卷积层(a)压缩为(b)。我们对卷积核应用k-均值聚类,并使用带有码本M = {µi | i = 1, ∙∙∙,k}的索引表示。我们还通过从红色和蓝色框中的重叠卷积核中删除冗余计算来加速CNN。请注意,我们同时处理所有卷积层,而不是逐层压缩。0在网络量化的另一方面,已经有人尝试限制参数的精度。已经证明二进制[4]和三进制[25,39]权重在具有挑战性的ImageNet分类任务上表现良好。这些方法甚至可以通过以更高效的方式重新定义卷积来加速CNN。最近,[37]提出了一种将每个权重表示为二的幂次的方法,可以利用高速位移操作。由于量化的主要目标是资源高效的神经网络,中间特征[5, 29]和梯度[11, 17,38]也可以进行量化。虽然上述方法主要关注减少每个参数的位宽,但向量量化直接量化权重向量并将其映射到索引。尽管内在的高维度使其比标量量化更具挑战性,但产品量化在压缩全连接[9]和卷积层[34]方面效果良好。我们的工作是权重共享和向量量化的一个特例,因为我们将相同的索引分配给多个卷积核并共享它们的权重。然而,与权重或子向量量化不同,我们量化具有CNN中几何意义的2D卷积核。网络修剪[14,24]旨在从网络中删除不必要的连接。通常,通过迭代优化步骤[12,13]从网络中删除小权重。然而,基于权重的修剪在实践中有一些限制,因为它们的结构不规则。因此,卷积神经网络的结构修剪[26,27]方法越来越受欢迎。由于它们修剪了CNN的不必要的卷积核,它们对于实际情况更加适用。我们的算法与修剪本身没有直接关系。然而,我们将展示所提出的方法可以从修剪中受益,正如[12]所提到的。yj =Cin�i=1wij ∗ xi.(1)04 S. Son, S. Nah和K. M. Lee0有几种方法利用卷积核的几何形状来实现高效的CNN。通过利用平移[36]、反射[3]和旋转[8]对称性,可以增加CNN的容量而不需要额外的参数。还有人有意地操纵卷积核的形状。例如,[23]强制将卷积层的权重设置为组间稀疏,以加速网络。此外,[33]提出了一种训练卷积核任意形状的方法,以实现高效的修剪。在本文中,我们提出了一种压缩方法,重点关注大量卷积核中的冗余形状。我们还像[3,8]一样探索了卷积核的各种变换,以实现更高程度的权重共享和正则化。03 卷积核的K-means聚类0在进入细节之前,我们定义以下描述中要使用的术语。我们假设目标CNN中总共有N个卷积核,它们的空间尺寸都相同。然后,第m个卷积层的权重张量可以表示为w m ∈ RC out × C in × h × w,其中输入x和输出y分别具有C in和Cout个通道。在描述卷积层时,我们将省略术语m。x i指的是x的第i个输入通道,yj是y的第j个输出通道。将卷积核w ij 应用于x i,并累积响应以计算y j,如公式(1)所示。0在下面的小节中,我们将解释我们的压缩算法及其计算优势。在第3.1节中,我们用k-means聚类的概念来制定我们的算法。在第3.2节中,我们描述了一种训练模型的方法。在第3.3节中,我们证明了所提出的方法可以加速卷积。最后,在第3.4节中,我们提出了一种高级聚类方法,它可以作为一种强大的正则化方法。03.1 卷积核的紧凑表示0通常情况下,CNN在其权重张量的形状上没有任何结构限制进行训练。因此,网络中可能存在N个不同的卷积核。我们的主要策略是使用k-means聚类更紧凑地表示这些卷积核。将卷积核分组为k个簇后,我们将每个簇W n 中的每个卷积核w m ij替换为其对应的质心µ n = E w m ij ∈W n � w m ij �。然后,我们对属于W n的所有卷积核应用权重共享,并用它们的簇索引n来表示它们。考虑到单精度的3×3卷积核需要36字节的存储空间,索引表示可以大大减小模型的大小。argminMk�n=1�ˆwmij ∈Wn∥ ˆwmij − µn∥2,(2)yj =Cin�i=1sijµlij ∗ xi.(3)0聚类卷积核以压缩深度神经网络 50一个可能的问题是,卷积核权重的分布可能在不同的卷积层之间有所变化。在这种情况下,我们的方法可能无法得到有意义的表示,因为k-means聚类无法找到代表性的质心。因此,我们利用卷积的基本概念,对所有卷积核进行归一化以处理这个问题。具体来说,我们将具有相似形状但不同范数的卷积核放在一起处理,因为它们在滤波中显示出类似的行为。因此,我们不是直接从原始值计算卷积核之间的距离,而是使用归一化的卷积核。因此,k-means聚类的目标变为:0其中 ˆ w m ij = w m ij /s m ij,s m ij = sign ( w m ij � ) ∥ w m ij ∥ 2。这里,w m ij�是卷积核的中心像素。通过以这种方式定义s mij,我们还将具有相似结构但相反符号的卷积核聚类在一起。每个卷积核的压缩表示包括一个簇索引l m ij,使得ˆ w m ij ∈ W l m ij,以及它的尺度s mij。从压缩的角度来看,存储这些尺度参数需要额外的存储空间,并降低了压缩比。然而,它使我们的方法能够学习细粒度的质心,并增加了表示能力,因为我们将卷积核的形状和范数解耦。此外,我们将在第4.6节和第4.7节中证明,有时可以忽略这些尺度参数。03.2 训练方法0在聚类后,我们在保持每个卷积核的簇分配的同时,微调压缩模型。为此,我们将公式(1)中的卷积替换为公式(3)。换句话说,我们使用带有尺度的质心µ l ij来替代原始的卷积核wij。因此,我们的方法有两组可训练参数:质心和尺度。我们可以使用标准的反向传播算法来训练这些参数,因为公式(3)是完全可微的。请注意,质心µ l ij会在网络中的不同层次上出现,并且单个质心可以从各个层次获得梯度。我们使用PyTorch [28]框架高效地实现了这个算法,该框架可以通过计算图自动地对变量进行微分。03.3 通过共享核表示加速卷积0虽然我们主要关注网络压缩,但我们也可以通过减少共享核表示中的重复计算来加速CNN。具体而言,卷积层中可能存在两种冗余:在不同输入通道中生成相同输出通道的卷积核之间的重复,以及在单个输入通道中生成多个输出通道的卷积核的重复。在这两种情况下,我们可以每个唯一质心只计算一次2D卷积。在图2(a)中,我们在卷积之前添加输入通道,以避免单个核与多个输入特征之间的计算。我们在等式(4)中对此过程进行了详细解释。由于对于所有i,当n ≠ lij时我们不需要计算卷积,所以与传统卷积相比,所提出的方法需要更少的计算量。我们称之为“先加后卷积”。6S. Son, S. Nah and K. M. Lee̸yj =Cin=Cin�i=1� k�n=1µnδ [n = lij]�=k�n=1µn ∗� Cin�i=1δ [n = lij] sijxi�(4)yj =Cin�i=1sijzi,lij.(5)0(a) 先加后卷积0(b) 先卷积后加0图2:从图1(b)中压缩的具有C in = 3和C out = 4的卷积层可以通过两种方式加速。 (a)我们首先计算x 1 + x 3,然后应用共享核µ 1。 (b) 我们首先计算中间特征zk,并将其累积到y j。例如,z 3,1累积到y 1和y 3。0层。一种是在不同输入通道中生成相同输出通道的卷积核之间的重复。另一种是在单个输入通道中生成多个输出通道的卷积核的重复。在这两种情况下,我们可以每个唯一质心只计算一次2D卷积。在图2(a)中,我们在卷积之前添加输入通道,以避免单个核与多个输入特征之间的计算。我们在等式(4)中对此过程进行了详细解释。由于对于所有i,当n ≠ lij时我们不需要计算卷积,所以与传统卷积相比,所提出的方法需要更少的计算量。我们称之为“先加后卷积”。0i =1 µ l ij � ( s ij x i )(结合律)0� ( s ij x i )(边缘化)0(结合律) .0在图2(b)中,单个输入通道的所有输出通道的响应同时计算。输入通道x i响应于多个质心,并生成Z i = {z i,l ij = µ l ij � x i | j = 1 , 2 , ∙ ∙ ∙ , C out}。然后,我们可以将y j 计算为z的加权和,使得0与上述类似,我们称之为“先卷积后加”。一旦完成聚类,我们通过比较计算数量来选择并应用更快的方法。(a)(b)argminM,Tk�n=1�ˆwmij ∈Wn∥ ˆwmij − Φtmij (µn)∥22,(6)yj =Cin�i=1Φtij�sijµlij�∗ xi.(7)0聚类卷积核以压缩深度神经网络 70图3:(a)我们结合水平翻转、垂直翻转和90°旋转来表示各种核,使用一个质心。具有相同颜色(青色、洋红色)标记的权重共享其值。 (b)我们展示了TIC的实际工作方式。我们用绿色标记质心,其他核属于同一簇,即使它们具有不同的方向。03.4 变换不变聚类0由于3×3的卷积核具有相对简单的结构,它们中的许多是彼此的翻转和旋转版本。受到这个想法的启发,我们新提出了变换不变聚类(TIC)用于卷积核。TIC的基本思想是允许一个质心表示其变换后的形状。因此,当允许m个不同的变换时,k个质心可以表示mk个形状。在本文中,我们使用最多八种不同的变换,如图3(a)所示。使用TIC,我们使用等式(6)和(7)代替等式(2)和(3)。这里,Φ t m ij ( ∙)表示图3(a)中演示的变换。等式(6)可以像传统的k-means聚类一样进行优化,其中W n 的质心被定义为µ n = E w m ij ∈W n � Φ − 1 t ij � w m ij ��。TIC不会进一步压缩和加速我们的模型,因为我们需要额外的位来存储T,即所有t m ij的集合。然而,在第4.3节中,我们将证明TIC允许非常紧凑的CNN表示,并作为一个强大的正则化项。VGG-16 [31]6.246.236.166.015.98ResNet-56 [15]6.766.546.616.306.28DenseNet-12-40 [16]5.445.495.395.385.2608 S. Son, S. Nah and K. M. Lee04 实验0我们将提出的方法应用于最近流行的用于图像分类任务的CNN架构:VGG [31],ResNets [15]和DenseNets[16]。我们使用CIFAR-10[21]数据集评估压缩模型的性能。我们的训练和测试数据集分别包含50,000和10,000张测试图像。我们使用训练集的通道均值和标准差对所有图像进行归一化。在训练过程中,我们对输入图像应用随机翻转和平移增强,就像之前的工作[15, 16,31]一样。我们首先使用SGD优化器和动量0.9对这些模型进行300个epoch的训练。初始学习率为0.1,我们在第150和225个epoch后将其降低10倍。对于DenseNets[16],我们应用Nesterov动量[32]。此外,我们在训练VGG-16时使用了5×10^(-4)的权重衰减,而在训练VGG-16时使用了10^(-4)的权重衰减。0对于其他模型,我们将我们的算法应用于这些基线模型,并额外训练300个epoch。学习率从5×10^(-3)开始,其他配置保持不变。由于使用百万个内核的k-means聚类计算非常耗时,我们在多GPU环境中实现了它。我们发现随机初始化对于k-means种子已经足够。我们的PyTorch [28]代码将在https://github.com/thstkdgus35上提供。04.1 从各种模型中聚类内核0我们首先将我们的方法应用于VGG-16[31]的一个变种。原始的VGG-16有13个卷积层,后面跟着三个全连接层。在我们的实现中,最后一个池化层后面有一个全连接层。此外,所有卷积之后都跟着批量归一化[19]。修改后的架构包含了1,634,496个3×3的卷积核,占总参数的99.9%以上。我们还压缩了更近期的架构,ResNets [15]和DenseNets[16]。尽管它们的一些配置包含了带有许多1×1卷积的瓶颈结构,但我们使用没有瓶颈的模型。基线的ResNet-56和DenseNet-12-40分别有94,256和101,160个卷积核。与VGG-16类似,这些模型中的3×3卷积核也是占主导地位的。我们在表1中展示了不同聚类数k的实验结果。由于以前的网络压缩工作没有提供统一的比较,我们只在这里展示我们的结果。正如我们预期的那样,使用更多的质心会导致更低的错误率。然而,我们发现模型的性能在只使用128个质心时就已经很好了。值得注意的是,VGG-16的结果令人印象深刻,因为原始模型包含超过1.6×10^6个卷积核。换句话说,CNN的超过10,000个卷积核共享它们的形状,同时保持分类准确性。0模型 C128 C256 C512 C1024 基线0表1:我们在CIFAR10上压缩了各种CNN架构,并报告了分类错误率(%)。C‘ k’表示使用k个质心的提出的方法。0聚类卷积内核以压缩深度神经网络 90(a)0(b)0图4:不同架构和不同k值的压缩比(a)和加速比(b)。这些因素随着聚类数目的增加而减小。0当我们只使用128个质心时,模型的性能仍然是合理的。值得注意的是,VGG-16的结果令人印象深刻,因为原始模型包含超过1.6×10^6个卷积核。换句话说,超过10,000个CNN的卷积核共享它们的形状,同时保持分类准确性。04.2 分析压缩和加速比0在本节中,我们分析了我们的方法如何压缩和加速CNN。我们只计算3×3卷积核的权重,因为它们组成了我们基线模型的大部分。此外,我们假设原始CNN需要32位来表示每个权重。我们的方法为每个卷积核w m ij存储一个索引l m ij和一个比例参数s mij。聚类后,我们的质心表示需要每个索引和比例参数分别的log2k和bs位。为了简单起见,我们为每个si分配了16位。我们还存储了一个包含k个质心的码书,总共占据kbwhw位。在许多情况下,这个码书可以忽略,因为N远大于k。总之,我们根据公式(8)计算压缩比rcomp。对于表1中的实验,我们绘制了不同k值下的压缩比在图4(a)中。0r压缩=N0N(log2 k + bs) + kbw hw�b0log2 k + bs. (8)0我们还分析了使用我们的方法加速CNN的方式。在这里,我们忽略了规模参数,因为它们的计算可以忽略不计。对于'Add-then-conv',让我们将λj定义为对计算yj有贡献的不同质心的数量。在图1(b)的情况下,λ1等于2,因为只有µ1和µ3用于计算y1。正如我们在第3.3节中解释的那样,我们首先添加所有共享相同核心的输入特征,然后计算卷积。因此,我们可以将每个输出通道的卷积数量从C in减少到λj。对于'Conv-then-add',我们定义另一个变量νi,表示与xi进行卷积的不同质心的数量。在图1(b)中,ν1等于3,因为长蓝色框中包含三个质心。因此,我们只计算νi次卷积,而不是每个xi的C out次卷积。最后,我们通过选择具有更少FLOPs的方法来计算每个卷积层的理论加速因子r加速,如等式(9)所示。in Sec. 3.3, we first add all input features that share the same kernels and thencompute convolutions. Therefore, we can reduce the number of convolutions fromCin to λj for each output channels.For the ‘Conv-then-add,’ we define another variable νi that indicates thenumber of distinctive centroids that are convolved with xi. In Fig. 1(b), ν1 isequal to 3 because the long blue box contains three centroids. Therefore, we onlycompute νi many convolutions instead of Cout for each xi. Finally, we calculatethe theoretical acceleration factor raccel of each convolutional layer by simplychoosing the method which has the fewer FLOPs as illustrated in Eq.(9).010 S. Son, S. Nah and K. M. Lee0r加速�C in C0min ΣC out j=1 λj, ΣC in i=1 νi (9)0我们可视化了在不同模型中,随着聚类数k的变化,这个因素的变化情况。在这里,我们发现当中间通道数较大时,我们的方法变得更加有效。例如,VGG-16实现了最高的加速比,因为它最大的卷积层具有512个输入和输出通道。因此,当k <512时,可能存在许多重叠的核心。相反,ResNet-56的速度几乎保持不变,因为它的中间通道数不超过64。DenseNet具有令人印象深刻的特性,因为DenseNet中的每一层都接收前一层的所有输出[16]。因此,C in通常非常大,我们可以去除许多卷积操作。尽管DenseNet-12-40和ResNet-56具有相似数量的核心,但DenseNet的加速因子要高得多,这是由于其独特的架构。在本文中,我们只报告理论FLOPs,因为所提出的方法与cuDNN[2]存在一些兼容性问题。然而,我们的算法可以使用组卷积来实现。04.3变换不变聚类以获得紧凑表示0我们在VGG-16上应用了变换不变聚类,以了解所提出的方法如何从更高程度的权重共享中受益。我们首先允许垂直翻转,然后允许水平翻转,以考虑聚类过程中的四种类型的变换。最后,我们还考虑了旋转变换[3,8],以获得非常紧凑的质心表示。请注意,在表2中显示的实验结果的所有三种配置中,有效的代表性核心数量为256。由于还需要额外的变换指示位来包括变换,因此压缩比的增益是微不足道的。例如,在表2中,我们的'T'模型与图4中的VGG-16-C256模型消耗的存储量相似,压缩比为11.99。然而,我们观察到TIC对冗余核形状具有很强的正则化效果。当我们利用核的垂直对称性时,VGG-16-C128-TIC2的分类错误率较基线低。请注意,当我们包括水平变换(TIC4)时,性能稍微下降,因为数量0聚类卷积核以压缩深度神经网络110模型错误率(%)大小(MB)FLOPs(M)0VGG-16基准模型 5.98 58.8 313 VGG-16-C32 6.78 4.29(13.7倍) 42(7.63倍)VGG-16-C64 6.44 4.49(13.1倍) 68(4.60倍)0VGG-16-C64-M2 6.27 4.50 (13.0x) 75 (4.17x) VGG-16-C64-M13 6.21 4.51 (13.0x) 78(4.01x) VGG-16-C256-M2 6.16 4.91 (12.0x) 159 (1.97x) VGG-16-C256-M13 6.10 4.96(11.8x) 166 (1.89x)0VGG-16-C128-TIC2 5.92 4.91 (12.0x) 145 (2.16x) VGG-16-C64-TIC4 6.25 4.91 (12.0x) 145(2.16x) VGG-16-C32-TIC8 6.51 4.91 (12.0x) 145 (2.16x)0表2:我们的方法允许各种设计选择。‘M’表示多聚类,后面跟着组的数量。在TIC之后,允许的变换次数跟随。我们报告CIFAR-10数据集上的错误率。我们还报告相对于基准的压缩和加速比率。0质心的数量限制为64。然而,与表1中的VGG-16-C256相比,它的性能相当。TIC8的性能略有下降,但令人惊讶的是,只需要32个质心就能以合理的准确性表示VGG-16。04.4 多聚类0随着聚类数k的增加,所提出的方法表现更好。然而,为了压缩和加速比率,将k无限制地设置得很大是不可取的。因此,我们通过将给定的卷积核分成n≥2组,并分别应用我们的方法来处理这种权衡。这样做,我们找到M1,∙∙∙,Mn,而不是计算一组单独的质心M。如果我们对所有组保持相同的k,那么有效质心的数量将为nk,而我们仍然需要log2k位来表示每个索引。因此,我们可以在不扩大模型的情况下有效地增加网络容量。我们使用我们的VGG-16[31]变体评估多聚类方法。它有13个卷积层,所以我们尝试了两种简单的划分策略,因为找到最佳划分是具有挑战性的。在M2配置中,我们将k-means聚类分别应用于前十个和最后三个层,以便两个组包含相似数量的卷积核。我们的M13配置将所有层单独处理。因为第一个卷积层只包含192个卷积核,所以我们为该层分配min(k,192)个聚类。虽然我们保持其他层的k相同,但可以为每个组分配不同的k以进行更精细的调整。我们在表2中提供结果。我们首先使用只有64个聚类的VGG-16进行了压缩,并观察到了轻微的性能下降,因为平均上有25,000个卷积核共享它们的权重。然而,通过多聚类,性能得到了改善,而没有明显的降低。012 S. Son, S. Nah and K. M. Lee0模型 错误率(%) 大小(MB) FLOPs(M)0VGG-16-P 6.08 28.7 (2.05x) 223 (1.41x) VGG-16-Filter-pruning [26] 5.91 21.0 (2.80x) 206(1.52x)0VGG-16-C512 6.16 5.11 (11.5x) 186 (1.68x) VGG-16-PC512 6.13 3.19 (23.5x) 151 (2.07x)VGG-16-Filter-pruning [26]-C512 5.99 2.35 (31.8x) 149 (2.10x)0表3:我们将我们的方法与剪枝相结合,并在CIFAR-10数据集上报告错误率。这里,“P”表示我们提到的简单剪枝策略。0压缩比。尽管加速因子略有下降,但随着有效质心数量的增加,我们观察到了有意义的性能提升。04.5 剪枝聚类0网络剪枝的先前工作[10, 12, 13, 26,27]表明,可以在不损失准确性的情况下从CNN中删除大量不必要的权重。在本节中,我们分析了我们的方法如何从剪枝中受益。正如[12]所提到的,如果整个卷积核的数量随着剪枝而减少,k个质心将提供对网络的更好近似。在应用我们的方法之前,我们尝试了两种剪枝策略对VGG-16进行剪枝。第一种方法是简单的阈值剪枝,根据每层的L1范数,从每层中删除50%的空间卷积核。对于高级方法,我们专注于滤波器级剪枝[26,27]而不是权重级剪枝[10, 12,13],因为我们将单个卷积核视为CNN的基本单元。我们采用了[26]中的一种方法,该方法执行结构化剪枝[27]以减少具有卷积核的中间通道的数量。然后,我们将提出的方法应用于剪枝模型。我们发现,剪枝效果如预期,不受具体策略的影响。我们在表3中报告结果。04.6瓶颈结构和聚类0瓶颈结构在最近的深度架构[15, 16,18]中展示了其强大的能力。它在3×3卷积之前利用1×1卷积来构建更高效的CNN。虽然我们的方法在1×1卷积方面效率较低,但我们证明了瓶颈结构中的卷积核存在严重冗余。我们选择了100层的DenseNet-BC(k =12)[16]作为基线。它包含27,720个空间卷积核,仅占总参数的34%。所有其他参数构成1×1卷积层。在本节中,我们只压缩3×3卷积核,并在表4中报告结果。有趣的是,我们的方法效果良好,甚至超过了没有si的基线。换句话说,我们不对卷积核进行归一化,并在不同层之间共享它们。当我们考虑到主导的1×1卷积核时,压缩比相当大。0聚类卷积核以压缩深度神经网络130模型错误率(%)大小(KB)3×3 / 总FLOPs(M)3×3 / 总0DenseNet-BC [16] 4.50 998 / 2967 112 / 288 DenseNet-BC-C64 4.50 77(13.0x) /2046(1.45x) 54(2.09x) / 230(1.25x) DenseNet-BC-C128 4.51 82(12.2x) /2051(1.45x) 66(1.71x) / 242(1.19x)0DenseNet-BC-C64N 4.60 22(45.5x) / 1991(1.49x) 43(2.59x) / 219(1.32x)DenseNet-BC-C128N 4.44 27(37.5x) / 1996(1.49x) 57(1.96x) / 233(1.24x)0DenseNet-BC-PC128N 4.57 14(61.7x) / 1983(1.50x) 36(3.11x) / 212(1.36x)0表4:我们将所提出的方法应用于DenseNet-BC,并在CIFAR-10数据集上评估这些模型。'N'表示没有任何比例参数(si ≡ 1)的模型。0模型Top-1 / Top-5错误率(%)压缩比加速比�0来自torchvision [28]的ResNet-18 [15] 30.2 / 10.9 - -0BWN [29] 39.2 / 17.0 32.0x 2.00x TWN [25] 34.7 / 13.8 16.0x 2.00x TTQ [39] 33.4 / 12.816.0x 2.00x INQ (3位) [37] 31.9 / 11.6 10.7x - INQ (5位) [37] 31.0 / 10.9 6.40x -0C256(提出的)30.5 / 11.0 11.1x 1.68x C1024(提出的)30.1 / 10.7 10.3x 1.27xC1024N(提出的)32.3 / 12.2 23.6x 1.35x0表5:在ILSVRC12验证集上压缩的ResNet-18的错误率。INQ[37]在论文中没有明确报告加速性能。0然而,令人惊讶的是,我们的方法在C64N配置中只需要576 = 64 × 3 ×3个可训练参数用于3×3卷积。我们还将剪枝应用于DenseNet-BC,并成功地从3×3卷积层中删除了超过98%的参数。04.7在ImageNet数据集上的实验0我们还使用ResNet-18[15]在更具挑战性的ILSVRC12数据集[30]上评估我们的方法,其中3×3卷积占主导地位,1×1卷积核仅用于快捷连接。第一层存在7×7卷积,但它们也可以忽略。为了处理不同的卷积核尺寸,我们使用第4.4节中的多聚类方法。相同尺寸的卷积核属于同一组,在这里我们忽略了1×1卷积。我们为7×7卷积核使用k =64个聚类,以尽可能保留来自输入的信息并保持大卷积核的多样性。在这里,我们主要关注压缩1,220,608个3×3卷积核。014 S. Son, S. Nah和K. M. Lee0图5:来自ResNet-18-C256的最多(顶部)/最少(底部)频繁的16个质心。它们分别占总卷积核的19%和2%。0我们将提出的方法与在具有挑战性数据集上表现良好的极端权重量化方法[25, 29, 39,37]进行比较。结果见表5。我们方法的一个令人印象深刻的特点是我们允许各种设计选择。例如,我们可以忽略比例参数并实现23.6倍的压缩比,或者通过牺牲紧凑性来提高模型的准确性。INQ[37]也有一个设计参数来控制尺寸和性能之间的权衡,但是我们的方法在给定的准确性或压缩比下优于其他方法。然而,由于不同的压缩方法利用了不同的硬件设计,因此很难直接比较所提出的方法和之前的工作的计算增益。例如,我们的方法可以利用最快的卷积算法[22],因为我们不修改卷积本身。另一方面,INQ[37]通过移位操作重新定义卷积,这可以在定制硬件上实现非常高效。尽管我们在表5中报告了每种方法的加速比,但我们不能说哪种方法在一般情况下是最快的。更详细的分析超出了我们的范围。05 结论0本文中,我们通过将k-means聚类应用于卷积核来压缩CNNs。我们主要的兴趣是通过在相似的卷积核之间共享权重来消除卷积层中的冗余。我们在保持性能的同时,减小了现代CNNs的大小和所需计算量。关于TIC和多聚类的各种实验表明,所提出的方法在压缩方面有多种设计选择。结合修剪,我们的压缩VGG-16在CIFAR-10数据集上实现了超过30倍的压缩比,仅准确率下降了0.01%。所提出的方法还适用于具有挑战性的ImageNet任务,甚至提高了ResNet-18的准确性。虽然我们的方法尚未完全针对瓶颈架构进行优化,但我们将在未来的工作中处理它们。此外,我们将根据图5进一步改进我们的方法,因为频繁出现的质心通常是低频率和低秩的。0致谢0本研究部分得到韩国国家研究基金会(NRF)资助,该基金会由韩国政府(MSIT)资助(编号:NRF-2017R1A2B2011862)0聚类卷积核以压缩深度神经网络150参考文献01. Chen, W., Wilson, J., Tyree, S., Weinberger, K., Chen, Y.:使用哈希技巧压缩神经网络。在:第32届国际机器学习会议。第2285-2294页(2015年)2.Chetlur, S., Woolley, C., Vandermersch, P., Cohen, J., Tran, J., Catanzaro, B., Shelhamer, E.:cudnn:深度学习的高效原语。arXiv预印本arXiv:1410.0759(2014年)3. Cohen, T., Welling,M.: 群等变卷积网络。在:第33届国际机器学习会议。第2990-2999页(2016年)4.Courbariaux, M., Bengio, Y., David, J.P.:Binaryconnect:在传播过程中使用二进制权重训练深度神经网络。在:神经信息处理系统的进展。第3123-3131页(2015年)5. Courbariaux, M., Hubara, I., Soudry, D., El-Yaniv, R., Bengio,Y.:二值化神经网络:训练权重和激活限制为+1或-1的深度神经网络。arXiv预印本arXiv:1602.02830(2016年)6. Denil, M., Shakibi, B., Dinh, L., De Freitas,N.等:在深度学习中预测参数。在:神经信息处理系统的进展。第2148-2156页(2013年)7.Denton, E.L., Zaremba, W., Bruna, J., LeCun, Y., Fergus, R.:利用卷积网络内的线性结构进行高效评估。在:神经信息处理系统的进展。第1269-1277页(2014年)8. Dieleman, S., De Fauw, J., Kavukcuoglu, K.:利用卷积神经网络中的循环对称性。在:第33届国际机器学习会议。第1889-1898页(2016年)9. Gong, Y., Liu, L., Yang, M., Bourdev, L.:使用矢量量化压缩深度卷积网络。arXiv预印本arXiv:1412.6115(2014年)10. Guo, Y., Yao, A.,Chen, Y.:用于
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功