1、提出shortcut connection 结构
问题:网络的深度是使网络性能更优化的一个关键因素,但是随着网络深度的加深,梯度消失/包传问题十分明显,网络甚至出现退化。
办法:通过引入一个深度残差学习框架,解决这个退化问题。
H(x):用H(x)来表示最优解映射,即:x(input)----非线性卷积堆叠-------->H(x)(output).
存在另外一种映射, F(x) = H(x) - x,则=> H(x) = F(x) + x. 其中F(x) + x 可以通过在前馈网路中做一个"快捷连接"来实现。
"快捷连接" 跳过一个或多个层,自身快捷连接既不会添加额外的参数也不会增加计算复杂度。整个网络依然可以用SGD+ 反向传播来做到端到端的训练。如图:
如上图:F(x) 和x是按照channel维度相加的, 相加都是逐元素相加。
1)F(x) 和x 的channel维度相同, y = F(x) +x, F(x) = W2* σ(W1 * x) 其中σ代表非线性函数ReLU.
2)F(x) 和x 的channel维度不相同, y = F(x) + Wx,F(x) = W2* σ(W1 * x) 其中σ代表非线性函数ReLU, W为卷积操作,用来调整x的channel
2、提出了bottleneck(深度瓶颈结构)
bottleneck结构的目的是:为了降低参数的数目。
实际中考虑计算成本,对残差做了计算优化,即:将两个3x3的卷积层替换为 1x1, 3x3, 1x1三个卷积层,新结构中,中间3x3卷积层首先在1x1卷积层下降维,减少计算量,然后在另一个1x1的卷积层做了还原,既保持了精度又减少了计算量。