(一)卷积神经网络

卷积神经网络最早是由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. CF 1114 D. Flood Fill

    D. Flood Fill 链接 题意: 一个颜色序列,每个位置有一个颜色,选择一个起始位置,每次可以改变包含这个位置的颜色段,将这个颜色段修改为任意一个颜色, 问最少操作多少次.n<=5000 ...

  2. 查看Chrome浏览器扩展程序源码的两种方法

    注意:仅在当前最新的版本 55.0.2883.87 m (64-bit)上测试有效 首先获取extensionId: chrome 打开扩展程序页面 chrome://extensions/ 比如我想 ...

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

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

  4. eclipse下载与安装并测试

    下载地址:www.ecplise.org  下载完成后双击安装       安装完成之后,第一次运行eclipse会弹出Workspace Launcher对话框,要求设置工作空间存放项目文档.   ...

  5. Python distribute到底使用package_data还是MANIFEST.in?

    今天看Flask的文档,里面提到如何通过distribute发布你自己的Python包.讲包含文件的时候,提到要用MANIFEST.in并将include_package_data设置为True. 由 ...

  6. JAVA使用qrcode生成二维码(带logo/不带logo)

    /** * */ package qrcode; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; i ...

  7. python时间模块详解(time模块)

    time 模块 -- 时间获取和转换 time 模块提供各种时间相关的功能 在 Python 中,与时间处理有关的模块包括:time,datetime 以及 calendar 必要说明: 虽然这个模块 ...

  8. 使用TCP在同一台电脑上可以建立连接,在两台电脑上却连接失败的原因分析

    最近在用unity做联机游戏,在网络方面费了不少劲,总是在代码没问题的时候出一些莫名奇妙的BUG,不过后来都决定了.如果感觉代码没问题,八成就是防火墙的问题. 用unity发布后的游戏,如果涉及网络, ...

  9. ResNet——Deep Residual Learning for Image Recognition

    1. 摘要 更深的神经网络通常更难训练,作者提出了一个残差学习的框架,使得比过去深许多的的网络训连起来也很容易. 在 ImageNet 数据集上,作者设计的网络达到了 152 层,是 VGG-19 的 ...

  10. 微信公众号开发笔记1(nodejs开发)

    本篇记录了微信公众号开发的一些笔记 一.微信服务器与我们服务器的交流 微信开发者拥有自己的服务器,在我们服务器上可以与微信服务器进行交流.既然可以交流,那就必定需要前提条件(微信认证),也就是说,只有 ...