残差块(Residual Block)
1. **残差块的定义与作用**:
残差块通过引入跳跃连接(skip-connection)或称为快捷连接(shortcut connection),允许网络学习输入与输出之间的残差映射,即学习函数,其中 是期望的底层映射。这样,原始映射可以被重构为。这种设计使得网络更容易优化残差映射,而不是原始的、无参考的映射。
2. **残差块的优势**:
- **特征抽取**:残差块负责从其前一组中提取的特征中提取更高级的特征。
- **非线性性能增强**:通过残差链接,每个残差块组能够学习输入与输出之间的复杂非线性映射。
- **避免梯度消失和爆炸**:残差块组内的Skip Connection能够更好地传递梯度,有助于训练更深的网络。
3. **残差块的结构**:
在标准的ResNet-18或ResNet-34模型中,通常会包括几组残差块。每一组都有一定数量的残差块,这些块的数量和组的深度有关。例如,第一组可能包括2个残差块,用64个输出通道;随后的组可能分别用128、256、512个输出通道。
4. **残差块与特征图大小**:
每一组的第一个残差块通常会减小特征图的尺寸(即进行下采样),同时增加输出通道数。这样做可以保证模型的计算效率,同时能抓住更多层次的特征。
5. **残差块的实现**:
残差块通常包含两个3X3的卷积层,每个卷积层后面跟着批量归一化(Batch Normalization)层和ReLU激活函数。如果需要改变通道数,会引入一个额外的 1X1 卷积层来调整输入的形状,以便与输出进行相加。
6. **残差块的变体**:
在更深的ResNets中,如ResNet-50和ResNet-101,通常会使用瓶颈残差块(Bottleneck Residual Blocks),因为这些瓶颈块在计算上更为节省。
残差块的设计解决了深度学习中的一个重要问题,即随着网络深度的增加,训练效果反而变差的问题,使得可以构建和训练更深的网络结构。