有什么东西可以确保卷积滤波器的结果不一样吗?

人工智能 神经网络 卷积神经网络 卷积 过滤器
2021-10-18 10:04:07

我训练了一个简单的模型来识别 mnist 数据集中的手写数字。这里是:

model = Sequential([
    Conv2D(filters=1, kernel_size=(3,1), padding='valid', strides=1, input_shape=(28, 28, 1)),
    Flatten(),
    Dense(10, activation='softmax')])

我尝试改变卷积层的过滤器数量,同时保持其他参数不变(学习率 = 0.0001,集数 = 2000,训练批量大小 = 512)。我使用了 1、2、4、8 和 16 个过滤器,每个过滤器的模型准确率都是 92-93%。

据我了解,在训练过程中,过滤器可能会学习识别图像中各种类型的边缘(例如,垂直、水平、圆形)。这个实验让我想知道是否有任何过滤器最终是重复的——具有相同或相似的权重。有什么能阻止他们这样做吗?

1个回答

不,没有什么能真正阻止权重不同。在实践中,尽管它们最终几乎总是不同,因为它使模型更具表现力(即更强大),所以梯度下降学会了这样做。如果一个模型有n特征,但其中 2 个是相同的,则模型有效地具有n1特征,这是一个没有表现力的模型n特征,因此通常具有较大的损失函数。

但即使权重不同,其中一些也可能非常相似。如果您将卷积过滤器的第一层可视化,并且您拥有大量的卷积过滤器(例如 100 个),您会看到其中一些正在学习检测大致相同的边缘(相同的方向和位置)。这些特征非常相似,它们在模型中实际上是多余的,并且不会增加其预测能力。

实际上,有一个关于识别冗余特征并修剪它们的整个研究领域。Le Cun 在Optimal Brain Damage中表明,剪除冗余特征不仅可以使模型更小、更快地进行推理,还可以提高模型的准确性。

是一篇博客文章,对其中一种修剪方法进行了高级概述,以获取更多信息。