科普知识
对于深度学习或机器学习模型而言,我们不仅要求它对训练数据集有很好的拟合(训练误差),同时也希望它可以对未知数据集(测试集)有很好的拟合结果(泛化能力),所产生的测试误差被称为泛化误差。度量泛化能力的好坏,最直观的表现就是模型的过拟合(overfitting)和欠拟合(underfitting)。
回顾
犹记深度学习理论篇最近的一篇文章分享了降维之池化,从那以后我们就开始了深度学习实战TensorFlow的分享,按照之前的进度,分享完池化后差不多卷积神经网络的基础模块就结束了,于是让大家走进实战去了解整个神经网络的搭建和训练,如此便可让大家从基础到整体,从底层到上层有了一个总体轮廓。从今天起,我们正式回归理论篇的分享,之前也说过深度学习的理论一直在发展,因此,理论篇和实战篇可能永远都不会结束,基础模块分享完之后,我们首先从卷积神经网络的一些经典论文开始分享,然后去进行实战操作,愿各位不虚此行。
一、LetNet-5
本期文章,我们分享经典卷积神经网络的开山之作LetNet-5网络,该神经网络架构由LeCun在1998年提出,用于识别手写数字。那会估计都没几个人知道有深度学习这东西的时候,人家就已经提出来了,而且效果较传统方法非常之不错,从那以后,各路大神横空出世,各路卷积神经网络风起云涌,逐渐演变成了今天的万物皆AI的现状。
LetNet-5 论文名:Gradient-Based Learning Applied to Document Recognition。
放几张论文图:
1.LetNet-5 网络结构图
以上就是LetNet-5的网络结构图,从图中我们可以看到输入的是一张手写的英文字母A,随后经过进了卷积层-下采样-卷积层-下采样-全连接层-全连接层,最终输出该输入图片属于每个数字的概率,实际测试的时候取最大概率值的索引值为最终预测值。
最终识别效果图如下所示:
网络解析
1.输入层:一张原始图像,其shape为1*32*32,代表是灰度图(单通道),图像大小为32*32.
2.卷积层1:
输入:1*32*32
卷积核大小:5*5
卷积核个数:6
步长:默认为1
输出特征图大小:32-5 1 =28 ,即 28*28
输出特征图shape:6*28*28 代表6个28*28的特征图,6可理解为28*28大小的特征图有6个通道。
3.下采样层1:
采样方式:平均池化
输入:6*28*28
采样区域:2*2
步长:默认为1
输出特征图大小:28/2 = 14,即14*14
输出特征图shape:6*14*14
4.卷积层2:
输入:6*14*14
卷积核大小:5*5
卷积核个数:16
步长:1
输出特征图大小:14-5 1=10,即10*10
输出特征图shape:16*10*10
5.下采样2:
采样方式:平均池化
输入:16*10*10
采样区域:2*2
步长:默认为1
输出特征图大小:10/2 = 5,即5*5
输出特征图shape:16*5*5
6.卷积层3:
输入:16*5*5
卷积核大小:5*5
卷积核个数:120
步长:1
输出特征图大小:5-5 1=1,即1*1
输出特征图shape:120*1*1
7.全连接层1:
输入:120*1*1等效于120
输出神经元:84
输出特征图shape:84
8.全连接层2:
输入:84
输出神经元:10
输出特征图shape:10
至此,一张图像经过LetNet-5网络后就变成了一个长度为10的向量。训练的时候,就会将这10个值传入到loss函数中计算当前的loss大小,随后进行反向传播。
在实际测试的时候,会将这十个值的向量经过一个softmax函数,得到每一个值的概率,值越大,概率越大,概率之和为1。
总结
LetNet-5是第一个真正意义上的卷积神经网络,它是当前神经网络的开山鼻祖,由于当时的计算机技术发展缓慢,其在涉及之初就考虑到了参数大小的影响,因此整个网络具有非常简洁,参数量小,训练速度快等优点。
结语
本期分享就到这里了,今天的知识很简单,主要分析了网路的构造和每一层的维度大小,理论讲完,就趁热打铁,下期文章,我们将会用TensorFlow进行实战,编写LetNet-5网络用语手写数字识别,敬请期待,学有余力的老铁们可以提前尝试哦。
周末愉快,下期再见!