Identity Mappings in Deep Residual Networks2016【论文理解】
文章目录
- 前言
- 原始的残差模块
- 改进的残差模块
- 模块分析
- 结果图
- 模块代码
- 参考
前言
此论文是对Deep residual networks [1]残差网络模块结构的改进和实验,提出了残差模块第二版,此新的模块形式不管是在前向传播或者是反向传播都有很好的优势,并且在网络训练上更加的容易,收敛更快,精度更高,泛化性更低!
原始的残差模块
如下图,XlX_lXl为输入,Xl+1X_{l+1}Xl+1为输出,有如下公式yl=h(Xl)+F(Xl,Wl),y_l = h(X_l) + F(X_l, W_l),yl=h(Xl)+F(Xl,Wl),Xl+1=f(yl),X_{l+1} = f(y_l),Xl+1=f(yl),在下图所示的结构中h(Xl)=Xl,h(X_l) = X_l,h(Xl)=Xl, FFF为残差函数,如下图红色方框中的部分,其中f=Reluf = Reluf=Relu为激活函数。
改进的残差模块
文中尝试创造一个直接的信息传递通道,推导表明,如果h(Xl)h(X_l)h(Xl)和f(yl)f(y_l)f(yl)都是恒等映射,那么信号可以直接从一个单元传播到任何其他单元,包括向前和向后传递。实验表明使用此结构能够使训练变得更加容易,如下图
绿色方框内的改进是经过了多种实验得到的结果,但最初的设想是为了构造一个f(yl)=ylf(y_l) = y_lf(yl)=yl的单位映射,我们将激活函数(ReLU和BN)视为权重层的“预激活”,而不是传统意义上的“后激活”。此时的公式:yl=Xl+F(Xl,Wl),y_l = X_l + F(X_l, W_l),yl=Xl+F(Xl,Wl),Xl+1=yl,X_{l+1} = y_l,Xl+1=yl,
模块分析
对新的模块yl=Xl+F(Xl,Wl),y_l = X_l + F(X_l, W_l),yl=Xl+F(Xl,Wl),Xl+1=yl,X_{l+1} = y_l,Xl+1=yl,两公式结合可以得到Xl+1=Xl+F(Xl,Wl),X_{l+1}= X_l + F(X_l, W_l),Xl+1=Xl+F(Xl,Wl),对此公式进行循环递归从lll浅层模块到LLL深层模块的公式如下:
XL=Xl+∑i=lL−1F(Xi,Wi),X_L= X_l + \sum_{i=l}^{L-1}F(X_i, W_i),XL=Xl+i=l∑L−1F(Xi,Wi),此时可以发现有两个特别有意思的性质:(1)对于L个模块的特征XLX_LXL都可以由浅层特征XlX_lXl加上一系列的残差函数求得;(2)任何特征都可以从X0X_0X0求得,不管是前向传播和反向传播,信息都能到达网络的最底层,对梯度而言,不管梯度是有多小。
对于loss假设为ϵ\epsilonϵ,则根据链式法则求得反向传播:
∂ϵ∂Xl=∂ϵ∂XL(1+∂∂Xl∑i=lL−1F(Xi,Wi))\frac{\partial \epsilon}{\partial X_l}=\frac{\partial \epsilon}{\partial X_L}(1 +\frac{\partial }{\partial X_l} \sum_{i=l}^{L-1}F(X_i, W_i) )∂Xl∂ϵ=∂XL∂ϵ(1+∂Xl∂i=l∑L−1F(Xi,Wi))
每一个部分的梯度都只有两个部分构成,说明梯度不管多小都可以回传到最前层。其中∂ϵ∂XL\frac{\partial \epsilon}{\partial X_L}∂XL∂ϵ直接传播信息而不涉及任何权重层,∂ϵ∂XL∂∂Xl∑i=lL−1F(Xi,Wi),\frac{\partial \epsilon}{\partial X_L}\frac{\partial }{\partial X_l} \sum_{i=l}^{L-1}F(X_i, W_i) ,∂XL∂ϵ∂Xl∂i=l∑L−1F(Xi,Wi),经过之前的权重层传递信息。所以,∂ϵ∂XL\frac{\partial \epsilon}{\partial X_L}∂XL∂ϵ直接保证了信息会之前传送到前层的每一层!!防止了梯度消失的问题!
结果图
不仅训练更加容易,而且精度更加高!
模块代码
keras
def BatchActivate(x):x = BatchNormalization()(x)x = Activation('relu')(x)return x
def convolution_block(x, filters, size, strides=(1,1), padding='same', activation=True):x = Conv2D(filters, size, strides=strides, padding=padding)(x)if activation == True:x = BatchActivate(x)return x
def residual_block(blockInput, num_filters=16, batch_activate = False):x = BatchActivate(blockInput)x = convolution_block(x, num_filters, (3,3) )x = convolution_block(x, num_filters, (3,3), activation=False)x = Add()([x, blockInput])if batch_activate:x = BatchActivate(x)return x
参考
[1]He, K., Zhang, X., Ren, S., Sun, J.: Deep residual learning for image recognition. In: CVPR. (2016)
Identity Mappings in Deep Residual Networks2016【论文理解】相关推荐
- Identity Mappings in Deep Residual Networks
论文地址:Identity Mappings in Deep Residual Networks 译文地址:http://blog.csdn.net/wspba/article/details/607 ...
- 【图像分类】Deep Layer Aggregation论文理解
摘要 视觉识别: 视觉识别需要丰富的表征--跨度从低到高.尺度从小到大.分辨率从细粒度到粗粒度.即便在卷积网络中有深层的特征,但单独一层的特征是不够的:组合和聚合这些特征(表征)可以改进对&q ...
- 李沐论文精读: ResNet 《Deep Residual Learning for Image Recognition》 by Kaiming He
目录 1 摘要 主要内容 主要图表 2 导论 2.1为什么提出残差结构 2.2 实验验证 3 实验部分 3.1 不同配置的ResNet结构 3.2 残差结构效果对比 3.3 残差结构中,输入输出维度不 ...
- 论文笔记:Deep Residual Learning
之前提到,深度神经网络在训练中容易遇到梯度消失/爆炸的问题,这个问题产生的根源详见之前的读书笔记.在 Batch Normalization 中,我们将输入数据由激活函数的收敛区调整到梯度较大的区域, ...
- Deep Residual Learning for Image Recognition(深度残差网络用于图像识别)理解
本文转载于https://blog.csdn.net/dulingtingzi/article/details/79870486,个人觉得博主写的通俗易懂,故将其转发,欢迎大家一起学习,一起进步 其实 ...
- ResNet 论文理解含视频
ResNet 论文理解 问题导引论文理解 Q1.神经网络真的越深越好吗? Q2. 为什么加深网络会带来退化问题? Q3. 如何构建更深层的网络? 基于残差的深度学习框架 Residual Learni ...
- DSOD: Learning Deeply Supervised Object Detectors from Scratch论文理解
DSOD:从零开始学习深度监督的对象检测器 背景 以前的目标检测算法基本都是先在 ImageNet(分类) 数据库上进行预训练,然后再微调.这个微调也叫做迁移学习 transfer learning. ...
- (全文翻译)基于深度残差收缩网络的故障诊断Deep Residual Shrinkage Networks for Fault Diagnosis
M. Zhao, S. Zhong, X. Fu, B. Tang, M. Pecht, Deep residual shrinkage networks for fault diagnosis, I ...
- 《Deep residual shrinkage networks for fault diagnosis》 基于深度残差收缩网络的故障诊断(翻译与python代码)
基于深度残差收缩网络的故障诊断(翻译) 赵明航,钟诗胜,付旭云,汤宝平,Michael Pecht 论文连接:https://ieeexplore.ieee.org/document/8850096 ...
- 深度学习论文:Deep Residual Learning for Image Recognition
论文: He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the ...
最新文章
- 那些总是写“烂代码”的同学,强烈推荐你用这款IDEA插件!
- Apache Shiro和Spring Security的详细对比
- mysql可以打开dbt么_dbt 基本试用
- python处理行情数据_请教 Python 如何解析 DBF 文件, SJSHQ.dbf 上交所行情文件,数据来源于巨灵数据。...
- 前序-中序-后序-非递归-实现
- 蚁剑特征性信息修改简单过WAF
- f3arra1n3.4.1版本_GDB 10.1版本发布了
- 重磅 | 《机器学习综述》算法分类及特征工程手推笔记!
- Java多线程面试题总结,Java岗
- 几种方法帮你更有效率的记笔记
- List小心性能损失的方法
- 47结构图纸_2019年1月压力容器设计审批人员培训考核班图纸答辩试题
- 安装ie11提示计算机安装了更新的版本,离线安装IE11浏览器提示quot;获取更新quot;解决方法 - 191路由网...
- 功能测试主要做什么?
- Verilog 练习 简单状态机代码设计(三角波发生器)
- 树莓派源码安装glib
- Gradle下载慢解决方案
- IBM服务器修改时间为24小时制,联想携IBM为用户提供24小时全天候技术支持
- kodi与hdplayer_将Kodi中的电影收藏与电影集合并
- 关于法向加速度(向心加速度)中的“法“
热门文章
- 变态ie6之要求css与页面编码一致引发的问题
- 三种DDL的简述:create、alter、drop
- (转)主成分分析(Principal components analysis)-最大方差解释
- 汇总Eclipse快捷键
- 利用javaScript动态增加表格行,删除表格行
- 我的代码库-Java8实现FTP与SFTP文件上传下载
- Android Studio在创建项目是一直处于building “project name”gradle project info的解决办法...
- [2017.01.04] 经典排序算法思想及其实现
- IOS蓝牙设备数据回调的坑
- 我的缺点,(不断补充中...)