为什么是深度神经网络而不是宽度神经网络?增加神经网络的深度相比于增加宽度有哪些优点?

为什么是深度神经网络而不是宽度神经网络?增加神经网络的深度相比于增加宽度有哪些优点?

Bengio和LeCun等人的论文《Scaling learning algorithms towards AI》中提到,如果一个深层结构能够刚刚好解决问题,那么就不可能用一个更浅的同样紧凑的结构来解决,因此要解决复杂的问题,要么增加深度,要么增加宽度。但是神经网络一般来说不是越深越好,也不是越宽越好,并且由于计算量的限制或对于速度的需求,如何用更少的参数获得更好的准确率无疑是一个永恒的追求。而目前针对网络宽度的研究远远不如针对网络深度的研究多,我认为主要有两点原因:

①提升同样效果需要增加的宽度远远超过需要增加的深度

Delalleau和Bengio等人的论文《Shallow vs. Deep sum-product networks》中提出,对于一些特意构造的多项式函数,浅层网络需要指数增长的神经元个数,其拟合效果才能匹配上多项式增长的深层网络。Eldan和Shamir等人的论文《The power of depth for feedforward neural network》中构造了一个3层网络,并尝试用一个2层网络获得近似的表达能力,结果宽度呈现了指数级的增加。而Zhou Lu等人的论文《The expressive power of neural networks: A view form the width》中表明,宽度减少后用于补偿模型性能的深度不是呈指数级增长,而是多项式增长。从这几篇论文的角度来看,似乎模型性能对宽度确实没有深度那么敏感。

②宽而浅的网络可能比较擅长记忆,却不擅长概括,即泛化能力差

Google在他们的广告与推荐系统模型 Wide&Deep 的研究中提到,Wide侧记住的是历史数据中那些常见的、高频的模式,实际上并没有发现新的模式,因此他们用Wide侧来完成推荐系统中EE问题中的Exploitation任务,即对于用户比较确定的兴趣,要开采、利用、迎合,而用Deep侧来完成Exploration任务,即探究用户新的兴趣。我认为这个设计很好的佐证了这一节的观点。

而且,在MobileNet模型的研究中,其作者们也通过实验表明窄且深的MobileNet架构比宽且浅的架构准确率更高。多层的优势在于可以在不同的抽象层次上学习特征,随着层数的增加,每个神经元相对于前一层的感受野变得越来越大,因此深层可以提供全局语义和抽象细节的信息,这是宽层很难做到的。

最后,深未必一定好,宽也未必不好

一方面,Hanin和Rolnick在ICML 2019上的论文《Complexity of Linear Regions in Deep Networks》指出深层网络相比于浅层网络在实际应用中体现出来的表达能力,从某个角度来看,平均意义上只随神经元数目线性增长,而和网络深度无关;2014年Ba和Caruana的经典论文《Do deep nets really need to be deep?》中也指出,深层网络被训练好之后,常常可以找到恰当的浅层网络去代替它。另一方面,由于目前大部分都是使用GPU去训练模型,也有一些研究指出GPU的并行处理使得加宽网络比加深网络更容易训练。

实际上,深度和宽度并不是完全对立的关系,增加深度和宽度都是在增加可学习参数的个数,从而增加神经网络的拟合能力,在网络设计时,两者都会考虑,追求深度与广度的平衡。增加网络深度可以获得更大的感受野来帮助捕获更多像素点的类似特征,增加网络宽度可以获得更细粒度、更丰富的特征。甚者,ResNeXt中提出了cardinality这一维度,以及EfficientNet中还考虑了深度、宽度、分辨率三个维度整体缩放对准确率的影响,因此这一切都有待进一步研究。

你可能感兴趣的:(思考,杂,神经网络,人工智能,深度学习)