卷积神经网络(cnn)学习笔记1:入门

转载 2016年08月30日 20:03:36

卷积神经网络


       卷积神经网络(Convolutional Neural Network,CNN)是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功,在国际标准的ImageNet数据集上,许多成功的模型都是基于CNN 的。CNN相较于传统的图像处理算法的优点之一在于,避免了对图像复杂的前期预处理过程(提取人工特征等),可以直接输入原始图像。
       图像处理中,往往会将图像看成是一个或多个的二维向量(黑白图片,只有一个颜色通道;如果是RGB表示的彩色图片则有三个颜色通道,可表示为三张二维向量)。传统的神经网络都是采用全连接的方式,即输入层到隐藏层的神经元都是全部连接的,这样做将导致参数巨大,使得网络训练耗时甚至难以训练,而CNN则通过局部连接,权值共享等方法避免这一困难,有趣的是这些方法都是受到现代生物神经网络相关研究的启发(感兴趣可以阅读以下部分)


下面重点介绍下CNN中的局部连接(Sparse Connectivity)和权值共享(Shared Weights)方法,理解它们很重要。

局部连接与权值共享

下图是一个很经典的图示,左边是全连接,右边是局部连接。














    对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 × 10^6 = 10^12个权值参数,如此数目巨大的参数几乎难以训练;而采用局部连接,隐藏层的每个神经元仅与图像中10 × 10的局部图像相连接,那么此时的权值参数数量为10 × 10 × 10^6 = 10^8,将直接减少4个数量级。

      尽管减少了几个数量级,但参数数量依然较多。能不能再进一步减少呢?能!方法就是权值共享。具体做法是,在局部连接中隐藏层的每一个神经元连接的是一个10 × 10的局部图像,因此有10 × 10个权值参数,将这10 × 10个权值参数共享给剩下的神经元,也就是说隐藏层中10^6个神经元的权值参数相同,那么此时不管隐藏层神经元的数目是多少,需要训练的参数就是这 10 × 10个权值参数(也就是卷积核(也称滤波器)的大小),如下图。


      这大概就是CNN的一个神奇之处,尽管只有这么少的参数,依旧有出色的性能。但是,这样仅提取了图像的一种特征,如果要多提取出一些特征,可以增加多个卷积核,不同的卷积核能够得到图像的不同映射下的特征,称之为Feature Map。如果有100个卷积核,最终的权值参数也仅为100(每个卷积核需要的参数数目) × 100 (卷积核数)= 10^4个而已。另外,偏置参数也是共享的,同一种滤波器共享一个。

      此外,隐藏层的参数个数和隐藏层的神经元个数无关,只和滤波器的大小和滤波器种类的的多少有关。那么隐藏层的神经元个数怎么确定呢?它和原图像,也就是输入的大小,滤波器的大小和滤波器在图像中的滑动步长都有关!例如,我的图像是1000*1000像素,而滤波器的大小是10*10,假设滤波器没有重叠,也就是补偿为10,这样隐藏层的神经元个数就是(1000*1000)/(10*10)=100*100个神经元。

    需要注意的一点是,上面的讨论都没有考虑每个神经元的偏置部分。所以权值个数需要加1 。这个也是同一种滤波器共享的。

      卷积神经网络的核心思想是:局部感受野(local field),权值共享以及时间或空间亚采样这三种思想结合起来,获得了某种程度的位移、尺度、形变不变性。

转载来源:http://www.jeyzhang.com/cnn-learning-notes-1.html


相关文章推荐

卷积神经网络(CNN)学习笔记1:基础入门

卷积神经网络(CNN)学习笔记1:基础入门

深度学习笔记五:卷积神经网络CNN(基本理论)

卷积神经网络基本理论

tensorflow学习笔记五:mnist实例--卷积神经网络(CNN)

转载自  http://www.cnblogs.com/denny402/p/5853538.html mnist的卷积神经网络例子和上一篇博文中的神经网络例子大部分是相同的。但是CNN层数要...

CNN卷积神经网络学习笔记4:代码学习

代码来自github上的一个DeepLearning Toolbox,地址:https://github.com/rasmusbergpalm/DeepLearnToolbox主要参考这篇博客中的代码...

深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

本文主要参考于:Multilayer Perceptron   python源代码(github下载  CSDN免费下载)  本文主要介绍含有单隐层的MLP的建模及实现。建议在阅读本博文之前,先看一...

CNN卷积神经网络学习笔记2:网络结构

这篇笔记中,通过一个简单的CNN的例子,梳理一下CNN的网络结构的细节。 以下是一个6层的CNN网络,我们输入的是一张大小为28*28的图片。 需要注意的有: 1,这里输入的是一张图片,如果我们输入了...

CNN卷积神经网络学习笔记3:权值更新公式推导

在上篇《CNN卷积神经网络学习笔记2:网络结构》中,已经介绍了CNN的网络结构的详细构成,我们已经可以初始化一个自己的CNN网络了,接下来就是要用训练得到一个确定的CNN的模型,也就是确定CNN的参数...

深度学习笔记三-CNN(卷积神经网络)是什么?(续)

网络中的更深处 在传统卷积神经网络架构中,卷积层之间还有其它类型的层。我强烈建议有兴趣的人阅读和它们有关的材料,并理解相应的功能和作用;但总的来说,它们提供的非线性和维度保留有助于提高网络的稳健性(...

kaldi学习笔记之卷积神经网络(CNN)

kaldi学习笔记之卷积神经网络(CNN)摘要:本文将以switchboard为例,解读kaldi卷积神经网络部分的bash脚本。一方面便于以后自己回顾,另一方面希望能与大家互相交流。正文:在swit...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)