我注意到ILSVRC中有一些着名的CNN结构,如AlexNet,VGG,ZF网等。它们都使用两个全连接层,其次是输出层。 为什么两个?这背后有什么内在的想法吗?
我尝试以这种方式理解它:在完全连接的层之前,我们有一堆卷积层,可能包含各种高级功能。完全连接的层就像是从复杂层中抽象出来的特征列表。但从这个意义上说,一个FC层应该足够了。为什么两个?为什么不是三个或四个或更多?我想这背后的约束可能是计算成本。但是,更多的FC层是否总能提供更好的结果?选择两个可能是什么原因?
答案 0 :(得分:9)
完全连接的层就像是从复杂层中抽象出来的特征列表。
是的,这是对的。该层的目标是将从图像块中检测到的特征组合在一起以用于特定任务。在某些(非常简化的)意义上,转换层是智能特征提取器,而FC层是实际网络。
为什么两个?为什么不是三个或四个或更多?
我不能说出这些特定网络的确切原因,但我可以想象为什么这个选择有意义的几个可能原因:
您不希望第一个FC层太大,因为它包含大多数模型参数,换句话说,消耗大部分内存。例如。 VGGNet在FC层中具有7*7*512*4096 = 102,760,448
个参数,占所有网络参数的72%。使它增加两倍会使它达到85%!
因此,在给定内存限制的情况下,一个接一个的两个较小的FC层通常比一个大的FC层更灵活。
Conv层在准确性方面比它们在顶层组合的方式更重要。三个或更多FC层没有任何问题,但如果你尝试的话,我认为你不会看到任何重大的变化。
事实上,all-convolutional network的情况表明,通过用卷积层替换FC层可以大大简化网络,而不会出现明显的性能下降。我想在此强调:这些网络根本不包含FC层。如果作者没有在FC部分上花费太多时间并专注于早期的图层,我不会感到惊讶。最新的CNN也倾向于摆脱FC层。
顺便说一句,就FC层而言,我认为计算成本不是一个重要因素,因为大多数计算都发生在第一个转换层。请记住,卷积比矩阵乘法更昂贵。