微型神经网络

科技工作者之家  |   2020-11-17 18:16

微型神经网络,也称轻量级神经网络,是指需要参数数量较少和计算代价较小的神经网络模型。由于微型神经网络计算开销小,微型神经网络模型可以部署在计算资源有限的设备上,如智能手机、平板电脑或其他嵌入式设备。构建微型神经网络一般从网络结构优化和网络裁剪两个角度出发。

定义微型神经网络简单来说是对原来神经网络结构进行优化和网络裁剪。从深度学习的理论发展来看,寻求特定任务下最小的深度学习系统有利于帮助研究人员进一步理解深度学习的作用机理,如神经元的物理含义,神经元的学习能力极限等方面。构建和生成微型神经网络模型有利于将更多深度学习算法应用到移动端,降低对设备性能的要求。近年来,有关学者提出了不是微型神经网络架构,如MobileNets,ShuffleNet使用深度可分离的卷积来构建轻量级的深层神经网络。构建微型神经网络的方法可以分为近似,量化和裁剪、基于张量分解等方法。

必要性与可能性深度学习是近年来机器学习中最具有代表性的技术,在图片识别,自然语言处理,语音识别,机器人技术等许多模式识别的关键领域均取得了突破性的成就。深度卷积网络将图像识别的准确率提高了一个台阶,并在个别领域,如人脸识别中取得了超过人类的识别水平。深度学习的本质是大数据支持下的多层人工神经网络系统,一个深度学习模型通常包含数以百万计甚至千万计的参数和十几层甚至几十层的网络。例如,AlexNet网络的参数数目约为6000万个,而VGG网络拥有1.4亿参数。巨量的参数带来性能提升的同时,也带来网络体量巨大、运算缓慢等缺点,不利于深度学习模型向运算资源有限的设备和应用中嵌入。另一方面,深度神经网络又常常是过参数化的。尤其是对于特定的任务而言,有相当部分的神经元和连接权重对模型的性能没有实质性的影响,或这些影响可以借由再训练方法由其他神经元填补。构建微型神经网络不但具有必要性,也具有可能性。首先,尽管神经网络通常是深度越深,效果越好,但针对具体的应用场景和需求,适当深度和参数数目的网络即能够满足。盲目加深网络复杂度所带来的微弱性能提升在许多应用场合意义并不大。其次,神经网络常常存在过参数化的问题,网络神经元的功能具有较大的重复性,即使在网络性能敏感的场景,大部分网络也可以被“安全地”压缩而不影响其性能。

方法近似类方法近似类方法主要利用矩阵或张量分解的思想,通过少量参数重构原始网络参数矩阵或参数张量,以达到减少网络存储开销的目的。通常,在网络运行时,这些参数将会被适当重建,网络的运行时开销并没有得到有效减少。

基于张量分解张量是向量和矩阵的自然推广,向量可称为一阶张量,矩阵可称为二阶张量,将矩阵堆叠形成“立方体”,这种数据结构则称为三阶张量。一张灰度图像在计算机中由矩阵表示,是二阶张量。一张RGB三通道的彩色图像在计算机中则保存为三阶张量。当然,三阶张量也可以堆叠形成更高阶的张量。张量分解是张量分析中的重要组成部分,其基本原理是利用张量数据中的结构信息,将张量分解为形式更简单、存储规模更小的若干张量的组合。典型的张量分解方法有CP分解,Tucker分解等。在神经网络中,参数通常以“张量”的形式集中保存。对全连接层而言,全连接通过权重矩阵将输入向量变换到输出向量,其参数为二阶张量。对卷积层而言,设输入数据为具有?通道的三阶张量。则卷积层中的每一个卷积核也都是具有?通道的三阶卷积核,故一层卷积层所包含的一组卷积核构成了形如? × ? ×?×?的四阶张量。基于张量分解的网络压缩的基本思想,就是利用张量分解的技术将网络的参数重新表达为小张量的组合。重新表达后的张量组一般能够在一定的精度下近似与原张量相同,而所占用的空间又得到大大降低,从而获得网络压缩的效果。有关学者分别是利用张量CP分解和Tucker分解的网络压缩工作。随着张量分解的研究,该类网络压缩方法也得到发展。利用较新的Tensor Train分解方法,经过Tensor Train分解得到的张量组可以通过反向传播算法获得更新,实际上形成了一种占用空间更小的网络层。

量化方法量化方法的主要思想是将网络参数的可能值从实数域映射到有限数集,或将网络参数用更少的比特数来表示。量化的方法将原本具有无限种可能的参数约束到少数几种参数中,再对这些参数进行重用,就可以减少网络存储开销。通过改变参数的数据类型,如将原本的64位浮点型量化为整形甚至布尔型,网络的运行时开销也将得到大幅度减少。

网络裁剪网络裁剪的主要特点是会直接改变网络的结构。网络裁剪可以按粒度分为层级裁剪,神经元级裁剪和神经连接级裁剪。层级裁剪的裁减对象是网络层,裁剪的结果是获得更浅的网络。通常,神经网络想要达到良好的模式识别效果,必须具有较深的深度,但对具体问题而言,深度太深也会带来过拟合风险增高,训练难度加大等问题,且过深的网络对提高具体场景下模式识别的性能帮助有限,因此有时会对网络进行层级的裁剪。神经元级的裁剪对象是一层中的神经元或滤波器,裁剪的结果是获得更“瘦”的神经网络,瘦长的神经网络不但能够减少网络存储开销,还能提高网络运算速度。经过层级或神经元级裁剪的神经网络,仍然保持了原本神经网络的正规性,即网络的存储和运算规则仍然保持不变,只是规模变小。神经连接级的裁剪对象是一条具体的网络连接,或一个具体的参数,裁剪的结果通常是获得更为稀疏的网络。神经连接级的裁剪往往更加精细可控,对网络性能的影响最小。但神经连接级的裁剪会导致网络失去正规性,经过裁剪的网络权值张量变的稀疏,因此在存储和运算时需要采用稀疏张量的存储和运算规则,不利于并行1。

深度学习特点深度学习是机器学习的一项分支,是一类由大数据推动,以多层人工神经网络为表现形式,以特征提取为主要目的的算法,既可以用于监督学习,也可以用于非监督学习。我们将深度学习的特性总结如下:

一是计算密集。深度学习的一般形式是多层的人工神经网络,一个深度学习模型往往含有数以百万计甚至千万计的参数,庞大的模型必须有大量的训练样本作为支撑才能抑制过拟合,提高泛化能力。尽管有一些工作试图降低深度学习所需要的样本数,但总体而言,没有大量的数据支撑,深度学习就无从谈起。网络规模和数据量两方面共同决定深度学习具有计算密集的特性。

二是特征的自动提取和分层处理,深度神经网络主要处理的问题是从数据中自动提取特征。这种特征的提取是通过逐层组合抽象完成的,具有分层特性。网络的底层(近输入端)抽取的是局部的,低级的特征,这些特征经过逐层组合和非线性变换,在高层(远输入端)形成全局和抽象的特征。特征的语义性从低到高得到逐渐加强。

三是工程性强,可解释性弱。尽管在深度学习的理论方面已经有许多有意义的工作,但深度学习的原理尚不明确,在大多数情况下深度学习仍然像是一个“黑盒子”,缺乏严格的理论证明。另一方面,深度学习是一门工程性非常强的学科,神经网络的编程、调参、优化都具有很强的实践性,十分依靠工程师的个人经验。

本词条内容贡献者为:

王慧维 - 副研究员 - 西南大学