对深度学习中全连接层、卷积层、感受野、1×1卷积、池化层、softmax层、全局平均池化的一些理解
1、全连接层
在卷积神经网络中,在多个卷积层和池化层后,连接着1个或1个以上的全连接层,全连接层把卷积层和池化层提取出来的所有局部特征重新通过权值矩阵组装成一个完整的图,因为用到了所有的局部特征,所以叫全连接。全连接层会将输入映射到一个高维空间,以便于模型能够学习到输入之间的复杂关系。
卷积层构成了特征提取器,而全连接层构成了分类器,全连接层将特征提取得到的特征图非线性地映射成一维特征向量,该特征向量包含所有特征信息,可以转化为分类成各个类别的概率(在进行分类任务时,在输出层之后利用softmax层,将输出值的和限制在[0,1]范围内,这样就可以将输出值看作是这个样本在各个类别上的概率值,并且可以将值最高的输出看作预测类)。例如,一个224×224大小的输入图像,经过多层卷积和池化,可能变成4096个1×1大小的特征图,根据这4096个特征可以用全连接层,来判断最后是猪狗牛羊中的哪一个。
全连接层存在的问题:参数冗余(仅全连接层就可以占整个网络参数的80%左右)、降低运算速度、容易导致过拟合。
如下图所示是一个具有两个隐藏层的全连接神经网络示意图,能够根据给定的10个输入特征,产生两个输出。
根据要解决的任务,输入层和输出层的神经元数是固定的(如果要解决D维输入的n分类问题,就需要一个具有D个输入的输入层,一个具有n个输出的输出层)。而隐藏层的神经元数量是任意的。一般来说,增加每层神经元的数量或神经网络的层数,意味着神经网络可以表达更复杂的函数,但是有了更多的可训练参数,会增加训练数据过拟合的风险。如果数据不复杂,或者使用的是小数据集,应该首先选用更小的神经网络。如果使用大容量的神经网络,可以使用一些正则化技术来防止过拟合数据,包括对参数的L2惩罚、dropout、批量归一化、数据扩充等。
在实际使用的过程中,全连接层可以由卷积操作实现。对于前层为全连接层的全连接层,可以转换为卷积核为1×1的卷积;对于前层为卷积层的全连接层,可以转换为卷积核为h×w的全局卷积,h和w分别为前层卷积输出特征图的高和宽。
2、感受野
感受野是指特征图中的某个点能够看到的输入图像的区域范围,即特征图上的点是由输入图像中感受野大小区域的计算得到的。在每一个卷积层上进行卷积操作,每个神经元的感受野也随之增大,神经元感受野的增大表示该神经元能接触到的原始图像范围也随之增大,意味着每个神经元能包含语义层次更高的特征,而感受野越小,表示其特征更加趋向局部和细节信息。如下图所示为一个三层卷积网络,每一层的卷积核为3×3,步长为1
可以看到,第一层对应的感受野是3×3,第二层是5×5,第三层是7×7。虽然第三层的感受野是7×7,但是输入层中边缘点的使用次数明显比中间点要少,因此做出的贡献不同,经过多层的卷积堆叠之后,输入层对于特征图点做出的贡献呈高斯分布。
深层神经网络的基本原理:随着网络层数的加深,感受野逐步增大,提取的特征含有更抽象的语义信息,用于图像分类任务的判断。
3、卷积层
(1)卷积层的基本作用:执行卷积操作,提取底层到高层的特征。
滤波器的通道数(1个滤波器中包含的卷积核数量)应当与输入通道数保持一致,对应的通道进行卷积,再将通道的卷积结果进行相加作为relu激活函数的输入得到一个二维特征图。当输入是一张灰度图像时,对应的滤波器只有1个通道,当输入是一张RGB彩色图像时,对应的滤波器应当是3通道。
每一个滤波器可以看作一个特征的提取器,滤波器与图像作用会生成一个二维特征图,特征图中显示了滤波器在图像中每个空间位置处的响应。若某一视觉特征出现在感受野中,则该区域所对应的特征图数值就越大,其通过一个非线性激活函数的概率就越大,因此特征图的值也称为激活值,它能够决定感受野区域内的这一特征能否被激活并传递到下一层。具体的视觉特征可能是低层的中的边界、斑点,也可能是高维中的车轮、人等。
构建卷积神经网络的任务就是在于构建这些滤波器,通过改变这些滤波器的权重值,使得这些滤波器对特定的特征有较高的激活值,从而识别特定的特征。在卷积神经网络中,从前往后不同卷积层所提取的特征会逐渐复杂化,一般来说,前面的卷积层检测到的是低阶特征,后面的卷积层检测到的是高阶特征。
(2)卷积层的两个特点:权重共享和局部连接。
①权重共享:一个滤波器只捕捉输入数据的一种特定局部特征,如果要提取多种特征,就需要使用多个不同的滤波器。
②局部连接:当前层的每一个神经元都只和前一层中某个局部窗口内的神经元相连,构成一个局部连接网络,两层之间的连接数大大减少。
(3)卷积层的超参数
①输出通道:等同于所使用的滤波器的数量,每个滤波器与输入进行卷积会生成一个特征图最为一个输出通道,每个滤波器所期望的特征是不同的,当滤波器看到输入数据中的期望特征时就会被激活。
②步长:步长越大,输出的特征图像的尺寸就越小,决定了特征图中的特征个数。
③填充:最常用于控制输出特征图的尺寸与输入数据的尺寸相同。因为感受野的原因,边缘处的特征点被卷积的次数要少于中心点,因此利用填充的方式可以增强对边缘信息的参考程度。
④滤波器尺寸:滤波器尺寸设置越大,需要训练的参数就会越多,但卷积模型能够更加精细地处理图像,对图像的抽象能力会越好。
⑤滤波器个数:等同于输出通道数。滤波器数目表示从上一层中通过卷积得到的特征图个数。所提取的特征图个数越多,就意味着需要的滤波器越多,卷积网络学习能力越强,分类效果越好。但卷积核过多会增大网络的复杂度,增加参数的个数,导致过拟合。
4、池化层
(1)池化层的作用:进行特征选择,降低特征数量,从而减少参数量。一句话概括就是:特征图尺寸减小,但通道数不变。
卷积层虽然可以减少网络中连接的数量,但特征图中的特征数并没有显著减少(因为通道数的增加,反而大幅提高了分类器的输入特征维度),如果后面接一个分类器,分类器的输入维数仍然很高,很容易出现过拟合的情况,为了解决这一问题,在卷积层之后加入一个池化层。
由于图像中每个像素点周围和该点具有较高的相似度,因此在卷积层之后设置池化层,提取区域内最具有代表性的特征,降低特征维度,提高模型的泛化能力,避免过拟合,并且能够保持平移、旋转、缩放等操作时的不变性。
(2)池化方式:
①平均池化:指的是取该区域内所有像素点的平均值
②最大池化:指的是取该区域内所有像素点的最大值
5、softmax层
在进行多分类任务时,通常选择softmax函数来作为多分类器。softmax层的输入为输入图像在每一个类别上的得分(特征激活值),输出为每一个类别对应的概率,所有类别的概率取值都在0~1之间,且和为1。
6、1×1卷积
(1)1×1卷积的计算原理
下图左侧是一个图片的三个通道,通过与1个1×1*3滤波器进行卷积,形成了一个与原始图片等高等宽但通道数减少为1的特征图。
(2)1×1卷积的作用
①改变输入特征的通道数量。池化层只能改变输入图像的宽度和高度,无法改变通道数量,1×1卷积通过控制滤波器的数量,可以实现通道数的增加或减少,进而增加或减少了模型的参数量。
比如,输入的特征图尺寸为28×28×192,通过3×3××192×128的滤波器,则参数量为3×3×192×128 = 221184;若在3×3×192×128的滤波器前加上一个1×1×192×96的滤波器,那么参数量为1×1×192×96 + 3×3×96×128 = 129024,参数量下降了近一半。
②增加网络的非线性。利用1×1卷积+ReLu操作可以增加网络的非线性,从而在不增加网络参数的情况下提升网络的非线性拟合能力,进而提高网络的分类效果
③1×1卷积可以替换全连接层。
④深度可分离卷积。
对于标准的卷积操作:一张3通道的宽高为5×5的输入图像,经过3×3×3×4的滤波器之后,产生4个特征图。由于卷积层共有4个filter,每个filter共有3个kernel,每个kernel的尺寸为3×3,因此卷积层的参数量为:4×3×3×3=108
对于深度可分离卷积:一共包含两个步骤:逐通道卷积、逐点卷积。
逐通道卷积:通道之间相互独立,没有各通道之间的特征融合,输出特征图中的每一个点只对应一个通道上感受野内的特征。
比说,对于每一个通道的输入特征5×5,分别利用一个3×3的卷积核进行点乘求和,分别得到一个通道的输出特征5×5,假设输入通道为3,那么就需要3个3×3的卷积核,产生3个5×5的特征输出。逐通道卷积的参数量为3×3×3 = 27
逐点卷积:由于逐通道卷积只在通道间进行卷积,没有各通道间的特征融合,无法改变通道数,因此后续还需要连接一个逐点1×1卷积,一方面可以融合不同通道间的特征,还可以改变特征图的通道数。比如说,对于主通道卷积的输出5×5×3中的每一个通道,分别利用一个1×1×4的滤波器进行1×1卷积,分别得到一个通道的输出特征5×5,因此会产生5×5×4的输出。逐点卷积的参数量为1×1×3×4 = 12
深度可分离卷积一共需要的参数量为27 + 12 = 39
深度可分离卷积与标准卷积的参数量之比为:
可以看到,虽然深度可分离卷积将卷积过程分为了两步,但凭借其轻量的卷积方式,总体的参数量约等于标准卷积的1/9,极大减少了卷积过程的计算量。
7、全局平均池化层(GAP)
全连接层是将特征图拉成一维向量,将每个特征点作为一个神经元进行分类任务。
全局平均池化层是将将特征图中的每个通道求平均值,并将每个平均值作为一个神经元进行分类任务。
优点:
①抑制过拟合。假设特征图的尺寸为10×10×32,分类结果有2种,那么全连接层就需要3200×2个参数,而全局平均池化后就只需要32×2个参数。
②输入图像的尺寸更加灵活,特征图经过全局平均池化层后,所需参数不再与输入图像的尺寸有关,因此输入图像的长宽可以不固定。
对深度学习中全连接层、卷积层、感受野、1×1卷积、池化层、softmax层、全局平均池化的一些理解的更多相关文章
- 卷积在深度学习中的作用(转自http://timdettmers.com/2015/03/26/convolution-deep-learning/)
卷积可能是现在深入学习中最重要的概念.卷积网络和卷积网络将深度学习推向了几乎所有机器学习任务的最前沿.但是,卷积如此强大呢?它是如何工作的?在这篇博客文章中,我将解释卷积并将其与其他概念联系起来,以帮 ...
- 深度学习中的Normalization模型
Batch Normalization(简称 BN)自从提出之后,因为效果特别好,很快被作为深度学习的标准工具应用在了各种场合.BN 大法虽然好,但是也存在一些局限和问题,诸如当 BatchSize ...
- [优化]深度学习中的 Normalization 模型
来源:https://www.chainnews.com/articles/504060702149.htm 机器之心专栏 作者:张俊林 Batch Normalization (简称 BN)自从提出 ...
- 深度学习笔记 (二) 在TensorFlow上训练一个多层卷积神经网络
上一篇笔记主要介绍了卷积神经网络相关的基础知识.在本篇笔记中,将参考TensorFlow官方文档使用mnist数据集,在TensorFlow上训练一个多层卷积神经网络. 下载并导入mnist数据集 首 ...
- 深度学习中GPU和显存分析
刚入门深度学习时,没有显存的概念,后来在实验中才渐渐建立了这个意识. 下面这篇文章很好的对GPU和显存总结了一番,于是我转载了过来. 作者:陈云 链接:https://zhuanlan.zhihu. ...
- 深度学习中常见的 Normlization 及权重初始化相关知识(原理及公式推导)
Batch Normlization(BN) 为什么要进行 BN 防止深度神经网络,每一层得参数更新会导致上层的输入数据发生变化,通过层层叠加,高层的输入分布变化会十分剧烈,这就使得高层需要不断去重新 ...
- 深度学习中Dropout原理解析
1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...
- Hebye 深度学习中Dropout原理解析
1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...
- 【转载】深度学习中softmax交叉熵损失函数的理解
深度学习中softmax交叉熵损失函数的理解 2018-08-11 23:49:43 lilong117194 阅读数 5198更多 分类专栏: Deep learning 版权声明:本文为博主原 ...
- 深度学习中正则化技术概述(附Python代码)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 磐石 介绍 数据科学研究者们最常遇见的问题之一就是怎样避免过拟合. ...
随机推荐
- DCU-GPU
- ubuntu 16.04 Chrome安装
打开终端 输入 命令1:sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list ...
- K8S informer机制
一.informer介绍 Kubernetes基于声明式API的设计理念,所谓声明式API,即告诉Kubernetes Controller资源对象的期望状态,这样为Kubernetes在事件通知后, ...
- vue clickoutside 点击元素以外的区域隐藏该元素
一.什么是VueUseVueUse不是Vue.use !!!它是一个基于 Composition API 的实用函数集合,下面是具体的一些用法二.如何引入import { 具体方法 } from '@ ...
- 洛谷P4571 [JSOI2009] 瓶子和燃料
题目 https://www.luogu.com.cn/problem/P4571 思路 首先观察并且简单模拟一下火星人取燃料的过程,发现最终燃料的量一定是他选的k个瓶子容量的线性组合(观察操作3就知 ...
- Delphi中var和out
var: 传递的是参数的地址 out: 以返回值的形式返回结果,类似函数的效果:可以实现一个函数返回多个值
- 基于Face-Recognition的计算机人脸识别安全认证程序
20202411 2020-2021-2 <Python程序设计>实验四报告 基于Face-Recognition的计算机人脸识别安全认证程序 课程:<Python程序设计> ...
- 2022/7/28 第七组陈美娜 API类
API:Application Program Interface应用程序接口 JDK给我们提供的一些已经写好的类,可以直接调方法来解决问题 类的方法在宏观上都可以称为接口 接口:1.interfac ...
- 第9章 使用MVC为移动和客户端应用程序创建Web API(ASP.NET Core in Action, 2nd Edition)
本章包括 创建Web API控制器以向客户端返回JSON 使用属性路由自定义URL 使用内容协商生成响应 使用[ApiController]属性应用通用约定 在前五章中,您已经完成了服务器端渲染ASP ...
- python 添加文件模板,默认添加作者时间等必要信息
1.模板设置 配置路径:Setting-Editor-File and Code Templates-Python-Script 2.示例输入 代码如下(示例): #!/usr/bin/env pyt ...