前面我们对常用的经典网络进行了介绍,可以查看前面文章:浅入浅出TensorFlow 6 - 实现经典网络
随着网络越来越深,大家发现,仅仅靠 BN、ReLU、DropOut 等 Trick无法解决收敛问题,相反,网络的加深带来参数的增加。
基于之前的实践经验,我们知道:网络并不是越深越好,一方面过多的参数容易导致过拟合(当然样本足够多可以一定程度上解决这个问题);另一方面,训练结果会在真值周围变化,导致网络震荡。
借鉴之前的经验,我们在训练分类器的时候,用到的 GBDT 和 xgBoost 的思维,借助残差来解决 震荡问题。
ResNet 全称是 Residual Network,每一个节点学到的不再是参数本身,而是残差,这就决定了网络有可能无限加深,基线不变,后面的节点学到的是对前面节点的补充,虽然有震荡,但震荡范围越来越小,直到趋于0。
ResNet 的网络结构借鉴了 HighWay,添加一条从 input到output的路径,也就是shortcut连接,这是关键之处。