pg下载麻将胡了 技术向:一文读懂卷积神经网络
今年七月起,便一直在实验室负责卷积神经网络Convolutional Neural Networkpg下载麻将胡了A.旗舰厅进体育.cc,CNN,时期内配置并使用过theano,还使用过cuda-convnet以及cuda-convnet2。为增进CNN的理解与运用,特写此博文,用以其人交流,彼此互有增益。正文之前,先说几点自身对于CNN的感触。明确一点,那就是,Deep Learning是所有深度学习算法的统称,而CNN是深度学习算法于图像处理领域的一项应用。
首先,在接触深度学习以及卷积神经网络之前,一直都认为,它们是极为了不起的知识内容,一直都觉得,它们能够处理诸多问题,然而在学习过后,才明白,它们其实和诸如支持向量机等其他机器学习算法一样,依旧能够把它当作一个分类装置,依旧能够像运用一个黑箱那般来运用它。
第二点,Deep Learning具备强大之处,在于能够借助网络中间某一层的输出作为数据的别样表达,进而可将其视作经由网络学习而得的特征,基于此特征,能够开展进一步的相似度比较等。
第三点,Deep Learning算法能够有效,其关键实际上是大规模的数据,这一点的原因在于,每个DL都存在数量众多的参数,少量的数据没办法将参数训练到充足的程度。
接下来话不多说,直接奔入主题开始CNN之旅。
对于卷积神经网络的介绍,其英文名称是Convolutional Neural Networks,简称为CNN。
近年发展起来的,能引起广泛重视的一种高效识别方法是卷积神经网络。20世纪60年代,Hubel和Wiesel针对猫脑皮层中用于局部敏感和方向选择的神经元展开研究,他们发现其独特的网络结构。该独特网络结构可有效地将反馈神经网络的复杂性降低,随后进而提出了卷积神经网络,也就是Convolutional Neural Networks,简称为CNN。此时此刻,CNN已然成了诸多科学范畴里的研究热门之一,尤其是在模式分类范畴,鉴于此网络规避了针对图像的繁杂前期预处理,能够径直输入原始图像,所以获得了更为广泛的运用。K.Fukushima于1980年所提出的新识别机为卷积神经网络的首个实现网络。而后,更多的科研工作者针对此网络做出了改进。其间,具备代表性的研究成果乃是Alexander与Taylor所提出的“改进认知机”,此方法将各类改进方法的优势予以综合,并且规避了耗费时间的误差反向传播。
一般来讲,CNN的基本架构涵盖两层,其中一层是特征提取层,每个神经元的输入跟前面一层的局部接受域相衔接,并萃取该局部的特征。一旦这个局部特征被提取出来,它跟其他特征之间的位置关系也就随之被确定下来;另一层是特征映射层,网络的每个计算层由多个特征映射构成,每个特征映射是一个平面,平面上所有神经元的权值是相等的。特征映射结构选用影响函数核小的sigmoid函数当作为卷积网络的激活函数,致使特征映射具备位移不变性。并且,鉴于一个映射面上的神经元共同拥有权值,所以使得网络自由参数的数量得以减少。卷积神经网络里的每一个卷积层,紧接着是一个用于求取局部平均以及二次提取的计算层,这种独特的两次特征提取架构,降低了特征分辨率。
二维图形是CNN主要用于识别的对象,其具有位移、缩放以及其他形式的扭曲不变性。CNN的特征检测层借助训练数据来学习,故而在运用CNN时,避免了显式的特征抽取,而是从训练数据里展开隐式学习。而且因为同一特征映射面上的神经元权值是相同的,所以网络能够并行学习,这同样是卷积网络相较于神经元彼此相连网络的一个显著优势。卷积神经网络,有着局部权值共享的特殊结构,在语音识别方面,有着独特的优越性,在图像处理方面,也有着独特的优越性,其布局,更接近于实际的生物神经网络,权值共享,降低了网络的复杂性,特别是对于多维输入向量的图像,其可以直接输入网络,这一特点,避免了特征提取过程中数据重建的复杂度,也避免了分类过程中数据重建的复杂度。
1. 神经网络
先来讲讲神经网络pg下载官方认证,这一步的具体详情能够参照资源1。简单说一说。神经网络的每个单元是这样的:
其对应的公式如下:
当中,此单元又能够被叫做Logistic回归模型。在把多个单元合并起来且具备分层结构之际,便构建成了神经网络模型。下面的图呈现出了一个有着一个隐含层的神经网络。
其对应的公式如下:
比较类似的,可以拓展到有2,3,4,5,…个隐含层。
神经网络的训练方法跟Logistic相类似,然而鉴于其具有多层性,所以还得借助链式求导法则来对隐含层的节点开展求导操作,也就是梯度下降搭配链式求导法则,其专业名称称作反向传播。对于训练算法,在本文当中暂时不会涉及。
2 卷积神经网络
在图像处理这个范畴里头,常常会将图像弄成像素所形成的向量,就好比那种1000×1000的图像,能够被表示成一个1000000这般的向量。于前面一节所提及的神经网络当中,要是隐含层的数目跟输入层是一模一样的情况,也就是同样为1000000的时候,那么从输入层到隐含层的参数数据就是1000000×1000000 = 10^12 ,如此一来数量就太过庞大了,基本上是没办法用于训练的。所以说图像处理要是想要练成神经网络这种厉害的方法,必定得先去减少参数从而加快速度。跟辟邪剑谱一样,普通人练起来效果很差劲,一旦自行阉割后,内力增强,剑法变快,就变得十分厉害了。
2.1 局部感知
对于卷积神经网络而言,存在着两种能够降低参数数目的神器,其中第一种神器的名称是局部感知野。通常来讲,人们觉得人对于外界的认知,是依照从局部至全局的顺序,并且图像的空间联系,也是局部的像素联系更为紧密,而距离相对较远的像素相关性却比较弱。所以说,每个神经元其实并不需要针对全局图像展开感知,仅仅只需针对局部进行感知,接着在更高层次将局部的信息予以综合,如此便获取到了全局的信息。网络部分连通的这一思想,同样是受到生物学里视觉系统结构的启发。神经元,属于视觉皮层的那些,是局部接受信息的,也就是说,这些神经元,仅仅对某些特定区域的刺激作出响应。在此,有图展示如下:左图呈现的是全连接状态,右图为局部连接状态。
在上面右边的图里,要是每个神经元仅仅和十个乘以十个的像素值相连接,那么权值数据是一百万乘以一百个参数,缩减成为原来的千分之一。而那十个乘以十个的像素值所对应的十个乘以十个的参数,实际上就等同于卷积操作。
2.2 参数共享
但实际上如此这般的情形下参数依旧过多,于是便启动第二级神器,也就是权值共享。在上述的局部连接里,每个神经元都对应着100个参数,总共存在1000000个神经元,要是这1000000个神经元的100个参数全都是相等的,那么参数数目就转变为100了。
对于权值共享该怎么去理解呢,我们能够把这100个参数,也就是卷积操作,视作提取特征的一种方式,这种方式和位置并无关联,这当中所隐含的原理是,图像一部分的统计特性跟其他部分是相同的,这同样意味着我们在这一部分所学习到的特征,在另一部分也能够加以运用,所以对于这个图像上的所有位置而言,我们都能够采用同样的学习特征。
从一个被随机选取一小块的大尺寸图像里,比如说选取8×8当作样本,并且从这个小块样本学到了一些特征,此时,我们能够把从这个8×8样本学到的特征当作探测器,应用到这个图像的任意地方去。特别是,我们能用从8×8样本學到的特征跟原本的大尺寸图像作卷积,进而对这个大尺寸图像上的任一位置得到一个不一样特征的激活值。
如下像图所展示的那样子进行处理,呈现出了一个33的卷积核在55的图像之上开展做卷积的进程,每一个卷积的行为又均属于一种特征提取相应的方式,恰似就如同是一个筛子一般的状况,把图像之中符合相应条件(激活值越大越符合该条件)的那一部分挑选筛选出来。
2.3 多卷积核
当上面所讲述情况是仅有100个参数之时,这表示仅存有1个100*100的卷积核,很明显,特征提取是不充足的,我们能够进行多个卷积核的添加,例如添加32个卷积核,如此便能够去学习32种特征。当呈现出有增多的多个卷积核的状况时,如下方图示情况:
在图的右边部分,不同的颜色呈现出不同的卷积核,每一个卷积核都会把图像转变为另外一幅图像,举例来说,两个卷积核能够生成两幅图像,这两幅图像能够被视作是一张图像的不同通道,就如同下面所展示的图那样,在下面这张图存在一个小错误,只要把w1改成w0,把w2改成w1就行,在接下来的文字当中依旧用w1和w2来称呼它们。
在图示里,有在四个通道上所进行的卷积操作场景,存在两个卷积核,从而促成两个通道的生成情形。要加以留意的是,在四个通道里,每个通道都对应着一个卷积核,先把w2予以忽略,仅仅去察看w1。那么,在w1的某个位置pg下载麻将胡了,也就是(i,j)这个处的值,它是经由四个通道上(i,j)处的卷积结果相加,之后再获取激活物函数值而得到的。
所以,在上面的图里,经过4个通道卷积为2个通道,在此等过程之中,参数的数量是4×2×2×2个,当中的4意味着4个通道,第一个2表明生成2个通道,最后的2×2代表卷积核大小。
2.4 Down-pooling
获得了经由卷积而得来的特征之后,对这些特征加以利用来进行分类是我们接下来期望达成的,而且,从理论层面来讲,人们能够运用所有提取出来的特征去训练分类器,像softmax分类器就是如此 然而如此这般去做会面临与之相对应的计算量方面提出的挑战。针对一个像素为96X96的图像而言,假定我们已然学习获取到400个定义于8X8输入之上的特征,每一个特征与图像进行卷积操作,均会得出一个维度为(96 − 8 + 1) × (96 − 8 + 1) = 7921维的卷积特征结果,因存在400个特征,故而每个样例都会得到一个维度为892 × 400 = 3,168,400维的卷积特征向量。以一个有着超过 3 百万特征输入的分类器来学习,这是十分不方便的,而且还容易出现过拟合(over - fitting)这种情况。
要解决这个问题,先回忆一下,我们决定用卷积后的特征,是因图像有“静态性”属性,这意味着在一图像区域有用的特征,极有可能在另一区域也适用。所以,为描述大图像,很自然的想法是对不同位置特征进行聚合统计,比如,人们能计算图像一区域上某特定特征的平均值(或最大值)。这些概要统计特征,维度要低得多,相较于使用所有提取得到的特征,并且还会改善结果,不容易过拟合。这种聚合的操作,被称作池化,也就是pooling,有时也叫做平均池化或者最大池化,这取决于计算池化的方法。
至此,卷积神经网络的基本结构和原理已经阐述完毕。
2.5 多层卷积
于实际运用当中,常常会运用多层卷积,之后再运用全连接层来开展训练,多层卷积的目的在于,一层卷积所学到的特征通常是局部的,层数越高,所学到的特征就越趋于全局化。
3 ImageNet-2010网络结构
有一个名为ImageNet LSVRC的东西,它是一场关于图片分类的比赛,其训练集涵盖了127W还多的图片数量,验证集存在5W张图片,测试集包含15W张图片。本文章截取在2010年Alex Krizhevsky的CNN结构来做说明,此结构在2010年获得冠军,top - 5错误率占到15.3%。值得指出的就是,在今年进行的ImageNet LSVRC比赛里,获得冠军的GoogNet已经达到了top - 5错误率为6.67%。可见,深度学习的提升空间还很巨大。
Alex的CNN结构图如下所示。要留意的是,此模型运用了2-GPU并行结构,也就是说,第1卷积层、第2卷积层、第4卷积层、第5卷积层,都是把模型参数分成2部分来训练的。在此处,进一步来讲,并行结构分成数据并行与模型并行。数据并行是指,在不同的GPU上,模型结构是相同的,不过要把训练数据进行切分,分别训练从而得到不同的模型,之后再将模型进行融合。模型中的并行呈现这样的情况,即把若干层的模型参数予以切分,在不同的GPU上运用相同的数据展开训练,所获取的结果直接连接起来用作下一层的输入。
上图模型的基本参数为:
输入:224×224大小的图片,3通道
第一层卷积:5×5大小的卷积核96个,每个GPU上48个。
第一层max-pooling:2×2的核。
第二层卷积:3×3卷积核256个,每个GPU上128个。
第二层max-pooling:2×2的核。
进行第三层卷积时,其与上一层呈现出全连接的状态,卷积核为3乘以3的规格,数量有384个,将这些卷积核分配到两个GPU上,每个GPU上有192个。
第四层卷积,其卷积核为3×3,数量有384个,在两个GPU中,每个GPU各有192个。此层与上一层相连接时,并未经过pooling层。
具有3×3卷积核的第五层卷积,其卷积核数量为256个,在两个GPU上,每个GPU上有128个。
第五层max-pooling:2×2的核。
首先开展起第一轮全连接工作,其维度为4096维,接着把第三轮之中通过较大值汇聚操作所出现的输出结果开展连接工作,使其变成一个维度为一的向量情况,进而将此作为这一轮全连接层输入的情况。
第二层全连接:4096维
Softmax层,其输出的数量是1000,并且输出的每一个维度,都是图片属于该类别的概率。
4 DeepID网络结构
Sun Yi来自香港中文大学,开发出了DeepID网络结构,这是一种用于学习人脸特征的卷积神经网络。每张输入的人脸会被表示成160维的向量,学习得到的向量要经过其他模型来进行分类,在人脸验证试验里获得了97.45%的正确率。更进一步的是,原作者还改进了CNN,进而又得到了99.15%的正确率。
如下如所显示的那样,这个结构跟ImageNet的具体参数是相类似的,因而仅仅解释一下不一样的部分哟。
位于上图里的结构,于最终之时仅有一层全连接层,紧接着便是softmax层了。在论文当中是以这个全连接层当作图像的表示。处于全连接层,把第四层卷积以及第三层max - pooling的输出用作全连接层的输入,如此能够学习到局部的以及全局的特征。