残差网络(Residual Networks, ResNets)
“残差在数理统计中是指实际观察值与估计值(拟合值)之间的差。”“如果回归模型正确的话, 我们可以将残差看作误差的观测值。”
更准确地,,假设我们想要找一个 xx,使得 f(x)=bf(x)=b,给定一个 xx 的估计值 x0x0,残差(residual)就是 b−f(x0)b−f(x0),同时,误差就是 x−x0x−x0。
即使 xx 不知道,我们仍然可以计算残差,只是不能计算误差罢了。
2. 什么是残差网络(Residual Networks,ResNets)?在了解残差网络之前,先了解下面这个问题。
Q1:神经网络越深越好吗?(Deeper is better?)
A1:如图 1 所示,在训练集上,传统神经网络越深效果不一定越好。而 Deep Residual Learning for Image Recognition 这篇论文认为,理论上,可以训练一个 shallower 网络,然后在这个训练好的 shallower 网络上堆几层 identity mapping(恒等映射) 的层,即输出等于输入的层,构建出一个 deeper 网络。这两个网络(shallower 和 deeper)得到的结果应该是一模一样的,因为堆上去的层都是 identity mapping。这样可以得出一个结论:理论上,在训练集上,Deeper 不应该比 shallower 差,即越深的网络不会比浅层的网络效果差。但为什么会出现图 1 这样的情况呢,随着层数的增多,训练集上的效果变差?这被称为退化问题(degradation problem),原因是随着网络越来越深,训练变得原来越难,网络的优化变得越来越难。理论上,越深的网络,效果应该更好;但实际上,由于训练难度,过深的网络会产生退化问题,效果反而不如相对较浅的网络。而残差网络就可以解决这个问题的,残差网络越深,训练集上的效果会越好。(测试集上的效果可能涉及过拟合问题。过拟合问题指的是测试集上的效果和训练集上的效果之间有差距。)
图 1 不同深度的传统神经网络效果对比图
(“plain” network指的是没有使用 shortcut connection 的网络)
残差网络通过加入 shortcut connections,变得更加容易被优化。包含一个 shortcut connection 的几层网络被称为一个残差块(residual block),如图 2 所示。(shortcut connection,即图 2 右侧从 xx到 ?? 的箭头)
图 2 残差块
2.1 残差块(residual block)如图 2 所示,xx 表示输入,F(x)F(x) 表示残差块在第二层激活函数之前的输出,即 F(x)=W2σ(W1x)F(x)=W2σ(W1x),其中 W1W1 和 W2W2 表示第一层和第二层的权重,σσ 表示 ReLU 激活函数。(这里省略了 bias。)最后残差块的输出是 σ(F(x)+x)σ(F(x)+x)。
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/39726.html
- 上一篇:jQuery事件
- 下一篇:Flume和 Sqoop