6.1 ResNet网络结构,BN以及迁移学习详解

# ResNet详解、BN以及迁移学习
网络中亮点:
- 超深的网络结构(突破1000层)
- 提出residual模块
- 使用batch normalization加速训练(丢弃dropout)

### 网络深度过高带来的问题
- 梯度消失或梯度爆炸
- 退化问题(degradation problem)
#### 梯度消失或梯度爆炸:
假设我们每一层的误差梯度是一个小于1的数,在反向传播中,每向前传播一层,都要乘以一个小于1的误差梯度。当网络越来越深的时候,梯度就会越来越小,这就是梯度消失现象;
如果反过来,每一层的一个梯度是一个大于1的数,随着层数不断加深,梯度就会越来越大,这就是梯度爆炸现象;
针对梯度消失或梯度爆炸问题,通常是对数据进行标准化处理,权重进行初始化,以及使用bn来处理。
#### 退化问题(degradation problem):
解决了梯度消失和梯度爆炸的问题,还是会出现网络层数变深,效果不会很高的问题,resnet就此提出了残差结构来解决退化问题。
### 残差模块(residual模块)

上图是两种不同的残差模块,左边是针对于网络层数较少的网络使用的残差结构,右边是针对网络层数较多的网络使用的残差结构(比如左边的残差结构对应是resnet34,右边残差结构对应是resnet50,resnet101,resnet152)
需要注意是,两个残差结构都最后一层卷积都没使用relu 激活函数,而是在相加操作之后使用了relu激活函数;另外右边的结构比左边的减少了很多参数
下图右半部分是resnet34,和左半部分对应,比如表格中对应conv5_x中使用了3次residual block,对应右半部分conv5_x中有3个残差结构
