精华内容
下载资源
问答
  • 残差网络

    千次阅读 2019-07-07 14:35:51
    残差网络 残差网络(Residual Network简称ResNet)是在2015年继Alexnet Googlenet VGG三个经典的CNN网络之后提出的,并在ImageNet比赛classification任务上拔得头筹,ResNet因其简单又实用的优点,现已在检测,分割...

    残差网络

    残差网络(Residual Network简称ResNet)是在2015年继Alexnet Googlenet VGG三个经典的CNN网络之后提出的,并在ImageNet比赛classification任务上拔得头筹,ResNet因其简单又实用的优点,现已在检测,分割,识别等领域被广泛的应用。
        ResNet可以说是过去几年中计算机视觉和深度学习领域最具开创性的工作,有效的解决了随着网络的加深,出现了训练集准确率下降的问题,如下图所示:
    image.pngimage.png
    Fig. 1
      图中56层的普通神经网络在训练集上的表现明显的比20层的差很多,从而导致在测试集上的表现也相对较差。


    做过深度学习的同学应该都知道,随着网络层数的增加而导致训练效果变差的一个原因是梯度弥散和梯度爆炸问题(vanishing/exploding gradients),这个问题抑制了浅层网络参数的收敛。但是这个问题已经通过一些参数初始化的技术较好的解决了,有兴趣的同学可以看下以下几篇文章[2][3][4][5][6]。
    但是即便如此,在网络深度较高的时候(例如图中的56层网络)任然会出现效果变差的问题,我们在先前的Alexnet Googlenet VGG三个模型中可以看出,网络的深度在图片的识别中有着至关重要的作用,深度越深能自动学习到的不同层次的特征可能就越多,那到底是什么原因导致了效果变差呢?
    ResNet的提出者做出了这样的假设:如果一个深层的网络在训练的时候能够训练成一个浅层的网络加上一堆恒等映射的网络,那这样的得到的深层网络在训练的误差上是不会比这个浅层的网络还要高的,所以问题的根源可能在于当网络深度较深的时候,多层的非线性的网络在拟合恒等映射的时候遇到了困难,于是就提出了一种“短路”(shortcut connections)的模型来帮助神经网络的拟合,如下图所示:
    image.png
         Fig. 2
    假设是我们最终要拟合的函数,则令  其中代表普通的堆叠起来的网络拟合出来的函数, 是输入,普通网络的激活函数用的是ReLU函数。非常简单的一个结构,整个网络就是普通网络加上一个恒等映射,普通网络只是整个网络的一部分(),这也是 Residual (剩余的)名字的由来。由上述结构可以得到公式:
                                                               
    这里的  是输出, 是输入, 是图中“短路”的起点和终点之间的网络所要拟合的函数,
    是第  层的系数矩阵。图中是用的普通的网络,但对于卷积网络这种结构也同样适用。对于这个公式需要注意的 一点是这里的输入和输出可能是不同维度的,需要用一个线性映射解决这个问题:
                                                                                                      
    这里  也是系数矩阵。
    下面我们来看作者设计的34层ResNet的结构与VGG网络结构的对比(参加比赛使用的网络达到了152层):
    image.png
    Fig. 3
    左侧19层的VGG模型的计算量是 19.6 billion FLOPs 中间是34层的普通卷积网络计算量是3.6 billion FLOPs
    右边是34层的ResNet计算量是3.6billion FLOPs,图中实线的箭头是没有维度变化的直接映射,虚线是有维度变化的映射。通过对比可以看出VGG虽然层数不多但是计算量还是很大的,后面我们可以通过实验数据看到34层的ResNet的表现会比19层的更好。
    更详细的结构如下图所示(包括一些层数更多的ResNet):
    image.png
    Fig. 4


    残差网络虽然在结构和原理上都非常简单,但表现不俗且解决了随着深度增加效果变差的问题,下面是实验数据:
    image.png                                                                            Fig. 5
    这是普通网络(左)和残差网络(右)的对比,图中细线代表训练误差,粗线代表检验误差,蓝色是18层,红色是34层。从图中可以看出普通网络是存在较深的网络比浅的网络效果差的问题,而残差网络却是层数越高效果越好。
    image.png
    Fig. 6
    这是残差网络,VGG和GoogleNet在ImageNet数据集上的测是数据,top-1 err表示1000种类别中分类错误的概率,top-5 err 表示1000种类别中网络得出的最有可能的5种类别中任然没有正确类别的概率。图中34层A,B,C是指上文提到的输入输出维度不一致问题中当卷积层之间维度变高的时候采取的三种方案,A是将所有增加的维度都用0填充。(zero-padding)B 是保持原始输入,增加的维度用线性映射填充。C 是将所有的输入都进行线性映射再加到输出中。
    从图中可以看出在效果上,34层的残差网络比VGG和GoogleNet都要好,A,B,C三种方案中C方案效果最好,但是B,C方案在计算量上比A方案要大很多,而效果提升的又很少,所以论文作者建议还是使用A方案较为实用。
    下面我们介绍层数在50及以上的残差网络的结构: Deeper Bottleneck Architectures。这种结构是作者为了降低训练时间所设计的,结构对比如下图所示:
    image.png
    Fig. 7
    图中左边是34层ResNet使用的普通的结构,右边是50层及以上的所使用的瓶颈(Bottleneck)结构,
    这里的瓶颈结构中有两个1X1但通道数分别为64和256,第一个是将256通道的输入降维到64通道,第二个是将64通道升维到256通道。中间是普通的3X3的卷积网络,最后整体的计算量与左边的相近。这样的结构的好处是在卷积的同时就完成了维度上的适应,输入可以直接加到输出上,这样可以让计算量减少一半之多。在图5中有50层网络的整个结构,总共的计算量为 3.8 billion FLOPs 只比34层的多0.2 个billion。
    同样的在图4和图5中可以看出101层和152层的残差网络也用这种结构在计算量上比16层的VGG还要少,而在准确度上比VGG高出许多。

    总结:

    ResNet通过残差学习解决了深度网络的退化问题,让我们可以训练出更深的网络,这称得上是深度网络的一个历史大突破吧。也许不久会有更好的方式来训练更深的网络,让我们一起期待吧!
    目前,您可以在人工智能建模平台 Mo 找到基于tensorflow 的34层的残差网络(ResNet)实现样例,数据集是CIFAR-10 (CIFAR的十分类数据集),这个样例在测试集上的精度为90%,验证集上的精度为98%。主程序在ResNet_Operator.py中,网络的Block结构在ResNet_Block.py中,训练完的模型保存在results文件夹中。
    项目源码地址:http://momodel.cn/explore/5d1b0a031afd944132a0797d?type=app




    参考文献:
    [1] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. arXiv preprint arXiv:1512.03385,2015.
    [2] Y. LeCun, L. Bottou, G. B. Orr, and K.-R.M¨uller. Efficient backprop.In Neural Networks: Tricks of the Trade, pages 9–50. Springer, 1998.
    [3] X. Glorot and Y. Bengio. Understanding the difficulty of training deep feedforward neural networks. In AISTATS, 2010.
    [4] A. M. Saxe, J. L. McClelland, and S. Ganguli. Exact solutions to the nonlinear dynamics of learning in deep linear neural networks.arXiv:1312.6120, 2013.
    [5] K. He, X. Zhang, S. Ren, and J. Sun. Delving deep into rectifiers:Surpassing human-level performance         on imagenet classification. In ICCV, 2015.
    [6] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In ICML, 2015.

    关于我们

    Mo(网址:momodel.cn)是一个支持 Python 的人工智能在线建模平台,能帮助你快速开发、训练并部署模型。


    Mo 人工智能俱乐部 是由网站的研发与产品设计团队发起、致力于降低人工智能开发与使用门槛的俱乐部。团队具备大数据处理分析、可视化与数据建模经验,已承担多领域智能项目,具备从底层到前端的全线设计开发能力。主要研究方向为大数据管理分析与人工智能技术,并以此来促进数据驱动的科学研究。

    目前俱乐部每周六在杭州举办以机器学习为主题的线下技术沙龙活动,不定期进行论文分享与学术交流。希望能汇聚来自各行各业对人工智能感兴趣的朋友,不断交流共同成长,推动人工智能民主化、应用普及化。
    image.png

    展开全文
  • 从根本上理解 机器学习中真实值、观测值、预测值的区别 简单来讲,误差是观察值与真实值之间的差;残差是观察值与模型估计值之间的差,因此误差和样本数据的构造有关,残差和预测模型有关,一般我们只关心残差。 ...

    这里首先需要了解以下观察值、真实值和预测值的关系->三者的区别请参考我的这篇文章->从根本上理解 机器学习中真实值、观测值、预测值的区别
    简单来讲,误差是观察值与真实值之间的差;残差是观察值与模型估计值之间的差,因此误差和样本数据的构造有关残差和预测模型有关,一般我们只关心残差。

    其实了解到这已经足够了,但是想要进一步理解误差和残差的区别请往下看

    误差是观察值与真实值之间的差。经典测验理论(CTT)的基本假设是:X=T+E。也就是说,观察值等于真值加上误差。我们的任何一次测量都带有误差(每一次测量的这个误差具体是多少是不清楚的,只有把所有测量结果进行分析后才知道误差有多大),经典测验理论认为误差是随机分布,且误差均值为0。因此,经过多次测验后,将观测值求平均就可以看作为真值。也就是说,多次测量求得的平均数是真值的最佳估计。

    残差是观察值与模型估计值之间的差。以回归分析为例,回归方程y=b0+b1x,当知道b0和b1时这就是一个真实的回归模型。比如y=2+3x。取一个数值(1,2),则模型估计值为y=2+3×1=5。残差为2-5=-3。因此,只要有一个确定的取值以及模型,则模型肯定有一个估计值,也就有一个残差了。对残差进行分析是回归分析的一个重要部分。

    参考文章->误差和残差

    展开全文
  • 残差网络resnet50的深度学习模型权重文件,可作为预训练模型,提升学习效率
  • 非常好的深度学习模型,高校及工业界广泛使用,适合机器学习、计算机视觉和深度学习。
  • 用于视频表示学习的伪3D卷积残差网络
  • 伪三维残差网络(P-3D)的pytorch版本,支持预训练模型...........................................
  • 针对复杂背景下,图像显著区域显著值低和目标边缘表现模糊的问题,提出了基于深度残差网络和多尺度边缘残差学习的显著性检测方法。一方面提出了边缘残差块,使用边缘残差块在深度残差网络的基础上构建边缘监督网络,用于...
  • 残差网络 什么是残差: 残差在数理统计中是指实际观察值与估计值(拟合值)之间的差 更准确地,假设我们想要找一个 xxx,使得 f(x)=bf(x)=bf(x)=b,给定一个 xxx 的估计值 x0x0x0,残差(residual)就是 b−f(x0)b...

    残差网络

    1. 什么是残差:

    残差在数理统计中是指实际观察值与估计值(拟合值)之间的差

    更准确地,假设我们想要找一个 x x x,使得 f ( x ) = b f(x)=b f(x)=b,给定一个 x x x 的估计值 x 0 x0 x0,残差(residual)就是 b − f ( x 0 ) b−f(x0) bf(x0),同时,误差就是 x − x 0 x−x0 xx0

    1. 什么是残差网络:

    随着网络越来越深,训练变得原来越难,网络的优化变得越来越难。理论上,越深的网络,效果应该更好;

    但实际上,由于训练难度,过深的网络会产生退化问题,效果反而不如相对较浅的网络。而残差网络就可以解决这个问题的,残差网络越深,训练集上的效果会越好。(测试集上的效果可能涉及过拟合问题。过拟合问题指的是测试集的效果和训练集上的效果之间有差距。

    残差网络通过加入 shortcut connections,变得更加容易被优化。包含一个 shortcut connection 的几层网络被称为一个残差块(residual block),如图 2 所示。(shortcut connection,即图中右侧从 x x x ⨁ ⨁ 的箭头)

    img

    • 残差块(residual block)

    如图上所示, x x x 代表输入, F ( x ) F(x) F(x) 代表残差块在第二层激活函数ReLu之前的输出,即 F ( x ) = W 2 σ ( W 1 x ) F(x)=W2σ(W1x) F(x)=W2σ(W1x)。其中 W 1 W1 W1 W 2 W2 W2 表示第一层和第二层的权重, σ σ σ 表示 ReLU 激活函数。

    当没有 shortcut connection(即图 2 右侧从 x x x ⨁ ⨁ 的箭头)时,残差块就是一个普通的 2 层网络。残差块中的网络可以是全连接层,也可以是卷积层。

    设第二层网络在激活函数之前的输出为 H ( x ) H(x) H(x)。如果在该 2 层网络中,最优的输出就是输入 x x x

    那么对于没有 shortcut connection 的网络,就需要将其优化为 H ( x ) = x H(x)=x H(x)=x

    对于有 shortcut connection 的网络(残差块),如果最优输出是 x x x,则只需要将 F ( x ) = H ( x ) − x F(x)=H(x)−x F(x)=H(x)x 优化为 0 即可。后者的优化会比前者简单。这也是残差这一叫法的由来。

    1. 一个残差网络是怎么样的:

    图中 34-layer residual就是残差网络。

    其中 34-layer 表示含可训练参数的层数为34层,池化层不含可训练参数。

    图 3 右侧所示的残差网络和中间部分的 plain network 唯一的区别就是 shortcut connections。这两个网络都是当 feature map 减半时,filter 的个数翻倍,这样保证了每一层的计算复杂度一致。

    ResNet 因为使用 identity mapping,在 shortcut connections 上没有参数,所以图 3 中 plain network 和 residual network 的计算复杂度都是一样的,都是 3.6 billion FLOPs.

    如果本文对你有帮助,欢迎点赞、订阅以及star我的项目。
    你的支持是我创作的最大动力!

    展开全文
  • 为了提高模型在道口环境下的车辆图像的特征提取和识别能力,提出了一种基于改进残差网络的车辆分类方法。首先以残差网络为基础模型,改进了残差块中激活函数的位置,并将残差块中的一般卷积用分组卷积代替,引入注意力...
  • 国际机器学习会议(ICML),2019年。( ) (*均等贡献) i-ResNet使用 经过测试:Python 3.6.5和Pytorch 1.0.1 可以通过pip install -r requirements.txt安装依赖项 注意:您需要运行visdom服务器并设置vis_...
  • • 绿色直线在训练集上的预测残差:-41.20, -35.64, 33.92, -8.92, -11.08, 62.91 • 蓝色直线在训练集上的预测残差:14, 10, 70, 204, 25, 142 由于残差有正负之分,不好判断,所以引入 残差平方 • 忽略预测...

    一、线性回归定义

    线性回归,就是能够用一个直线较为精确地描述数据之间的关系。这样当出现新的数据的时候,就能够预测出一个简单的值。线性回归中最常见的就是房价的问题。一直存在很多房屋面积和房价的数据。

    如下图所示:
    房面积和房价关系
    在这种情况下,就可以利用线性回归构造出一条直线来近似地描述放假与房屋面积之间的关系,从而就可以根据房屋面积推测出房价。

    回归:根据训练样本?,学习一个从输入?到输出?的映射?
    • 对新的测试数据? ,用学习到的映射?对其进行预测:?2 = ?(?)

    二、常见的线性回归举例:

    在这里插入图片描述

    三、线性回归的数学模型

    • 最简单的回归模型:线性回归
    • 假设输出?与输入?之间的关系为线性关系,即
    在这里插入图片描述

    四、线性回归案例-广告与销量

    • 根据在线广告投入费用预测每月电子商务销售量
    在这里插入图片描述
    利用matplotlib的pyplot模块描绘出散点图
    并用Scikit-Learn做模型预测

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression
    
    y_train = np.array([368, 340, 376, 954,331, 556])  #输入数据集
    X_train = np.array([1.7, 1.5, 1.3, 5, 1.3, 2.2])  #输出数据集
    plt.scatter(X_train, y_train, label= 'Train Samples')  #描绘数据
    
    X_train = X_train.reshape(-1, 1)  #改变输入数据维度
    lr = LinearRegression()  #学习预测
    lr.fit(X_train, y_train)  #训练数据
    
    a=range(6)    #利用预测出的斜率和截距绘制直线
    b=[lr.intercept_+lr.coef_[0]*i for i in a]
    
    plt.plot(a,b, 'r')
    
    print(lr.intercept_)#打印出截距
    print(lr.coef_)  #打印出斜率
    
    plt.show()
    

    程序运行效果:
    在这里插入图片描述

    123.94211903204723
    [167.79594506]
    

    • 预测当? = 2.8时的销量:? = 123.94 + 167.80 ∗ 2.8 = 593.78

    五、预测残差

    如何判断预测的好坏?
    预测残差(Residual):真实值和预测值之间的差异
    在这里插入图片描述
    • 绿色直线在训练集上的预测残差:-41.20, -35.64, 33.92, -8.92, -11.08, 62.91
    • 蓝色直线在训练集上的预测残差:14, 10, 70, 204, 25, 142

    由于残差有正负之分,不好判断,所以引入残差平方
    • 忽略预测残差的符号:残差的平方
    在这里插入图片描述

    • 最佳直线:残差平方和(Residual Sum of Squares, RSS )最小

    在这里插入图片描述

    所以绿色的预测直线更佳!

    展开全文
  • 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,...
  • 机器学习中偏差方差残差的表示

    千次阅读 2018-12-28 19:02:28
    关于机器学习中常见的方差,偏差,和残差,以前一直没搞懂,画个图,解释一下,错别字忍一下。 所谓的泛化误差就是方差、偏差、和噪声的和,与均方误差不同。均方误差类似对残差平方的期望。 ...
  • 目的:避免经过多层训练之后的效果不如前面的层 原理:同时计算出两个数值,一个是经过多层训练的X,另一个是保留的上一层的X,两个效果进行比较 一句话:不能比原来的效果差
  • TF2.0深度学习实战(七):手撕深度残差网络ResNet

    万次阅读 多人点赞 2020-04-19 18:52:37
    手把手带你搭建网络模型,实现图像分类与目标检测。大神勿扰~
  • 我们都知道增加网络的宽度和深度可以很好的提高网络的性能,深的网络一般都比浅的的网络效果好,比如说一个深的网络A和一个浅的网络B,那A的性能至少都能跟B一样,为什么呢?因为就算我们把B的网络参数全部迁移到A...
  • 本文来自于个人博客,这篇文章主要为大家详细介绍了python机器学习之神经网络的实现方法。神经网络机器学习中有很大的应用,甚至涉及到方方面面。本文主要是简单介绍一下神经网络的基本理论概念和推算。同时也会...
  • ResNet残差网络的理解

    2021-04-05 10:47:15
    2015年提出来的ResNet残差网络让传统的神经网络得到了飞速的发展与延伸,现在几乎所有的网络都受到ResNet中的残差思想的影响,它主要有以下四个优点: 1、加深网络层数 2、解决梯度消失问题 3、提升模型精度 4、提出...
  • 深度残差收缩网络是在“残差网络ResNet”基础上的一种改进网络,是由“残差网络”和“收缩”两部分所组成的。 其中,ResNet在2015年斩获了ImageNet图像识别竞赛的冠军,目前已经成为了深度学习领域的基础网络。 ...
  • 论文笔记:深度残差网络为何使用深度残差网络传统深层卷积网络 论文地址:Deep Residual Learning for Image Recognition. 为何使用深度残差网络 理论上来说,神经网络的层数越深,它拟合函数的能力就越强,也就是...
  • 深度残差收缩网络事实上属于一种卷积神经网络,是深度残差网络(deep residual network, ResNet)的一个变种。它的主要思想是,在深度学习进行特征学习的时候,删除冗余信息是非常重要的;这是因为原始数据中往往...
  • 文章首先阐述机器学习技术在网络空间安全应用研究中的应用流程,然后从系统安全,网络安全和应用安全三个层面介绍了机器学习网络空间安全领域中的解决方案,归纳了这些解决方案的安全特征及常用的机器学习算法,...
  • 残差网络ResNet系列网络结构详解:从ResNet到SENet1. 残差神经网络综述 1. 残差神经网络综述 AlexNet的提出开启了卷积神经网络应用的先河,随后的GoogleNet、VGG等网络使用了更小的卷积核并加大了深度,证明了卷积...
  • 作者:Ta-ying Chen,牛津大学机器学习博士研究生,Medium知名技术博主 译者:颂贤 时兴的自动驾驶和人脸检测等众多计算机视觉应用之所以能够实现都要归功于深度神经网络。然而,许多人可能都不知道的是,近年来...
  • ResNet残差网络的理解 ResNet伴随文章 Deep Residual Learning for Image Recognition 诞生,该文章是MSRA何凯明团队在2015年ImageNet上使用的网络,在当年的classification、detection等比赛中,ResNet均获了第一名...
  • ResNet 残差网络 DenseNet 卷积 Kernel_channels 通常指kernel的个数 Stride 指步长 Padding 旁边处空白数量 举个例子: 输入是[b, 3, 28, 28],则一个kernel为[3, 3, 3],16个kernel为[16, 3, 3, 3]...
  • 采用残差结构加深网络并结合图像标签信息,以获取真实图像样本的深层次特征,在判别器模型中引入谱约束,提高网络的训练稳定性,从而实现图像数据的有效生成。实验表明,所提方法在生成图像的视觉效果和客观评价上具有更...
  • ResNet残差网络

    万次阅读 2017-05-08 00:25:27
    前面我们对常用的经典网络进行了介绍,可以查看前面文章:浅入浅出TensorFlow 6 - 实现经典网络  随着网络越来越深,大家发现,仅仅靠 BN、ReLU、DropOut 等 Trick无法解决收敛问题,相反,网络的加深带来参数的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,078
精华内容 8,431
关键字:

机器学习残差网络