一、卷积神经网络(CNN)

1、常见的CNN结构有:LeNet-5、AlexNet、ZFNet、VGGNet、ResNet等。目前效率最高的是ResNet。

2、主要的层次:

数据输入层:Input Layer

卷积计算层:CONV Layer

ReLU激励层:ReLU Incentive Layer(功能就是和激活函数一样,具有非线性的能力)

池化层:Pooling Layer(压缩形式,降低复杂度)

全联接层: FC Layer

备注 :Batch Normalization Layer

3、详解Input Layer

和传统的神经网络一样,首先需要对输入的数据进行预处理。

(1) 去均值:将输入数据的各个维度中心化到0,例如X1(1,2,5),那么平均值就是(1+2+5)/3 = 8/3,在用每一个元素减去8/3。

(2)归一化:将数据各个维度的幅度归一到同样的范围。(在去均值的基础上,再除以标准差)

(3)PCA/白化:(在cnn处理图片不用这个)

用PCA降维(去掉特征与特征之间的相关性)

白化石在PCA的基础上,对转换后的数据每个特征轴上的幅度进行归一化

例:(去均值和归一化)

例:PCA和白化

4、CONV Layer(卷积)

  • 局部关联:每个神经元看做一个filter/kernal
  • 窗口(receptive field)滑动,filter对局部数据进行计算
  • 相关概念(深度:depth,步长:stride,填充值:zero-padding)

理解这张图

(1)可以把每一张图片分割成很多个神经元,如图最左边

(2) 每一个图片可用RGB(红、绿、蓝三个通道的颜色)三个方面来表示。

(3)filter可以看作是从几个角度来描述这个图片(比如说大小,形状),有几个角度,深度就是多少,那么每一个角度,就对应一组filter。

(4)如上图:一般的图片为正方形,步长s=2,窗口大小f=3,高度h=5,宽度w=5,填充p=1*2,满足(p+w-f+s)/s 能够被整除,输出为out输出矩阵的大小

卷积神经网络就是解决了全链接神经网络复杂度,进行局部感知,如 下图:

5、ReLU Layer(激活)

一班用ReLU,如果效果不好,可用Leak Relu

6、池化层 Pooling Layer

在连续的卷积层中间存在的就是池化层,主要功能是:通过逐步减小表征的空间尺寸来减小参数量和网络中的计算;池化层在每个特征图上独立操作。使用池化层可以压缩数据和参数的量,减小过拟合。

   类似传统神经网络中的结构,FC层中的神经元连接着之前层次的所有激活输出; 换一句话来讲的话,就是两层之间所有神经元都有权重连接;通常情况下,在 CNN中,FC层只会在尾部出现

     一般的CNN结构依次为:

INPUT
       [[CONV -> RELU] * N -> POOL?]*M
[FC -> RELU] * K
       [FC -> RELU] * K

FC

7、 初始化参数(在卷积神经网络中,可以看到神经元之间的连接是通过权重w以及偏置b实现的。在具 体的神经网络之前 ,需要初始化参数)

     权重的初始化 :

        一般方式:很小的随机数(对于多层深度神经网络,太小的值会导致回传的梯度非常小),一般随机 数是服从均值为0,方差未知(建议:2/n, n为权重数量,https://arxiv.org/pdf/1502.01852.pdf) 的高斯分布随机数列。

偏置项的初始化 :

       一般直接设置为0,在存在ReLU激活函数的网络中,也可以考虑设置为一个很小的数字

8、卷积神经网络正则化和Dropout

     神经网络的学习能力受神经元数目以及神经网络层次的影响,神经元数目越大, 神经网络层次越高,那么神经网络的学习能力越强,那么就有可能出现过拟合的问题 。

     Regularization:正则化,通过降低模型的复杂度,通过在cost函数上添加 一个正则项的方式来降低overfitting,主要有L1和L2两种方式

     Dropout:通过随机删除神经网络中的神经元来解决overfitting问题,在每次迭代的时候,只使用部分神经元训练模型获取W和d的值(

每次丢掉一半左右的隐 藏层神经元,相当于在不同的神经网络上进行训练,这样就减少了神经元之间的依 赖性,即每个神经元不能依赖于某几个其它的神经元(指层与层之间相连接的神经 元),使神经网络更加能学习到与其它神经元之间的更加健壮robust(鲁棒性)的 特征。另外Dropout不仅减少overfitting,还能提高准确率 )

9、卷积神经网络训练的方法

   在神经网络中一般采用Mini-batch SGD,主要包括以下四个步骤的循环:

    (1)采样一个batch的数据

   (2)前向计算损失loss

   (3)反向传播计算梯度(一个batch上所有样本的梯度和) 

   (4)利用梯度更新权重参数 

深度学习二、CNN(卷积神经网络)概念及理论的更多相关文章

  1. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  2. 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统

    基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...

  3. 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)

    一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...

  4. SIGAI深度学习第九集 卷积神经网络3

    讲授卷积神经网络面临的挑战包括梯度消失.退化问题,和改进方法包括卷积层.池化层的改进.激活函数.损失函数.网络结构的改 进.残差网络.全卷机网络.多尺度融合.批量归一化等 大纲: 面临的挑战梯度消失问 ...

  5. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

    http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...

  6. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

    https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...

  7. CNN学习笔记:卷积神经网络

    CNN学习笔记:卷积神经网络 卷积神经网络 基本结构 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像.音频等.卷积神经网络通过卷积(convolution)操作.汇合(pooling)操作 ...

  8. 深度学习面试题10:二维卷积(Full卷积、Same卷积、Valid卷积、带深度的二维卷积)

    目录 二维Full卷积 二维Same卷积 二维Valid卷积 三种卷积类型的关系 具备深度的二维卷积 具备深度的张量与多个卷积核的卷积 参考资料 二维卷积的原理和一维卷积类似,也有full卷积.sam ...

  9. day-16 CNN卷积神经网络算法之Max pooling池化操作学习

    利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...

  10. Hinton“深度学习之父”和“神经网络先驱”,新论文Capsule将推翻自己积累了30年的学术成果时

    Hinton“深度学习之父”和“神经网络先驱”,新论文Capsule将推翻自己积累了30年的学术成果时 在论文中,Capsule被Hinton大神定义为这样一组神经元:其活动向量所表示的是特定实体类型 ...

随机推荐

  1. 介绍Dynamics 365的OrgDBOrgSettings工具

    摘要: 微软动态CRM专家罗勇 ,回复320或者20190320可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 有时候会需要 ...

  2. [C#学习笔记1]用csc.exe和记事本写一个C#应用程序

    csc.exe是C#的命令行编译器(CSharpCompiler),可以编译C#源程序成可执行程序.它与Visual Studio等IDE(Integrated Development Environ ...

  3. 如何修改Recovery的字符串资源

    前言:在实际的ROM修改中,Recovery的修改还是会经常遇到的,这篇文章主要讲解如何修改Recovery字符串.   首先我们先了解下大概的流程. 1.screen_ui.cpp 中的Screen ...

  4. RecycleView的notifyItemRemoved使用注意

    转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10116095.html 我们为了移除RecycleView的某一项,会用RecycleView的noti ...

  5. MQTT简单介绍与实现

    1. MQTT 介绍它是一种 机器之间通讯 machine-to-machine (M2M).物联网 Internet of Things (IoT)常用的一种轻量级消息传输协议适用于网络带宽较低的场 ...

  6. php连接数据库,以及日期处理函数

    php连接数据库,以及日期处理函数 $conn=mysql_connect("10.0.10.0:0000","root","123456" ...

  7. Gitlab管理网页老是500错误?增加物理内存,增加cpu吧

    上一篇 CentOS 7 系统下 GitLab 搭建 搭建时,是用的是1G内存, 访问gitlab管理网页非常慢,常常出现 500错误 查询后发现: Gitlab的运行对CPU是有要求的:2核心 支持 ...

  8. ERROR:"org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /config/topics/test" when creating or deleting Kafka operations authorized through the Ranger policies

    PROBLEM DESCRIPTION When creating or deleting topics in Kafka, they cannot be authorized through the ...

  9. eval、exec及元类、单例实现的5种方法

    eval内置函数 # eval内置函数的使用场景:#   1.执行字符串会得到相应的执行结果#   2.一般用于类型转化,该函数执行完有返回值,得到dict.list.tuple等​dic_str = ...

  10. Ubuntu server 16.04的安装 以及配置(服务器版)

    1.在电脑上下载最新版本的Ubuntu服务器ISO映像,刻录到CD或创建一个可启动的USB盘. 2.视情况而定,进入到服务器的boot界面,把cd或者usb设置为启动第一项 3.开始安装   1)Ub ...