暑校


ResNet(残差连接)

<h1>为什么要引入ResNet</h1> <p>&amp;emsp;&amp;emsp;网络层次越深,模型能获取的信息越多,而且特征也越丰富。但是根据实验表明,随着网络的加深,优化效果反而越差,测试数据和训练数据的准确率反而降低了。<strong>这是由于网络的加深会造成梯度爆炸和梯度消失的问题</strong>。可以看到当网络深度为56层的时候,模型的训练误差反而比20层深度的网络训练误差更大,错误更加多。所以我们可以得出一个结论,网络并不是越深越好的。</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e6de7ae62f8665c904e49a66bb40d482&amp;amp;file=file.png" alt="" /></p> <p>&amp;emsp;&amp;emsp;针对这种现象有一个解决的方法:对输入数据和中间层的数据进行归一化(BN)操作,这种方法可以保证网络在反向传播中采用随机梯度下降(SGD),从而让网络达到收敛。但是,<strong>这个方法仅对几十层的网络有用</strong>。当网络层次达到上百层时,这种方法就不再适用。因为出现了另一个问题,就是<strong>退化</strong>问题。当网络层数增加时,在训练集上的准确率却饱和甚至下降了。这个不能解释为overfitting(过拟合),因为过拟合应该表现为在训练集上表现更好,但是退化后的网络并没有在训练集上表现更好。退化问题说明了深度网络不能很简单地被很好地优化。</p> <p>&amp;emsp;&amp;emsp;为了让更深的网络也能训练出好的效果,有人一个新的网络结构——ResNet。这个网络结构的想法主要源于VLAD(残差的想法来源)和Highway Network(跳跃连接的想法来源)。</p> <h1>什么是ResNet</h1> <p>&amp;emsp;&amp;emsp;为了解决深层网络中的<strong>退化</strong>问题,可以人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为:<strong><em>残差网络(ResNets)</em></strong> &amp;emsp;&amp;emsp;残差网络的核心思想是通过引入“残差块”(residual block),使网络能够学习恒等映射(identity mapping),从而解决深度神经网络中的梯度消失问题。在传统的卷积神经网络中,每层的输出都是输入的非线性变换。而在残差网络中,残差块通过将输入直接加到非线性变换的输出中,使得网络可以学习恒等映射。</p> <ul> <li>输入 x 经过两个卷积层,得到 F(x)。</li> <li>F(x) 与输入 x 相加,得到H(X),即 x + F(x)。</li> <li>最后的输出是H(X),也就是x + F(x),这个输出被传递到下一个残差块。</li> <li>残差学习的目的是让网络层拟合H(x)-x,也就是F(x), 而非H(x) <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c1d3c3c5d1db5d7a478ce6bd34736502&amp;amp;file=file.jpg" alt="" /></li> </ul> <h1>为什么需要求解经过F(x)之后在求解H(x)</h1> <p>&amp;emsp;&amp;emsp;如果是采用一般的卷积神经网络,原先咱们要求解的是H(x) = F(x)这个值。那么,我们现在假设,在我的网络达到50层的时候,咱们的网络已经达到最优状态了,也就是说,此时的错误率是最低的时候,再往下加深网络的化就会出现<em>退化</em>问题(错误率上升的问题)。但是如果现在要更新下一层网络的权值就会变得很麻烦,因为这很容易出现<strong>退化</strong>问题。简而言之,就是第52层或者53层还没有第50层的效果好。</p> <p>&amp;emsp;&amp;emsp;但是采用残差网络就能很好的解决这个问题。还是假设当前网络的深度能够使得错误率最低,如果继续增加咱们的ResNet,为了保证下一层的网络状态仍然是最优状态,咱们只需要把令F(x)=0就好啦!因为x是当前输出的最优解(上面例子中的第50层),为了让它(50层)成为下一层的最优解,也就是让输出H(x)=x,只需要让F(x)=0就可以做到。跳跃连接能让网络学会将输入直接传递到输出。而且不会对性能造成负面影响。</p> <h1>残差的两个堆叠形式</h1> <ul> <li>第一种Basic:两个3x3卷积堆叠</li> <li>第二种Bottleneck:利用1x1卷积减少计算量。第一个1x1下降1/4通道数,第二个1x1提升4倍通道数。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=89a1229db9e6488e7218401e5486679a&amp;amp;file=file.png" alt="" /></li> </ul>

页面列表

ITEM_HTML