深度学习:卷积神经网络(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). ...
随机推荐
- 1797: [Ahoi2009]Mincut 最小割
1797: [Ahoi2009]Mincut 最小割 链接 分析: 题意为:问一条边是否可能存在于最小割中,是否一定存在于最小割中. 首先最小割的边一定是满流的边.且这条边点两个端点u.v中,至少一个 ...
- BZOJ 2818 GCD 素数筛+欧拉函数+前缀和
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 题意:给定整数N,求1<=x,y<=n且Gcd(x,y)为素数的数对( ...
- callable(object)
callable(object) 中文说明:检查对象object是否可调用.如果返回True,object仍然可能调用失败:但如果返回False,调用对象ojbect绝对不会成功. 注意:类是可调用的 ...
- 细说 Django — web 前后端分离
一.所谓的前后端分离 1.渊源 前端发展史 2.特点 前端:负责 View 和 Controller 层 后端:只负责 Model 层,业务处理/数据等 3.优缺点 优点:解耦,解放前端,职责明确 缺 ...
- 180918-JDK之Deflater压缩与Inflater解压
JDK 压缩与解压工具类 在实际的应用场景中,特别是对外传输数据时,将原始数据压缩之后丢出去,可以说是非常常见的一个case了,平常倒是没有直接使用JDK原生的压缩工具类,使用Protosutff和K ...
- 【UGUI】 (三)------- 背包系统(上)之简易单页背包系统及检索功能的实现
背包系统,无论是游戏还是应用,都是常常见到的功能,其作用及重要性不用我多说,玩过游戏的朋友都应该明白. 在Unity中实现一个简易的背包系统其实并不是太过复杂的事.本文要实现的是一个带检索功能的背包系 ...
- 执行caffe的draw_net.py出现“GraphViz's executable "dot" not found”的解决方法
控制台输入如下指令画网络图: python ../../../python/draw_net.py train.prototxt train.png --rankdir=TB (Top-Bottom形 ...
- docker 一篇文章学习容器化
什么是镜像?什么是容器? 一句话回答:镜像是类,容器是实例 docker 基本操作命令: 删除所有container: docker rm $(docker ps -a -q) 删 ...
- 关于kafka的一些问题理解
- Haproxy介绍、安装与配置
Haproxy技术详解一. 介绍HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.HAProxy特别适用于那些负载特大的web ...