普通深度学习结构的问题:当网络结构到达一定深度时,更深的网络会带来更高的训练误差。
误差升高的原因是:更深的网络梯度消失现象会更明显,所以在backpropgation时无法有效的将梯度更新到前面的网络层,靠前的网络层无法更新,导致训练和测试效果变差。
解决的问题:在增加网络深度时,可以有效的解决梯度消失的问题。
解决的方案是残差网络:
残差网络增加了一个恒等映射,把当前的输出直接传给下一层网络。全部是1:1的传输不增加任何额外参数。相当于跳过了本层计算,所以这个连接命名是skip connection。
如果遇到不等维度的传递一半用0来填充。
shortcut填充选项
- 恒等映射,如果残差块儿的输入输出维度不一样时,增加的维度用0填充
- 在残差块输入输出维度一样时使用恒等映射,不一样时使用线性投影保持一致
- 对于所有block都使用线性投影
由于这三个效果差距很小,但是第一个选项是计算复杂度最低的而且对于更深的网络更有利
Resnet特点:
- 残差网络在表征方面不存在直接优势,并不能更好的表征某一方面的特征,但是Resnet允许逐层的深度表征更多模型。
- 残差网络能使前馈式/反传播网络更顺利的进行,可使优化更深的模型更简单。
- shortcut不产生额外参数不增加计算复杂度,能简单的添加到叠加层的输出。通过SGD,模型还是可以被训练成端到端的模式。
网友评论