深度学习:卷积神经网络(convolution neural network)
(一)卷积神经网络
卷积神经网络最早是由Lecun在1998年提出的。
卷积神经网络通畅使用的三个基本概念为:
1.局部视觉域;
2.权值共享;
3.池化操作。
在卷积神经网络中,局部接受域表明输入图像与隐藏神经元的连接方式。在图像处理操作中采用局部视觉域的原因是:图像中的像素并不是孤立存在的,每一个像素与它周围的像素都有着相互关联,而并不是与整幅图像的像素点相关,因此采用局部视觉接受域可以类似图像的此种特性。
另外,在图像数据中存在大量的冗余数据,因此在图像处理过程中需要对这些冗余数据进行处理。因此在卷积神经网络中,采用pooling的方法来对图像中的冗余数据进行处理,得到描述性更强的数据特性。pooling方法常用的有maxpooling和meanpooling两种方式。
权值共享:使用卷积核构建像素之间关联时,每一个隐含神经元在使用卷积核进行操作时的权重是共享的。在对图像进行卷积操作室,并不需要对每一个卷积核新建立参数,滑动过程中的卷积核参数都是共享的。这样就意味着第一层隐含神经元所检测到完全一样的特征,只不过是输入图像的不同位置。为了明白这个过程为什么有效果,我们假定给定的权重和偏移量学习到的特征为一个局部视觉域的垂直检测特征,那么这个特征是可以使用到其它应用中的。因此,我们一般把第一步通过隐藏神经元得到的数据叫做feature map。我们把这个过程中学习到的权重叫做shared weight,把该过程学习到的bias成为shared bias。而将shared weight同shared bias结合起来就是一个卷积核或者是滤波器(a filter or kernel)。而且在实际应用中,经常选取多个kernel,用于描述输入在不同kernel下学习到的特征。
在经过卷积层之后,学习到的特征类似于如下的特征:

这些特征的数量为20,那么对应的filter/kernel的数量也为20。在学习到的特征描述中,白色像素块表示权值小,特征图对输入像素的像素响应小,而黑色像素块的权值大,特征图对输入像素的响应大。每一个特征图为5*5,对应的5*5的权值。从这些特征图中可以发现,通过卷积操作真正的学到一些相关的空间结构,但是我们并不知道这些特征检测子学习到什么。
权值共享的好处就是该操作大大降低了网络参数的个数。
卷积神经网络层结构的理解:
卷积层
convolution层一般紧接着pooling层,pooling层的操作如下图所示:

我们可以认为max-pooling是一种在图像区域中寻找是否发现特征位置的操作。在发现图像特征位置后,可以丢弃特征的位置信息。
pooling层可以降低在接下来操作过程中的参数数量。但是max-pooling并不是唯一的pooling方法,L2方法也是一种常用pooling方式,L2pooling的思路是对局部区域中的像素值采用L2规则化计算。同时存在其他pooling方法,具体使用过程根据应用确定。
参考资料:
VGG Convolutional Neural Networks Practical
Deep learning
CS231n Convolutional Neural Networks for Visual Recognition
(二)深度学习基础知识总结
batchsize在深度学习算法中的作用:
在SGD算法里面,梯度是minibatch的平均值。Batchsize越大,噪声梯度越小。而噪声是用来使得收敛值逃离局部最小值的扰动。这就是SGD算法比BGD(batch gradient descent)好的地方,minibatch大小选择并没有一个确定的规矩,这是根据网络和数据来决定的,而minibatch size的选择是通过不断尝试获取最优size。Batchsize越小,更新值的噪声也就越大。因此,降低batchsize时需要降低lr值,通过更多的迭代次数来获取更好训练效果。(原帖链接)
在使用caffe训练的过程中,需要考虑到夏卡的显存问题,因此在调整训练参数时,修改validation.prototxt中的batch_size值同样可以降低对显存的需求。在caffe中base_lr和batch_size是相关联的,理论上当时用X降低batchsize时(128->64),需要对base_lr应该乘以sqrt(x)。应该修改的值为stepsize和max_iter,batchsize除以x,那么这两个值应该乘以x,同时应该注意网络的loss,如果在 10k-20k 迭代之后loss > 6.9 (which is basically random guessing),那么网络在迭代过程中并没有学习到东西。(原帖链接1,原帖链接2)
深度学习:卷积神经网络(convolution neural network)的更多相关文章
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1
3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 ...
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2
3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 ...
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3
3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 ...
- 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))
需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份 ...
- 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 二.LeNet-5网络 输入尺寸:32 ...
- 卷积神经网络(Convolutional Neural Network, CNN)简析
目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...
- Convolution Neural Network (CNN) 原理与实现
本文结合Deep learning的一个应用,Convolution Neural Network 进行一些基本应用,参考Lecun的Document 0.1进行部分拓展,与结果展示(in pytho ...
- 递归神经网络(Recursive Neural Network, RNN)
信息往往还存在着诸如树结构.图结构等更复杂的结构.这就需要用到递归神经网络 (Recursive Neural Network, RNN),巧合的是递归神经网络的缩写和循环神经网络一样,也是RNN,递 ...
- Deeplearning - Overview of Convolution Neural Network
Finally pass all the Deeplearning.ai courses in March! I highly recommend it! If you already know th ...
- 针对深度学习(神经网络)的AI框架调研
针对深度学习(神经网络)的AI框架调研 在我们的AI安全引擎中未来会使用深度学习(神经网络),后续将引入AI芯片,因此重点看了下业界AI芯片厂商和对应芯片的AI框架,包括Intel(MKL CPU). ...
随机推荐
- Ubuntu环境下安装CUDA9.0
前言: 本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04两个版本,如下图所示(最下面的安装方式我们选择第一个,即runfile方式): ...
- C# 面试题 二
1.进程和线程的区别 进程是系统进行资源分配和调度的单位:线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源. 2.成员变量和成员函数前加static的作用 它们被称为常 ...
- 负载均衡@StackExchange.Redis实现Session外置--纯干货喂饱你
Redis和StackExchange.Redis redis有多个数据库1.redis 中的每一个数据库,都由一个 redisDb 的结构存储.其中,redisDb.id 存储着 redis 数据库 ...
- How to implement a custom PropertyEditor so that it supports Appearance rules provided by the ConditionalAppearance module
https://www.devexpress.com/Support/Center/Question/Details/T505528/how-to-implement-a-custom-propert ...
- PHP 用户密码加密函数password_hash
传统的用户名和密码都采用加盐的方式存储加密信息,盐值也需要存储. 自PHP5.5.0之后,新增加了密码散列算法函数(password_hash),password_hash() 使用足够强度的单向散列 ...
- TensorFlow Python2.7环境下的源码编译(二)安装配置
源代码树的根目录中包含了一个名为 configure 的 bash 脚本. $ ./configure 接下来,配置系统会给出各种询问,以确认编译时的配置参数. 一.重要参数解释 Do you w ...
- Kickstart Round G 2018
第一次打codejam....惨的一比,才A1.5题,感觉自己最近状态渣到姥姥家了,赶紧练练 A 模拟,注意0的问题 #include <iostream> #include <cs ...
- Siki_Unity_4-4_丛林战争_Socket/TCP网络游戏开发
Unity 4-4 丛林战争(Socket/TCP网络游戏开发) 任务1:素材.演示.Prerequisite 使用c#的有关TCP的底层API进行服务器端的开发(直接通过socket进行通信) 功能 ...
- UVa 10055
说一下犯错的地方: 1)没有注意数据范围,题目中是The input numbers are not greater than balabalabala. 而这个32位的int类型恰好装不下2^32, ...
- Extreme Learning Machine 翻译
本文是作者这几天翻译的一篇经典的ELM文章,是第一稿,所以有很多错误以及不足之处. 另外由于此编辑器不支持MathType所以好多公式没有显示出来,原稿是word文档. 联系:250101249@qq ...