深度学习二、CNN(卷积神经网络)概念及理论
一、卷积神经网络(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(卷积神经网络)概念及理论的更多相关文章
- 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统
基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...
- 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)
一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...
- SIGAI深度学习第九集 卷积神经网络3
讲授卷积神经网络面临的挑战包括梯度消失.退化问题,和改进方法包括卷积层.池化层的改进.激活函数.损失函数.网络结构的改 进.残差网络.全卷机网络.多尺度融合.批量归一化等 大纲: 面临的挑战梯度消失问 ...
- Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN
http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...
- CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...
- CNN学习笔记:卷积神经网络
CNN学习笔记:卷积神经网络 卷积神经网络 基本结构 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像.音频等.卷积神经网络通过卷积(convolution)操作.汇合(pooling)操作 ...
- 深度学习面试题10:二维卷积(Full卷积、Same卷积、Valid卷积、带深度的二维卷积)
目录 二维Full卷积 二维Same卷积 二维Valid卷积 三种卷积类型的关系 具备深度的二维卷积 具备深度的张量与多个卷积核的卷积 参考资料 二维卷积的原理和一维卷积类似,也有full卷积.sam ...
- day-16 CNN卷积神经网络算法之Max pooling池化操作学习
利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...
- Hinton“深度学习之父”和“神经网络先驱”,新论文Capsule将推翻自己积累了30年的学术成果时
Hinton“深度学习之父”和“神经网络先驱”,新论文Capsule将推翻自己积累了30年的学术成果时 在论文中,Capsule被Hinton大神定义为这样一组神经元:其活动向量所表示的是特定实体类型 ...
随机推荐
- Util6 MIS2.0 (优六信息化管理系统框架)
Util6 MIS一套基于ASP.NET MVC5 + Layui 开发的通用信息化管理系统快速开发框架 系统操作界面简洁, 项目结构清晰,功能模块化设计,支撑框架轻量高效,代码层级分离,注释完整,可 ...
- Android为TV端助力:自定义view之太阳
先看效果图 package com.hhzt.iptv.lvb_w8.view; import android.content.Context;import android.graphics.Canv ...
- (详细)华为荣耀4X CHE-TL00H的usb调试模式在哪里打开的步骤
每当我们使用PC通过数据线链上安卓手机的时候,如果手机没有开启usb开发者调试模式,PC则没能成功读到我们的手机,有时,我们使用的一些功能较强的工具好比之前我们使用的一个工具引号精灵,老版本就需要打开 ...
- pythonmysql运行报错解决过程中遇到的其中一个报错解决文章来源
本文章仅记录下面报错的解决文章来源:error: command 'C:\Users\Administrator\AppData\Local\Programs\Common\Micr osoft\Vi ...
- Docker-Docker-compose应用
Docker-compose是用来定义和运行多容器应用的工具,它是独立于docker存在的,需要单独安装.实际应用场景中,我们的应用可能被打包运行在不同的容器里面,例如一个常规的web应用可能会涉及到 ...
- vue打包发布在spingboot项目中 vue-router路由的处理
(原) 以下例子springboot后端地址为:localhost:7080/pingandai vue前端地址为:locahost:8080/pingandai/ 1.如果路由模式设置的是histo ...
- Azure按订阅,资源组,资源类型导出所有资源powershell命令
一般可以借助powershell命令来读取资源:例如:1, 读取某个订阅下的资源:$subscriptionID = "xxxxxxxx"Set-AzureRmContext $s ...
- WinForms 快速开发的工具类。
下面是我本人在 WinForms 开发中积累的一些心得. 1. 在父窗体中打开子窗体 直接贴代码: private void btnCompare_Click(object sender, Event ...
- 数据结构学习之栈求解n皇后问题
数据结构学习之栈求解n皇后问题 0x1 目的 深入掌握栈应用的算法和设计 0x2 内容 编写一个程序exp3-8.cpp求解n皇后问题. 0x3 问题描述 即在n×n的方格棋盘上,放置n个皇后 ...
- Linux:Day9(上) 压缩工具
压缩.解压缩及归档工具 compress/uncompress:.Z # 现在已经很少在见到了 gzip/gunzip:.gz bzip2/bunzip2:.bz2 xz/unxz:.xz # 目前推 ...