深度学习—近年来流行的卷积神经网络(一)

article/2025/4/27 3:48:05

近年来流行的卷积神经网络

  • 1. 回顾与目标
  • 2. 近年来流行的卷积神经网络
    • 2.1 VGGNet
      • 2.1.1 感受野的概念
      • 2.1.2 感受野的计算
    • 2.2 GooleNet
    • 2.3 ResNet
  • 3. 结尾
  • 参考资料

1. 回顾与目标

前面几讲,我们以LeNetAlexNet为例,详细讲解了卷积神经网络的结构。从2012年AlexNetImageNet数据集上获得远超传统算法识别率以来,学术界在卷积神经网络方面进行了一系列的改进型研究工作,这一讲我们将描述这些重要的改进。

下图1是截至2015年卷积神经网络的发展图。

在这里插入图片描述

图1 各种不同网络在ImageNet上的结果

2012年AlexNetImageNet数据集的Top5错误率降低到16.4%
2014年VGGNetGooleNet分别将Top5错误率降低到7.3%6.7%
2015年ResNet将这个错误降低到3.57%,首次达到和真人不相上下的错误率。

在这一讲中,我们将大致讲解VGGNetGooleNetResNet的结构。同时我们将这三个网络的论文链接附在参开资料中,供大家下载学习。

2. 近年来流行的卷积神经网络

2.1 VGGNet

首先是VGGNet,下图2是16层和19层的VGGNetVGG16VGG19)以及它们与AlexNet的对比图。

在这里插入图片描述

图2 VGG16、VGG19以及AlexNet的对比图

VGGNetAlexNet的改进包括两个方面:

  • 增加了网络的深度
  • 多个3×3卷积核叠加代替更大的卷积核,用以增加感受野(Receptive Field)

2.1.1 感受野的概念

在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图Feature Map)上的像素点在输入图片上映射的区域大小。在通俗一点的解释是特征图上的一个点对应输入图上的区域,如下图3所示。

在这里插入图片描述

图3 感受野

图3最右边绿色特征图上左上角的一个点对应的感受野是最左边原图像上5×5的方格。

2.1.2 感受野的计算

下面我们通过两个例子来介绍感受野是如何计算的。

例1:两层3×3的卷积核卷积操作之后,第三层特征图上的每一个点的感受野是5×5,其中卷积核filter)的步长stride)为1padding0。其计算的方式如下图所示。

在这里插入图片描述

图4 感受野的计算演示

例2:如果步长stride=2,则两层3×3卷积核操作之后,第三层特征图上每一个点的感受野是15×15

计算感受野的一般公式为:
R F i = ( R F i − 1 − 1 ) × s t r i d e i − 1 + K S I Z E i RF_i=(RF_{i-1}-1)×stride_{i-1}+KSIZE_i RFi=(RFi11)×stridei1+KSIZEi
其中, R F i RF_i RFi i i i层的感受野, s t r i d e i stride_i stridei i i i层的步长, K S I Z E i KSIZE_i KSIZEi i i i层的卷积核大小。

可见,在步长stride=1的情况下,两个3×3的卷积核叠加后的感受野和5×5的卷积核相同,这也就是VGGNet为什么要用多个3×3的卷积核叠加取代AlexNet中较大卷积核的原因。

更详细的分析一下,2个3×3的卷积核待求参数18个,而1个5×5的卷积核待求参数25个。因此用更小的卷积核叠加代替大的卷积核可以起到降低待估计参数的作用。但是多层卷积需要更大的计算量,中间过程过程特征图也需要更多的储存空间,因此VGGNet是一个计算和存储开销都较大的网络。

2.2 GooleNet

2014年提出的GooleNet也采用了这种利用小卷积核叠加来代替大卷积核的思路,GooleNet提出了Inception结构,Inception结构是用一些1×13×35×5的小卷积核用固定方式组合到一起来代替大的卷积核,达到增加感受野和减少参数个数的目的。

下图是GooleNet的结构。

在这里插入图片描述

图5 GooleNet网络结构

共有22层,利用Inception结构,GooleNet将参数个数缩小到500万个左右,比AlexNet小了12倍,同时GooleNet获得了ILSVRC'14测试冠军(6.7%top 5 error

2014年研究人员分析了深度神经网络,并从理论和实践上证明更深的卷积神经网络能够达到更高的识别准确率(L.J. Ba and R.Caruana,Do deep nets really need to be deep? NIPS 2014.)。因此,如何构建让更深的卷积神经网络收敛成了研究领域共同关注的问题。

2.3 ResNet

在2015年,Kaiming He等人发明了ResNet,使得训练深层的神经网络成为了可能(K. He,X. Zhang S. Ren and J.sun, Deep residual learning forimage recognition,cVPR2016.)。ResNet的作者首先发现训练一个浅层的网络无论是在训练集还是测试集上都比深层网络表现得好,而且是在训练的各个阶段持续的表现得好。如下图6所示,20层的卷积神经网络在不同的数据集上都比56层的卷积神经网络要好。

在这里插入图片描述

图6 20层与56层网络性能对比

于是作者产生了一个很简单的想法,竟然20层的网络表现比56层要好,那么我们大不了另外36层什么都不做,直接将第20层的输出加入到第56层中,因此就产生了ResNet的核心思想,如下图7所示。

在这里插入图片描述

图7 ResNet的核心思想

将浅层的输出直接加到深层当中去,当然在实际的添加中,由于浅层和深层的特征图在维度上有可能不一致导致无法直接相加,我们可以用一个线性变换直接把浅层特征图的维度变为深层特征图的维度。例如假设浅层特征图用向量 X X X 表示,那么用一个线性变换 X ′ = w T X + B X'=w^TX+B X=wTX+B可以使变化后的向量 X ′ X' X与生成的特征图维度一致,而矩阵 w w w B B B 可以作为待求变量被学习。这是2015年提出的ResNet50的结构,如下图8所示。

在这里插入图片描述

图8 ResNet50的网络结构

共有50层,可以看到中间有很多浅层加入深层的操作,训练技巧如下:

-- Batch Normalization
-- Xavier initialization
-- SGD + Momentum (0.9)
-- Learning Rate:0.1
-- Batch size 256
-- Weight decay 1e-5
-- No dropout

经过前面的学习能够相对容易的看懂这些技巧。

ResNet在2015年将ImageNet测试集错误率降低到3.57%。到目前为止,ResNet这种将浅层的输出直接加入到深层的结构被广泛应用于深度学习的训练中,运用ResNet的结构已经可以训练成百上千层的卷积神经网络了。

寻找更好的神经网络结构的努力一直在持续,严格的说这是一个需要在识别精度计算量存储量三个方面平衡取舍的问题。近年来,流行的趋势是利用紧凑的、小而深的网络代替以往稀疏的、大而浅的网络,同时在具体的实践过程中加入一些创意和技巧。近年来流行的例如ShuffleNetMobileNet等都是其中的典型代表,另一方面,网络结搜索Network Architecture Search),即如何从一大堆网络结构中搜索适合具体的网络结构成为领域内另一个热点问题。

本讲最后,给出截至2016年各种不同的卷积神经网络在ImageNet上的计算量和识别率的对比图。横坐标是网络的计算量,纵坐标是网络的Top1识别率。

在这里插入图片描述

图9 不同网络计算量和识别率的联合比较

在这里插入图片描述

图10 不同网络识别率比较

可以看到,近年来涌现出了很多在计算量和识别精度上都远远超过AlexNet的卷积神经网络。

3. 结尾

本讲主要讲了继AlexNet之后的卷积神经网络的发展历史,我们以VGGNet为例介绍了感受野的概念,也讲到了训练深层卷积神经网络常用的ResNet结构。

最后有一道讨论题:

如果大家对卷积神经网络感兴趣,可以查询最近几年流行的卷积神经网络的论文,总结这些神经网络的优势与劣势,同时,请大家讨论为什么这些网络结构能够流行其中是否有一些设计网络结构的技巧和规律呢

参考资料

  1. 浙江大学《机器学习》课程—胡浩基老师主讲
  2. Simonyan, Karen, and Andrew Zisserman. “Very deep convolutional networks for large-scale image recognition.” arXiv preprint arXiv:1409.1556 (2014).
  3. Christian Szegedy, Wei Liu, Yangqing Jia et al “Going Deeper with Convolutions.” arXiv:1409.4842
  4. K. He,X. Zhang S. Ren and J.sun, Deep residual learning forimage recognition,cVPR2016.
  5. L.J. Ba and R.Caruana,Do deep nets really need to be deep? NIPS 2014.
如果文章对你有帮助,请记得点赞与关注,谢谢!

在这里插入图片描述


http://chatgpt.dhexx.cn/article/9DmTfCqR.shtml

相关文章

流行学习常用算法

Isomap:等距映射。前提假设为低维空间中的欧式距离等于高维空间中的侧地线距离,当然该算法具体实施时是高维空间中较近点之间的测地线距离用欧式距离代替,较远点距离用测地线距离用最短路径逼近。 LLE:局部线性嵌入。前提假设是数据所在的低维…

流行学习与拉普拉斯变换的推导

参考:拉普拉斯矩阵 参考:流行学习

流行学习初步理解

一. 流形学习的英文名为manifold learning。其主要思想是把一个高维的数据非线性映射到低维,该低维数据能够反映高维数据的本质,当然有一个前提假设就是高维观察数据存在流形结构,其优点是非参数,非线性,求解过程简单。…

流行学习简单入门与理解

最近博主再看西瓜书第十三章半监督学习,文章中作者提到需要少量查询的主动学习、K-means簇的聚类,以及流行学习。对于流行学习,博主也是第一次接触,下面我们来简单学习和理解一下流行学习。 1. 半监督学习 SSL的成立依赖于模型假…

机器学习----流行学习(manifold learning)的通俗理解

流形学习(manifold learning)是一类借鉴了拓扑流行概念的降维方法,在降维时,若低维流行嵌入到高维空间中,则数据样本在高维空间的分布虽然看上去十分复杂,但在局部上仍具有欧式空间(对现实空间的…

流行学习Manifold Learning

文章目录 1、流行学习前言:2、流形学习的概念流形的概念:流行学习的概念: 3、流形学习的分类4、高维数据降维与可视化5、基本问题和个人观点6、参考文献 1、流行学习前言: 流形学习是个很广泛的概念。这里我主要谈的是自从2000年…

关于nn.embedding的理解

import torch.nn as nn nn.Embedding(num_embeddings, embedding_dim, padding_idxNone, max_normNone, norm_type2, scale_grad_by_freqFalse, sparseFalse)参数解释 num_embeddings (python:int) – 词典的大小尺寸,比如总共出现5000个词,那就输入500…

深究embedding层

关于embedding层,贴出一些很好的链接,以供备忘与分享。 http://blog.sina.com.cn/s/blog_1450ac3c60102x79x.html https://blog.csdn.net/sjyttkl/article/details/80324656 https://blog.csdn.net/jiangpeng59/article/details/77533309 https://juejin…

一文搞懂 Embedding !

这篇文章把embedding单独提出来,梳理一下embedding在推荐系统中的应用。以下内容主要从深度学习方法和传统的协同过滤方法两个方面加深和理解在推荐系统领域对embedding的认识,详细解读下“embedding”这一重要思想。 什么是Embedding? Embedding(嵌入)是拓扑学里面的词…

5、Embedding

本文作为个人笔记引用于: https://blog.csdn.net/weixin_42078618/article/details/82999906 https://blog.csdn.net/weixin_42078618/article/details/84553940 https://www.jianshu.com/p/63e7acc5e890 简介 假设,我们中文,一共只有10个字…

embedding

what is emdding embedding就是把字词用向量表示出来,相当于是对字词做encoding motivation 比如 猫,狗,我们当然可以直接把他们表示为一些独立的离散符号,但是这样的表示毫无意义,而且会产生大量稀疏数据。使我们在…

Embeding编码方式

Embeding编码方式概述 独热码:数量大而且过于稀疏,映射之间是独立的,没有表现出关联性。 Embedding:是一种单词编码方法,用低维向量实现了编码,这种编码通过神经网络训练优化,能表达出单词间的…

机器学习中的Embedding

来自知乎的一个解释:(版权归原作者所有,仅供学习,禁止商用) https://zhuanlan.zhihu.com/p/46016518 解释还是有点感觉迷糊,数学解释: Embedding在数学上表示一个maping, f: X -> Y&#x…

Embedding 编码方法

一、作用 Embedding 是一种单词编码,用低维向量实现了编码,这种编码通过神经网络训练优化,能表达单词之间的相关性。 在是用独热码one_hot编码时,我们会发现单词的编码十分稀疏,以至于训练的效率不是很高。采用embeddi…

nn.Embedding使用

nn.Embedding是一种词嵌入的方式,跟one-hot相似但又不同,会生成低维稠密向量,但是初始是随机化的,需要根据模型训练时进行调节,若使用预训练词向量模型会比较好。 1. one-hot one-hot是给定每个单词一个索引&#xf…

深度学习中Embedding的解释

转载于https://zhuanlan.zhihu.com/p/164502624 什么是Embedding? 近年来,NLP自然语言处理、推荐系统,以及计算机视觉已成为目前工业界算法岗的主流方向,无论在哪个领域,对“Embedding”这个词概念的理解都是每个庞大知…

Embedding理解+代码

目录 Embedding主要思想 Word2vec主要思想两种模型:目的: 算法一、定义超参数二、将语料库转换one-hot编码表示三、模型训练 代码手动实现 skip-gram模型一、数据准备二、定义超参数三、定义word2vec模型数据清洗及生成词汇表训练模型 四、 获取词向量和…

Embedding 基础

一、什么是Embedding 简单来说,Embedding 就是用一个数值向量“表示”一个对象(Object)的方法,这里说的对象可以是一个词、一个物品,也可以是一部电影等等。一个物品能被向量表示,是因为这个向量跟其他物品…

终于有人把Embedding讲明白了

导读:如果要总结深度学习大获成功的原因,那至少有两样东西必须入选:一样当然是很“深”的神经网络模型,这也是深度学习的“深度”的由来,另一样就是Embedding。 在深度学习中,Embedding是个很重要的概念&am…

计算机网络(二) | 网络编程基础、Socket套接字、UDP和TCP套接字编程

目录 一、网络编程基础1.1 为什么需要网络编程1.2 什么是网络编程1.3 网络编程中的基本概念 二、Socket套接字2.1 概念2.2 分类2.3 Java数据报套接字通信模型2.4 Java流套接字通信模型2.5 UDP数据包套接字编程2.6 TCP流套接字编程 一、网络编程基础 1.1 为什么需要网络编程 丰…