卷积网络初始:LeNet

简介: 来做一个关于卷积神经网络的归类,先从LeNet开始: LeNet出自Yann Lecun(卷积网络之父),Yoshua Bengio(蒙特利尔大学教授,吴恩达的同门),Leon Bottou(将随机梯度下降引入学习中)三位大牛之手 这里附上LeNet的原始论文:Gradient-Based Learning Applied to Document RecognitionLeNet提出于1998年,当时以SVM为主的基于统计的学习方法和像一些sift之类的基于专业知识的特征统计的检测方法非常流行,同时当时计算机计算能力弱,还没有像GPU一样的加速工具,即使是像mnist的数据集,也是个挑战。

来做一个关于卷积神经网络的归类,先从LeNet开始:
LeNet出自Yann Lecun(卷积网络之父),Yoshua Bengio(蒙特利尔大学教授,吴恩达的同门),Leon Bottou(将随机梯度下降引入学习中)三位大牛之手

Yann_Lecun
Bengio_259x300
bottou
这里附上LeNet的原始论文:
Gradient-Based Learning Applied to Document Recognition
LeNet提出于1998年,当时以SVM为主的基于统计的学习方法和像一些sift之类的基于专业知识的特征统计的检测方法非常流行,同时当时计算机计算能力弱,还没有像GPU一样的加速工具,即使是像mnist的数据集,也是个挑战。
首先来解决为什么要提取特征而不把一张图片直接当做特征?
1:如果不进行特征提取,而直接将一张图片作为特征设图片为256x256x3,参数可达196K,而且会导致严重的过拟合。
2:不提取特征会导致网络对图片的平移放缩旋转敏感。
对图片进行卷积能较好好地解决问题。
juanji
卷积核在二维平面上平移,并且卷积核的每个元素与被卷积图像对应位置相乘,再求和。通过卷积核的不断移动,我们就有了一个新的图像,这个图像完全由卷积核在各个位置时的乘积求和的结果组成。这张新的图像也称为feature map。在同一张feature map中共享权重。
这里有一个在线demo网站,可以帮助理解卷积。
在卷积之后为了再次减少参数,在卷积之后会进行一定的pooling,pooling层通常有maxpooling和averagepooling,同时pooling层使图像的特征有一定的如平移和仿射不变性,也有一些说能有较弱的旋转不变形,来自pooling层kernel的大小,这个还有待考证。
最后再进行一个Fully connect Layer将特征,全连接层主要有一个分类器的作用。
LeNet-5网络结构:
LeNet_
从网络的结构中可以看到:
网络输入为32x32的1通道的图片,
第一个卷积层C1产生6个feature map 大小为28x28(32-5+1=28),卷积核的大小为5x5,最终产生的参数为(5x5+1)x6=156个,产生的连接数为28x28x(5x5+1)x6=122304个
第一个pooling层S2产生6个feature map,大小为14x14,pooling核的大小为2x2,产生的参数为(1+1)x6=12个,产生的连接数为14x14x(2x2+1)x6=5880个
第二个卷积层C3产生16个feature map,大小为10x10,卷积核的大小为5x5.
下面Table为C3的featuremap与S2的featuremap之间的关系,其中横轴为C3的featuremap序列,纵轴为S2的featuremap序列,X表示C3用到了S2的featuremap的序列
Table1
连接方案为,前6个C3featuremap从S2中的连续三个featuremap中获得。接下来的6个C3的featuremap从S2中的连续四个featuremap中获得。接下来的三个C3的featuremap从不连续的四个S2的featuremap中获得。最后一个从S2的所有的featuremap中获得。由此可以计算得到参数为(5x5x3+1)x6+(5x5x4+1)x6+(5x5x4+1)x3+(5x5x6+1)=1516个 连接个数为15161010=151600个连接
C3
这样提取C3的featuremap的好处是:
1:能使连接数量保持在一个合理的数量之内。
2:在网络中打破了对称性,可以提取到不同的特征。
S4产生16个featuremap大小为5x5,kernel的大小为2x2产生的参数个数为(1+1)x16=32个,5x5x5x16=2000个连接
C5卷积层产生120个featuremap,卷积核大小为5x5,产生的结果为1x1的featuremap,每一个featuremap都与S4的16个featuremap连接 共有参数(5x5x16+1)x120=48120,同样有48120个连接
C5
F6为全连接层。F6层共有84个节点,对应一个7x12的比特图,-1表示白色,1表示黑色,这样每个符号的比特图的黑白色对应一个编码。该层的参数和连接数为(120+1)x84=10164,比特图样式和连接方式如下图:
F6
最后一层层是Output层为全连接层,共10个节点,分别代表数字0到9,且如果i节点的数值为0,则网络识别的结果为i。用径向基函数(RBF)的网络连接方式。假设上层的输入为x,y是RBF的输出,则RBF输出的计算方式为

$$ y_{i}=\sum_{j}^{ } (x_{j}-w_{ij})^{2} $$

其中

$$ w_{ij} $$

为F6与这一单元连接的权重
越接近于0,结果就越接近那个比特图的编码,
Output
LeNet-5的神经网络的共有60840个参数,340908个连接,识别效果如下图:
_
下面是一个LetNet识别的网站:
http://yann.lecun.com/exdb/lenet/index.html
下面是LetNet-5与当时各个SVM和神经网络识别结果比较的结果,可见传统的像SVM的分类器还是蛮有竞争力的,或者说卷积网络还有不足:
_
测试集的错误率(%)用于各种分类方法。 [deslant]表示分类器已经在数据库的deslanted版本上进行了培训和测试。 [dist]表示训练集增加了人为失真的例子。 [16x16]表示系统使用了16x16像素的图像。 引用错误率的不确定性约为0.1%。
论文第四部分提到了多模块识别系统:
1:每一个模块都可以是一个突出。如损失函数层,卷积层
2:每一个图层都有前向传播和反向传播的功能
3:复杂的系统可以建立在这些简单的层上,并通过基于梯度的学习算法进行训练。
caffe等框架应该就是受启发而建立的。
博客部分是在网上博文的基础上加上了自己的理解,下面是部分大佬的博文:
http://blog.csdn.net/cyh_24/article/details/51440344
http://blog.csdn.net/strint/article/details/44163869
42b234bd_56e2_46eb_a190_c6d44344cf25

目录
相关文章
|
1月前
|
机器学习/深度学习 数据可视化 算法框架/工具
深度学习第3天:CNN卷积神经网络
深度学习第3天:CNN卷积神经网络
35 0
|
1月前
|
机器学习/深度学习 人工智能 自动驾驶
什么是人工智能领域的卷积神经网络
什么是人工智能领域的卷积神经网络
27 0
|
22天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
PYTHON TENSORFLOW 2二维卷积神经网络CNN对图像物体识别混淆矩阵评估|数据分享
|
19天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
|
6天前
|
机器学习/深度学习 PyTorch 算法框架/工具
使用Python实现卷积神经网络(CNN)
使用Python实现卷积神经网络(CNN)的博客教程
33 1
|
10天前
|
机器学习/深度学习 并行计算 测试技术
BiTCN:基于卷积网络的多元时间序列预测
该文探讨了时间序列预测中模型架构的选择,指出尽管MLP和Transformer模型常见,但CNN在预测领域的应用较少。BiTCN是一种利用两个时间卷积网络来编码历史和未来协变量的模型,提出于《Parameter-efficient deep probabilistic forecasting》(2023年3月)。它包含多个由扩张卷积、GELU激活函数、dropout和全连接层组成的临时块,有效地处理序列数据。实验表明,BiTCN在具有外生特征的预测任务中表现优于N-HiTS和PatchTST。BiTCN的效率和性能展示了CNN在时间序列预测中的潜力。
21 1
|
11天前
|
机器学习/深度学习 人工智能 算法
【AI 初识】什么是卷积神经网络 (CNN)?
【5月更文挑战第2天】【AI 初识】什么是卷积神经网络 (CNN)?
|
12天前
|
机器学习/深度学习 自然语言处理 搜索推荐
|
14天前
|
机器学习/深度学习 PyTorch TensorFlow
【Python机器学习专栏】卷积神经网络(CNN)的原理与应用
【4月更文挑战第30天】本文介绍了卷积神经网络(CNN)的基本原理和结构组成,包括卷积层、激活函数、池化层和全连接层。CNN在图像识别等领域表现出色,其层次结构能逐步提取特征。在Python中,可利用TensorFlow或PyTorch构建CNN模型,示例代码展示了使用TensorFlow Keras API创建简单CNN的过程。CNN作为强大深度学习模型,未来仍有广阔发展空间。
|
16天前
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)
TensorFlow 2keras开发深度学习模型实例:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN)