众所周知,现在很多网络都是cell组成的,最常用的就是resblock,这篇文章旨在记录比较popular的resblock与其变体。
目录
最开始,kaiming提出resblock是为了分类问题,作为cv最基础的问题,无疑其他domain也纷纷借鉴,以resblock为cell的网络结构铺天盖地席卷而来…
1.最开始的resblock
2.resblock 进化
BatchNorm/InstanceNorm/…Norm出现的时候,basic block最常用的就是Conv+BN+Relu+Conv+BN 模式侧边分支的模式,一定要记住的是,侧边分支最后一个一定不能是relu,残差块残差块,有正有负才能修复identity(identity就是下图灰色的箭头中的线)。
·
之后有文章对上面结构做出改进,准确的说是改变了模块顺序。得到修正后的basick block模块如下。
为什么新的结构好那?作者推导了公式(下面有推导),证明这样子在backward的时候梯度可以完全往回传导,所以这样子才是最佳的resblock。
其次,随着BN/IN等在high-level里的活跃,dropout慢慢淡出了人们视野,毕竟都是正则,前者主流,但是仍然有人往里面增加dropout,尤其是生物医学图像数据集(更容易过拟合),所以大家把各种正则手段都拿了出来(个人愚见…)。
2.1为什么新的block可以work?
在kaiming的Identity Mappings in Deep Residual Networks中,有一幅图展示了哪种resblock比较好,下图是在CIFAR-10上使用1001-layer ResNets的结果。可以看到新的unit是的resnet更加容易训练。
2.2 简单的推导
简单解释一下为什么这么做梯度不会消失。定义 x L x_L xL是深度L层的单元,loss function是 ϵ \epsilon ϵ。
根据链式法则,loss function回传到第L层可以拆解成两项:
∂ ϵ x L \frac{\partial \epsilon}{x_L} xL