经典网络(Classic networks)

经典的神经网络结构,分别是 LeNet-5、AlexNet 和 VGGNet。

第一个是 LeNet-5 的网络结构,假设你有一张 32×32×1 的图片,LeNet-5 可以识别图中的手写数字,比如像这样手写数字 7,LeNet-5 是针对灰度图片训练的,所以图片的大小只有 32×32×1,使用 6 个 5×5的过滤器,步幅为 1,padding 为 0,输出结果为 28×28×6,图像尺寸从 32×32 缩小到 28×28。然后进行池化操作,过滤器的宽度为 2,步幅为 2,图像的尺寸,高度和宽度都缩小了 2 倍,输出结果是一个 14×14×6 的图像。接下来是卷积层,我们用一组 16 个 5×5 的过滤器,新的输出结果有 16 个通道。所以这个图像从 14 到 14 缩小到了10×10。然后又是池化层,高度和宽度再缩小一半,输出一个 5×5×16 的图像,将所有数字相乘,乘积是 400。下一层是全连接层,在全连接层中,有 400 个节点,每个节点有 120 个神经元,从这 400 个节点中抽取一部分节点构建另一个有 84个神经元的全连接层,这样,有 2 个全连接层。最后一步就是利用这 84 个特征得到最后的输出,在这里再加一个节点softmax层,用来预测y^的值,y^有 10 个可能的值,对应识别 0-9 这 10 个数字。

 经典网络(LeNet-5、AlexNet 、 VGGNet)_神经网络

 

第二个神经网络是 AlexNet,AlexNet首先用一张227×227×3的图片作为输入,第一层我们使用 96 个11×11 的过滤器,步幅为 4,由于步幅是 4,因此尺寸缩小到 55×55,缩小了 4 倍左右。然后用一个 3×3 的过滤器构建最大池化层,f = 3,步幅s为 2,卷积层尺寸缩小为 27×27×96。接着再执行一个 5×5 的卷积,padding 之后,输出是 27×27×276。然后再次进行最大池化,尺寸缩小到 13×13。再执行一次 same 卷积,相同的 padding,得到的结果是 13×13×384,384个过滤器。再做一次 same 卷积,得到的结果是 13×13×256,256个过滤器。最后再进行一次最大池化,尺寸缩小到 6×6×256。6×6×256 等于 9216,将其展开为 9216 个单元,然后是一些全连接层。最后使用 softmax 函数输出识别的结果,看它究竟是 1000 个可能的对象中的哪一个。

 经典网络(LeNet-5、AlexNet 、 VGGNet)_池化_02

实际上,这种神经网络与 LeNet 有很多相似之处,不过 AlexNet 要大得多,正如前面讲到的 LeNet 或 LeNet-5 大约有 6 万个参数,而 AlexNet 包含约 6000 万个参数。AlexNet 比 LeNet 表现更为出色的另一个原因是它使用了 ReLu 激活函数。

 

第三个是 VGG,也叫作 VGG-16 网络,VGG-16 网络没有那么多超参数,这是一种只需要专注于构建卷积层的简单网络。假设我们输入图像的尺寸是 224×224×3,在最开始的两层用 64 个 3×3 ,步幅为 1的过滤器,并且都是采用 same 卷积,对输入图像进行卷积,第一个卷积之后得到224×224×64 的特征图,接着还有一层 224×224×64。接下来创建一个池化层,池化层将输入图像进行压缩,从 224×224×64减少到 112×112×64。然后又是若干个卷积层,使用 129 个过滤器,以及一些 same 卷积,得到112×112×128的特征图。然后进行池化,继续缩少,得到56×56×128的特征图。接着再用 256 个相同的过滤器进行三次卷积操作,然后再池化,然后再卷积三次,再池化。如此进行几轮操作后,将最后得到的 7×7×512 的特征图进行全连接操作,得到 4096 个单元,然后进行 softmax 激活,输出从 1000 个对象中识别的结果。

 经典网络(LeNet-5、AlexNet 、 VGGNet)_池化_03

VGG-16 的这个数字 16,就是指在这个网络中包含 16 个卷积层和全连接层,确实是个很大的网络,总共包含约 1.38 亿个参数,但 VGG-16 的结构并不复杂,这点非常吸引人,而且这种网络结构很规整,都是几个卷积层后面跟着可以压缩图像大小的池化层,池化层缩小图像的高度和宽度,同时,卷积层的过滤器数量变化存在一定的规律,由 64 翻倍变成 128,再到 256 和 512。它的主要缺点是需要训练的特征数量非常巨大。


作者:​​zhang-X​​​