关于机器学习:MindSpore易点通深度学习系列经典卷积神经网络

2次阅读

共计 4304 个字符,预计需要花费 11 分钟才能阅读完成。

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

经典 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 等等,欢送大伙儿一起学习应用呀!

正文完
 0