CN110782003A - 一种基于哈希学习的神经网络压缩方法及系统 - Google Patents

一种基于哈希学习的神经网络压缩方法及系统 Download PDF

Info

Publication number
CN110782003A
CN110782003A CN201910892713.6A CN201910892713A CN110782003A CN 110782003 A CN110782003 A CN 110782003A CN 201910892713 A CN201910892713 A CN 201910892713A CN 110782003 A CN110782003 A CN 110782003A
Authority
CN
China
Prior art keywords
matrix
weight matrix
characteristic diagram
neural network
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
CN201910892713.6A
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.)
Beihang University
Beijing University of Aeronautics and Astronautics
Original Assignee
Beijing University of Aeronautics and Astronautics
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 Beijing University of Aeronautics and Astronautics filed Critical Beijing University of Aeronautics and Astronautics
Priority to CN201910892713.6A priority Critical patent/CN110782003A/zh
Publication of CN110782003A publication Critical patent/CN110782003A/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/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了一种基于哈希学习的神经网络压缩方法及系统。该方法包括如下步骤:在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;在后向传播中,根据输出特征图计算神经网络的损失函数,并通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;根据每层的权重矩阵的梯度值以及每层的投影矩阵的梯度值分别对权重矩阵和投影矩阵进行更新。该方法在随机投影的基础上增加哈希学习的部分,通过同时训练权重矩阵和投影矩阵的方法来全局最小化损失函数,从而增加算法的分类准确率,达到可接受的微小性能退化的目标,具有很高的灵活性。

Description

一种基于哈希学习的神经网络压缩方法及系统
技术领域
本发明涉及一种基于哈希学习的神经网络压缩方法,同时涉及一种用于实现该方法的神经网络压缩系统。
背景技术
近年来,深度神经网络在很多领域都显示出巨大的潜力,包括计算机视觉和语音识别等。得益于大数据技术和GPU并行计算的快速发展,在计算复杂网络庞大的神经学习中提供强大的硬件支持,使得神经网络模型和深度学习方法越来越多的应用到计算机视觉领域中。在物体识别、图像分类、图像检索、人脸验证、视频理解等方面,都有着超出其他方法的准确率和性能的显著提升。其中,在计算机视觉领域,其中一种深度神经网络—卷积神经网络因其在模拟人大脑的抽象和迭代的过程的出色表现,能从大数据中准确获取信息,从而在很多应用中能够做到最高的标准。与此同时,我们可以看到在计算机视觉领域正在兴起的一些在虚拟现实、增强现实、智能穿戴设备的有趣的进步。综合来看,在智能便携设备上加载高性能的识别系统已经刻不容缓。
然而,当今的基于卷积神经网络的识别系统需要大量的内存和高性能的计算能力,通常都需要在昂贵的GPU集群上实现。尽管神经网络的训练可以在GPU集群上训练,但是如果要做到实时的话,那么测试过程便需要在移动设备上完成。然而深度的卷积神经网络随着数据集的增大、特征数的变多,模型的规模、参数的存储、计算量也随之增大,导致了很高的计算能力的需求,从而几乎无法在移动设备或者嵌入式设备中使用,阻碍了其发展。
众所周知,移动设备、嵌入式设备、普通的移动电脑有内存空间、计算能力和能耗的限制,而在大多数移动设备只有1GB的随机存取内存(RAM)的条件下,在2014年ImageNet竞赛中获胜的卷积神经网络训练得到的参数就已达到了576MB,这会占用大量的RAM,而且为了测试一张图片载入超过500M的参数在能耗上也是不可接受的,更不用说计算时间了,这些高内存和高计算能力的要求的缺点在移动设备上暴露无遗。因此这些模型对于手机、嵌入式设备、智能穿戴设备来说极大的超过了它们可以承受的内存、所需电量和计算能力。
然而越来越多的深度学习应用都越来越多的朝向移动设备和嵌入式设备中,例如智能手机和机器人上实现图片分类,自动驾驶汽车需要实时的进行物体识别,所以如何对神经网络进行压缩以降低计算量和存储空间,成为迫切需求。
发明内容
针对现有技术的不足,本发明所要解决的首要技术问题在于提供一种基于哈希学习的神经网络压缩方法。
本发明所要解决的另一技术问题提供一种基于哈希学习的神经网络压缩系统。
为实现上述发明目的,本发明采用下述的技术方案:
根据本发明实施例的第一方面,提供一种基于哈希学习的神经网络压缩方法,包括如下步骤:
在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;
在后向传播中,根据输出特征图计算神经网络的损失函数,并通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;
根据每层的权重矩阵的梯度值以及每层的投影矩阵的梯度值分别对权重矩阵和投影矩阵进行更新。
其中较优地,在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图,采用如下步骤:
对压缩后的输入特征图和权重矩阵相乘,得到输出特征图。
其中较优地,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩时,对输入特征图和权重矩阵通过相同的投影矩阵进行压缩。
其中较优地,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,包括如下步骤:
对于输入特征图Sk和权重矩阵Wk,通过实值的投影矩阵
Figure BDA0002209264440000021
进行投影,将所述输入特征图Sk和所述权重矩阵转换为低维的输入特征图
Figure BDA0002209264440000031
和低维的权重矩阵
Figure BDA0002209264440000032
将低维的低维的输入特征图
Figure BDA0002209264440000033
和低维的权重矩阵
Figure BDA0002209264440000034
转化成二进制的哈希编码
Figure BDA0002209264440000035
完成对输入特征图和权重矩阵的压缩;
其中,k为神经网络层数,b为压缩因子。
其中较优地,在前向传播中,将卷积层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;包括如下步骤:
将输入特征图和权重矩阵分别通过im2col重新组织成一个大矩阵;
将重新组织后的输入特征图和权重矩阵通过投影矩阵进行压缩;
对压缩后的输入特征图和权重矩阵相乘,得到输出特征图;
对输出特征图进行col2im操作得到最终的输出特征图。
其中较优地,在后向传播中,通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;其中将前向过程中使用的不可导的y=sgn(x)函数用y=x来近似,因此当损失函数中包含的sgn(x)用x替换时,输入特征图的梯度值
Figure BDA0002209264440000037
为:
Figure BDA0002209264440000038
权重矩阵的梯度值
Figure BDA0002209264440000039
为:
Figure BDA00022092644400000310
其中,
Figure BDA00022092644400000311
为输出特征图的梯度值;
Figure BDA00022092644400000312
为实值的进行哈希编码后的权重矩阵;
Figure BDA00022092644400000313
为实值的投影矩阵;
Figure BDA00022092644400000314
为进行哈希编码后的输入特征图;
投影矩阵的梯度值
Figure BDA00022092644400000315
为:
其中,为输出特征图的梯度值;为实值的进行哈希编码后的权重矩阵;
Figure BDA0002209264440000044
为实值的投影矩阵;
Figure BDA0002209264440000045
为进行哈希编码后的输入特征图;Sk为输入特征图;Wk为权重矩阵。
其中较优地,在后向传播中,通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值投影矩阵的梯度值和;其中将前向过程中使用的不可导的y=sgn(x)函数用y=Htanh(x)来近似,因此当损失函数中包含的sgn(x)用Htanh(x)替换时,输入特征图的梯度值
Figure BDA0002209264440000046
为:
Figure BDA0002209264440000047
权重矩阵的梯度值
Figure BDA0002209264440000048
为:
Figure BDA0002209264440000049
其中,为输出特征图的梯度值;
Figure BDA00022092644400000411
为实值的进行哈希编码后的权重矩阵;
Figure BDA00022092644400000412
为实值的投影矩阵;
Figure BDA00022092644400000413
为进行哈希编码后的输入特征图;用
Figure BDA00022092644400000414
表示Hard tanh函数的梯度;
投影矩阵的梯度值
Figure BDA00022092644400000415
为:
Figure BDA00022092644400000416
其中,
Figure BDA0002209264440000051
为输出特征图的梯度值;
Figure BDA0002209264440000052
为实值的进行哈希编码后的权重矩阵;
Figure BDA0002209264440000053
为实值的投影矩阵;为进行哈希编码后的输入特征图;用
Figure BDA0002209264440000055
表示Hard tanh函数的梯度;Sk为输入特征图;Wk为权重矩阵。
其中较优地,根据每层的权重矩阵的梯度值更新权重矩阵,是将
Figure BDA0002209264440000056
矩阵采用clip函数进行截断,将转化成矩阵中各个元素均在[-1,1]范围内的新矩阵,并将所述新矩阵赋值给第k层的权重矩阵Wk
其中,η为学习率;
Figure BDA0002209264440000058
为权重矩阵的梯度值;Wk为权重矩阵。
其中较优地,根据每层的投影矩阵的梯度值更新投影矩阵,是将
Figure BDA0002209264440000059
矩阵采用clip函数进行截断,将
Figure BDA00022092644400000511
转化成矩阵中各个元素均在[-1,1]范围内的新矩阵,并将所述新矩阵赋值给第k层的投影矩阵Pk
根据本发明实施例的第二方面,提供一种基于哈希学习的神经网络压缩系统,包括处理器和存储器;所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时实现如下步骤:
在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;
在后向传播中,根据输出特征图计算神经网络的损失函数,并通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;
根据每层的权重矩阵的梯度值以及每层的投影矩阵的梯度值分别对权重矩阵和投影矩阵进行更新。
本发明提供的基于哈希学习的神经网络压缩方法,在随机投影的基础上增加了哈希学习的部分,通过同时训练权重矩阵和投影矩阵的方法来全局最小化损失函数,从而增加算法的分类准确率,达到可接受的微小性能退化的目标,具有很高的灵活性,并且大大的降低了参数的存储。
附图说明
图1为本发明所提供的基于哈希学习的神经网络压缩方法的流程图;
图2为本发明所提供的实施例中,im2col操作示意图;
图3为本发明所提供的实施例中,Hardtanh函数的示意图;
图4为本发明所提供的基于哈希学习的神经网络压缩系统的结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术内容进行详细具体的说明。
目前有很多相关论文对于神经网络的压缩加速实现进行研究,尤其是二值化实现相关论文的大概的公式。但是,目前在压缩上都是直接对权重矩阵和输入矩阵转变成同样的二值化数,所以压缩倍数也就是从4个字节的实数变成1个比特的数,那么在压缩上也就是32倍,在计算上因为比特数之间可以通过位运算之类的操作来实现,所以加速明显,而且这种方法简单易行,思路清晰,很容易实现,而且又很有效。但是由于压缩倍数固定为32倍,这个条件非常限制。比如在小网络上,压缩32倍可能会导致参数太少,准确率损失太多,而在大网络上,32倍的压缩率可能又会显得太小,压缩之后模型依然很大。
为了解决以上问题,可以通过结合投影压缩的方法来进行改进。如果仅仅通过增加一个超参数压缩因子,针对输入矩阵来做压缩,同样权重矩阵也会相应的在其中一个维度上有同样的压缩,最后会得到二值化的输入矩阵和权重矩阵。能达到的压缩倍数可以超过现有的一些研究方法使用的固定的压缩倍数,同时也可以根据网络的具体大小来进行压缩倍数的定制,灵活性更高。而且因为压缩倍数可以更大,所以在移动设备上加载测试时,所需要的计算量和存储空间更小,能耗更少,更能适应在低性能设备上的操作。
但是在随机投影中,主要采用投影的方式做降维操作的作用,但是在实验过程中,仅仅根据随机生成的投影矩阵来做大规模的压缩时,很容易出现损失率大幅下降的问题,这也是网络压缩文章中不可避免的问题,所以我们思考是否需要对投影矩阵做进一步的处理,来提高准确率。在随机投影哈希中,投影矩阵和数据集是没有直接关系的,所以也是独立于数据集的,但是很显然数据集本身的分布特征,投影矩阵无法进行学习,所以效果一般会差一些,所以,在本发明所提供的基于哈希学习的神经网络压缩方法中,通过探索哈希学习的投影矩阵来实现对于准确率的提高。
如图1所示,本发明所提供的基于哈希学习的神经网络压缩方法,包括如下步骤:首先,在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;然后,在后向传播中,根据输出特征图计算神经网络的损失函数,并通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;最后,根据每层的权重矩阵的梯度值以及每层的投影矩阵的梯度值分别对权重矩阵和投影矩阵进行更新。下面对这一过程做详细具体的说明。
S1,在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图。
在描述本发明所提供的基于哈希学习的神经网络压缩方法之前,先介绍一下哈希算法。哈希算法的主要思想是将任意长度的二进制值通过设计的哈希函数映射到固定长度的二进制值,这些固定长度的二进制值称作哈希值,这种方法将不同大小的消息或者数据压缩成固定的数据格式,使得数据量大大减小。哈希随机投影在图像领域中用于检索、存储,在密码学领域广泛用于数据加密。
哈希算法的三大要素是输入空间、哈希函数和输出空间,输出空间也就是包含哈希值的空间,所以对哈希算法来说,最重要的是哈希函数。一般来说哈希算法需要几个哈希函数共同作用来将原始数据变成的哈希编码,并且能够保持与输入数据的一致性,也就是说如果两组输入数据在输入空间里是相似的,那么它们的哈希编码在输出空间里也是相似的,反过来也同样成立。其中局部敏感哈希算法就是一种广泛使用的哈希算法。大致定义如下:
给定一组哈希函数H={h:D→U},对于H中的每一个函数h∈H,对于任意的两个向量p,q∈D,若满足以下条件:
如果d(p,q)≤d1,则Pr[h(q)=h(p)]≥P1
如果d(p,q)≥d2,则Pr[h(q)=h(p)]≤P2
其中,d(p,q)是p和q之间的距离,Pr[h(q)=h(p)]表示h(q)和h(p)相等的概率,d1,d2,P1,P2是阈值,一般d1<d2,P1>P2,则我们称哈希函数簇H是位置敏感的,即(d1,d2,P1,P2)-sensitive。
在图像方面,哈希算法在图像检索、图像存储、视频检索、视频存储等方面都大量使用。在传统的图像检索中,直接从图像中提取到的图像特征是高维高精度的数据,直接作为检索依据时需要极其复杂的运算,而且图像数据库中一般有上百万张图像,所以耗时长、很难达到实时的要求。而基于哈希算法的检索则直接利用图像特征变换来的哈希编码来做相似度计算和检索,显著减少了计算时间和存储空间。
在本发明所提供的实施例中,将基于学习的投影哈希算法应用于神经网络的压缩。在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;具体包括如下步骤:
S11,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩。
其中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩时,对输入特征图和权重矩阵通过相同的投影矩阵进行压缩;具体包括如下步骤:
S111,对于输入特征图Sk和权重矩阵Wk,通过实值的投影矩阵进行投影,将其转换为低维的输入特征图
Figure BDA0002209264440000082
和低维的权重矩阵
Figure BDA0002209264440000083
S112,将低维的低维的输入特征图
Figure BDA0002209264440000091
和低维的权重矩阵
Figure BDA0002209264440000092
转化成二进制的哈希编码
Figure BDA0002209264440000093
Figure BDA0002209264440000094
完成对输入特征图和权重矩阵的压缩。其中,k为神经网络层数,b为压缩因子。
然后再在哈希编码上进行进一步的作用,在投影哈希中哈希矩阵P可能是数据不敏感的,比如随即投影。
S12,对压缩后的输入特征图Sk和权重矩阵Wk相乘,得到输出特征图。
在本发明所提供的实施例中,在前向传播过程中,将每个神经网络层的输入特征图和权重矩阵都通过相同的投影矩阵进行压缩,对压缩后的矩阵相乘得到的矩阵作为原输出特征图的近似。即原来的输出特征图通过实值的输入特征图Sk、权重矩阵Wk相乘计算得到,现在通过二值化后的输入矩阵
Figure BDA0002209264440000095
权重矩阵相乘计算得到,即:
Figure BDA0002209264440000097
具体地说,在每一层中,假设共有L层网络,每一层即k=1到L的网络运算如下:
其中,对于全连接层,全连接层进行的是线性操作,其计算公式如下:
Figure BDA0002209264440000098
Figure BDA0002209264440000099
Figure BDA00022092644400000910
其中,R为压缩后的矩阵的大小,m*n分别为压缩后的输入特征图对应的矩阵的行数和列数。m*Cr分别为压缩后的特征矩阵对应的矩阵的行数和列数,Tk为输出特征图;Cr*n分别为压缩后的输出特征图对应的矩阵的行数和列数。
对于卷积层,其具体操作是卷积操作,所以跟全连接层的线性操作有所不同,但是实际上在Torch或者Caffe等深度学习平台的代码中,事实上卷积的实现是通过将原来的输入特征图的高维矩阵按照一定的规则拉成相应的形式,权重矩阵也是如此,然后再进行线性操作。这个规则就是im2col的操作。
在本发明所提供的实施例中,在前向传播中,将卷积层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;具体包括如下步骤:
S01,将输入特征图和权重矩阵重新组织成一个更大的矩阵。
S02,将重新组织后的输入特征图和权重矩阵通过投影矩阵进行压缩。
S03,对压缩后的输入特征图和权重矩阵相乘,得到输出特征图。
S04,对输出特征图进行col2im操作得到最终的输出特征图。
具体地说,如图2所示,在具体实现中,输入特征图和权重矩阵都被重新组织成一个更大的矩阵,其中将输入特征图和权重矩阵被重新组织成一个更大的矩阵的过程采用本领域的常规重组过程,在此不做具体限定。然后,将重新组织后的输入特征图和权重矩阵通过投影矩阵进行压缩,并对压缩后的输入特征图和权重矩阵相乘,得到输出特征图。最后,再对输出特征图进行常规的col2im操作,实现更高效率的卷积。所以在本质上,卷积层的压缩实现和全连接层并没有很大的差异,只有细微的区别。所以卷积层计算公式如下:
Figure BDA0002209264440000101
Figure BDA0002209264440000102
Figure BDA0002209264440000103
其中,二进制的哈希编码
Figure BDA0002209264440000104
时应的矩阵R的大小为b*(dt*dt)。m*Cr以及(dt*dt)*Cr的含义与b*(dt*dt)相似,在此便不再赘述了。
S2,在后向传播中,根据输出特征图计算神经网络的损失函数,并通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;具体地说,根据输出特征图计算神经网络的损失函数,通过损失函数可以得到最后的输出层的梯度初始值
Figure BDA0002209264440000105
因为第k-1层的输出对应第k层的输入,即Tk-1=Sk,计算输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;对k=L到1,逐层递推,可以得到每一层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值,最终得到神经网络最初输入数据时,输入特征图对应的权重矩阵以及用于压缩的投影矩阵,将此权重矩阵和投影矩阵进行相应的操作对初始的权重矩阵和投影矩阵进行更新。
在本发明所提供的实施例中,根据输出特征图计算神经网络的损失函数,采用传统的交叉熵的方式计算神经网络的损失函数,在此便不在赘述了。
因为在前向传播过程中,对输入特征图和输出特征图做了一些变换,所以在后向传播时,参数的梯度也会发生相应的变化,并且由于投影矩阵的存在,输入矩阵和权重矩阵的梯度会因为投影矩阵的操作而发生相应的变化,需要通过链式法则对于它们的梯度做进一步的推导。
对于计算梯度参数,卷积神经网络的最终输出层的梯度是可以直接得到的,由此我们能很容易的得到每一层错误率对于输出特征图的梯度,对k=1到L,都有
Figure BDA0002209264440000111
根据链式法则由此可得到
Figure BDA0002209264440000112
Figure BDA0002209264440000113
如下:
Figure BDA0002209264440000115
Figure BDA0002209264440000116
除此之外,投影矩阵不是纯随机产生与本数据集无关的,而是需要训练学习得到的,所以需要求出投影矩阵的梯度值,并且训练过程中能够同时训练权重矩阵和投影矩阵,以此得到更好的分类准确率。由于对k=1到L,都有
Figure BDA0002209264440000121
根据链式法则由此还可以得到投影矩阵的梯度值
Figure BDA0002209264440000122
如下:
Figure BDA0002209264440000123
根据前向传播的公式带入可求得
Figure BDA0002209264440000124
在上述的式子中,
Figure BDA0002209264440000125
因为涉及到sgn函数的求导,但是sgn函数并不连续可导,所以无法直接给出。故一般在对其求导时需要做一些不同的处理,大多数都用一些近似的连续函数来做逼近,所以在下面根据不同的近似函数做不同的求导处理。
如果对y=sgn(x)的逼近用y=x,即直接去sgn逼近,即可求出:
Figure BDA0002209264440000127
Figure BDA0002209264440000128
Figure BDA0002209264440000129
Figure BDA00022092644400001210
所以最终梯度的表达式为:
Figure BDA00022092644400001211
Figure BDA00022092644400001212
Figure BDA00022092644400001213
Figure BDA0002209264440000131
Figure BDA0002209264440000132
如果对y=sgn(x)的逼近用y=Htanh(x)=max(-1,min(1,x)),即用Hard tanh函数逼近,Hard tanh函数如图3所示。
当x>=-1并且x<=1时,否则用1|x|≤1表示Hard tanh函数的梯度,即可求出
Figure BDA0002209264440000135
所以最终梯度的表达式为:
Figure BDA0002209264440000137
Figure BDA0002209264440000138
Figure BDA0002209264440000139
Figure BDA00022092644400001311
S3,根据每层的权重矩阵的梯度值以及每层的投影矩阵的梯度值分别对权重矩阵和投影矩阵进行更新。
根据每层的权重矩阵的梯度值更新权重矩阵,采用如下公式:
Figure BDA0002209264440000141
其中,η为学习率,可以根据需求进行设定。更新权重矩阵时将
Figure BDA0002209264440000142
矩阵采用clip函数进行截断,将
Figure BDA0002209264440000143
转化成矩阵中各个元素均在[-1,1]范围内的新矩阵,并将其赋值给权重矩阵Wk
根据每层的投影矩阵的梯度值更新投影矩阵,采用如下公式:
Figure BDA0002209264440000144
其中,更新投影矩阵时将
Figure BDA0002209264440000145
矩阵采用clip函数进行截断,将
Figure BDA0002209264440000146
转化成矩阵中各个元素均在[-1,1]范围内的新矩阵,并将其赋值给投影矩阵Pk
在本发明所提供的另一实施例中,当数据输入到神经网络时,存在偏置矩阵bk,在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;此时的输出特征图为:
然后,在后向传播中,根据输出特征图计算神经网络的损失函数,并通过损失函数计算每层的输入特征图和权重矩阵的梯度值;最后,根据每层的权重矩阵的梯度值更新权重矩阵,并根据损失函数计算每层偏置矩阵的梯度值,根据每层的偏置矩阵的梯度值更新偏置矩阵,采用如下公式:
更新偏置矩阵时将
Figure BDA0002209264440000151
矩阵采用clip函数进行截断,将
Figure BDA0002209264440000152
转化成矩阵中各个元素均在[-1,1]范围内的新矩阵,并将其赋值给第一层的偏置矩阵bk
下面分析本发明所提供的基于哈希学习的神经网络压缩系方法在压缩和加速上的具体表现,算法复杂度如下:
Figure BDA0002209264440000153
表1算法复杂度分析表
在全连接层中,在实际压缩时,我们取压缩因子为n(n大于1),那么b则是输入向量Cs的1/n,所以我们把b=Cs/n带入表格中得到精简版的算法复杂度如下:
Figure BDA0002209264440000161
表2全连接层算法复杂度分析表
由比值我们可以讨论三种情况:
当Cs≈Ct时,计算加速倍数约为n/2,存储压缩倍数约为n。
当Cs>>Ct时,计算加速倍数为
Figure BDA0002209264440000162
存储压缩倍数约是
Figure BDA0002209264440000163
当Cs足够大时,加速压缩都小于1,效果差。
当Cs<<Ct时,计算加速倍数是n,存储压缩倍数约是32n。
在实际使用过程中,更常见的是第1种情况,所以理论上来说压缩实际有效。
在卷积层中,在实际压缩时,我们取压缩因子为n(n>1),那么b则是Csdk 2的1/门,所以我们把b=Csdk 2/n带入表格中得到精简版的算法复杂度如下:
Figure BDA0002209264440000164
表3卷积层算法复杂度分析表
其中,Dk是权重w的空间尺度大小,Dt是输出特征图的空间尺度大小。
由比值我们可以讨论三种情况:
当dk 2Cs≈Ct时,计算加速倍数约为n/2,存储压缩倍数约为n。
Figure BDA0002209264440000171
时,计算加速倍数为存储压缩倍数约是
Figure BDA0002209264440000173
当Cs足够大时,加速压缩都小于1,效果差。
Figure BDA0002209264440000174
时,计算加速倍数是n,存储压缩倍数约是32n。
同样,在实际使用过程中,更常见的是第1种情况,所以理论上来说压缩实际有效。
本发明还提供了一种基于哈希学习的神经网络压缩系统。如图4所示,该系统包括处理器42以及存储有处理器42可执行指令的存储器41;
其中,处理器42可以是通用处理器,例如中央处理器(CPU),还可以是数字信号处理器(DSP)、专用集成电路(ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
其中,存储器41,用于存储程序代码,并将该程序代码传输给CPU。存储器41可以包括易失性存储器,例如随机存取存储器(RAM);存储器41也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器41还可以包括上述种类的存储器的组合。
具体地,本发明实施例所提供的一种基于哈希学习的神经网络压缩系统,包括处理器42和存储器41;存储器41上存储有可用在处理器42上运行的计算机程序,当计算机程序被处理器42执行时实现如下步骤:
在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;
在后向传播中,根据输出特征图计算神经网络的损失函数,并通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;
根据每层的权重矩阵的梯度值以及每层的投影矩阵的梯度值分别对权重矩阵和投影矩阵进行更新。
本发明实施例还提供了一种计算机可读存储介质。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于通信设备中。
上面对本发明所提供的基于哈希学习的神经网络压缩方法及系统进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。

Claims (10)

1.一种基于哈希学习的神经网络压缩方法,其特征在于包括如下步骤:
在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;
在后向传播中,根据输出特征图计算神经网络的损失函数,并通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;
根据每层的权重矩阵的梯度值以及每层的投影矩阵的梯度值分别对权重矩阵和投影矩阵进行更新。
2.如权利要求1所述的神经网络压缩方法,其特征在于在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图,采用如下步骤:
对压缩后的输入特征图和权重矩阵相乘,得到输出特征图。
3.如权利要求1所述的神经网络压缩方法,其特征在于:
将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩时,对输入特征图和权重矩阵通过相同的投影矩阵进行压缩。
4.如权利要求1所述的神经网络压缩方法,其特征在于将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,包括如下步骤:
对于输入特征图Sk和权重矩阵Wk,通过实值的投影矩阵
Figure FDA0002209264430000011
进行投影,将所述输入特征图Sk和所述权重矩阵转换为低维的输入特征图
Figure FDA0002209264430000012
和低维的权重矩阵
Figure FDA0002209264430000013
将低维的低维的输入特征图
Figure FDA0002209264430000014
和低维的权重矩阵
Figure FDA0002209264430000015
转化成二进制的哈希编码
Figure FDA0002209264430000016
Figure FDA0002209264430000017
完成对输入特征图和权重矩阵的压缩;
其中,k为神经网络层数,b为压缩因子。
5.如权利要求1所述的神经网络压缩方法,其特征在于在前向传播中,将卷积层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;包括如下步骤:
将输入特征图和权重矩阵分别重新组织成一个大矩阵;
将重新组织后的输入特征图和权重矩阵通过投影矩阵进行压缩;
对压缩后的输入特征图和权重矩阵相乘,得到输出特征图;
对输出特征图进行col2im操作得到最终的输出特征图。
6.如权利要求1所述的神经网络压缩方法,其特征在于:
在后向传播中,通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;当损失函数中包含的sgn(x)用x替换时,输入特征图的梯度值
Figure FDA0002209264430000021
为:
Figure FDA0002209264430000022
权重矩阵的梯度值
Figure FDA0002209264430000023
为:
Figure FDA0002209264430000024
其中,
Figure FDA0002209264430000025
为输出特征图的梯度值;
Figure FDA0002209264430000026
为实值的进行哈希编码后的权重矩阵;
Figure FDA0002209264430000027
为实值的投影矩阵;
Figure FDA0002209264430000028
为进行哈希编码后的输入特征图;
投影矩阵的梯度值
Figure FDA0002209264430000029
为:
其中,
Figure FDA00022092644300000211
为输出特征图的梯度值;
Figure FDA00022092644300000212
为实值的进行哈希编码后的权重矩阵;
Figure FDA00022092644300000213
为实值的投影矩阵;
Figure FDA00022092644300000214
为进行哈希编码后的输入特征图;Sk为输入特征图;Wk为权重矩阵。
7.如权利要求1所述的神经网络压缩方法,其特征在于在后向传播中,通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值投影矩阵的梯度值和;当损失函数中包含的sgn(x)用Htanh(x)替换时,输入特征图的梯度值
Figure FDA0002209264430000031
为:
Figure FDA0002209264430000032
权重矩阵的梯度值为:
Figure FDA0002209264430000034
其中,
Figure FDA0002209264430000035
为输出特征图的梯度值;为实值的进行哈希编码后的权重矩阵;
Figure FDA0002209264430000037
为实值的投影矩阵;为进行哈希编码后的输入特征图;用
Figure FDA0002209264430000039
表示Hard tanh函数的梯度;
投影矩阵的梯度值为:
Figure FDA00022092644300000311
其中,
Figure FDA00022092644300000312
为输出特征图的梯度值;
Figure FDA00022092644300000313
为实值的进行哈希编码后的权重矩阵;
Figure FDA00022092644300000314
为实值的投影矩阵;为进行哈希编码后的输入特征图;用
Figure FDA00022092644300000315
表示Hard tanh函数的梯度;Sk为输入特征图;Wk为权重矩阵。
8.如权利要求1所述的神经网络压缩方法,其特征在于:
根据每层的权重矩阵的梯度值更新权重矩阵,是将矩阵采用clip函数进行截断,将
Figure FDA0002209264430000042
转化成矩阵中各个元素均在[-1,1]范围内的新矩阵,并将所述新矩阵赋值给第k层的权重矩阵Wk
其中,η为学习率;
Figure FDA0002209264430000043
为权重矩阵的梯度值;Wk为权重矩阵。
9.如权利要求1所述的神经网络压缩方法,其特征在于:
根据每层的投影矩阵的梯度值更新投影矩阵,是将
Figure FDA0002209264430000044
矩阵采用clip函数进行截断,将转化成矩阵中各个元素均在[-1,1]范围内的新矩阵,并将所述新矩阵赋值给第k层的投影矩阵Pk
10.一种基于哈希学习的神经网络压缩系统,其特征在于包括处理器和存储器;所述存储器上存储有可在所述处理器上运行的计算机程序,当所述计算机程序被所述处理器执行时实现如下步骤:
在前向传播中,将每个神经网络层的输入特征图和权重矩阵通过投影矩阵进行压缩,计算输出特征图;
在后向传播中,根据输出特征图计算神经网络的损失函数,并通过损失函数计算每层的输入特征图的梯度值、权重矩阵的梯度值和投影矩阵的梯度值;
根据每层的权重矩阵的梯度值以及每层的投影矩阵的梯度值分别对权重矩阵和投影矩阵进行更新。
CN201910892713.6A 2019-09-20 2019-09-20 一种基于哈希学习的神经网络压缩方法及系统 Pending CN110782003A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910892713.6A CN110782003A (zh) 2019-09-20 2019-09-20 一种基于哈希学习的神经网络压缩方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910892713.6A CN110782003A (zh) 2019-09-20 2019-09-20 一种基于哈希学习的神经网络压缩方法及系统

Publications (1)

Publication Number Publication Date
CN110782003A true CN110782003A (zh) 2020-02-11

Family

ID=69384269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910892713.6A Pending CN110782003A (zh) 2019-09-20 2019-09-20 一种基于哈希学习的神经网络压缩方法及系统

Country Status (1)

Country Link
CN (1) CN110782003A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114781650A (zh) * 2022-04-28 2022-07-22 北京百度网讯科技有限公司 一种数据处理方法、装置、设备以及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114781650A (zh) * 2022-04-28 2022-07-22 北京百度网讯科技有限公司 一种数据处理方法、装置、设备以及存储介质
CN114781650B (zh) * 2022-04-28 2024-02-27 北京百度网讯科技有限公司 一种数据处理方法、装置、设备以及存储介质

Similar Documents

Publication Publication Date Title
CN110520909B (zh) 使用激活数据的压缩和解压缩来减少存储器带宽利用率的神经网络处理器
CN107516129B (zh) 基于维度自适应的Tucker分解的深度网络压缩方法
CN108304921B (zh) 卷积神经网络的训练方法及图像处理方法、装置
EP3657399A1 (en) Weight pruning and quantization method for a neural network and accelerating device therefor
CN112418292B (zh) 一种图像质量评价的方法、装置、计算机设备及存储介质
CN108416427A (zh) 卷积核堆积数据流、压缩编码以及深度学习算法
CN108628898B (zh) 数据入库的方法、装置和设备
CN111985597B (zh) 模型压缩方法及装置
CN110070119B (zh) 一种基于二值化深度神经网络的手写数字图像识别分类方法
CN103546161A (zh) 基于二进制位处理的无损压缩方法
WO2023207836A1 (zh) 一种图像编码方法、图像解压方法以及装置
CN114640354A (zh) 数据压缩方法、装置、电子设备及计算机可读存储介质
CN110782003A (zh) 一种基于哈希学习的神经网络压缩方法及系统
CN110751274A (zh) 一种基于随机投影哈希的神经网络压缩方法及系统
CN113298892A (zh) 一种图像编码方法和设备,及存储介质
CN111723912A (zh) 一种神经网络解耦方法
US20230143985A1 (en) Data feature extraction method and related apparatus
WO2023051335A1 (zh) 数据编码方法、数据解码方法以及数据处理装置
WO2023159820A1 (zh) 图像压缩方法、图像解压缩方法及装置
CN113887719B (zh) 一种模型压缩方法及装置
Chandra Data bandwidth reduction in deep neural network SoCs using history buffer and Huffman coding
CN115631339A (zh) 视觉特征提取方法、装置及电子设备
CN112132272B (zh) 神经网络的计算装置、处理器和电子设备
CN114077885A (zh) 基于张量分解的模型压缩方法、装置和服务器
CN113780324A (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