卷积神经网络基础

CNN的构成

卷积层

卷积层负责提取图像中的局部特征

卷积层主要有很多个卷积核组成,这些卷积核也叫过滤器,每一个卷积核都代表一种模式或特征,卷积核是有深度的

卷积操作

一个公式

暂时不用看,一会儿回来对照一下
D o u t p u t = D i n p u t − D k e r n e l + 2 ∗ p a d d i n g s t r i d e + 1 D_{output} = \frac{D_{input}-D_{kernel}+2*padding}{stride}+1 Doutput=strideDinputDkernel+2padding+1

两个操作

局部关联、滑动窗口

卷积层运算过程
( 黄 色 区 域 代 表 滑 动 窗 口 ) (黄色区域代表滑动窗口)
假如图片channel维度为3,卷积核的个数为10,那么卷积核的深度亦为3,最终输出的channel维度为卷积核的个数

图片和第一个卷积核在每一个维度都进行上述的运算,得到3个特征图,然后将3张特征图对应位置相加得到最终的特征图。

剩下的每个卷积核与图片进行这样的操作都会得到一张特征图,最终组合到一起得到3x3x10的输出

即5x5x3 卷积 10个3x3x3 = 3x3x10

三种卷积

valid卷积指定padding为0对原图进行下采样,经过valid卷积后图片尺寸减小

full卷积指定padding=kernel_size-1对原图进行上采样,经过full卷积后图片尺寸增大

same卷积保持特征图尺寸不变。padding,stride需要满足这个公式
n = n − D k e r n e l + 2 ∗ p a d d i n g s t r i d e + 1 n = \frac{n-D_{kernel}+2*padding}{stride}+1 n=stridenDkernel+2padding+1

池化层

池化层用来大幅降低参数量级(降维)

池化操作

池化操作指定一个大小的区域,区域中的所有像素值加起来取平均或者直接返回最大的值

卷积神经网络中降维一般使用maxpooling,后面会讲为什么可以降维,以及为什么使用maxpooling降维

池化层过程

全连接层

全连接层类似传统神经网络的部分,用来输出想要的结果。

结构图

img
( 李 宏 毅 深 度 学 习 教 程 课 件 ) (李宏毅深度学习教程课件)

CNN和DNN的区别

卷积神经网络和全连接网络的本质区别就是下面两个特性

  • 局部感知
  • 权值共享

这两个特点是由于输入的特性决定的,但同时这两个特点极大降低了整个网络的参数量

对于一张图片而言,我们常常不需要看整张图片来判断图片上有什么物体,我们只需要一块小的可以代表这个物体的特征区域即可,这是卷积神经网络适用的前提。

我们另外引入一个概念,叫做感受野

对于DNN来说没有感受野的概念,或者说对于DNN的每个神经元,它的感受野都是全图

对于CNN来说,每个神经元由哪块原图中的区域决定,这块区域就是它的感受野

如下图,对于第一个神经元3来说,image左上角的3x3区域就是它的感受野

img

另外,一张图片上不同位置的相同特征,对于这张图片传递的信息来说,大多跟位置无关。我们当然希望使用同一组权重可以提取不同位置的相同特征。这就是权值共享。

img

总的来说,全连接网络前向传播的过程中永远考虑到整张图片的信息,而卷积神经网络每次采样都只考虑局部特征。理论上说,全连接网络保留了所有信息,但是层中每一个神经元都要考虑全部的信息,导致不堪重负,训练不起来。

而卷积神经网络主动对信息进行了区域划分,每一个神经元只负责一个小区域的信息,逐步抽象,直到最后才把高度精炼的信息整合起来。

几个问题

  • 全连接网络丢失了空间信息吗
  • 为什么卷积可以提取特征
  • 为什么池化层使用max pooling而不是average-pooling

第一个问题。我以为是没有丢失的,只是难以训练罢了

第二个问题。我在深度学习与目标检测这本书中看到有这么一段话

“在深度神经网络的具体应用中,往往有多个卷积核,我们可以认为,每一个卷积核代表了一种图像模式,如果某个图像块与此卷积核进行卷积后输出的值很大,则认为此图像块十分接近此卷积核”

关于为什么现在还不太明白,我姑且认为这是对的,并以此做一些推断。即当图片经过一个卷积层之后,较大的值就认为是特征区域抽象出来的特征值。

第三个问题。使用什么池化方式是视情况而定的,对于分类任务,我们通常只需要最显著的特征即可达到好的分类,但是对于一些图像生成等注重细节的任务,采用max pooling则容易丢失细节信息,此时可以使用平均池化,甚至不进行池化,而是采用下采样卷积

参考文献

一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)- 产品经理的人工智能学习库 (easyai.tech)

李宏毅2020机器学习深度学习(完整版)国语_哔哩哔哩_bilibili

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,主要用于图像识别和计算机视觉任务。它的基本概念包括以下几个方面: 1. 卷积层(Convolutional Layer):卷积层是CNN的核心组成部分,通过使用一系列可学习的滤波器(也称为卷积核)对输入图像进行卷积操作,提取图像的特征。每个滤波器会在输入图像上滑动,并计算出对应位置的卷积结果,生成一个特征图。 2. 池化层(Pooling Layer):池化层用于减小特征图的空间尺寸,同时保留重要的特征信息。常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling),它们分别选取局部区域的最大值或平均值作为池化结果。 3. 激活函数(Activation Function):激活函数引入非线性变换,增加模型的表达能力。在卷积神经网络,常用的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh等。激活函数通常被应用在卷积层之后。 4. 全连接层(Fully Connected Layer):全连接层将前一层的所有神经元与当前层的所有神经元相连接,每个连接都有一个权重。全连接层通常用于将卷积层和池化层提取的特征映射转化为最终的分类结果。 5. Dropout:Dropout是一种正则化技术,用于减少模型的过拟合。在训练过程,随机将一部分神经元的输出置为0,可以有效地防止网络对某些特定特征过度依赖。 6. 卷积神经网络的训练:CNN的训练通常使用反向传播算法(Backpropagation)进行参数更新。通过将输入数据和对应的标签进行前向传播和反向传播,不断调整网络参数,使得网络能够逐渐学习到更好的特征表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独腹地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值