He et.al., 2015. Deep residual networks for image recognitisn
1. 什么是残差网络
1.1. Residual Block
正常的网络层是这样的:
z[l+1]=W[l+1]a[l]+b[l]a[l+1]=g(z[l+1])z[l+2]=W[l+2]a[l+1]+b[l+1]a[l+2]=g(z[l+2])
残差块是这样的:
图中黑色的线称为main path,绿色的线称为short cut/skip connection。
公式的变化体现在最后一行:
z[l+1]=W[l+1]a[l]+b[l]a[l+1]=g(z[l+1])z[l+2]=W[l+2]a[l+1]+b[l+1]a[l+2]=g(z[l+2]+a[l])
残差块使网络可以更深。网络深度与训练集性能的关系:
1.2. Residual Network
2. 为什么残差网络有用?
al+2====g(zl+2+al)g(Wl+2al+1+bl+2+al)g(al)al(1)(2)(3)
(1) 由于L2 正则化的影响,W会shrink,假设此时W=0
(2) 假设g使用ReLU
(3) 根据以上公式aL+2可以很容易地得到与a^l相同的结果。(性能不变)。因此在一个深的NN上增加一个residual block,至少不会对性能有坏处。
运气好的话,a^{l+2}能得到比al好的结果。(性能提升)
3. 其它
因为al+2=g(zl+2+al)使用残差块用的跳跃连接,要求使用same卷积。使al与z^{l+2}有相同的维度。
或者将al映射到zl+2的大小:
al+2=g(zl+2+Wal)