文章目录

  • 前言
  • 原始的残差模块
  • 改进的残差模块
  • 模块分析
  • 结果图
  • 模块代码
  • 参考

前言

此论文是对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−1​F(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−1​F(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−1​F(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【论文理解】相关推荐

  1. Identity Mappings in Deep Residual Networks

    论文地址:Identity Mappings in Deep Residual Networks 译文地址:http://blog.csdn.net/wspba/article/details/607 ...

  2. 【图像分类】Deep Layer Aggregation论文理解

    摘要   视觉识别:   视觉识别需要丰富的表征--跨度从低到高.尺度从小到大.分辨率从细粒度到粗粒度.即便在卷积网络中有深层的特征,但单独一层的特征是不够的:组合和聚合这些特征(表征)可以改进对&q ...

  3. 李沐论文精读: ResNet 《Deep Residual Learning for Image Recognition》 by Kaiming He

    目录 1 摘要 主要内容 主要图表 2 导论 2.1为什么提出残差结构 2.2 实验验证 3 实验部分 3.1 不同配置的ResNet结构 3.2 残差结构效果对比 3.3 残差结构中,输入输出维度不 ...

  4. 论文笔记:Deep Residual Learning

    之前提到,深度神经网络在训练中容易遇到梯度消失/爆炸的问题,这个问题产生的根源详见之前的读书笔记.在 Batch Normalization 中,我们将输入数据由激活函数的收敛区调整到梯度较大的区域, ...

  5. Deep Residual Learning for Image Recognition(深度残差网络用于图像识别)理解

    本文转载于https://blog.csdn.net/dulingtingzi/article/details/79870486,个人觉得博主写的通俗易懂,故将其转发,欢迎大家一起学习,一起进步 其实 ...

  6. ResNet 论文理解含视频

    ResNet 论文理解 问题导引论文理解 Q1.神经网络真的越深越好吗? Q2. 为什么加深网络会带来退化问题? Q3. 如何构建更深层的网络? 基于残差的深度学习框架 Residual Learni ...

  7. DSOD: Learning Deeply Supervised Object Detectors from Scratch论文理解

    DSOD:从零开始学习深度监督的对象检测器 背景 以前的目标检测算法基本都是先在 ImageNet(分类) 数据库上进行预训练,然后再微调.这个微调也叫做迁移学习 transfer learning. ...

  8. (全文翻译)基于深度残差收缩网络的故障诊断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 ...

  9. 《Deep residual shrinkage networks for fault diagnosis》 基于深度残差收缩网络的故障诊断(翻译与python代码)

    基于深度残差收缩网络的故障诊断(翻译) 赵明航,钟诗胜,付旭云,汤宝平,Michael Pecht 论文连接:https://ieeexplore.ieee.org/document/8850096 ...

  10. 深度学习论文:Deep Residual Learning for Image Recognition

    论文: He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the ...

最新文章

  1. 那些总是写“烂代码”的同学,强烈推荐你用这款IDEA插件!
  2. Apache Shiro和Spring Security的详细对比
  3. mysql可以打开dbt么_dbt 基本试用
  4. python处理行情数据_请教 Python 如何解析 DBF 文件, SJSHQ.dbf 上交所行情文件,数据来源于巨灵数据。...
  5. 前序-中序-后序-非递归-实现
  6. 蚁剑特征性信息修改简单过WAF
  7. f3arra1n3.4.1版本_GDB 10.1版本发布了
  8. 重磅 | 《机器学习综述》算法分类及特征工程手推笔记!
  9. Java多线程面试题总结,Java岗
  10. 几种方法帮你更有效率的记笔记
  11. List小心性能损失的方法
  12. 47结构图纸_2019年1月压力容器设计审批人员培训考核班图纸答辩试题
  13. 安装ie11提示计算机安装了更新的版本,离线安装IE11浏览器提示quot;获取更新quot;解决方法 - 191路由网...
  14. 功能测试主要做什么?
  15. Verilog 练习 简单状态机代码设计(三角波发生器)
  16. 树莓派源码安装glib
  17. Gradle下载慢解决方案
  18. IBM服务器修改时间为24小时制,联想携IBM为用户提供24小时全天候技术支持
  19. kodi与hdplayer_将Kodi中的电影收藏与电影集合并
  20. 关于法向加速度(向心加速度)中的“法“

热门文章

  1. 变态ie6之要求css与页面编码一致引发的问题
  2. 三种DDL的简述:create、alter、drop
  3. (转)主成分分析(Principal components analysis)-最大方差解释
  4. 汇总Eclipse快捷键
  5. 利用javaScript动态增加表格行,删除表格行
  6. 我的代码库-Java8实现FTP与SFTP文件上传下载
  7. Android Studio在创建项目是一直处于building “project name”gradle project info的解决办法...
  8. [2017.01.04] 经典排序算法思想及其实现
  9. IOS蓝牙设备数据回调的坑
  10. 我的缺点,(不断补充中...)