残差网络
- 什么是残差:
残差在数理统计中是指实际观察值与估计值(拟合值)之间的差
更准确地,假设我们想要找一个 x x x,使得 f ( x ) = b f(x)=b f(x)=b,给定一个 x x x 的估计值 x 0 x0 x0,残差(residual)就是 b − f ( x 0 ) b−f(x0) b−f(x0),同时,误差就是 x − x 0 x−x0 x−x0。
- 什么是残差网络:
随着网络越来越深,训练变得原来越难,网络的优化变得越来越难。理论上,越深的网络,效果应该更好;
但实际上,由于训练难度,过深的网络会产生退化问题,效果反而不如相对较浅的网络。而残差网络就可以解决这个问题的,残差网络越深,训练集上的效果会越好。(测试集上的效果可能涉及过拟合问题。过拟合问题指的是测试集的效果和训练集上的效果之间有差距。
残差网络通过加入 shortcut connections,变得更加容易被优化。包含一个 shortcut connection 的几层网络被称为一个残差块(residual block),如图 2 所示。(shortcut connection,即图中右侧从 x x x 到 ⨁ ⨁ ⨁ 的箭头)
- 残差块(residual block)
如图上所示, x x x 代表输入, F ( x ) F(x) F(x) 代表残差块在第二层激活函数ReLu之前的输出,即 F ( x ) = W 2 σ ( W 1 x ) F(x)=W2σ(W1x) F(x)=W2σ(W1x)。其中 W 1 W1 W1 和 W 2 W2 W2 表示第一层和第二层的权重, σ σ σ 表示 ReLU 激活函数。
当没有 shortcut connection(即图 2 右侧从 x x x 到 ⨁ ⨁ ⨁ 的箭头)时,残差块就是一个普通的 2 层网络。残差块中的网络可以是全连接层,也可以是卷积层。
设第二层网络在激活函数之前的输出为 H ( x ) H(x) H(x)。如果在该 2 层网络中,最优的输出就是输入 x x x,
那么对于没有 shortcut connection 的网络,就需要将其优化为 H ( x ) = x H(x)=x H(x)=x。
对于有 shortcut connection 的网络(残差块),如果最优输出是 x x x,则只需要将 F ( x ) = H ( x ) − x F(x)=H(x)−x F(x)=H(x)−x 优化为 0 即可。后者的优化会比前者简单。这也是残差这一叫法的由来。
- 一个残差网络是怎么样的:
![](https://raw.githubusercontent.com/youminglan/Picture/main/img/20210507103033.png)
图中 34-layer residual就是残差网络。
其中 34-layer 表示含可训练参数的层数为34层,池化层不含可训练参数。
图 3 右侧所示的残差网络和中间部分的 plain network 唯一的区别就是 shortcut connections。这两个网络都是当 feature map 减半时,filter 的个数翻倍,这样保证了每一层的计算复杂度一致。
ResNet 因为使用 identity mapping,在 shortcut connections 上没有参数,所以图 3 中 plain network 和 residual network 的计算复杂度都是一样的,都是 3.6 billion FLOPs.
如果本文对你有帮助,欢迎点赞、订阅以及star我的项目。
你的支持是我创作的最大动力!