泛统计理论初探——深度残差网络的简介

神经网络学习-介绍深度残差神经网络

深度残差网络简介
    之前在一些文章里,我们介绍过BP神经网络、卷积神经网络等常见的神经网络,在这些网络里当每一次使用激活函数的时候,都会导致训练后期的梯度消失问题,因为这是由于激活函数的非线性所造成的,这就是在某些问题里,增加神经网络的层数是无法再提升预测的准确性的,有时候甚至会降低预测准确率。而按我们正常的思路去理解,深度越深的神经网络肯定不会比深度越小的预测效果差,至少我们在深度较小的神经网络后面都叠加恒等映射就可以达到这个目标。基于这两个互相矛盾的现象,那么在2015年左右就有学者提出了深度残差网络来解决这个问题,从而使得深度越深的神经网络的预测准确率越高。下面我们来介绍深度残差网络的基本思路和为什么如此设计的原因。
    首先是传统的神经网络,假设是有2层隐藏层,经过2次Relu激活函数的处理后得到输出,那么在训练后期可能由于Relu函数的叠加导致距离输出较远的网络层发生了梯度消失的现象,从而使得训练的效果变差。而深度残差网络则将这种网络结构进行了优化,它在之前的网络基础上对输入和输出建立连接,该连接是一种恒等映射,也就是说把输入的值完全一样的进行映射。那么假设传统经过2次网络层处理的结果是F(x),而把输入和输出建立起来的网络连接是x,这个时候最终输出的结果是F(x)+x,而目标输出如果是G(x)的时候,只需要对G(x)-x进行学习即可,而这种表达方式就是输出和输入的残差。所以说深度残差网络不是学习目标输出的值,而是去学习目标输出和输入的残差值,经过多层神经网络的学习后,可以使得整个神经网络模型的预测准确率有较大的提升。
在这里插入图片描述
    当然在实际问题的处理上,使用2层神经网络的残差学习是不够的,通常是由2层神经网络和对应的短接函数看作一个残差处理模块,而正常的深度残差神经网络的残差处理模块至少有5个以上,也就是总的网络层在10层以上。对于这种恒等映射,其实可以看作是一种跳跃的连接,构建在输入和残差处理模块的输入和输出之间,如果在输入和输出的维度相同,那么这种连接是直接相加的无需特殊处理;而当输入和输出的维度不同时,需要把低维度的输入进行维度提升来匹配高维度的输出。那么常见的方法是使用1乘以1的卷积核进行处理,或是使用零填充方法进行处理(将剩余边缘部分进行数字0的填充)。
    总的来说,深度残差网络在一定程度上避免了传统神经网络因为层数叠加而导致的梯度消失的问题,并且层数越深这种深度残差网络的预测效果会越好,这个方法本身是对网络结构的一种优化技巧,如果使用者在遇到一些预测问题无法再优化的时候,不妨试试这种深度残差网络的方法。

猜你喜欢

转载自blog.csdn.net/qq_26727101/article/details/109556832