关于卷积神经网络的一致性

我目前正在构建一个2通道(也称为双通道)的卷积神经网络,以便将包含二进制对象的两张二进制图像分类为“相似”或“不同”。

我遇到的问题是,网络似乎并不总是收敛到相同的解决方案。例如,我可以使用完全相同的训练对顺序和所有相同的参数等,每次运行网络时,都会产生不同的解决方案;有时候错误率会收敛到2%以下,而其他时候错误率会达到50%。

我感觉这可能与网络权重的随机初始化有关,每次执行网络时都会导致不同的优化路径。即使我使用带动量的SGD,这种问题仍然存在,所以我真的不知道如何“强制”网络每次都收敛到相同的解决方案(全局最优解)?

这是否与我使用二进制图像而不是灰度或彩色图像有关,还是神经网络本身的某些特性导致了这个问题?


回答:

训练中有几个随机性的来源。初始化就是其中之一。当然,SGD本身也是随机的,因为小批次的内容通常是随机的。有时,像dropout这样的层也是固有的随机的。确保获得相同结果的唯一方法是为所有这些固定随机种子。

考虑到所有这些随机性来源和一个拥有数百万参数的模型,你的引用

“我真的不知道如何‘强制’网络每次都收敛到相同的解决方案(全局最优解)?”

几乎是任何人都应该说的——没有人知道如何每次找到相同的解决方案,甚至是局部最优解,更不用说全局最优解了。

尽管如此,理想情况下,希望网络在不同训练尝试中表现相似(在固定超参数和数据集的情况下)。当然,任何其他情况都会导致可重复性问题。

不幸的是,我怀疑这个问题是CNN固有的。你可能知道偏差-方差权衡。对于像CNN这样强大的模型,偏差可能很低,但方差非常高。换句话说,CNN对数据噪声、初始化和超参数非常敏感。因此,多次训练同一个模型产生非常不同的结果并不令人惊讶。(我在一个项目中也遇到了这种现象,不同训练运行之间的性能变化高达30%。)我主要的建议是使用更强的正则化来减少这种情况。

这是否与我使用二进制图像而不是灰度或彩色图像有关,还是神经网络本身的某些特性导致了这个问题?

正如我提到的,这种问题在深度模型中确实存在。然而,你使用二进制图像也可能是一个因素,因为数据本身的空间相当不连续。或许可以考虑“软化”输入(例如,过滤输入)并使用数据增强。类似的方法已知在标签平滑中有所帮助,例如。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注