论文解读《Deep Resdual Learning for Image Recognition》
总的来说这篇论文提出了ResNet架构,让训练非常深的神经网络(NN)成为了可能。
什么是残差?
“残差在数理统计中是指实际观察值与估计值(拟合值)之间的差。”如果回归模型正确的话, 我们可以将残差看作误差的观测值。”更准确地,假设我们想要找一个 xx,使得 f(x)=bf(x)=b,给定一个 xx 的估计值 x0x0,残差(residual)就是 b−f(x0)b−f(x0),同时,误差就是 x−x0x−x0
为什么需要堆叠更深的NN呢?
论文阐述道
-- 深度神经网络自然的集成了低、中、高阶特征,同时随着网络深度的提升,这些特征也会随之丰富,这些丰富的特征对于最后执行的分类或回归任务来说都是很有意义的,一般认为可以获得更好的结果;
但是,论文又指出一些问题,堆叠深层的NN存在一些问题:
-- 堆叠深层的网络后,网络的学习会变得更加的不容易,因为存在着梯度消失/爆炸问题(BN一定程度解决),会妨碍模型的收敛,使得模型不能得到很好的学习;
-- 通过实验发现,堆叠更深的网络存在着退化问题,即随着深度的增加,在分类任务中的正确率会饱和并开始迅速的下降,并且会得到更大的训练损失;
所以可以得到想要优化深层的网络结果并不容易,那么现有解决方法是怎么构造更深层的模型呢?
作者阐述了一种方法就是:增添的网络层都是恒等映射网络,同时其他的层是从已经学习的较浅的层复制而来的结构。
-- 因为都是恒等映射和从浅层模型中复制而来的,所以就可以推导出这样构造的更深层的结构的训练损失并不会高于与它对应的浅层结构;
但是同时指出: 我们现有的解决方案无法找到比构造的解决方案更好或更好的解决方案。那么有没有方法既可以有深层的网络结构,又便于网络进行训练学习呢?所以作者提出了自己的解决方案:
-- 提出了深度残差学习(deep resdual learning)架构去解决由于网络深度增加而出现的退化问题;
-- 提出网络拟合一个残差映射而不是直接拟合一个想得到的潜在的映射的思路;
具体的:
定义$\textit{H}(\textbf{x})$为想得到的潜在的映射;
堆叠非线性层去拟合另一个映射:$\textit{F}(\textbf{x}):=\textit{h}(\textbf{x})\text{}-\text{}\textbf{x}.$
那么原先的映射被重映射为:$\textit{F}(\textbf{x})\text{}+\text{}\textbf{x}.$
-- 那么如果假设一个恒等映射是做优的,那么结合上面的公式可以得到,那么直接将残差推向0比通过一些非线性层的堆叠拟合一个恒等映射更加轻松;
-- $\textit{F}(x)+x$能够通过前向神经网络和跳跃连接的结构实现,这种结构能够简单的实现恒等映射,并且不会对模型增加额外的参数和计算复杂度,能够通过SGD进行端到端的反向传播。
-- 深度残差网络更容易去优化,而与它相对应的朴素网络会随着深度的增加表现出更加高的训练损失;同时,深度残差网络能够更加容易的享有深度增加而带来的精确率的提升效果;
残差学习(residual learning)
--$\textit{H}(x)是作为潜在的映射而被一些堆叠的网络层就行拟合$,其中的$x$代表这些层的第一层的输入,假设多层的非线性层能够渐进的逼近复杂的函数。
--之后,之后对等的假设能够逼近残差函数,$\textit{H}(x)-x$。
-- 相比希望堆叠这些网络层去逼近$\textit{H}(x)$,我们显式的让这些网络层去逼近一个残差函数$F(x):=H(x)-x$,那么原先的函数就变成了$F(x)+x$,所以虽然这两种形式都应该能够渐进地逼近所需的函数(假设的那样),但学习的容易程度可能有所不同。
-- 图一产生的违反直觉的退化问题,我们可以根据一些推断,比如更深的网络增加的都是恒等映射表现应该不会低于相对应的浅层网络的,但是发现还是退化了,所以可以大胆的猜想,网络对于拟合恒等映射是有困难的,但是对于残差学习来说,如果恒等映射是最优的只需要把多层非线性的权重推向0就可。
-- 真实世界中,恒等映射是很难的,但是这个残差的形式或许有助于修复这个问题。
-- 如果最优函数更接近于恒等映射而不是零映射,那么求解者应该更容易找到与恒等映射相关的扰动,而不是将函数作为一个新的函数来学习。
恒等映射by shortcuts
$y = F(x,{W_{i}}+x)$
$F(x,{W_{i}})$代表残差映射而被学习,注意的是,如果输入和输出不相等的话,可以进行一个线性的映射$W_{s}$去匹配维度。
$y = F(x, {W})+W_{s}x$
残差函数$F$可以由两层或者多层表示:
整体网络结构
如虚线所示,当维度出现增加时,有两种处理办法:
-- 使用上文所提及的线性映射的方法,使用1*1的卷积去匹配维度
-- 仍然进行恒等映射,只不过使用额外的整体填充去增加维度,这样不导致额外的参数;
-- 如上图所示,当特征图进行变化时,步长都变为2;
Why resdual networks works?
梯度可以到达每一层,而在每一层之间只有少量的层,它需要进行微分,一定程度上缓解了梯度消失现象
梯度会越来越小,随着梯度的反向传播,shortcut可以帮助梯度到达每一层,反向的距离为原先的一半。
让梯度更加平缓,增强梯度传播
有点集成学习的意思,泛化性好一些
论文解读《Deep Resdual Learning for Image Recognition》的更多相关文章
- 《Population Based Training of Neural Networks》论文解读
很早之前看到这篇文章的时候,觉得这篇文章的思想很朴素,没有让人眼前一亮的东西就没有太在意.之后读到很多Multi-Agent或者并行训练的文章,都会提到这个算法,比如第一视角多人游戏(Quake ...
- ImageNet Classification with Deep Convolutional Neural Networks 论文解读
这个论文应该算是把深度学习应用到图片识别(ILSVRC,ImageNet large-scale Visual Recognition Challenge)上的具有重大意义的一篇文章.因为在之前,人们 ...
- 《Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Neural Networks》论文笔记
论文题目<Deep Feature Extraction and Classification of Hyperspectral Images Based on Convolutional Ne ...
- Quantization aware training 量化背后的技术——Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference
1,概述 模型量化属于模型压缩的范畴,模型压缩的目的旨在降低模型的内存大小,加速模型的推断速度(除了压缩之外,一些模型推断框架也可以通过内存,io,计算等优化来加速推断). 常见的模型压缩算法有:量化 ...
- Training Deep Neural Networks
http://handong1587.github.io/deep_learning/2015/10/09/training-dnn.html //转载于 Training Deep Neural ...
- Training (deep) Neural Networks Part: 1
Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ...
- [CVPR2015] Is object localization for free? – Weakly-supervised learning with convolutional neural networks论文笔记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...
- Training spiking neural networks for reinforcement learning
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 原文链接:https://arxiv.org/pdf/2005.05941.pdf Contents: Abstract Introduc ...
- CVPR 2018paper: DeepDefense: Training Deep Neural Networks with Improved Robustness第一讲
前言:好久不见了,最近一直瞎忙活,博客好久都没有更新了,表示道歉.希望大家在新的一年中工作顺利,学业进步,共勉! 今天我们介绍深度神经网络的缺点:无论模型有多深,无论是卷积还是RNN,都有的问题:以图 ...
- 论文翻译:BinaryConnect: Training Deep Neural Networks with binary weights during propagations
目录 摘要 1.引言 2.BinaryConnect 2.1 +1 or -1 2.2确定性与随机性二值化 2.3 Propagations vs updates 2.4 Clipping 2.5 A ...
随机推荐
- Mac 系统下如何显示和隐藏文件
苹果Mac OS X操作系统下,隐藏文件是否显示有很多种设置方法,最简单的要算在Mac终端输入命令.显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写): 第一种方式: 显示Mac隐藏文件 ...
- Lua设计与实现--读书笔记
目录 lua简介 一种通用的数据类型:lua_TValue 字符串 Table lua实现一个队列 lua简介 C++底层核心模块,暴露核心接口给lua脚本层,网络的收发都在c++层完成,本书简述lu ...
- Spring Cloud系列(四):Eureka源码解析之客户端
一.自动装配 1.根据自动装配原理(详见:Spring Boot系列(二):Spring Boot自动装配原理解析),找到spring-cloud-netflix-eureka-client.jar的 ...
- 【Python】数据结构
列表的更多特性 list.append(x) 在列表的末尾添加一个元素.相当于 a[len(a):] = [x] . list.extend(iterable) 使用可迭代对象中的所有元素来扩展列表. ...
- Hyper-V Server + Windows Admin Center
2020年的十一黄金周是双节,偶然间得知再出现双节可能要几十年之后了,很可惜我并没有出去游玩的打算.所以假期没什么事,就来研究下Hyper Server + Windows Admin Center. ...
- 【题解】hdu4757 【TJOI2018】异或
题目链接 题目大意:有一颗树,有点权,每次询问:一条路径\(x->y\)中与\(z\)异或的最大值,或是以\(x\)为根的子树中与\(y\)异或的最大值. 树剖--还是算了. 观察到,子树的\( ...
- Camera插件之CinematicCamera介绍
Camera插件之CinematicCamera 继承自PerspectiveCame 构造函数引用的PerspectiveCamera的构造函数, 代码如下 var CinematicCamera ...
- C#怎么从List集合中随机取出其中一个值
1.首先在该命名空间下创建一个实体,和在Main方法下List集合,为后续做准备: /// <summary> /// 实体 /// </summary> public cla ...
- python中random的一些用法
#(1)随机小数 import random print(random.random()) #随机大于0 且小于1 之间的小数 ''' 0.9441832228391154 ''' print(ra ...
- 探索与英特尔XDK
下载Geolocation.rar - 6.3 KB 下载Abhishek3.rar - 425.1 KB 下载Abhishek3.crosswalk.x86.20140824201436.rar - ...