大家好,又见面了,我是你们的朋友全栈君。
Bengio和LeCun说过大多说函数如果用一个深层结构刚刚好解决问题,那么就不可能有一个更浅的同样紧凑的结构来解决。 要解决比较复杂的问题, 要么增加深度, 要么增加宽度, 而增加宽度的代价旺旺远高于深度。 一定深度是有必要的.
现在的深度学习网络结构基本模块是卷积,池化,激活,这是一个标准的非线性变换模块. 更深的模型, 意味着更好的非线性表达能力, 可以学习更加复杂的变化, 从而可以拟合更加复杂的输入。
神经网络的每一层都各司其职, 比如第一层学到了边缘, 第二层学到了简单的形状, 第三层开始学习到了目标的形状, 更深的网络层能学习到更复杂的表达. 如果只有一层, 那么学习到的复杂程度就很小了.
网络加深带来的两个主要的好处, 更强大的表达能力和逐层的特征学习。
理论上一个2层的网络可以拟合任何连续函数, 但是需要宽度很大, 不现实.
我们直到一个模型越深越好, 但是怎么用一个指标直接定量衡量模型的能力和深度之间的关系, 就有了直接和间接法两种方案。
一个更深的网络, 可以将输入空间分为更多的线性相应空间, 他的能力是浅层网络的指数级倍.
网络的加深可以提高模型性能, 对比准确度得出: 在一定范围内, 网络越深, 性能越好。
主要从 性能提升和优化 两个方面看:
ResNet为什么这么成功, 就是因为它是的深层神经网络的训练成为可行.
深层网络带来的 梯度不稳定 , 网络退化的问题始终存在, 可以缓解, 无法消除. 这就是深度加深, 性能反而开始下降的原因.
网络的深度不是越深越好。没有一直加深一直提升的情况, 需要实验定论.
在一定程度上, 网络越深, 性能越好. 这一次我们来考虑另一个维度, 宽度, 即通道的数量.
深度在一定程度上能够表现出更好的性能, 而宽度则起到另一个作用。那就是让每一层学习到更加丰富的特征, 比如不同方向, 不同频率的纹理特征。 比如颜色的地区, 以及颜色变化的情况等。太窄的网络, 每一层能捕获的模式有限, 此时网络再深都不可能提取到足够的信息往下传递。
考虑到效率, 不能一直增加宽度.因为带来的计算量是平方增长的。宽度不同于深度, 宽度减少后, 用于补偿模型性能的深度不是呈指数级增长, 而是多项式增长, 这似乎反映出宽度并没有深度那么重要。
网络的宽度自然不是越宽越好.
这个问题没有答案, 两者都重要. 因为我们需要细节也需要性能. 不过有些模型对深度更加敏感, 有些对宽度更加敏感。没有谁更重要, 但是建议有限调整网络的宽度。
网络宽度非常关键:
追求的是越窄性能越高越好, 没有那么好的事儿, 但是可以从这几个方向入手.
宽度这么重要, 就要好好利用每一个通道, 也就是提高每一个通道的利用率.
DenseNet网络就是将各层之间进行链接, 在小通道下, 实现高性能.
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143681.html原文链接:https://javaforall.cn