源自 「吴恩达」 老师的深度学习课程。
对已学知识做个小结。
深度卷积网络之残差网络
Outline
- Classic networks:
- LeNet-5
- AlexNet
- VGG
- ResNet
- Inception
2 ResNets
- 目的
- 解决当时深度学习网络随着网络层数加深而产生的退化问题
- 解决方法
- 恒等映射
- 应用
- 图像识别
2.1 退化
- 退化
- 当模型层数增加到某种程度,模型的效果将会不升反降的现象
- 退化原因
- 由于非线性激活函数Relu的存在,每次输入到输出的过程都几乎是不可逆的(信息损失)。我们很难从输出反推回完整的输入。
- 我自己的理解就是随着层数的增加,信息即特征丢失的越来越少,模型自然不能更好的拟合,效果自然下降。
2.2 恒等映射
恒等映射定义
- 假设一个比较浅的网络已经可以达到不错的效果,那么即使之后堆上去的网络什么也不做,模型的效果也不会变差。
- 然而事实上,“什么都不做”恰好是当前神经网络最难做到的东西之一。
- 这种神经网络丢失的“什么都不做”的品质叫做恒等映射(identity mapping)。
恒等映射实现
- 映射函数H(x) = x
- 假设把网络设计为H(x) = F(x) + x(即直接把恒等映射作为网络的一部分)
- 学习残差函数F(x) = H(x) - x
- 「只要F(x)=0,就构成了一个恒等映射H(x) = x」
参见Resnet到底在解决一个什么问题[1]
2.3Residual block
残差
- 残差在数理统计中是指实际观察值与估计值(拟合值)之间的差
残差块的实现
- 右侧的曲线叫做跳接,通过跳跃连接可以实现恒等映射
- 为了实现跳跃连接,ResNets使用same卷积,保留维度
- 残差块插入的时机是在线性激活之后,ReLU 激活之前
- 「残差块,也就是一个两层及以上的隐藏单元可以学习到有用的信息,而加入残差块无论是在神经网络的中间还是末尾都不会影响神经网络,因为残差块学习恒等函数很容易,恒等函数保证了维度相同,上一个的输出等于下一个输入」
ResNets网络常用的结构是:卷积层-卷积层-卷积层-池化层-卷积层-卷积层-卷积 层-池化层……依此重复。直到最后,有一个通过 softmax 进行预测的全连接层。
参见吴恩达深度学习[2]
「欢迎批评指正,一起学习进步!!!」
Reference
[1]Resnet到底在解决一个什么问题: https://www.zhihu.com/question/64494691
[2]吴恩达深度学习: https://www.coursera.org/learn/convolutional-neural-networks?specialization=deep-learning#syllabus