在一些文献中,卷积神经网络的卷积层具有共享权重(例如,请参阅deeplearning.net 教程中的“共享权重” ),但我已经阅读了一些论文,其中权重是非共享的,而是像“普通 MLP”一样计算。
那么,卷积神经网络共享权重有什么好处呢?有什么优点和缺点吗?或者它只是一个基于架构的决定,比如“我们注意到,我们的网络在共享权重下工作得更好”?
在一些文献中,卷积神经网络的卷积层具有共享权重(例如,请参阅deeplearning.net 教程中的“共享权重” ),但我已经阅读了一些论文,其中权重是非共享的,而是像“普通 MLP”一样计算。
那么,卷积神经网络共享权重有什么好处呢?有什么优点和缺点吗?或者它只是一个基于架构的决定,比如“我们注意到,我们的网络在共享权重下工作得更好”?
共享权重的主要优点是可以大大降低问题的自由度。以最简单的情况为例,考虑一个捆绑的自动编码器,其中输入权重是,输出权重是。您已将模型的参数从降低了一半。你可以在这里看到一些可视化:链接。在 Conv Net 中也会得到类似的结果。
这样,您可以获得以下结果:
因此,这是一个很好的尝试调整,我建议您尝试两者。我已经看到共享信息(共享权重)为更好的性能铺平了道路的案例,以及其他一些案例,这些案例使我的模型变得不那么灵活。
@iassael 更多地强调由于参数减少而导致的正则化效果,但我认为权重共享方法的更好性能更多的是寻找局部特征而不是全局特征。这将指数可能性降低到线性规模或至少降低到可以更容易管理的规模。这是一个简单的例子。假设我们有一个只有 4 个像素的输入,每个像素只有二进制值“0”或“1”。全局特征有 2^4 = 16 种可能的配置可供学习。但是,如果使用一个局部特征,假设它只有 1 个像素感受野,那么学习 2 个简单特征“0”和“1”就足够了。随着感受野大小的增加,需要学习的特征数量也会增加。结果,局部特征减少了需要学习的特征数量。
让我们将相同的类比应用于对象检测测试。如果完全连接的第一层试图提取给定图像上所有可能的边缘配置,它需要学习不同边缘的许多组合,这已经足够了。然而,如果它试图学习局部特征,可能的边缘数量会大大减少到不同的边缘方向。然后通过卷积,它可以揭示哪个位置主要激活特定的边缘方向。
在 CNN 中发现的一种典型的权重共享技术将输入视为局部区域的层次结构。它强加了一个一般假设(先验知识),即网络将要处理的输入可以分解为一组具有相同性质的局部区域,因此它们中的每一个都可以用相同的一组变换进行处理。有了先验假设,我们可以减少网络中的参数数量(与全连接网络相比)并提高网络的泛化能力,因为这个先验假设对于问题来说是正确的。