卷积网络初始: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

目录
相关文章
|
9天前
|
机器学习/深度学习 人工智能 自动驾驶
什么是人工智能领域的卷积神经网络
什么是人工智能领域的卷积神经网络
18 0
|
9天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络中的卷积层,如何提取图片的特征?
卷积神经网络中的卷积层,如何提取图片的特征?
22 0
|
22天前
|
机器学习/深度学习 存储 自然语言处理
卷积神经元网络CNN基础
卷积神经元网络CNN基础
31 1
|
22天前
|
机器学习/深度学习
大模型开发:解释卷积神经网络(CNN)是如何在图像识别任务中工作的。
**CNN图像识别摘要:** CNN通过卷积层提取图像局部特征,池化层减小尺寸并保持关键信息,全连接层整合特征,最后用Softmax等分类器进行识别。自动学习与空间处理能力使其在图像识别中表现出色。
23 2
|
1月前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能与图像识别:基于深度学习的卷积神经网络
人工智能与图像识别:基于深度学习的卷积神经网络
31 0
|
1月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
3月前
|
机器学习/深度学习 算法 TensorFlow
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
54 0
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
基于深度学习的图像分类:使用卷积神经网络实现猫狗分类器
基于深度学习的图像分类:使用卷积神经网络实现猫狗分类器
53 0
|
5天前
|
机器学习/深度学习 自然语言处理 算法
|
22天前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
41 2