基于hashing的二值加速
2018-11-08王粲
王粲
(南京市中华中学,江苏南京,210019)
0 引言
近年来,人类科技不断发展,计算机技术也不断进步,伴随着人工智能技术的兴起,现代社会变得越来越智能化,机器人,脸部识别,汽车车牌识别也越来越多的应用在我们的生活之中,而这些技术的发展,离不开计算机的深度学习和神经网络的发展。但目前人工智能的发展却远远未达到人们的需求,更高的准确性和更快的运算速度是现在急需解决的问题。
现在,百度公司已经在生产无人驾驶汽车,无人驾驶汽车对于人类来说具有更高的舒适性,避免了因醉酒驾驶和疲劳驾驶而带来的行车危险。同时,当代社会的交通事故率在不断提高,如能实现无人驾驶,那么因车祸带来的死亡率会大大降低,从而提高社会的稳定性。但无人驾驶汽车任处于尝试阶段,而实现照相技术的最重要因素就是能在汽车遇到紧急状况时,计算机能对其进行准确而实时的处理,为了在这些领域取得更大的进步,CNN网络和Hash网络也就应运而生了。CNN网络使用5×5,3×3等大小的卷积核,将卷积核内的像素点的权重实行统一,从而达到权值共享的目的,卷积过程完成后在进行池化,对卷积核1内的数据进行抽样,将5×5,10×10甚至更大的池化层缩小到1×1的区域,这样就能将权重的数量减少,有利于减少计算机的计算量来达到更大的计算速度,也可以对数据达到特征提取的效果。而Hash网络是将任意不定长的比特串转化为一个定长的比特串,将小于2^64比特的巨大数据转化为160比特的消息作为输出。以达到减少参数量的目的。二值神经网络存在的缺点是无法求导的问题,但如果使用Hash网络就可以解决这一问题。CNN网络和Hash网络的使用对计算机的深度学习有着很大的改进,为以后人工智能等社会智能化发展提供了机会和方法。
本文将大致介绍CNN网络的意义,好处和加速计算的过程,二值网络的好处及计算流程,最后讲述Hash网络如何解决二值网络无法求导的问题,通过学术资料的查询简述如何进行计算机运算的加速,以期为未来的人工智能发展提供可能的工具和方法。
1 CNN网络
CNN网络全称为卷积神经网络,是一种深度学习的前馈神经网络,他是目前计算机运用较多的神经网络,CNN主要用于图像的识别和处理,由于这种网络能够实现权值共享,所以使用CNN网络进行计算可以大大的减少计算量。
CNN网络包括卷积层和池化层,每一个卷积层后都有一个池化层,当一个图像输入之后,它会变成一个28×28的点阵进行处理,每一个点都代表一个权重,这对于计算机的运算量来说无疑是巨大的,而将图片输入CNN网络时,这28×28的点阵会由卷积核提取特征,卷积核的大小一般为5×5或3×3,假设用5×5的卷积核提取特征,那么28×28的点阵会缩小为24×24的大小,并且由6个卷积层组成,之后这24×24×6会被池化,即选择一个固定大小的区域,在这个区域中提取这些数据的最大值或平均值,池化过程既保留了数据的特征,又减少了数据的数量。如图1所示。
图1 卷积神经网络
即在池化过程中选择在2×2的数据内取特征值,从而将像素点减少为6×12×12,如此循环往复地减少像素点来达到对数据量的缩减。CNN网络和普通网络相比除了能够自主深度学习外还能提取图像的特征,普通网络具有巨大的参数量,计算机的计算难度过大,而CNN网络用卷积和池化将参数量减少,实现权值共享,从而减少计算量是普通网络完全不具备的。
2 二值网络
二值网络又称网络二值化,是减少计算机运算量的一种方式。网络二值化是由CNN网络进一步加速做成的,即将浮点权重转化为仅由1和-1组成的二值权重。由于浮点计算慢且权重为小数时,计算过于复杂,所以用二值权重代表浮点权重,以求达到加速计算机运算速度和减少计算机的运算量的效果。
二值网络的运算过程与全连接极其相似,它也是计算机不断深度学习来缩小与标准值的差距,即通过不断改变权重和伸缩量使训练值无限接近于标准值,最后达到所需要的结果,而这个过程其实就是求 标准值-训练值 的最小值,用符号表示为Li=min||Yi-XBiAi|| ,这个式子我们称之为损失函数,二值函数与全连接网路的最重要的区别就是损失函数的B取值不同,全连接网络的权重通常是-1~1中的某一个小数,而小数运算过于繁琐,所以在二值网络中权重只取-1或1以达到简便运算的目的。其中A为伸缩量,它的作用是为避免网络二值化的过程中求导时将重要值忽略,所以将数值进行少量增减以避免把重要值丢失,通过对损失函数的不断求导获取最小值,计算机可以不断深度学习求得期望输出。然而,二值网络在使用上存在巨大问题,仅仅使用二值网络无法解决不能求导的问题。
3 Hash网络的运用
Hash网络的运用是为了解决二值网络无法求导的问题。在二值网络的损失函数中,对A进行求导可以得到,可以求得A的取值,然而在对B进行求导时,由于网络的二值化,B的取值范围仅为-1和1.这种情况下,无法满足对B进行求导。而Hash网络就在CNN和网络二值化加速计算机运算的同时,解决二值化网络所带来的问题。
利用Hash网络确定B的过程中将权重列为矩阵的形式,即为为了确定B的值,将矩阵中的数除去Bi列可得到将这个矩阵进一步化简,可得到min2VTW’TB’ZTQZ=2(rTwTb’Tq)Z,当rTwTb’Tq>0,Z<0,所以Z取-1,当rwbq<0时,此时Z取1,这些就可以确定B的取值,完成二值网络的学习过程。利用Hash算法,可以解决二值网络无法求导的问题,使对计算机的加速更加完备。
4 结论
现在社会越来越往智能化发展,人工智能,人脸识别,车牌识别等都离不开计算机的深度学习。CNN网络和Hash网络和普通网络相比具有很大的优越性。利用CNN网络输入图片的像素点减少减少为既不影响图片的特征,同时又大大减少图片的参数量。利用卷积核实行权值共享,极大的降低了计算机的计算量。将Hash网络和CNN网络相结合使用,不仅发挥了CNN的优势,更可在运用二值网络加速的同时,利用Hash网络解决因二值化所引发的无法求导的问题,更重要的是二值化的网络比普通网络所需要的硬盘储存小的多,输出量仅为160bit,占据计算机的容量便会小很多,和CNN网络结合使用,提升计算机的计算速度,才能更好的实现计算机的实时性和准确性
5 研究展望
Hash网络和CNN网络会越来越多的应用到人类社会中,在逐渐发展的智能化产业中,包括无人汽车的驾驶,家庭机器人的使用,都需要更快的计算速度,仅凭Hash网络和CNN网络的加速是远远不够的。现有的计算机的计算速度仍不能满足更快更精确的智能机器的使用。而运用CNN网络和Hash网络所带来的最大问题是相较于全连接网络,CNN网络和Hash网络在加速的同时会减少计算的准确率,而无人汽车的驾驶手机等低能耗设备的智能化对计算机的准确有着相当高的要求。所以提高计算准确率也是我们迫切所要解决的问题。但是已经有研究要将CNN网络运用到低能耗设备,这说明其对计算机的速度和准确性有了极大的提升。相信在不久的未来,手机、汽车等移动设备都可以使用CNN网络,到时我们便可以拥有更加方便快捷的智能化体验。