导航:首页 > 矿池算力 > 神经网络模型的算力

神经网络模型的算力

发布时间:2023-03-26 03:26:27

❶ 人工智能的三要素

人工智能的三个核心要素:1、数据;2、算法;3、算力。这三个要素缺一不可,相互促进、相互支撑,都是智能技术创造价值和取得成功的必备条件。

1、数据

数据是人工智能发展的基础,图像识别、视频监控等槐雹都需要庞大的数据支撑下去进行模型训练和深度学习,数据集有良好的表现并不能保证其训练的机器学习系统在实际产品扒樱场景中表现良好。许多人在构建人工智能系统时常常忘了构建一个新人工智能解决方案或产品最困难的部分不是人工智能本身或算法,通常最困难的地方是数据收集和标注。

3、算力

算力伴随着人工智能出现一直都在提升和发展,相辅相成。如何提升算力成为各国研究的重点,光电计算被提上日程,以三维受控衍射传播实现全并行光速计算为例,这是一个颠覆,采集与计算无缝衔接,突破了存算分离速度制约,速度提升至少千倍,计算频次1THz,远超GHz电子计算。

❷ 深度学习之卷积神经网络经典模型

LeNet-5模型 在CNN的应用中,文字识别系统所用的LeNet-5模型是非常经典的模型。LeNet-5模型是1998年,Yann LeCun教授提出的,它是第一个成功大规模应用在手写数字识别问题的卷积神经网络,在MNIST数据集中的正确率可以高达99.2%。

下面详细介绍一下LeNet-5模型工作的原理。
LeNet-5模型一共有7层,每层包含众多参数,也就是卷积神经网络中的参数。虽然层数只有7层,这在如今庞大的神经网络中可是说是非常少的了,但是包含了卷积层,池化层,全连接层,可谓麻雀虽小五脏俱全了。为了方便,我们把卷积层称为C层,下采样层叫做下采样层。
首先,输入层输入原始图像,原始图像被处理成32×32个像素点的值。然后,后面的隐层计在卷积和子抽样之间交替进行。C1层是卷积层,包含了六个特征图。每个映射也就是28x28个神经元。卷积核可以是5x5的十字形,这28×28个神经元共享卷积核权值参数,通过卷积运算,原始信号特征增强,同时也降低了噪声,当卷积核不同时,提取到图像中的特征不同;C2层是一个池化层,池化层的功能在上文已经介绍过了,它将局部像素值平均化来实现子抽样。
池化层包含了六个特征映射,每个映射的像素值为14x14,这样的池化层非常重要,可以在一定程度上保证网络的特征被提取,同时运算量也大大降低,减少了网络结构过拟合的风险。因为卷积层与池化层是交替出现的,所以隐藏层的第三层又是一个卷积层,第二个卷积层由16个特征映射构成,每个特征映射用于加权和计算的卷积核为10x10的。第四个隐藏层,也就是第二个池化层同样包含16个特征映射,每个特征映射中所用的卷积核是5x5的。第五个隐藏层是用5x5的卷积核进行运算,包含了120个神经元,也是这个网络中卷积运算的最后一层。
之后的第六层便是全连接层,包含了84个特征图。全连接层中对输入进行点积之后加入偏置,然后经过一个激活函数传输给输出层的神经元。最后一层,也就是第七层,为了得到输出向量,设置了十个神经元来进行分类,相当于输出一个包含十个元素的一维数组,向量中的十个元素即0到9。
AlexNet模型
AlexNet简介
2012年Imagenet图像识别大赛中,Alext提出的alexnet网络模型一鸣惊人,引爆了神经网络的应用热潮,并且赢得了2012届图像识别大赛的冠军,这也使得卷积神经网络真正意义上成为图像处理上的核心算法。上文介绍的LeNet-5出现在上个世纪,虽然是经典,但是迫于种种复杂的现实场景限制,只能在一些领域应用。不过,随着SVM等手工设计的特征的飞速发展,LeNet-5并没有形成很大的应用状况。随着ReLU与dropout的提出,以及GPU带来算力突破和互联网时代大数据的爆发,卷积神经网络带来历史的突破,AlexNet的提出让深度学习走上人工智能的最前端。
图像预处理
AlexNet的训练数据采用ImageNet的子集中的ILSVRC2010数据集,包含了1000类,共1.2百万的训练图像,50000张验证集,150000张测试集。在进行网络训练之前我们要对数据集图片进行预处理。首先我们要将不同分辨率的图片全部变成256x256规格的图像,变换方法是将图片的短边缩放到 256像素值,然后截取长边的中间位置的256个像素值,得到256x256大小的图像。除了对图片大小进行预处理,还需要对图片减均值,一般图像均是由RGB三原色构成,均值按RGB三分量分别求得,由此可以更加突出图片的特征,更方便后面的计算。
此外,对了保证训练的效果,我们仍需对训练数据进行更为严苛的处理。在256x256大小的图像中,截取227x227大小的图像,在此之后对图片取镜像,这样就使得原始数据增加了(256-224)x(256-224)x2= 2048倍。最后对RGB空间做PCA,然后对主成分做(0,0.1)的高斯扰动,结果使错误率下降1%。对测试数据而言,抽取以图像4个角落的大小为224224的图像,中心的224224大小的图像以及它们的镜像翻转图像,这样便可以获得10张图像,我们便可以利用softmax进行预测,对所有预测取平均作为最终的分类结果。
ReLU激活函数
之前我们提到常用的非线性的激活函数是sigmoid,它能够把输入的连续实值全部确定在0和1之间。但是这带来一个问题,当一个负数的绝对值很大时,那么输出就是0;如果是绝对值非常大的正数,输出就是1。这就会出现饱和的现象,饱和现象中神经元的梯度会变得特别小,这样必然会使得网络的学习更加困难。此外,sigmoid的output的值并不是0为均值,因为这会导致上一层输出的非0均值信号会直接输入到后一层的神经元上。所以AlexNet模型提出了ReLU函数,公式:f(x)=max(0,x)f(x)=max(0,x)。

用ReLU代替了Sigmoid,发现使用 ReLU 得到的SGD的收敛速度会比 sigmoid快很多,这成了AlexNet模型的优势之一。
Dropout
AlexNet模型提出了一个有效的模型组合方式,相比于单模型,只需要多花费一倍的时间,这种方式就做Dropout。在整个神经网络中,随机选取一半的神经元将它们的输出变成0。这种方式使得网络关闭了部分神经元,减少了过拟合现象。同时训练的迭代次数也得以增加。当时一个GTX580 GPU只有3GB内存,这使得大规模的运算成为不可能。但是,随着硬件水平的发展,当时的GPU已经可以实现并行计算了,并行计算之后两块GPU可以互相通信传输数据,这样的方式充分利用了GPU资源,所以模型设计利用两个GPU并行运算,大大提高了运算效率。
模型分析

AlexNet模型共有8层结构,其中前5层为卷积层,其中前两个卷积层和第五个卷积层有池化层,其他卷积层没有。后面3层为全连接层,神经元约有六十五万个,所需要训练的参数约六千万个。
图片预处理过后,进过第一个卷积层C1之后,原始的图像也就变成了55x55的像素大小,此时一共有96个通道。模型分为上下两块是为了方便GPU运算,48作为通道数目更加适合GPU的并行运算。上图的模型里把48层直接变成了一个面,这使得模型看上去更像一个立方体,大小为55x55x48。在后面的第二个卷积层C2中,卷积核的尺寸为5x5x48,由此再次进行卷积运算。在C1,C2卷积层的卷积运算之后,都会有一个池化层,使得提取特征之后的特征图像素值大大减小,方便了运算,也使得特征更加明显。而第三层的卷积层C3又是更加特殊了。第三层卷积层做了通道的合并,将之前两个通道的数据再次合并起来,这是一种串接操作。第三层后,由于串接,通道数变成256。全卷积的卷积核尺寸也就变成了13×13×25613×13×256。一个有4096个这样尺寸的卷积核分别对输入图像做4096次的全卷积操作,最后的结果就是一个列向量,一共有4096个数。这也就是最后的输出,但是AlexNet最终是要分1000个类,所以通过第八层,也就是全连接的第三层,由此得到1000个类输出。
Alexnet网络中各个层发挥了不同的作用,ReLU,多个CPU是为了提高训练速度,重叠pool池化是为了提高精度,且不容易产生过拟合,局部归一化响应是为了提高精度,而数据增益与dropout是为了减少过拟合。
VGG net
在ILSVRC-2014中,牛津大学的视觉几何组提出的VGGNet模型在定位任务第一名和分类任务第一名[[i]]。如今在计算机视觉领域,卷积神经网络的良好效果深得广大开发者的喜欢,并且上文提到的AlexNet模型拥有更好的效果,所以广大从业者学习者试图将其改进以获得更好地效果。而后来很多人经过验证认为,AlexNet模型中所谓的局部归一化响应浪费了计算资源,但是对性能却没有很大的提升。VGG的实质是AlexNet结构的增强版,它侧重强调卷积神经网络设计中的深度。将卷积层的深度提升到了19层,并且在当年的ImageNet大赛中的定位问题中获得了第一名的好成绩。整个网络向人们证明了我们是可以用很小的卷积核取得很好地效果,前提是我们要把网络的层数加深,这也论证了我们要想提高整个神经网络的模型效果,一个较为有效的方法便是将它的深度加深,虽然计算量会大大提高,但是整个复杂度也上升了,更能解决复杂的问题。虽然VGG网络已经诞生好几年了,但是很多其他网络上效果并不是很好地情况下,VGG有时候还能够发挥它的优势,让人有意想不到的收获。

与AlexNet网络非常类似,VGG共有五个卷积层,并且每个卷积层之后都有一个池化层。当时在ImageNet大赛中,作者分别尝试了六种网络结构。这六种结构大致相同,只是层数不同,少则11层,多达19层。网络结构的输入是大小为224*224的RGB图像,最终将分类结果输出。当然,在输入网络时,图片要进行预处理。
VGG网络相比AlexNet网络,在网络的深度以及宽度上做了一定的拓展,具体的卷积运算还是与AlexNet网络类似。我们主要说明一下VGG网络所做的改进。第一点,由于很多研究者发现归一化层的效果并不是很好,而且占用了大量的计算资源,所以在VGG网络中作者取消了归一化层;第二点,VGG网络用了更小的3x3的卷积核,而两个连续的3x3的卷积核相当于5x5的感受野,由此类推,三个3x3的连续的卷积核也就相当于7x7的感受野。这样的变化使得参数量更小,节省了计算资源,将资源留给后面的更深层次的网络。第三点是VGG网络中的池化层特征池化核改为了2x2,而在AlexNet网络中池化核为3x3。这三点改进无疑是使得整个参数运算量下降,这样我们在有限的计算平台上能够获得更多的资源留给更深层的网络。由于层数较多,卷积核比较小,这样使得整个网络的特征提取效果很好。其实由于VGG的层数较多,所以计算量还是相当大的,卷积层比较多成了它最显著的特点。另外,VGG网络的拓展性能比较突出,结构比较简洁,所以它的迁移性能比较好,迁移到其他数据集的时候泛化性能好。到现在为止,VGG网络还经常被用来提出特征。所以当现在很多较新的模型效果不好时,使用VGG可能会解决这些问题。
GoogleNet
谷歌于2014年Imagenet挑战赛(ILSVRC14)凭借GoogleNet再次斩获第一名。这个通过增加了神经网络的深度和宽度获得了更好地效果,在此过程中保证了计算资源的不变。这个网络论证了加大深度,宽度以及训练数据的增加是现有深度学习获得更好效果的主要方式。但是增加尺寸可能会带来过拟合的问题,因为深度与宽度的加深必然会带来过量的参数。此外,增加网络尺寸也带来了对计算资源侵占过多的缺点。为了保证计算资源充分利用的前提下去提高整个模型的性能,作者使用了Inception模型,这个模型在下图中有展示,可以看出这个有点像金字塔的模型在宽度上使用并联的不同大小的卷积核,增加了卷积核的输出宽度。因为使用了较大尺度的卷积核增加了参数。使用了1*1的卷积核就是为了使得参数的数量最少。

Inception模块
上图表格为网络分析图,第一行为卷积层,输入为224×224×3 ,卷积核为7x7,步长为2,padding为3,输出的维度为112×112×64,这里面的7x7卷积使用了 7×1 然后 1×7 的方式,这样便有(7+7)×64×3=2,688个参数。第二行为池化层,卷积核为3×33×3,滑动步长为2,padding为 1 ,输出维度:56×56×64,计算方式:1/2×(112+2×1?3+1)=56。第三行,第四行与第一行,第二行类似。第 5 行 Inception mole中分为4条支线,输入均为上层产生的 28×28×192 结果:第 1 部分,1×1 卷积层,输出大小为28×28×64;第 2 部分,先1×1卷积层,输出大小为28×28×96,作为输入进行3×3卷积层,输出大小为28×28×128;第 3部分,先1×1卷积层,输出大小为28×28×32,作为输入进行3×3卷积层,输出大小为28×28×32;而第3 部分3×3的池化层,输出大小为输出大小为28×28×32。第5行的Inception mole会对上面是个结果的输出结果并联,由此增加网络宽度。
ResNet
2015年ImageNet大赛中,MSRA何凯明团队的ResialNetworks力压群雄,在ImageNet的诸多领域的比赛中上均获得了第一名的好成绩,而且这篇关于ResNet的论文Deep Resial Learning for Image Recognition也获得了CVPR2016的最佳论文,实至而名归。
上文介绍了的VGG以及GoogleNet都是增加了卷积神经网络的深度来获得更好效果,也让人们明白了网络的深度与广度决定了训练的效果。但是,与此同时,宽度与深度加深的同时,效果实际会慢慢变差。也就是说模型的层次加深,错误率提高了。模型的深度加深,以一定的错误率来换取学习能力的增强。但是深层的神经网络模型牺牲了大量的计算资源,学习能力提高的同时不应当产生比浅层神经网络更高的错误率。这个现象的产生主要是因为随着神经网络的层数增加,梯度消失的现象就越来越明显。所以为了解决这个问题,作者提出了一个深度残差网络的结构Resial:

上图就是残差网络的基本结构,可以看出其实是增加了一个恒等映射,将原本的变换函数H(x)转换成了F(x)+x。示意图中可以很明显看出来整个网络的变化,这样网络不再是简单的堆叠结构,这样的话便很好地解决了由于网络层数增加而带来的梯度原来越不明显的问题。所以这时候网络可以做得很深,到目前为止,网络的层数都可以上千层,而能够保证很好地效果。并且,这样的简单叠加并没有给网络增加额外的参数跟计算量,同时也提高了网络训练的效果与效率。
在比赛中,为了证明自己观点是正确的,作者控制变量地设计几个实验。首先作者构建了两个plain网络,这两个网络分别为18层跟34层,随后作者又设计了两个残差网络,层数也是分别为18层和34层。然后对这四个模型进行控制变量的实验观察数据量的变化。下图便是实验结果。实验中,在plain网络上观测到明显的退化现象。实验结果也表明,在残差网络上,34层的效果明显要好于18层的效果,足以证明残差网络随着层数增加性能也是增加的。不仅如此,残差网络的在更深层的结构上收敛性能也有明显的提升,整个实验大为成功。

除此之外,作者还做了关于shortcut方式的实验,如果残差网络模块的输入输出维度不一致,我们如果要使维度统一,必须要对维数较少的进行増维。而增维的最好效果是用0来填充。不过实验数据显示三者差距很小,所以线性投影并不是特别需要。使用0来填充维度同时也保证了模型的复杂度控制在比较低的情况下。
随着实验的深入,作者又提出了更深的残差模块。这种模型减少了各个层的参数量,将资源留给更深层数的模型,在保证复杂度很低的情况下,模型也没有出现梯度消失很明显的情况,因此目前模型最高可达1202层,错误率仍然控制得很低。但是层数如此之多也带来了过拟合的现象,不过诸多研究者仍在改进之中,毕竟此时的ResNet已经相对于其他模型在性能上遥遥领先了。
残差网络的精髓便是shortcut。从一个角度来看,也可以解读为多种路径组合的一个网络。如下图:

ResNet可以做到很深,但是从上图中可以体会到,当网络很深,也就是层数很多时,数据传输的路径其实相对比较固定。我们似乎也可以将其理解为一个多人投票系统,大多数梯度都分布在论文中所谓的effective path上。
DenseNet
在Resnet模型之后,有人试图对ResNet模型进行改进,由此便诞生了ResNeXt模型。

这是对上面介绍的ResNet模型结合了GoogleNet中的inception模块思想,相比于Resnet来说更加有效。随后,诞生了DenseNet模型,它直接将所有的模块连接起来,整个模型更加简单粗暴。稠密相连成了它的主要特点。

我们将DenseNet与ResNet相比较:

从上图中可以看出,相比于ResNet,DenseNet参数量明显减少很多,效果也更加优越,只是DenseNet需要消耗更多的内存。
总结
上面介绍了卷积神经网络发展史上比较著名的一些模型,这些模型非常经典,也各有优势。在算力不断增强的现在,各种新的网络训练的效率以及效果也在逐渐提高。从收敛速度上看,VGG>Inception>DenseNet>ResNet,从泛化能力来看,Inception>DenseNet=ResNet>VGG,从运算量看来,Inception<DenseNet< ResNet<VGG,从内存开销来看,Inception<ResNet< DenseNet<VGG。在本次研究中,我们对各个模型均进行了分析,但从效果来看,ResNet效果是最好的,优于Inception,优于VGG,所以我们第四章实验中主要采用谷歌的Inception模型,也就是GoogleNet。

❸ bp神经网络算法介绍 bp神经网络算法简介

1、BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首差笑的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。虚做含它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。

2、BP神经网络算法是在BP神经网络现有算法的基础上提出的,是通过任意选定一组权值,将给定的目标输出直接作为线性方程的代数和来建立线性方胡改程组,解得待求权,不存在传统方法的局部极小及收敛速度慢的问题,且更易理解。

❹ 神经网络算法的三大类分别是

神经网络算法的三大类分别是:

1、前馈神经网络:

这是实际应用中最常见的神经网络类型。第一层是输入,最后一层是输出。如果有多个隐藏层,我们称之为“深度”神经网络。他们计算出一系列改变样本相似性的变换。各层神经元的活动是前一层活动的非线性函数。

2、循环网络:

循环网络在他们的连接图中定向了循环,这意味着你可以按照箭头回到你开始的地方。他们可以有复杂的动态,使其很难训练。他们更具有生物真实性。

循环网络的目的是用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。

循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。

3、对称连接网络:

对称连接网络有点像循环网络,但是单元之间的连接是对称的(它们在两个方向上权重相同)。比起循环网络,对称连接网络更容易分析。

这个网络中有更多的限制,因为它们遵守能量函数定律。没有隐藏单元的对称连接网络被称为“Hopfield 网络”。有隐藏单元的对称连接的网络被称为玻尔兹曼机。

(4)神经网络模型的算力扩展阅读:

应用及发展:

心理学家和认知科学家研究神经网络的目的在于探索人脑加工、储存和搜索信息的机制,弄清人脑功能的机理,建立人类认知过程的微结构理论。

生物学、医学、脑科学专家试图通过神经网络的研究推动脑科学向定量、精确和理论化体系发展,同时也寄希望于临床医学的新突破;信息处理和计算机科学家研究这一问题的目的在于寻求新的途径以解决不能解决或解决起来有极大困难的大量问题,构造更加逼近人脑功能的新一代计算机。

❺ 手机上运行的深度神经网络模型-MobileNet

文章引用自《 从MobileNet看轻量级神经网络的发展 》,详情请点击原文观看

前  言 

随着深度学习的火热,计算机视觉领域内的卷积神经网络模型也层出不穷。从1998年的LeNet,到2012年引爆深度学习热潮的AlexNet,再到后来2014年的VGG,2015年的ResNet,深度学习网络模型在图像处理中应用的效果越来越好。神经网络体积越来越大,结构越来越复杂,预测和训练需要的硬件资源也逐步增多,往往只能在高算力的服务器中运行深度学习神经网络模型。移动设备因硬件资源和算力的限制,很难运行复杂的深度学习网络模型。

深度学习领域内也在努力促使神经网络向小型化发展。在保证模型准确率的同时体积更小,速度更快。到了2016年直至现在,业内提出了SqueezeNet、ShuffleNet、NasNet、MnasNet以及MobileNet等轻量级网络模型。这些模型使移动终端、嵌入式设备运行神经网络模型成为可能。而MobileNet在轻量级神经网络中较具代表性。

谷歌在2019年5月份推出了最新的MobileNetV3。新版MobileNet使用了更多新特性,使得MobileNet非常具有研究和分析意义,本文将对MobileNet进行详细解析。

MobileNet的优势

MobileNet网络拥有更小的体积,更少的计算量,更高的精度。在轻量级神经网络中拥有极大的优势。

1

更小的体积

MobileNet相比经典的大型网络,参数量明显更少,参数量越少模型体积越小。

2

更少的计算量

MobileNet优化网络结构使模型计算量成倍下降。

3

更高的准确率

MobileNet凭借网络结构优化,在更少的参数及更少的计算量情况下,网络精度反而超过了部分大型神经网络。在最新的MobileNetV3-Large中,实现ImageNet数据集Top1准确率达到75.2%。

4

更快的速度

使用Google Pixel-1手机测试,MobileNet各版本都能保持运行时间在120ms以下,最新版MobileNetV3-Large运行时间达到66ms,参数量和计算量更低的MobileNetV3-Small更是能达到22ms;GoogleNet运行速度约为250ms,而VGG-16由于一次性需要加载至内存的空间已超过500MB,手机系统会报内存溢出错误导致无法运行。

5

多种应用场景

MobileNet可以在移动终端实现众多的应用,包括目标检测,目标分类,人脸属性识别和人脸识别等。

MobileNet各版本介绍

1

MobileNetV1网络结构

整个网络不算平均池化层与softmax层,共28层;

在整个网络结构中步长为2的卷积较有特点,卷积的同时充当下采样的功能;

第一层之后的26层都为深度可分离卷积的重复卷积操作;

每一个卷积层(含常规卷积、深度卷积、逐点卷积)之后都紧跟着批规范化和ReLU激活函数;

最后一层全连接层不使用激活函数。

2

MobileNetV2网络结构

MobileNetV2中主要引入线性瓶颈结构和反向残差结构。

MobileNetV2网络模型中有共有17个Bottleneck层(每个Bottleneck包含两个逐点卷积层和一个深度卷积层),一个标准卷积层(conv),两个逐点卷积层(pw conv),共计有54层可训练参数层。MobileNetV2中使用线性瓶颈(Linear Bottleneck)和反向残差(Inverted Resials)结构优化了网络,使得网络层次更深了,但是模型体积更小,速度更快了。

3

MobileNetV3网络结构

MobileNetV3分为Large和Small两个版本,Large版本适用于计算和存储性能较高的平台,Small版本适用于硬件性能较低的平台。

Large版本共有15个bottleneck层,一个标准卷积层,三个逐点卷积层。

Small版本共有12个bottleneck层,一个标准卷积层,两个逐点卷积层。

MobileNetV3中引入了5×5大小的深度卷积代替部分3×3的深度卷积。引入Squeeze-and-excitation(SE)模块和h-swish(HS)激活函数以提高模型精度。结尾两层逐点卷积不使用批规范化(Batch Norm),MobileNetV3结构图中使用NBN标识。

(图片来源https://arxiv.org/pdf/1905.02244.pdf)

网络结构上相对于MobileNetV2的结尾部分做了优化,去除三个高阶层,如上图所示。去除后减少了计算量和参数量,但是模型的精度并没有损失。

值得一提的是,不论是Large还是Small版本,都是使用神经架构搜索(NAS)技术生成的网络结构。

4

MobileNet各版本特性

MobileNet实现计算量减小、参数量减少的同时保证了较高的准确率,这和其拥有的特性息息相关:

MobileNetV1提出的特性

MobileNetV2提出的特性

MobileNetV3提出的特性

MobileNet各个版本拥有的特性汇总

下文将对上表中的各个特性详细阐述。

MobileNet的特性详解

1

深度可分离卷积

从MobileNetV1开始,到V2、V3的线性瓶颈结构都大量使用了深度可分离卷积。

深度可分离卷积(Depthwise Separable Convolution)是一种卷积结构。它是由一层深度卷积(Depthwise convolution)与一层逐点卷积(Pointwise Convolution)组合而成的,每一层卷积之后都紧跟着批规范化和ReLU激活函数。跟标准卷积的区别就是精度基本不变的情况下,参数与计算量都明显减少。

深度卷积

深度卷积(Depthwise convolution, DW)不同于常规卷积操作,深度卷积中一个卷积核只有一维,负责一个通道,一个通道只被一个卷积核卷积;常规卷积每个卷积核的维度与输入维度相同,每个通道单独做卷积运算后相加。

以一张5x5x3(长和宽为5,RGB3通道)的彩色图片举例。每层深度卷积卷积核的数量与上一层的通道数相同(通道和卷积核一一对应)。设padding=1,stride=1,一个三通道的图像经过运算后生成了3个特征图,如下图所示:

深度卷积完成后的输出特征图通道数与输入层的通道数相同,无法扩展通道数。而且这种运算对输入层的每个通道独立进行卷积运算,没有有效的利用不同通道在相同空间位置上的特征信息。因此需要逐点卷积来将生成的特征图进行组合生成新的特征图。

逐点卷积

逐点卷积(Pointwise Convolution, PW)的运算与标准卷积运算非常相似。

逐点卷积卷积核大小为1×1xM(M为输入数据的维度),每次卷积一个像素的区域。逐点卷积运算会将上一层的特征图在深度方向上进行加权组合,生成新的特征图,新的特征图的大小与输入数据大小一致;然后组合各通道的特征图,以较少的计算量进行降维或升维操作(改变输出数据的维度)。

以一张5x5x3(长和宽为5,RGB3通道)的彩色图片举例,使用4个1x1x3的逐点卷积核进行卷积,逐点卷积运算后生成了4个特征图。这个例子是使用逐点卷积进行升维的操作,特征图从5x5x3 升维到5x5x4。如下图所示:

深度可分离卷积结构解析

将深度卷积和逐点卷积组成深度可分离卷积后的示意图,如下图所示:

首先进行深度卷积操作,得出的特征图各通道之间是不关联的。接着进行逐点卷积把深度卷积输出的特征图各通道关联起来。

深度可分离卷积使用了更小的空间代价(参数减少)和更少的时间代价(计算量更少)实现了标准卷积层一样的效果(提取特征)。

一般的设Df为输入特征图边长,Dk为卷积核边长,特征图和卷积核均为长宽一致,输入通道数为M,输出通道数为N,则:

标准卷积计算量为:Df×Df×Dk×Dk×M×N

深度卷积的计算量为:Df×Df×Dk×Dk×M

逐点卷积的计算量为:Df×Df×M×N

上图所示实现输入特征图大小为5×5×3,输出特成图大小为5×5×4,设padding=1,stride=1,深度卷积卷积核大小为3×3,标准卷积也使用3×3尺寸卷积核。实现相同的卷积效果,参数量(不包含偏置)与计算量对比如下表所示:

深度可分离卷积的演变

事实上深度可分离卷积不是在MobileNetV1中第一次提出的,而是在2016年由谷歌的Xception网络结构中提出的。MobileNetV1在Xception的基础上,对深度可分离卷积进行了改进,做到了计算量与参数量的下降:

假定M为输入层的通道数,N为输出层的通道数。

Xcenption的深度可分离卷积是由输入参数开始,使用1x1xMxN卷积将输入层的通道数转换为目标通道数,再通过3x3x1卷积核对每个通道进行卷积,每次卷积过后使用ReLU进行激活。

MobileNetV1的深度可分离卷积则是先使用3x3x1xM对输入层的每个通道分别卷积,之后通过1x1xMxN将输入层通道数转换为输出层通道数,每次卷积过后做一次批规范化操作,再使用ReLU进行激活。

这里我们使用MobileNetV1网络结构的第一个深度可分离卷积层来举例,输入层维度为112x112x32,输出层维度为112x112x64,Xception与MobileNet的深度可分离卷积的计算量与参数个数对比如下表:

由此可知将PW卷积与DW卷积的顺序调整后,优化了网络的空间复杂度和时间复杂度。

2

宽度因子

MobileNet本身的网络结构已经比较小并且执行延迟较低,但为了适配更定制化的场景,MobileNet提供了称为宽度因子(Width Multiplier)的超参数给我们调整。宽度因子在MobileNetV1、V2、V3都可以运用。

通过宽度因子,可以调整神经网络中间产生的特征的大小,调整的是特征数据通道数大小,从而调整了运算量的大小。

宽度因子简单来说就是新网络中每一个模块要使用的卷积核数量相较于标准的MobileNet比例。对于深度卷积结合1x1方式的卷积核,计算量为:

算式中α即为宽度因子,α常用的配置为1,0.75,0.5,0.25;当α等于1时就是标准的MobileNet。通过参数α可以非常有效的将计算量和参数数量约减到α的平方倍。

下图为MobileNetV1使用不同α系数进行网络参数的调整时,在ImageNet上的准确率、计算量、参数数量之间的关系(每一个项中最前面的数字表示α的取值)。

(数据来源https://arxiv.org/pdf/1704.04861.pdf)

可以看到当输入分辨率固定为224x224时,随着宽度因子的减少,模型的计算量和参数越来越小。从上表可以看到, 0.25 MobileNet的正确率比标准版1.0MobileNet低20%,但计算量和参数量几乎只有标准版1.0MobileNet计算量、参数量的10%!对于计算资源和存储资源都十分紧张的移动端平台,可以通过α宽度因子调节网络的餐数量是非常实用的,在真正使用时我们可以按需调整α宽度因子达到准确率与性能的平衡。

3

分辨率因子

MobileNet还提供了另一个超参数分辨率因子(Resolution Multiplier)供我们自定义网络结构,分辨率因子同样在MobileNetV1、V2、V3都可以运用。

分辨率因子一般用β来指代,β的取值范围在(0,1]之间,是作用于每一个模块输入尺寸的约减因子,简单来说就是将输入数据以及由此在每一个模块产生的特征图都变小了,结合宽度因子α,深度卷积结合1x1方式的卷积核计算量为:

下图为MobileNetV1使用不同的β系数作用于标准MobileNet时,在ImageNet上对精度和计算量的影响(α固定1.0)

(数据来源https://arxiv.org/pdf/1704.04861.pdf)

上图中的 224、192、160、128 对应的分辨率因子分别为 1、 6/7、5/7、4/7。

β=1时,输入图片的分辨率为224x224,卷积后的图像大小变化为: 224x224 、112x112、56x56、28x28、14x14、7x7。

β= 6/7时,输入图片的分辨率为192x192,卷积后各层特征图像大小变化为:192x192、96x96、48x48、24x24、12x12、6x6。

卷积特征图像的大小变化不会引起参数量的变化,只改变模型M-Adds计算量。上图中 224分辨率模型测试ImageNet数据集准确率为70.6%,192分辨率的模型准确率为69.1%,但是M-Adds计算量减少了151M,对移动平台计算资源紧张的情况下,同样可以通过β分辨率因子调节网络输入特征图的分辨率,做模型精度与计算量的取舍。

4

规范化

深度学习中的规范化操作(Normalization),有助于加快基于梯度下降法或随机梯度下降法模型的收敛速度,提升模型的精度,规范化的参数能够提升模型泛化能力,提高模型的可压缩性。

按照规范化操作涉及对象的不同可以分为两大类,一类是对输入值进行规范化操作,比如批规范化(Batch Normalization)、层规范化(Layer Normalization)、实例规范化(Instance Normalization)、组规范化(Group Normalization)方法都属于这一类。另外一类是对神经网络中参数进行规范化操作,比如使用L0,L1范数。

批规范化

批规范化(Batch Normalization)几乎存在于MobileNetV1、V2、V3的每个卷积层的后面,目的是加快训练收敛速度,提升准确率。

批规范化是一种对数值的特殊函数变换方法,也就是说假设原始的某个数值是 x,套上一个起到规范化作用的函数,对规范化之前的数值 x 进行转换,形成一个规范化后的数值,即:

所谓规范化,是希望转换后的数值满足一定的特性,至于对数值具体如何变换,跟规范化目标有关,不同的规范化目标导致具体方法中函数所采用的形式不同。通过自适应的重新参数化的方法,克服神经网络层数加深导致模型难以训练的问题。

参数规范化

参数规范化(Weight Normalization, WN)是规范化的一种, 通过人为的设定稀疏算法,去除模型中多余的参数(置为0)使得模型参数稀疏化,可以通过L1范式实现。

参数规范化是防止模型过分拟合训练数据。当训练一批样本的时候,随着训练的推移模型会越来越趋向于拟合样本数据。因为参数太多,会导致模型复杂度上升,容易过拟合。

需要保证模型"简单"的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型"简单"就是通过规则函数来实现的。

如上图所示,左侧分类明显的是欠拟合,模型并没有能够拟合数据。中间图示为合适的拟合,右边图示是过拟合,模型在训练样本中拟合度是很好的,但是却违背了特征分类规律,在新的测试样本中表现糟糕,影响模型的泛化能力。显然右侧模型在训练是受到额外参数干扰。参数规则化能够使参数稀疏,减少额外参数的干扰,提高泛化能力。

模型拥有稀疏的参数(模型中有大量参数为0),也有利于通过压缩算法压缩模型的大小。

5

线性瓶颈

线性瓶颈英文为Linear Bottleneck,是从Bottleneck结构演变而来的,被用于MobileNetV2与V3。

Bottleneck结构首次被提出是在ResNet网络中。该结构第一层使用逐点卷积,第二层使用3×3大小卷积核进行深度卷积,第三层再使用逐点卷积。MobileNet中的瓶颈结构最后一层逐点卷积使用的激活函数是Linear,所以称其为线性瓶颈结构(Linear Bottleneck)。线性瓶颈结构有两种,第一种是步长为1时使用残差结构,第二种是步长为2时不使用残差结构。

其中输入通道数为M,扩大倍数系数为T。T的值为大于0 的正数,当 0<T<1时,第一层逐点卷积起到的作用是降维。当 1<T时,第一层逐点卷积起到的作用是升维。

第二层为深度卷积,输入通道数 = 输出通道数 = M×T。

第三层为逐点卷积,作用是关联深度卷积后的特征图并输出指定通道数N。

线性瓶颈结构相对标准卷积能够减少参数数量,减少卷积计算量。从空间和时间上优化了网络。

6

反向残差

MobileNetV2中以ResNet的残差(Resials)结构为基础进行优化,提出了反向残差(Inverted Resials)的概念,之后也同样运用与MobileNetV3中。

ResNet中提出的残差结构解决训练中随着网络深度增加而出现的梯度消失问题,使反向传播过程中深度网络的浅层网络也能得到梯度,使浅层网络的参数也可训练,从而增加特征表达能力。

ResNet的残差结构实际是在线性瓶颈结构的基础上增加残差传播。如下图所示:

ResNet中的残差结构使用第一层逐点卷积降维,后使用深度卷积,再使用逐点卷积升维。

MobileNetV2版本中的残差结构使用第一层逐点卷积升维并使用Relu6激活函数代替Relu,之后使用深度卷积,同样使用Relu6激活函数,再使用逐点卷积降维,降维后使用Linear激活函数。这样的卷积操作方式更有利于移动端使用(有利于减少参数与M-Adds计算量),因维度升降方式与ResNet中的残差结构刚好相反,MobileNetV2将其称之为反向残差(Inverted Resials)。

7

5x5 的深度卷积

MobileNetV3中,深度卷积大量使用5x5大小的卷积核。这是因为使用神经结构搜索(NAS)技术计算出的MobileNetV3网络结构的过程中,发现了在深度卷积中使用5x5大小的卷积核比使用3x3大小的卷积核效果更好,准确率更高。关于NAS技术将会在下文的单独章节中做介绍。

8

Squeeze-and-excitation 模块

Squeeze-and-Excitation模块(简称SE模块)的首次提出是在2017年的Squeeze-and-Excitation Networks(SENet)网络结构中,在MNasNet中进行了改进,之后在MobileNetV3中大量使用。研究人员期望通过精确的建模卷积特征各个通道之间的作用关系来改善网络模型的表达能力。为了达到这个期望,提出了一种能够让网络模型对特征进行校准的机制,使得有效的权重大,无效或效果小的权重小的效果,这就是SE模块。

(图片来源https://arxiv.org/pdf/1905.02244.pdf)

如上图,MobileNetV3的SE模块被运用在线性瓶颈结构最后一层上,代替V2中最后的逐点卷积,改为先进行SE操作再逐点卷积。这样保持了网络结构每层的输入和输出,仅在中间做处理,类似于软件开发中的钩子。

SE模块结构详解

下图表示一个SE 模块。主要包含Squeeze和Excitation两部分。W,H表示特征图宽,高。C表示通道数,输入特征图大小为W×H×C。

压缩(Squeeze)

第一步是压缩(Squeeze)操作,如下图所示

这个操作就是一个全局平均池化(global average pooling)。经过压缩操作后特征图被压缩为1×1×C向量。

激励(Excitation)

接下来就是激励(Excitation)操作,如下图所示

由两个全连接层组成,其中SERatio是一个缩放参数,这个参数的目的是为了减少通道个数从而降低计算量。

第一个全连接层有C*SERatio个神经元,输入为1×1×C,输出1×1×C×SERadio。

第二个全连接层有C个神经元,输入为1×1×C×SERadio,输出为1×1×C。

scale操作

最后是scale操作,在得到1×1×C向量之后,就可以对原来的特征图进行scale操作了。很简单,就是通道权重相乘,原有特征向量为W×H×C,将SE模块计算出来的各通道权重值分别和原特征图对应通道的二维矩阵相乘,得出的结果输出。

这里我们可以得出SE模块的属性:

参数量 = 2×C×C×SERatio

计算量 = 2×C×C×SERatio

总体来讲SE模块会增加网络的总参数量,总计算量,因为使用的是全连接层计算量相比卷积层并不大,但是参数量会有明显上升,所以MobileNetV3-Large中的总参数量比MobileNetV2多了2M。

MobileNetV3中的SE模块

SE模块的使用是很灵活的,可以在已有网络上添加而不打乱网络原有的主体结构。

ResNet中添加SE模块形成SE-ResNet网络,SE模块是在bottleneck结构之后加入的,如下图左边所示。

MobileNetV3版本中SE模块加在了bottleneck结构的内部,在深度卷积后增加SE块,scale操作后再做逐点卷积,如上图右边所示。MobileNetV3版本的SERadio系数为0.25。使用SE模块后的MobileNetV3的参数量相比MobileNetV2多了约2M,达到5.4M,但是MobileNetV3的精度得到了很大的提升,在图像分类和目标检测中准确率都有明显提升。

9

h-swish激活函数

MobileNetV3中发现swish激活函数能够有效提高网络的精度,但是swish的计算量太大了,并不适合轻量级神经网络。MobileNetV3找到了类似swish激活函数但是计算量却少很多的替代激活函数h-swish(hard version of swish)如下所示:

sigmoid、h-sigmoid、swish、h-swish激活函数的比较:

(图片来源https://arxiv.org/pdf/1905.02244.pdf)

这种非线性在保持精度的情况下带来了很多优势,首先ReLU6在众多软硬件框架中都可以实现,其次量化时避免了数值精度的损失,运行快。这一非线性改变将模型的延时增加了15%。但它带来的网络效应对于精度和延时具有正向促进,剩下的开销可以通过融合非线性与先前层来消除。

❻ 给人工智能提供算力的芯片有哪些类型

给人工智能提供算力的芯片类型有gpu、fpga和ASIC等。

GPU,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器,与CU类似,只不过GPU是专为执行复杂的数学和几何计算而设计的,这些计算是图形渲染所必需的。

FPGA能完成任何数字器件的功能的芯片,甚至是高性能CPU都可以用FPGA来实现。 Intel在2015年以161亿美元收购了FPGA龙 Alter头,其目的之一也是看中FPGA的专用计算能力在未来人工智能领域的发展。

ASIC是指应特定用户要求或特定电子系统的需要而设计、制造的集成电路。严格意义上来讲,ASIC是一种专用芯片,与传统的通用芯片有一定的差异。是为了某种特定的需求而专门定制的芯片。谷歌最近曝光的专用于人工智能深度学习计算的TPU其实也是一款ASIC。

(6)神经网络模型的算力扩展阅读:

芯片又叫集成电路,按照功能不同可分为很多种,有负责电源电压输出控制的,有负责音频视频处理的,还有负责复杂运算处理的。算法必须借助芯片才能够运行,而由于各个芯片在不同场景的计算能力不同,算法的处理速度、能耗也就不同在人工智能市场高速发展的今天,人们都在寻找更能让深度学习算法更快速、更低能耗执行的芯片。

❼ 什么是用来评估神经网络的计算模型

损失函数是用来评估神经网络的计算模型。

你自行搭建的神经网络模型,权值和阈值仍然是要通过训练得到的。初始化后,将BP算法加到这个模型上,不断调整权值。可以先用神经网络工具箱训练好一个网络,再将权值和阈值导出。 net.IW{1,1}=W1; net.LW{2,1}=W2; net.b{1}=B1; net.b{2}=B2; 注意要反过来,如果是导出的话。

神经网络的研究内容相当广泛,反映了多学科交叉技术领域的特点.主要的研究工作集中在以下几个方面:

生物原型
从生理学、心理学、解剖学、脑科学、病理学等方面研究神经细胞、神经网络、神经系统的生物原型结构及其功能机理.

❽ 神经网络算法原理

4.2.1 概述

人工神经网络的研究与计算机的研究几乎是同步发展的。1943年心理学家McCulloch和数学家Pitts合作提出了形式神经元的数学模型,20世纪50年代末,Rosenblatt提出了感知器模型,1982年,Hopfiled引入了能量函数的概念提出了神经网络的一种数学模型,1986年,Rumelhart及LeCun等学者提出了多层感知器的反向传播算法等。

神经网络技术在众多研究者的努力下,理论上日趋完善,算法种类不断增加。目前,有关神经网络的理论研究成果很多,出版了不少有关基础理论的著作,并且现在仍是全球非线性科学研究的热点之一。

神经网络是一种通过模拟人的大脑神经结构去实现人脑智能活动功能的信息处理系统,它具有人脑的基本功能,但又不是人脑的真实写照。它是人脑的一种抽象、简化和模拟模型,故称之为人工神经网络(边肇祺,2000)。

人工神经元是神经网络的节点,是神经网络的最重要组成部分之一。目前,有关神经元的模型种类繁多,最常用最简单的模型是由阈值函数、Sigmoid 函数构成的模型(图 4-3)。

储层特征研究与预测

以上算法是对每个样本作权值修正,也可以对各个样本计算δj后求和,按总误差修正权值。

❾ 神经网络算法是什么

神经网络算法是指逻辑性的思维是指根据逻辑规则进行推理的过程;神经网络的研究内容相当广泛,反映了多学科交叉技术领域的特点,主要的研究工敬弯作集中在生物原型研究、建立理论模型、网络模型与算法研亮敬闷究、人工神经网络应用系统等方面;生物原型研究:从生理学、心理学、解剖学、脑科学、病理学等生物科学方面研究神经细胞、神经网络、神经系统的生物原型结构及其功能机理;建立理论模型:根据生物原型的研究,建立神经元、神经网络的理论模型;网络模型与算法研究:在理论模型研究的基础上构作具体的神经网络模型,以实现计算机模拟或准备制作硬件;人稿烂

❿ 神经网络——BP算法

对于初学者来说,了解了一个算法的重要意义,往往会引起他对算法本身的重视。BP(Back Propagation,后向传播)算陆袭法,具有非凡的历史意义和重大的现实意义。

1969年,作为人工神经网络创始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一书,论证了简单的线性感知器功能有限,不能解决如“异或”(XOR )这样的基本问题,而且对多层网络也持悲观态度。这些论点给神经网络研究以沉重的打击,很多科学家纷纷离开这一领域,神经网络的研究走向长达10年的低潮时期。[1]

1974年哈佛大学的Paul Werbos发明BP算法时,正值神经外网络低潮期,并未受到应有的重视。[2]

1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商这个NP完全问题的求解上获得当时最好成绩,引起了轰动[2]。然而,Hopfield的研究成果仍未能指出明斯基等人论点的错误所在,要推动神培判经网络研究的全面开展必须直接解除对感知器——多层网络算法的疑虑。[1]

真正打破明斯基冰封魔咒的是,David Rumelhart等学者出版的《平行分布处理:认知的微观结构探索》一书。书中完整地提出了BP算法,系统地解决了多层网络中隐单元连接权的学习问题,并在数学上给出了完整的推导。这是神经网络发展史上的里程碑,BP算法迅速走红,掀起了神经网络的第二次高潮。[1,2]

因此,BP算法的历史意义:明确地否定了明斯基等人的错误观点,对神经网络第二次高潮具有决定性意义。

这一点是说BP算法在神经网络领域中的地位和意义。

BP算法是迄今最成功的神经网络学习算法,现实任务中使用神经网络时,大多是在使用BP算法进行训练[2],包括最近炙手可热的深度学习概念下的卷积神经网络(CNNs)。

BP神经网络是这样一种神经网络模型,它是由一个输入层、一个输出层和一个或多个隐层构成,它的激活函数采用sigmoid函数,采用BP算法训练的多层前馈神经网络。

BP算法全称叫作误差反向传播(error Back Propagation,或早中兄者也叫作误差逆传播)算法。其算法基本思想为:在2.1所述的前馈网络中,输入信号经输入层输入,通过隐层计算由输出层输出,输出值与标记值比较,若有误差,将误差反向由输出层向输入层传播,在这个过程中,利用梯度下降算法对神经元权值进行调整。

BP算法中核心的数学工具就是微积分的 链式求导法则 。

BP算法的缺点,首当其冲就是局部极小值问题。

BP算法本质上是梯度下降,而它所要优化的目标函数又非常复杂,这使得BP算法效率低下。

[1]、《BP算法的哲学思考》,成素梅、郝中华著

[2]、《机器学习》,周志华著

[3]、 Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

2016-05-13 第一次发布

2016-06-04 较大幅度修改,完善推导过程,修改文章名

2016-07-23 修改了公式推导中的一个错误,修改了一个表述错误

阅读全文

与神经网络模型的算力相关的资料

热点内容
建行内测数字货币 浏览:977
正宇私募虚拟货币OBB 浏览:206
btctoppps 浏览:905
炒比特币短线经验 浏览:701
btc进入中国价格 浏览:514
数字货币被骗的钱能追回来么 浏览:415
德国为什么要支持比特币 浏览:314
调侃数字货币 浏览:403
熊猫矿机算力高 浏览:80
什么叫通过虚拟货币的打赏 浏览:310
以太坊能否被复制 浏览:894
心理区块链 浏览:958
哪里免费送btc 浏览:425
btccash算力 浏览:148
你认为虚拟货币算不算货币 浏览:557
数字货币菲亚特 浏览:495
暴风宣布进军区块链 浏览:620
区块链技术定义研究生 浏览:752
显卡功耗高算力低 浏览:168
虚拟货币都是庞氏骗局 浏览:778