建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

运气男孩

发帖: 447粉丝: 54

发消息 + 关注

更新于2021年05月15日 00:48:26 951 7
直达本楼层的链接
楼主
显示全部楼层
[其他] 残差网络为什么有用?

### 残差网络为什么有用?(Why ResNets work?) 为什么**ResNets**能有如此好的表现,我们来看个例子,它解释了其中的原因,至少可以说明,如何构建更深层次的**ResNets**网络的同时还不降低它们在训练集上的效率。希望你已经通过第三门课了解到,通常来讲,网络在训练集上表现好,才能在**Hold-Out**交叉验证集或**dev**集和测试集上有好的表现,所以至少在训练集上训练好**ResNets**是第一步。 先来看个例子,上次我们了解到,一个网络深度越深,它在训练集上训练的效率就会有所减弱,这也是有时候我们不希望加深网络的原因。而事实并非如此,至少在训练**ResNets**网络时,并非完全如此,举个例子。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/15/004614ukvjqehyogd4yogf.png) 假设有一个大型神经网络,其输入为,输出激活值。假如你想增加这个神经网络的深度,那么用**Big NN**表示,输出为。再给这个网络额外添加两层,依次添加两层,最后输出为,可以把这两层看作一个**ResNets**块,即具有捷径连接的残差块。为了方便说明,假设我们在整个网络中使用**ReLU**激活函数,所以激活值都大于等于0,包括输入的非零异常值。因为**ReLU**激活函数输出的数字要么是0,要么是正数。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/15/004619vzhlvpvvir6u3kkp.png) 我们看一下的值,也就是上节课讲过的表达式,即,添加项是刚添加的跳跃连接的输入。展开这个表达式,其中。注意一点,如果使用**L2**正则化或权重衰减,它会压缩的值。如果对应用权重衰减也可达到同样的效果,尽管实际应用中,你有时会对应用权重衰减,有时不会。这里的是关键项,如果,为方便起见,假设,这几项就没有了,因为它们()的值为0。最后,因为我们假定使用**ReLU**激活函数,并且所有激活值都是非负的,是应用于非负数的**ReLU**函数,所以。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/15/004625ykpcolvh8bguj7ev.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/15/004630tyaavayhzq1ajofo.png) 结果表明,残差块学习这个恒等式函数并不难,跳跃连接使我们很容易得出。这意味着,即使给神经网络增加了这两层,它的效率也并不逊色于更简单的神经网络,因为学习恒等函数对它来说很简单。尽管它多了两层,也只把的值赋值给。所以给大型神经网络增加两层,不论是把残差块添加到神经网络的中间还是末端位置,都不会影响网络的表现。 当然,我们的目标不仅仅是保持网络的效率,还要提升它的效率。想象一下,如果这些隐藏层单元学到一些有用信息,那么它可能比学习恒等函数表现得更好。而这些不含有残差块或跳跃连接的深度普通网络情况就不一样了,当网络不断加深时,就算是选用学习恒等函数的参数都很困难,所以很多层最后的表现不但没有更好,反而更糟。 我认为残差网络起作用的主要原因就是这些残差块学习恒等函数非常容易,你能确定网络性能不会受到影响,很多时候甚至可以提高效率,或者说至少不会降低网络的效率,因此创建类似残差网络可以提升网络性能。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/15/004642uc9zakw55s3qgmzl.png) 除此之外,关于残差网络,另一个值得探讨的细节是,假设与具有相同维度,所以**ResNets**使用了许多**same**卷积,所以这个的维度等于这个输出层的维度。之所以能实现跳跃连接是因为**same**卷积保留了维度,所以很容易得出这个捷径连接,并输出这两个相同维度的向量。 如果输入和输出有不同维度,比如输入的维度是128,的维度是256,再增加一个矩阵,这里标记为,是一个256×128维度的矩阵,所以的维度是256,这个新增项是256维度的向量。你不需要对做任何操作,它是网络通过学习得到的矩阵或参数,它是一个固定矩阵,**padding**值为0,用0填充,其维度为256,所以者几个表达式都可以。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/15/004713vxqqlj08rngsxsfu.png) 最后,我们来看看**ResNets**的图片识别。这些图片是我从何凯明等人论文中截取的,这是一个普通网络,我们给它输入一张图片,它有多个卷积层,最后输出了一个**Softmax**。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/15/004721gowhgtbq8m1u3swv.png) 如何把它转化为**ResNets**呢?只需要添加跳跃连接。这里我们只讨论几个细节,这个网络有很多层3×3卷积,而且它们大多都是**same**卷积,这就是添加等维特征向量的原因。所以这些都是卷积层,而不是全连接层,因为它们是**same**卷积,维度得以保留,这也解释了添加项(维度相同所以能够相加)。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/15/004735zewpm5ajjis5aavy.png) **ResNets**类似于其它很多网络,也会有很多卷积层,其中偶尔会有池化层或类池化层的层。不论这些层是什么类型,正如我们在上一张幻灯片看到的,你都需要调整矩阵的维度。普通网络和**ResNets**网络常用的结构是:卷积层-卷积层-卷积层-池化层-卷积层-卷积层-卷积层-池化层……依此重复。直到最后,有一个通过**softmax**进行预测的全连接层。 以上就是**ResNets**的内容。

神经网络

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

HW-QGS

发帖: 261粉丝: 22

发消息 + 关注

发表于2021年05月16日 16:58:43
直达本楼层的链接
沙发
显示全部楼层

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

风起云涌1

发帖: 445粉丝: 18

发消息 + 关注

发表于2021年05月17日 10:27:15
直达本楼层的链接
板凳
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

虚荣Vainglory

发帖: 33粉丝: 3

发消息 + 关注

发表于2021年05月17日 14:22:46
直达本楼层的链接
地板
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

谭涟漪

发帖: 30粉丝: 1

发消息 + 关注

发表于2021年05月17日 14:40:46
直达本楼层的链接
5#
显示全部楼层

挺不错的

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

Jack20

发帖: 239粉丝: 180

发消息 + 关注

发表于2021年05月17日 15:34:28
直达本楼层的链接
6#
显示全部楼层

谢谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

可爱又积极

发帖: 267粉丝: 19

发消息 + 关注

发表于2021年05月25日 21:14:51
直达本楼层的链接
7#
显示全部楼层

感谢分享

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复
发表于2021年05月31日 20:32:58
直达本楼层的链接
8#
显示全部楼层

不错感谢分享

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200