(一)卷积神经网络

卷积神经网络最早是由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)的更多相关文章

  1. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

    3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 ...

  2. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2

    3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 ...

  3. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3

    3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 ...

  4. 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))

    需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份 ...

  5. 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)

    一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 二.LeNet-5网络 输入尺寸:32 ...

  6. 卷积神经网络(Convolutional Neural Network, CNN)简析

    目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...

  7. Convolution Neural Network (CNN) 原理与实现

    本文结合Deep learning的一个应用,Convolution Neural Network 进行一些基本应用,参考Lecun的Document 0.1进行部分拓展,与结果展示(in pytho ...

  8. 递归神经网络(Recursive Neural Network, RNN)

    信息往往还存在着诸如树结构.图结构等更复杂的结构.这就需要用到递归神经网络 (Recursive Neural Network, RNN),巧合的是递归神经网络的缩写和循环神经网络一样,也是RNN,递 ...

  9. Deeplearning - Overview of Convolution Neural Network

    Finally pass all the Deeplearning.ai courses in March! I highly recommend it! If you already know th ...

  10. 针对深度学习(神经网络)的AI框架调研

    针对深度学习(神经网络)的AI框架调研 在我们的AI安全引擎中未来会使用深度学习(神经网络),后续将引入AI芯片,因此重点看了下业界AI芯片厂商和对应芯片的AI框架,包括Intel(MKL CPU). ...

随机推荐

  1. Kubernetes学习之路(十二)之Pod控制器--ReplicaSet、Deployment

    一.Pod控制器及其功用 Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源. pod控制器 ...

  2. jzoj5377 开拓

    哇好火的dp啊. 开始根本想不出 这里如果顺着dp肯定是不行的,没办法记录钻头能力值 显然能力值的变化会影响后面收入 而具体影响就是:全部乘了1-0.01k或1+0.01c. 可以倒着dp(orz) ...

  3. 全面解析C#中的异步编程

    当我们处理一些长线的调用时,经常会导致界面停止响应或者IIS线程占用过多等问题,这个时候我们需要更多的是用异步编程来修正这些问题,但是通常都是说起来容易做起来难,诚然异步编程相对于同步编程来说,它是一 ...

  4. .net如何发送格式化的文本内容

    MailMessage mailMessage = new MailMessage();ArrayList attachsendObject = new ArrayList();string mail ...

  5. 阿里云Linux的mysql安装,使用yum安装

    1.下载 我下载的mysql5.7 rpm格式的,在Linux的根目录下下载(防止出现安装的问题) wget https://dev.mysql.com/get/mysql57-community-r ...

  6. LintCode——A+B问题

    A+B问题:给出两个整数a和b,求他们的和,但不能使用+等数学运算符. 注意事项: 1.A与B是32位整数 2.可使用位运算符 样例:如果 a=1 并且 b=2,返回3 一.非递归 public cl ...

  7. A* 寻路的八个变种

    变种 1 - 束搜索(Beam Search) 在 A* 算法的住循环中,OPEN 集存储可能需要搜索的节点,用来以查找路径. 束搜索是 A* 的变体,它限制了OPEN集的大小. 如果集合变得太大,则 ...

  8. 基础:enctype 包含上传input时必须(解决图片上传不成功问题)

    今天在做一个上传图片的时候,死活就是看不到传过去的值..对比了写法没发现问题,后来抱着试试看的心,查看下了 from里的写法.发现缺少了enctype.不了解这个用法,特意百度了下. enctype ...

  9. ClassLoader.loadClass()与Class.forName()的区别

    ClassLoader.loadClass()与Class.forName()都是反射用来构造类的方法,但是他们的用法还是有一定区别的. 在讲区别之前,我觉得很有不要把类的加载过程在此整理一下. 在J ...

  10. Prometheus 添加报警规则

    https://prometheus.io/docs/prometheus/latest/migration/