我目前正在构建一个2通道(也称为双通道)卷积神经网络,以便将2个二进制图像(包含二进制对象)分类为“相似”或“不同”。
我遇到的问题是,似乎网络并不总是收敛于相同的解决方案。例如,我可以使用完全相同的训练对排序和所有相同的参数,依此类推,当我多次运行网络时,每次生成的解决方案都不相同;有时会收敛到2%以下的错误率,有时我会得到50%的错误率。
我觉得这与网络权重的随机初始化有关,每次执行网络时都会导致不同的优化路径。当我将SGD用作动力时,甚至会发生此问题,因此我真的不知道如何每次都“强制”将网络收敛到相同的解决方案(全局最优)吗?
这与我使用二进制图像而不是灰度图像或彩色图像有关,还是神经网络固有的某种原因导致了此问题?
答案 0 :(得分:1)
培训中有几种随机性来源。 初始化是一个。 SGD本身当然是随机的,因为微型批次的内容通常是随机的。有时候,像辍学这样的图层本身也具有随机性。确保获得相同结果的唯一方法是修复所有随机种子。
给出所有这些随机性来源和带有数百万个参数的模型,您的报价
“我真的不知道如何每次都强制网络融合到相同的解决方案(全局最优)吗?”
几乎是任何人都应该说的东西-没人每次都知道如何找到相同的解决方案,甚至不知道 local 最优方法,更不用说全局优化。
尽管如此,理想情况下,还是希望网络在训练尝试(具有固定的超参数和数据集)之间表现相似。当然,任何其他因素都会导致可重复性出现问题。
不幸的是,我怀疑问题是CNN固有的。 您可能知道bias-variance tradeoff。对于像CNN这样的功能强大的模型,偏差可能很小,但方差很大。换句话说,CNN对数据噪声,初始化和超参数敏感。因此,多次训练同一个模型产生非常不同的结果也就不足为奇了。 (我也遇到这种现象,在一个项目中,两次训练之间的表现变化高达30%。)我减少这种情况的主要建议是加强正则化。
这与我使用二进制图像而不是灰度图像或彩色图像有关,还是神经网络固有的某种原因导致了此问题?
正如我提到的,这个问题在一定程度上是深层模型固有的问题。但是,使用二进制映像也可能是一个因素,因为数据本身的空间相当不连续。也许考虑“软化”输入(例如过滤输入)并使用数据增强。例如,已知一种类似的方法可帮助标签平滑。