先一层一层的说卷积神经网络是啥:

1:卷积层,特征提取

我们输入这样一幅图片(28*28):

如果用传统神经网络,下一层的每个神经元将连接到输入图片的每一个像素上去,但是在卷积神经网络中,我们只把输入图像的一部分连接到下一层的神经元上。

比如每个神经元连接对应的一个5*5的区域:

这个输入图像的区域被称为隐藏神经元的局部感受野(local receptive fields),它是输入像素上的一个小窗口。每个连接学习一个权重。而隐藏神经元同时也学习一个总的偏置。可以把特定的隐藏神经元看作是在学习分析它对应的那个局部感受野。

然后我们在整个图像上移动局部感受野,移动的步长可以设定,假如每次移动一格,图像数据和权重的对应元素相乘并求和就得到了下一层神经元的值:

这样我们就得到了一个24*24的特征图,注意生成这个特征图时用的5*5的权重和偏置是固定的,这就是共享权重和偏置。这种方法可以降低参数量,同时还可以认为是一种特征的提取。在人工神经网络中,如果输入一幅图片中有一盘烧鸡在图片的角落中,那么输出的烧鸡得分可能不会高,因为图像的大部分信息都和烧鸡无关,但CNN使用这种滑动卷积核寻找特征的方式,无论你这只鸡在哪里,都能提取出他的特征不是吗。图像这个东西,本身就是一个区域的信息更有说服力,一张图的左上角和右上角两块可能真是没什么实际关系,但一张图中间的某一个区域的像素就关系很大了,比如对一张烧鸡的图片截取其中一小块,人也能通过色泽啊肉质判断出来一点点这最起码是禽类的肉而不是哺乳动物的肉,但随机的在图中取一堆点让人判断这是啥就很难了。这是我对CNN处理图像问题优越性的一个认识吧,可能不够严谨,还请高人指教。。。

或者可以理解为,这个5*5的参数就好像是一个人的世界观,他通过逐行查看这个图片,得出了一个结论就是特征图。CNN通常会设定好多个卷积层(好多个特征图),比如一张特征图专门用来查看图像的边缘信息,另一张专门查看图像的对比度信息,还有查看图像里有没有耳朵等等。

图:一个完整的卷积层通常由若干个不同的特征映射组成

这些特征映射的参数并不是人工决定的,而也是通过优化损失函数自动学习得到的,所以在CNN中不是每个特征都是可以用人话描述清楚的。

这就是卷积层,也是卷积神经网络的核心方法。卷积层的每一个特征图中的每个神经元也需要经过一个激活函数的计算以做非线性的映射,这个激活函数通常使用ReLU:

从一些大神口中得知CNN激励函数一定不能使用sigmoid(太容易饱和了,除非你再加一层把所有的值都归一化到0和1之间),优先使用ReLU,如果ReLU训练不下去,就使用Leaky ReLU。

2:Pooling layer

这个层是夹在连续的卷积层之间的一个压缩数据用的层,功能很简单,就是把feature map缩小,有时此层又叫subsampling层,假设有一个特征图如下,使用2*2的max pool来压缩:

同时还可以用L2池化,均值池化,功能都是一样的。

为什么要有这个层呢?我的理解是这样的:首先对于一个feature map,把它缩小后依旧可以判断出这个特征来,就比如一张红色的图,缩小后它还是红色的,其次这样可以缩小卷积层的层数,如果没有池化,那么一层一层卷积层叠起来,最终连接到最后一层全连接层时候,卷积神经网络的深度将很深,也对训练带来了很大的难度。

CNN就是卷积、池化、卷积、卷积这样组合起来的,到了特征图很小的时候,再链接一个全连接层,就可以做分类问题了下图就是一个卷积神经网络的基本组成:

训练卷积神经网络的方法和人工神经网络是一样的,都是先写出来cost function,使用BP求损失函数对各个参数的偏导数,在应用SGD算法迭代得出最优的参数组合。

对于ANN和CNN的原理解析到此为止,从现在开始将使用一些成熟的CNN模型和DL框架实现深度学习的一些功能。

[DL学习笔记]从人工神经网络到卷积神经网络_2_卷积神经网络的更多相关文章

  1. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

  2. [DL学习笔记]从人工神经网络到卷积神经网络_3_使用tensorflow搭建CNN来分类not_MNIST数据(有一些问题)

    3:用tensorflow搭个神经网络出来 为什么用tensorflow呢,应为谷歌是亲爹啊,虽然有些人说caffe更适合图像啊mxnet效率更高等等,但爸爸就是爸爸,Android都能那么火,一个道 ...

  3. ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程)

    ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程) ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在dee ...

  4. 学习笔记CB009:人工神经网络模型、手写数字识别、多层卷积网络、词向量、word2vec

    人工神经网络,借鉴生物神经网络工作原理数学模型. 由n个输入特征得出与输入特征几乎相同的n个结果,训练隐藏层得到意想不到信息.信息检索领域,模型训练合理排序模型,输入特征,文档质量.文档点击历史.文档 ...

  5. 深度学习笔记 (二) 在TensorFlow上训练一个多层卷积神经网络

    上一篇笔记主要介绍了卷积神经网络相关的基础知识.在本篇笔记中,将参考TensorFlow官方文档使用mnist数据集,在TensorFlow上训练一个多层卷积神经网络. 下载并导入mnist数据集 首 ...

  6. 【深度学习笔记】(二)基于MNIST数据集的神经网络实验

    一.介绍 MNIST(Mixed National Institute of Standards and Technology database)是网上著名的公开数据库之一,是一个入门级的计算机视觉数 ...

  7. 《TensorFlow2深度学习》学习笔记(二)手动搭建并测试简单神经网络(附mnist.npz下载方式)

    本实验使用了mnist.npz数据集,可以使用在线方式导入,但是我在下载过程中老是因为网络原因被打断,因此使用离线方式导入,离线包已传至github方便大家下载: https://github.com ...

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

    卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Vie ...

  9. tensorflow学习笔记——图像识别与卷积神经网络

    无论是之前学习的MNIST数据集还是Cifar数据集,相比真实环境下的图像识别问题,有两个最大的问题,一是现实生活中的图片分辨率要远高于32*32,而且图像的分辨率也不会是固定的.二是现实生活中的物体 ...

随机推荐

  1. QQ战场形势图

    真是没什么可说,全面开战,无坚不摧,活脱脱一个中央帝国.只有极少的方向处于守势.本来对腾讯也没什么特别的感觉,但是看了这张图,真是让人热血沸腾. 如果美国的公司能像腾讯做的这么大相当于:faceboo ...

  2. 使用postman发送数据并构建collections执行测试

    1.安装 下载地址:https://www.getpostman.com/.直接安装,成功后在chorme的应用程序中会多出一个Postman.如果无法在google store上直接安装,可以下载. ...

  3. WCF Binding

    <Programming WCF Services>有一幅图也能说明各自的特征: 下面的图给出了我们选择Binding的方式

  4. https://yq.aliyun.com/articles/65125?spm=5176.100240.searchblog.18.afqQoU

    https://yq.aliyun.com/articles/65125?spm=5176.100240.searchblog.18.afqQoU

  5. asio制作使用ssl通信的证书

    1,生成ca的keyopenssl genrsa -out ca.key 1024/2048 (with out password protected) openssl genrsa -des3 -o ...

  6. LoadRunner调用Oracle存储过程

    为了测试这个存储过程,我遥了一圈去做这个事情,这里说一下我自己接受到任务和自己开始是怎么想的. 方法一: 一开始我想着可以使用C#直接去调用存储过程,然后用Loadrunner调用C#的dll去测试, ...

  7. Virtualbox虚拟机配置CentOS7.0静态网络

    1.首先在Virtualbox下将网络设置为Bridged Adapter,此项设置可以使本机与虚拟机进行互访,而NAT模式只能进行单项访问: 2.先切换到root,配置网卡信息需要用到root,然后 ...

  8. aischool 倒计时VIEW封装

    @implementation TWPaperTimeCountLabel { NSInteger miaoshu; dispatch_source_t _timer; } -(id)initWith ...

  9. vue.js在windows本地下搭建环境和创建项目

    Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vu ...

  10. Bare Medal on BCM2835 and BCM2836

    A few days ago, I have tried to write bare medal program but failed. Now I find that the main mistak ...