上周小伙伴说咱们卷积神经网络讲的太简略了,根底嘛,当然要先打好()。这不,更加简单的卷积神经网络来了~

经典CNN之LeNet
手写字体辨认模型LeNet5诞生于1994年,是最早的卷积神经网络之一。LeNet5利用卷积、参数共享、池化等操作提取特色,防止了大量的计算成本,最初应用全连贯神经网络进行分类辨认。

LeNet5的网络结构示意图

LeNet5由7层CNN(不蕴含输出层)组成,图中输出的原始图像大小是32×32像素,卷积层:Ci;子采样层(pooling,池化):Si;全连贯层:Fi。

C1层(卷积层):

该层应用了6个卷积核,每个卷积核的大小为5×5,能够失去6个特色图(feature map)。

(1)特色图大小

每个卷积核(5×5)与原始的输出图像(32×32)进行卷积,这样失去的特色图大小为(32-5+1)×(32-5+1)= 28×28

这里有个小知识点:卷积核与输出图像按卷积核大小一一区域进行匹配计算,匹配后原始输出图像的尺寸将变小,因为边缘局部卷积核无奈越出界,只能匹配一次,匹配计算后的尺寸变为Cr×Cc=(Ir-Kr+1)×(Ic-Kc+1),其中Cr、Cc,Ir、Ic,Kr、Kc别离示意卷积后后果图像、输出图像以及卷积核的行列大小。

(2)参数个数

因为参数(权值)共享,对于同个卷积核每个神经元均应用雷同的参数,因而,参数个数为(5×5+1)×6= 156,其中5×5为卷积核参数,1为偏置参数。

(3)连接数

卷积后的图像大小为28×28,因而每个特色图有28×28个神经元,每个卷积核参数为(5×5+1)×6,因而,该层的连接数为(5×5+1)×6×28×28=122304

2、S2层(下采样层,也称池化层):

(1)特色图大小

这一层次要是做池化或者特色映射(特色降维),池化单元为2×2,因而,6个特色图的大小经池化后即变为14×14。因为池化单元之间没有重叠,在池化区域内进行聚合统计后失去新的特征值,因而经2×2池化后,每两行两列从新算出一个特征值进去,相当于图像大小减半,因而卷积后的28×28图像经2×2池化后就变为14×14。

这一层的计算过程是:2×2 单元里的值相加,而后再乘以训练参数w,再加上一个偏置参数b(每一个特色图共享雷同的w和b),而后取sigmoid值(S函数:0-1区间),作为对应的该单元的值。

卷积操作与池化的示意图

(2)参数个数

S2层因为每个特色图都共享雷同的w和b这两个参数,因而须要2×6=12个参数

(3)连接数

下采样之后的图像大小为14×14,因而S2层的每个特色图有14×14个神经元,每个池化单元连接数为2×2+1(1为偏置量),因而,该层的连接数为(2×2+1)×14×14×6 = 5880

3、C3层(卷积层):

C3层有16个卷积核,卷积模板大小为5×5。

(1)特色图大小

与C1层的剖析相似,C3层的特色图大小为(14-5+1)×(14-5+1)= 10×10

(2)参数个数

须要留神的是,C3与S2并不是全连贯而是局部连贯,有些是C3连贯到S2三层、有些四层、甚至达到6层,通过这种形式提取更多特色,连贯的规定如下表所示:

例如第一列示意C3层的第0个特色图(feature map)只跟S2层的第0、1和2这三个feature maps相连接,计算过程为:用3个卷积模板别离与S2层的3个feature maps进行卷积,而后将卷积的后果相加求和,再加上一个偏置,再取sigmoid得出卷积后对应的feature map了。其它列也是相似(有些是3个卷积模板,有些是4个,有些是6个)。因而,C3层的参数数目为(5×5×3+1)×6 +(5×5×4+1)×9 +5×5×6+1 = 1516

(3)连接数

卷积后的特色图大小为10×10,参数数量为1516,因而连接数为1516×10×10= 151600

S4(下采样层,也称池化层):

(1)特色图大小

与S2的剖析相似,池化单元大小为2×2,因而,该层与C3一样共有16个特色图,每个特色图的大小为5×5。

(2)参数数量

与S2的计算相似,所须要参数个数为16×2 = 32

(3)连接数

连接数为(2×2+1)×5×5×16 = 2000

C5层(卷积层):

(1)特色图大小

该层有120个卷积核,每个卷积核的大小仍为5×5,因而有120个特色图。因为S4层的大小为5×5,而该层的卷积核大小也是5×5,因而特色图大小为(5-5+1)×(5-5+1)= 1×1。这样该层就刚好变成了全连贯,当然这里真的只是coincidence,如果原始输出的图像比拟大,则该层就不是全连贯了。

(2)参数个数

本层的参数数目为120×(5×5×16+1) = 48120

(3)连接数

因为该层的特色图大小刚好为1×1,因而连接数为48120×1×1=48120

6、F6层(全连贯层):

(1)特色图大小

F6层有84个单元,因为输入层的对应的是一个7×12的比特图,如下图所示,-1示意红色,1示意彩色,这样每个符号的比特图的黑红色就对应于一个编码。

该层有84个特色图,特色图大小与C5一样都是1×1,与C5层全连贯。

(2)参数个数

因为是全连贯,参数数量为(120+1)×84=10164。跟经典神经网络一样,F6层计算输出向量和权重向量之间的点积,再加上一个偏置,而后将其传递给sigmoid函数得出后果。

(3)连接数

因为是全连贯,连接数与参数数量一样,也是10164。

7、OUTPUT层(输入层):

Output层也是全连贯层,共有10个节点,别离代表数字0到9。如果第i个节点的值为0,则示意网络辨认的后果是数字i。

(1)特色图大小

该层采纳径向基函数(RBF)的网络连接形式,假如x是上一层的输出,y是RBF的输入,则RBF输入的计算形式是:

上式中的Wij的值由i的比特图编码确定,i从0到9,j取值从0到7×12-1。RBF输入的值越靠近于0,示意以后网络输出的辨认后果与字符i越靠近。

(2)参数个数

因为是全连贯,参数个数为84×10=840

(3)连接数

因为是全连贯,连接数与参数个数一样,也是840

LeNet卷积层用来辨认图像⾥的空间模式,例如线条和物体部分,池化层则⽤来升高卷积层对地位的敏感性,在交替应用卷积层和最大池化层后接全连贯层来进⾏图像分类,展现了通过梯度降落训练卷积神经网络能够达到手写数字辨认在过后最先进的后果。

经典CNN之AlexNet
第一个典型的CNN是LeNet5网络结构,然而第一个引起大家留神的网络却是AlexNet。

AlexNet网络结构

网络总共的层数为8层,5层卷积,3层全连贯层。

1、第一层:卷积层C1,输出为224×224×3的图像,卷积核的数量为96,卷积核的大小为11×11×3,步长stride 为4,pad = 0,示意不裁减边缘;

卷积后的图形大小:

wide = (224 + 2 * padding - kernel_size) / stride + 1 = 54

height = (224 + 2 * padding - kernel_size) / stride + 1 = 54

dimention = 96

而后进行 (Local Response Normalized), 前面跟着池化pool_size = (3, 3), stride = 2, pad = 0,最终取得第一层卷积的feature map。

2、第二层:卷积层C2, 输出为上一层卷积的feature map,卷积的个数为256个,卷积核的大小为:5×5×48,pad = 2,stride = 1,而后做 LRN,最初 max_pooling, pool_size = (3, 3), stride = 2。

3、第三层:卷积层C3, 输出为第二层的输入,卷积核个数为384, kernel_size = (3 ×3×256),padding = 1,第三层没有做LRN和Pool。

4、第四层:卷积层C4, 输出为第三层的输入,卷积核个数为384, kernel_size = (3×3), padding = 1, 和第三层一样,没有LRN和Pool。

5、第五层:卷积层C5, 输出为第四层的输入,卷积核个数为256,kernel_size = (3×3×3), padding = 1。而后间接进行max_pooling, pool_size = (3, 3), stride = 2;

6、第6,7,8层是全连贯层,每一层的神经元的个数为4096,最终输入softmax为1000,而后全连贯层中应用了RELU和Dropout。

AlexNet将LeNet的思维发扬光大,把CNN的基本原理利用到了很深很宽的网络中。

首先胜利应用ReLU作为CNN的激活函数,并验证其成果在较深的网络超过了Sigmoid,胜利解决了Sigmoid在网络较深时的梯度弥散问题。

Relu函数:

而后抉择采纳笼罩的池化操作。惯例的池化层因为没有重叠,所以pool_size 和 stride个别是相等的,例如8×8的一个图像,如果池化层的尺寸是2×2,那么通过池化后的操作失去的图像是4×4,这种设置叫做不笼罩的池化操作。而如果 stride < pool_size, 那么就会产生笼罩的池化操作,这种有点相似于convolutional化的操作,在训练模型过程中,笼罩的池化层更不容易过拟合。

同时,神经网络的一个比较严重的问题就是过拟合问题,AlexNet采纳的数据裁减和Dropout的办法解决过拟合问题。对于某一层神经元,通过定义的概率来随机删除一些神经元,同时放弃输出层与输入层神经元的个数不变,而后依照神经网络的学习办法进行参数更新,下一次迭代中,从新随机删除一些神经元,直至训练完结。

总结
AlexNet和LeNet的设计理念十分类似,但也存在显著差别。首先,AlexNet比绝对较小的LeNet5要深得多。AlexNet由八层组成:五个卷积层、两个全连贯暗藏层和一个全连贯输入层。其次,AlexNet应用ReLU而不是sigmoid作为其激活函数。

AlexNet的更高层建设在底层示意的根底上,以示意更大的特色,如眼睛、鼻子、草叶等等。而更高的层能够检测整个物体,如人、飞机、狗或飞盘。最终的暗藏神经元能够学习图像的综合示意,从而使属于不同类别的数据易于辨别。AlexNet首次证实了学习到的特色能够超过手工设计的特色,AlexNet在后果上要优于LeNet很多,特地是其在解决大规模数据不便的劣势更是显著。AlexNet的问世也开启了深度学习在计算机视觉畛域的大规模利用。个别咱们能够将其看做浅层神经网络和深层神经网络的分界线。

当然啦,经典的CNN还是有很多其余的网络的,比方VGG、GoogLeNet、ResNet等等,欢送大伙儿一起学习应用呀!