ResNet 学习笔记(深度学习一)

CSDN上已经有了很多这一类型的系列博客,但感觉得自己亲自总结一下才能真正内化为自己的知识。所以我也打算写一个深度学习的系列博文来记录我在深度学习上的学习经历。
我想总结的第一篇博文是与ResNet相关的,虽说这并不是深度学习的入门知识,但是由于最近刚好阅读了《Deep Residual Learning for Image Recognition》这篇文章,趁热打铁,就把它记录下来了。

一,训练深层网络的困难

比起传统的神经网络,深度卷积网络的一个特点就是层数多。现有的研究已经证明在深度网络中,低层的网络层学习到的是一些比较低级的特征,而高层的网络层学习到的是一些比较高级的特征。而从AlexNet到VGGNet,也显示了网络层数越多,学习到的模型性能越好。但伴随而来的问题就是,是否网络层数越深,学习到的模型性能就越好?
如果按照之前网络结构,答案是否定的,如下图所示,在CIFAR-10数据集上,56层网络的训练误差以及测试误差均比20层网络的差。这并不是梯度消失或者梯度爆炸造成的,因为可以通过合理的参数初始化以及batch normalization解决这两个问题。唯一的解释就是深层网络模型难以通过梯度下降的方法学习得到。所以论文作者就提出了一种deep residual network framwork。(具体难在哪里作者没有明确指出)

这里写图片描述

二,残差网络

假设在很深的网络中我们要学习的一个映射是 H(x)(可以是网络中的连续几层),但它很难学习得到。而其对应的残差函数F(x) = H(x) - x 却比较容易学习到,那么我们就可以设计我们的网络结构,让网络学习映射F(x),然后通过F(x)+x 得到我们想要的映射H(x)。这就是残差网络的基本思想,至于为什么F(x)会比H(x)容易学习到,我并没有看懂,应该在原文中中第二章有给出理论知识。
残差网络的一个模块如下图所示,其中F(x)的维度应该和x是相同的。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/huinsysu/article/details/80342407