←上一篇 ↓↑ 下一篇→
2.3 残差网络 回到目录 2.5 网络中的网络以及1x1卷积

残差网络为什么有用 (Why ResNets work?)

为什么ResNets能有如此好的表现,我们来看个例子,它解释了其中的原因,至少可以说明,如何构建更深层次的ResNets网络的同时还不降低它们在训练集上的效率。希望你已经通过第三门课了解到,通常来讲,网络在训练集上表现好,才能在Hold-Out交叉验证集或dev集和测试集上有好的表现,所以至少在训练集上训练好ResNets是第一步。

先来看个例子,上节课我们了解到,一个网络深度越深,它在训练集上训练的效率就会有所减弱,这也是有时候我们不希望加深网络的原因。而事实并非如此,至少在训练ResNets网络时,并非完全如此,举个例子。

假设有一个大型神经网络,其输入为 XXX ,输出激活值 a[l]a^{[l]}a[l] 。假如你想增加这个神经网络的深度,那么用Big NN表示,输出为 a[l]a^{[l]}a[l] 。再给这个网络额外添加两层,依次添加两层,最后输出为 a[l+2]a^{[l+2]}a[l+2] ,可以把这两层看作一个ResNets块,即具有捷径连接的残差块。为了方便说明,假设我们在整个网络中使用ReLU激活函数,所以激活值都大于等于0,包括输入 XXX 的非零异常值。因为ReLU激活函数输出的数字要么是0,要么是正数。

我们看一下 a[l+2]a^{[l+2]}a[l+2] 的值,也就是上节课讲过的表达式,即 a[l+2]=g(z[l+2]+a[l])a^{[l+2]}=g(z^{[l+2]}+a^{[l]})a[l+2]=g(z[l+2]+a[l]) ,添加项 a[l]a^{[l]}a[l] 是刚添加的跳跃连接的输入。展开这个表达式 a[l+2]=g(W[l+2]a[l+1]+b[l+2]+a[l])a^{[l+2]}=g(W^{[l+2]}a^{[l+1]}+b^{[l+2]}+a^{[l]})a[l+2]=g(W[l+2]a[l+1]+b[l+2]+a[l]) ,其中 z[l+2]=W[l+2]a[l+1]+b[l+2]z^{[l+2]}=W^{[l+2]}a^{[l+1]}+b^{[l+2]}z[l+2]=W[l+2]a[l+1]+b[l+2] 。注意一点,如果使用L2正则化或权重衰减,它会压缩 W[l+2]W^{[l+2]}W[l+2] 的值。如果对 bbb 应用权重衰减也可达到同样的效果,尽管实际应用中,你有时会对 bbb 应用权重衰减,有时不会。这里的 WWW 是关键项,如果 W[l+2]=0W^{[l+2]}=0W[l+2]=0 ,为方便起见,假设 b[l+2]=0b^{[l+2]}=0b[l+2]=0 ,这几项就没有了,因为它们( W[l+2]a[l+1]+b[l+2]W^{[l+2]}a^{[l+1]}+b^{[l+2]}W[l+2]a[l+1]+b[l+2] )的值为0。最后 a[l+2]=g(a[l])=a[l]a^{[l+2]}=g(a^{[l]})=a^{[l]}a[l+2]=g(a[l])=a[l] ,因为我们假定使用ReLU激活函数,并且所有激活值都是非负的, g(a[l])g(a^{[l]})g(a[l]) 是应用于非负数的ReLU函数,所以 a[l+2]=a[l]a^{[l+2]}=a^{[l]}a[l+2]=a[l] 。

结果表明,残差块学习这个恒等式函数并不难,跳跃连接使我们很容易得出 a[l+2]=a[l]a^{[l+2]}=a^{[l]}a[l+2]=a[l] 。这意味着,即使给神经网络增加了这两层,它的效率也并不逊色于更简单的神经网络,因为学习恒等函数对它来说很简单。尽管它多了两层,也只把 a[l]a^{[l]}a[l] 的值赋值给 a[l+2]a^{[l+2]}a[l+2] 。所以给大型神经网络增加两层,不论是把残差块添加到神经网络的中间还是末端位置,都不会影响网络的表现。

当然,我们的目标不仅仅是保持网络的效率,还要提升它的效率。想象一下,如果这些隐藏层单元学到一些有用信息,那么它可能比学习恒等函数表现得更好。而这些不含有残差块或跳跃连接的深度普通网络情况就不一样了,当网络不断加深时,就算是选用学习恒等函数的参数都很困难,所以很多层最后的表现不但没有更好,反而更糟。

我认为残差网络起作用的主要原因就是这些残差块学习恒等函数非常容易,你能确定网络性能不会受到影响,很多时候甚至可以提高效率,或者说至少不会降低网络的效率,因此创建类似残差网络可以提升网络性能。

除此之外,关于残差网络,另一个值得探讨的细节是,假设 z[l+2]z^{[l+2]}z[l+2] 与 a[l]a^{[l]}a[l] 具有相同维度,所以ResNets使用了许多same卷积,所以这个 a[l]a^{[l]}a[l] 的维度等于这个输出层的维度。之所以能实现跳跃连接是因为same卷积保留了维度,所以很容易得出这个捷径连接,并输出这两个相同维度的向量。

如果输入和输出有不同维度,比如输入的维度是128, a[l+2]a^{[l+2]}a[l+2] 的维度是256,再增加一个矩阵,这里标记为 WsW_sWs​ , WsW_sWs​ 是一个256×128维度的矩阵,所以 Wsa[l]W_sa^{[l]}Ws​a[l] 的维度是256,这个新增项是256维度的向量。你不需要对 WsW_sWs​ 做任何操作,它是网络通过学习得到的矩阵或参数,它是一个固定矩阵,padding值为0,用0填充 a[l]a^{[l]}a[l] ,其维度为256,所以者几个表达式都可以。

最后,我们来看看ResNets的图片识别。这些图片是我从何凯明等人论文中截取的,这是一个普通网络,我们给它输入一张图片,它有多个卷积层,最后输出了一个Softmax

如何把它转化为ResNets呢?只需要添加跳跃连接。这里我们只讨论几个细节,这个网络有很多层3×3卷积,而且它们大多都是same卷积,这就是添加等维特征向量的原因。所以这些都是卷积层,而不是全连接层,因为它们是same卷积,维度得以保留,这也解释了添加项 z[l+2]+a[l]z^{[l+2]}+a^{[l]}z[l+2]+a[l] (维度相同所以能够相加)。

ResNets类似于其它很多网络,也会有很多卷积层,其中偶尔会有池化层或类池化层的层。不论这些层是什么类型,正如我们在上一张幻灯片看到的,你都需要调整矩阵 WsW_sWs​ 的维度。普通网络和ResNets网络常用的结构是:卷积层-卷积层-卷积层-池化层-卷积层-卷积层-卷积层-池化层……依此重复。直到最后,有一个通过softmax进行预测的全连接层。

以上就是ResNets的内容。使用1×1的过滤器,即1×1卷积,这个想法很有意思,为什么呢?我们下节课再讲。

课程板书




←上一篇 ↓↑ 下一篇→
2.3 残差网络 回到目录 2.5 网络中的网络以及1x1卷积

2.4 残差网络为什么有用-深度学习第四课《卷积神经网络》-Stanford吴恩达教授相关推荐

  1. 深度学习第四课——卷积神经网络(week 1)

    目录 一.前言 1.1 卷积 1.2 其他滤波器 1.3 Padding 1.3.1 解释 1.3.2 填充多少像素的选择 1.4 卷积步长 1.5 三维卷积 1.6 单层卷积网络 1.7 深度卷积神 ...

  2. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  3. 2.3 残差网络-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.2 经典网络 回到目录 2.4 残差网络为什么有用? 残差网络 (Residual Networks (ResNets)) 非常非常深的神经网络是很难训练的,因为存在梯度 ...

  4. 2.5 网络中的网络及1x1卷积-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.4 残差网络为什么有用? 回到目录 2.6 谷歌 Inception 网络简介 网络中的卷积及1x1卷积 (Network in Network and 1x1 Conv ...

  5. 1.8 简单卷积网络示例-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 单层卷积网络 回到目录 1.9 池化层 简单卷积网络示例 (A Simple Convolution Network Example) 上节课,我们讲了如何为卷积网络 ...

  6. 0.0 目录-深度学习第五课《序列模型》-Stanford吴恩达教授

    文章目录 目录 第五课 第四课 第三课 第二课 第一课 目录 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1. ...

  7. 0.0 目录-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  8. 0.0 目录-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  9. 0.0 目录-深度学习第二课《改善神经网络》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

最新文章

  1. 【青少年编程】【四级】用逗号分隔列表
  2. 如何配置Spring Boot Tomcat
  3. 第二周 数据分析之展示 Matplotlib基础绘图函数实例
  4. 两个小工具,MySQL死锁分析,新技能又Get!!!
  5. 在类别无法直接使用的一些对象或方法
  6. python反射详解
  7. Spark学习-SparkSQL--04-SparkSQL CLI 单节点运行与yarn集群运行
  8. 去掉超链接的颜色_Word中怎么快速批量删除去掉网站超链接技巧
  9. 隐含社交信任度和基于情感的方法的推荐系统
  10. 《葵花宝典:WPF自学手册》三大网点书评集萃
  11. 员工请假系统 php,员工请假管理系统(源代码+论文)
  12. python实验报告代写_vector data作业代写、python程序设计作业调试、代做python实验作业、代写OGR python作业代做Python程序|代写Web开发...
  13. Importance Weighted Adversarial Nets for Partial Domain Adaptation
  14. Matlab画图中怎么打希腊字母,Matlab图形中输入希腊字母
  15. 关于PHP中如何跟踪报错的手段
  16. 支持苹果18W-60W PD快充协议芯片JD6606S
  17. office2016 Excel 打开“宏”分三步
  18. Python:(使用matplotlib画图)使用bar画柱状图,并标注数字
  19. Deepin 15.4 如何使用 罗技无线键盘/鼠标(采用优联技术)
  20. 快手+中科大 | 全曝光推荐数据集KuaiRec 2.0版本

热门文章

  1. CentOs下手动升级node版本
  2. 创建和运行Java项目
  3. [读书笔记]高阶函数
  4. [概统]本科二年级 概率论与数理统计 第三讲 离散型随机变量
  5. 组合恒等式2 五个基本的组合恒等式 更复杂的技巧与例题
  6. UA MATH566 统计理论 QE练习题2.2
  7. UA MATH571B 试验设计VI 随机效应与混合效应2
  8. vue循环出来的数据,通过点击事件改变了数据,但是视图却没有更新
  9. sublime 安装 插件 package control,安装docblockr
  10. CAFFE(0):Ubuntu 下安装anaconda2和anaconda3