nndl-book-笔记-基础模型第五章-卷积神经网络
发布日期:2022-02-17 04:52:19 浏览次数:5 分类:技术文章

本文共 2913 字,大约阅读时间需要 9 分钟。

第5 章卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN或ConvNet)是一种具有局部连接、权重共享等特性的深层前馈神经网络。

    1)最早是主要用来处理图像信息。使用全连接处理图像有两个缺点,:参数过多;局部不变特性(所以出现卷积操作)。

    2)卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的前馈神经网络,使用反向传播算法进行训练(更新参数。

    3)CNN特性:局部连接;权值共享(一组连接共享一个参数);汇聚。

    4)CNN应用:图像和视频分析的各种任务上,比如图像分类、人脸识别、物体识别、图像分割等,近年来应用到自然语言处理、推荐系统等领域。

  5.1 卷积

    1)一维卷积:一维卷积经常用在信号处理中,用于计算信号的延迟累积。

                 

    2)二维卷积:卷积与互相关操作类似,只是卷积 操作要先将卷积核翻转180°,后进行乘积求和。其中,卷积核选取的不同,会导致卷积操作后的结果不同,效果不同。一幅图像在经过卷积操作后得到结果称为特征映射。

                  

    5.1.1 互相关

    1)在具体实现时,一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或开销(卷积核翻转)。

    2)很多深度学习工具中卷积操作其实都是互相关操作。 可以表述为: Y = W ⊗ X

    5.1.2 卷积的变种

    1)在卷积的基础上,引入滤波器的滑动步长和零填充来增加卷积的多样性,可以更灵活地进行特征抽取。

    1)假设卷积层的输入神经元个数为n,卷积大小为m,步长(stride)为s,输入神经元两端各填补p 个零(zero padding),那么该卷积层的神经元数量为(n − m + 2p)/s + 1。

         其中n+2p为填充后的总长度,减去m为移动的总长度,/s为移动多少次,+1为之间-2p的补充。

         故通常取合适值,使得(n+2p-m)/s+1 为整数

    2)常用的三种卷积,而卷积一般默认为等宽卷积。

                 

    5.1.3 卷积的数学性质

    1)在宽卷积的情况下,即p=m-1时,具有交换性,x⊗y = y⊗x。

    1)卷积中的导数结论(推导有些迷...):假设Y = W⊗X,其中X ∈ RM×N,W ∈ Rm×n,Y ∈ R(M−m+1)×(N−n+1

                   1、f(Y ) 关于W 的偏导数为X 和∂f(Y )/∂Y的卷积,

                   2、f(Y ) 关于X 的偏导数为W 和∂f(Y )/∂Y的宽卷积。

  5.2 卷积神经网络

                  卷积神经网络一般由卷积层、汇聚层和全连接层构成。

    5.2.1 用卷积来代替全连接

    1)由于全连接层导致的参数过多,所以想到使用卷积层替代全连接层。

         用卷积来代替全连接,第l 层的净输入z(l) 为第l −1 层活性值a(l−1)和滤波器w(l) ∈ Rm 的卷积,即

                                                     z(l) = w(l) ⊗ a(l−1) + b(l),

              其中滤波器w(l) 为可学习的权重向量,b(l) ∈ Rnl−1为可学习的偏置。(目的为了减少参数)

                                      

    2)卷积操作的特点:局部连接(下一层的神经元与上一层的所有神经元相连);

                                      权值共享(作为参数的滤波器w(l) 对于第l 层的所有的神经元都是相同的。即对不同的神经元权值相同)

    5.2.2 卷积层

    1)卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器。

    2)特征映射(Feature Map):为一幅图像(或其它特征映射)在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征。(可以说是图像矩阵经过卷积操作后所产生的结果矩阵么)为了提高卷积网络的表示能力,可在不同层上采用不同的卷积核,以得到不同的特征映射。

    3)下图为3维卷积层表示,其中输入特征映射为输入的图像矩阵,用卷积替换全连接,计算输出特征映射。

        

                

    5.2.3 汇聚层(pooling layer 池化层)

    1)卷积层可以减少网络中连接的数量,但特征映射组中的神经元个数并没有显著减少。之所以不能在卷积层之后直接加分类器,是因为维度过高,容易出现过拟合现象,因此需要有池化层(汇聚层)来降低特征维数,避免过拟合。并从而减少参数数量。 

    2)汇聚操作:最大汇聚(取出同一区域内,数值最大的值);平均汇聚(使用一个区域内的平均值来代表)

    3)典型的汇聚层是将每个特征映射划分为2×2 大小的不重叠区域,然后使用最大汇聚的方式进行下采样。汇聚层也可以看做是一个特殊的卷积层,卷积核大小为m×m,步长为s × s,卷积核为max函数或mean 函数。过大的采样区域会急剧减少神经元的数量,会造成过多的信息损失。

  5.2.4 典型的卷积网络结构

    1)卷积层-->激活层(激活层目的是在卷积操作之后,加入非线性函数,否则线性函数的叠加无法达到学习参数的效果)

        (卷积层-->激活层)-->汇聚层(池化层)(为了减少卷积操作后的特征映射参数,常见2*2的区域内最大汇聚)

          上述----->全连接层(是为了完成所需任务,如分类任务中全连接层充当最终划分结果的操作)

          最后的softmax 应该是归一化操作,完成映射。

              

    2)网络结构趋向于使用更小的卷积核(比如1 × 1 和3 × 3)以及更深的结构(比如层数大于50)。由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用变得也越来越小,因此目前比较流行的卷积网络中,汇聚层的比例也逐渐降低,趋向于全卷积网络。(卷积核为奇数是为了实现等宽卷积,深度越深是为了能够学习到更高层次的特征

  5.3 参数学习(看书推导....)

  5.4 几种典型的卷积神经网络

    5.4.1 LeNet-5:手写体数字识别

                     将的很清楚

         

计算参数时*6  *6  *3  *1由来,

    5.4.2 AlexNet

    1)是第一个现代深度卷积网络模型,使用GPU进行并行训练,采用了ReLU 作为非线性激活函数,使用Dropout 防止过拟合,使用数据增强来提高模型准确率等。

    2)AlexNet结构:包括5个卷积层、3个全连接层和1个softmax层。

                      关于结构讲解:  

           

    5.4.3 Inception 网络(如论文中,不赘述)

    5.4.4 ResNet 网络(同上)

  5.5 其它卷积方式

          旨在通过步长和零填充进行不同的卷积操作。

    5.5.1 转置卷积

    1)为了实现从低维度到高纬度的映射,此过程称为转置卷积。

               

    5.5.2 空洞卷积    (为了增加输出结果的感受野)

           对于一个卷积层,如果希望增加输出单元的感受野,一般可以通过三种方式实现:(1)增加卷积核的大小;(2)增加层数;(3)在卷积之前进行汇聚操作。前两种操作会增加参数数量,而第三种会丢失一些信息。

    1)空洞卷积是一种不增加参数数量,同时增加输出单元感受野的一种方法。

    2)空洞卷积通过给卷积核插入“空洞”来变相地增加其大小。如果在卷积核的每两个元素之间插入d − 1 个空洞,卷积核的有效大小为:

                         m′ = m + (m − 1) × (d − 1)       空洞卷积的动图见: https://nndl.github.io/v/cnn-conv-more
           其中d 称为膨胀率(Dilation Rate)。当d = 1 时卷积核为普通的卷积核。

转载地址:https://blog.csdn.net/qq_41427834/article/details/107945920 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:nndl-book-笔记-入门第三章-线性模型
下一篇:PageRank算法(Dead ends、Spider Traps问题)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月25日 13时11分26秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

linux 小数四则运行,shell四则运算(整数及浮点数)的方法介绍 2019-04-21
linux系统分区后进入紧急模式,Linux系统的救援模式应用详解 2019-04-21
linux配置匿名ftp服务器,在Linux环境中使用vsftpd搭建ftp实现匿名上传详细配置 2019-04-21
linux创建硬盘分区lvm,LVM创建及分区调整、更换LVM硬盘 2019-04-21
FreeBSD可以安装Linux软件吗,在Linux服务器上面通过网络安装FreeBSD 2019-04-21
.net core linux 桌面应用,C# dotnet core + AvaloniaUI 开发桌面软件,hello world 2019-04-21
linux tcp 113错误,linux系统报tcp_mark_head_lost错误的处理方法 2019-04-21
南昌工程学院c语言答案,南昌工程学院C语言程序设计基础课件第3讲运算符和表达式... 2019-04-21
python学画画_python学画画(下) 2019-04-21
云栖社区 mysql_【直播结束,已更新回放】PG、MySQL到底哪个好?云栖说这次请来五位专家撕了一下-阿里云开发者社区... 2019-04-21
老男孩mysql 百度云_英语语录:除了你,没人能掌控你的幸福 2019-04-21
mysql驱动多次执行问题_Laravel5.2队列驱动expire参数设置带来的重复执行问题 数据库驱动... 2019-04-21
mysql获取刚新增的数据库_如何取得刚插入数据库的数据的id mysql 2019-04-21
python将10到1递减_(Python)如何将3个递减列表合并成一个递减列表? 2019-04-21
python脚本怎么用来处理数据_长时间运行数据处理python脚本的程序结构 2019-04-21
python转成c 语言_将Python对象转换为C void类型 2019-04-21
resin mysql_Eclipse+resin+mysql 安装及环境配置 2019-04-21
redis的使用 Java_java中使用redis 2019-04-21
java 数组元素位置_Java – 在数组中获取元素位置 2019-04-21
c 泛型与java泛型_C ++和Java中的“泛型”类型之间有什么区别? 2019-04-21