CNN卷积神经网络分析
五月两场 | NVIDIA DLI 深度学习入门课程
5月19日/5月26日一天密集式学习 快速带你入门阅读全文>
正文共2566个字,4张图,预计阅读时间13分钟。
CNN最大的优势在特征提取方面。由于CNN的特征检测层通过训练数据进行学习,避免了显示的特征抽取,而是隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。
一句话总结CNN最大的特点就是局部感知和参数共享 。下面先介绍这两个概念。
1、局部感知野(也叫稀疏连接)
这个概念受启发于生物学里面的视觉系统结构,视觉皮层的神经元就是局部接受信息的,我们只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。这种特征提取的过程类似自下而上的方法,一层层接收局部的输入,最后不断聚合。
在全连接网络中,以图片输入为例。假设input为1000x1000,接下来的隐藏层中的神经元个数为1000,如果是全连接,那么每个神经元都要和输入相连,所以该层需要的参数就是1000x(1000x1000)个。但是使用局部感知,假设每个隐藏中的神经元与图像中的10x10的局部图像相连,那么此时的权值参数数量变为1000x(10x10)个。
3X3的卷积核在5X5的图像上做卷积的过程
2、参数共享
卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。
在上面的局部连接中,每个神经元都对应10x10=100个参数,一共1000个神经元,如果这1000个神经元的100个参数都是相等的,那么参数数目就变为100了。
怎么理解权值共享呢?我们可以这100个参数(也就是卷积操作)看成是提取特征的方式,该方式与位置无关。这其中隐含的原理则是:图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。
3、多核卷积
每个卷积都是一种特征提取方式,就像一个筛子,将图像中符合条件(激活值越大越符合条件)的部分筛选出来。为充分提取特征,可以添加多个卷积核。
全连接vs局部连接
对于上图中的概念需要了解清楚:
Filter size:这个指的是卷积核(或者称为滤波器)的大小;一个卷积核就是一个滤波器filter,可以提取一种特征。
每层中的参数=卷积核的个数x卷积和的大小。
4、Down-pooling
为了减少输入特征的量级。
对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 − 8 + 1) × (96 − 8 + 1) = 7921 维的卷积特征,由于有 400 个特征,所以每个样例 (example) 都会得到一个 892 × 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。
我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。
子抽样:每个卷基层跟着一个局部平均和子抽样的计算层,因此特征映射的分辨率降低。
5、多层卷积
在实际应用中,往往使用多层卷积,然后再使用全连接层进行训练,多层卷积的目的是一层卷积学到的特征往往是局部的,层数越高,学到的特征就越全局化。
完整网络结构
卷积神经网络中的每一个特征提取层(C-层)都紧跟着一个 用来求局部平均与二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。
经典CNN--LeNet-5网络
卷积层C1:
输入是32x32,C1层有6个特征图(也就是有6个卷积核),每个卷积核大小是5x5,所以特征图大小就是(32-5+1)^2=28x28;
参数数目:(5x5+1个bias)x6个卷积核
连接数目:(5x5+1)x(28x28)x6
采样层S2:
6个14x14的特征图,每个特征图中的每个单元与C1中的2x2邻域相连,不重叠。
S2层每个单元的4个输入相加,乘以一个训练参数w,再加一个偏置b,通过sigmoid函数计算;
参数:因为局部参数共享,(1+1)x6=12个
连接数:(2x2+1)x14x14x6
卷积层C3:
16个卷积核,每个特征图大小是10x10,卷积核大小是5x5;
每个特征图中的每个神经元与S2中的某几个层的多个5x5的邻域相连。比如,第0张特征图中的每个节点与S2中的第0、1、2张特征图总共3个5x5的节点相连。
【Question】这个是如何连接?是否有理论可循?
采样层S4:同S2对C1
卷积层C5,全连接:120个神经元,可以看做120个特征图,每个特征图的大小是1x1;
每个单元与S4层的全部16个单元的5x5域相连;连接数=可训练参数:(16x5x5+1)x120
F6层:
84(这个数字源自输出层的设计)个单元,与C5层全连接;F6层计算输入向量和权重向量之间的点积,再加上一个偏置;连接数=训练参数:(120+1)x84
输出层采用欧式径向基函数单元:
给定一个输入模式,损失函数应使得F6的配置模式的期望分类足够接近;每类一个单元,每个单元连接84个输入;
思考
CNN模型的最后加上若干层的LSTM,对于有时序特征的数据,是如何实现更好的特征提取的?
参考
http://www.jeyzhang.com/cnn-learning-notes-1.html
http://ibillxia.github.io/blog/2013/04/06/Convolutional-Neural-Networks/
http://dataunion.org/11692.html
原文链接:https://www.jianshu.com/p/32d3048da5ba
查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:
www.leadai.org
请关注人工智能LeadAI公众号,查看更多专业文章
大家都在看
LSTM模型在问答系统中的应用
基于TensorFlow的神经网络解决用户流失概览问题
最全常见算法工程师面试题目整理(一)
最全常见算法工程师面试题目整理(二)
TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络
装饰器 | Python高级编程
今天不如来复习下Python基础
CNN卷积神经网络分析相关推荐
- DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)
DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现) @author:wepon @blog:http://blog.csdn.net/u012162 ...
- cnn卷积神经网络应用_卷积神经网络(CNN):应用的核心概念
cnn卷积神经网络应用 In this tutorial, we'll work through the core concepts of convolutional neural networks ...
- 深度学习 | MATLAB实现CNN卷积神经网络结构及参数概述
深度学习 | MATLAB实现CNN卷积神经网络结构及参数概述 目录 深度学习 | MATLAB实现CNN卷积神经网络结构及参数概述 基本介绍 模型描述 训练过程 计算函数 参考资料 基本介绍 卷积神 ...
- 深度学习--TensorFlow(8)CNN卷积神经网络理论(计算机视觉)
目录 计算机视觉介绍 1.计算机视觉应用 2.计算机视觉技术 图像分类 目标检测 目标跟踪 语义分割 实例分割 BP神经网络的缺点 一.卷积神经网络简介 1.卷积 2.全连接与局部感受野 3.权值共享 ...
- 【AI易操作-深度学习算法代码解读】基于keras实现图像识别CNN模型-含CNN卷积神经网络模型原理
图像识别为什么要用卷积神经网络CNN?比传统神经网络好在哪里? 核心差别点:多了卷积层+池化层,所以本文主要是梳理卷积层和池化层设计原理+CNN模型实现(基于Keras代码) 传统神经网络的劣势 我们 ...
- 卷积神经网络人脸特征提取,cnn卷积神经网络模型
1.卷积神经网络 有哪些改进的地方 卷积神经网络的研究的最新进展引发了人们完善立体匹配重建热情.从概念看,基于学习算法能够捕获全局的语义信息,比如基于高光和反射的先验条件,便于得到更加稳健的匹配.目前 ...
- CNN 卷积神经网络结构
CNN cnn每一层会输出多个feature map, 每个Feature Map通过一种卷积滤波器提取输入的一种特征,每个feature map由多个神经元组成,假如某个feature map的sh ...
- CNN卷积神经网络结构及参数配置
来源:机器学习算法与自然语言处理 作者:白雪峰 转载于:https://blog.csdn.net/np4rHI455vg29y2/article/details/78958121 1.CNN例子 Y ...
- 图卷积神经网络分析复杂碳水化合物
来源:DeepHub IMBA作者:Daniel Bojar本文约2800字,建议阅读5分钟 本文介绍了如何使用PyTorch处理生物数据. 图卷积神经网络 (GCN) 在过去几年中引起了越来越多的关 ...
最新文章
- Nat. Rev. Neurol. | 机器学习在神经退行性疾病诊断和治疗中的应用
- ES6 模块化的基本语法——默认导出 与 默认导入、按需导出 与 按需导入、直接导入并执行模块代码
- 编程科普|你知道的关于 Python 的那些知识,可能全错了!
- JavaScript学习笔记:类型检测
- 最擅长玩《毁灭战士》的AI开源了 | 来自CMU的论文代码
- js截图插件_WordPress外贸网站插件装多了很卡很卡?别慌,试试这招
- 女士品茶——统计学如何变革了科学和生活1
- FPGA内部结构和工作原理
- Excel数据分析—制作客户画像
- 5-8 哈利·波特的考试 (25分)
- Android游戏开发教程汇总
- 【毕业设计】flink大数据淘宝用户行为数据实时分析与可视化
- 用iPhone一秒拍摄3D照片,Facebook这项技术厉害了
- QQ登录的加密传输安全
- java 空白图片_图片文件打印空白的解决办法
- java编程电话号码查询_java课程设计电话号码查询系统(15页)-原创力文档
- 中文计算机核心期刊目录
- PCB入门使用技巧——个人笔记
- python实现动态壁纸_70 行 python 代码实现壁纸批量下载
- 计算机桌面体验,解决运行OneNote提示“安装桌面体验”的方法
热门文章
- Java 接口编程题
- python多线程扫描_Python多线程扫描端口代码示例
- 大数据学习线路_[个人经验篇]大数据学习线路前导篇
- html和css动画效果,css过渡和css动画的区别是什么?
- 10打开没有反应_118个遇水反应化学品清单及高压反应釜操作经验
- centos7挂载ntfs文件系统_MacOS读写挂载NTFS磁盘,几行代码就行了
- mysql source导入慢,MySQL mysqldump与source导入慢怎么解决
- vue - 组件的创建
- ExtJs radiogroup form.loadRecord方法无法赋值正确解决办法
- 设计模式原则(3)--Dependency Inversion Principle(DIP)--依赖倒转原则