我知道CNN有很多好的特性,比如权重共享、节省内存和特征提取。然而,这个问题让我很困惑。是否有任何可能的情况是完全连接网络比CNN更好?为什么?
非常感谢大家!
回答:
是否有任何可能的情况是完全连接网络比CNN更好?
嗯,我认为我们首先应该定义“更好”是什么意思。准确性和精确性并不是唯一需要考虑的因素:计算时间、自由度和优化的难度也应该被考虑在内。
首先,考虑一个大小为h*w*c
的输入。将这个输入馈送到具有F
个特征图和内核大小s
的卷积层,将会产生大约F*s*s*c
个可学习参数(假设卷积的秩没有限制,否则我们甚至有更少的参数)。将相同输入馈送到具有相同数量特征图的完全连接层,将会产生F*d_1*d_2*w*h*c
(其中d_1,d_2
是每个特征图的维度),显然,对于任何具有 decent 分辨率的输入图像,这将是数十亿级别的可学习参数。
虽然我们可能会认为可以用更浅的网络(我们已经有很多参数,对吧?),但完全连接层毕竟只是线性层,所以我们仍然需要插入许多非线性因素,以便网络获得合理的表示能力。因此,这意味着你仍然需要一个深层网络,但参数如此之多,以至于无法处理。此外,较大的网络将有更多的自由度,因此将模拟我们想要的更多:除非我们为其提供一些数据或对其进行约束,否则它将模拟噪声。
所以,是的,理论上可能存在一个完全连接网络可以为我们提供更好的性能,但我们还不知道如何训练它。最后,这纯粹基于直觉,因此可能是错误的,但我觉得这样的完全连接网络不太可能收敛到一个稠密的解决方案。由于许多卷积网络在许多任务上达到了非常高的准确率(99%及以上),我认为完全连接网络将收敛到的最优解决方案将接近于卷积网络。因此,我们并不真的需要训练完全连接网络,而只需训练其架构的一个子集即可。