神经网络的异常结果

我编写了一个用于符号识别的简单前馈人工神经网络。

我有一组6个可能的符号,排列在一个5×5的像素网格中。

这些符号是 {X, +, -, \, /, |}

例如,X 将是:

X = [1,0,0,0,1,     0,1,0,1,0,     0,0,1,0,0,     0,1,0,1,0,     1,0,0,0,1]

灰色噪声区域的值可以在0到1之间变化。

我的ANN由25个输入神经元(5×5网格)、6个带偏置的隐藏神经元和6个输出神经元组成。

每个输出神经元对应一个符号。输出值在0到1之间,决定了它识别哪个符号,即选择输出节点最大值对应的符号。

例如,如果输出是 {X : 0.9, + : 0.2, - : 0.1, \ : 0.15, / : 0.15, | : 0.2},那么识别的符号将是 X

它似乎运行得很好。接着我进行了以下实验:

我获取了测试输入(上述6个符号),并创建了一个噪声函数 addNoise(n),其中 n 是随机添加到该输入的噪声百分比。

对于从 01 的每个噪声值,我运行了 2000 次测试(每次噪声略有随机变化)。当对 X 进行此操作时,我得到了以下图表。

enter image description here

您可能需要在另一页面打开图片以查看全尺寸。

如您所见,在我向X测试输入注入大约 40%(x轴上的400)的噪声后,它开始预测其他符号。

在向 X 增加 70% 的噪声后,网络预测 X\ 的几率相等。

无论如何,我的疑问是:

图表上 \/ 的线条不应该几乎完全对齐吗,因为它们相对于 X 符号是相同的?

为了澄清,在增加 70% 的噪声后,网络会同样混淆 X\

然而,在大约 88% 的噪声后,网络会同样混淆 X/

为什么我的网络会产生这样的结果?


回答:

您假设网络在训练期间学习了字符 X完整 表示。也许它学到的内部表示对 / 有很大偏见,并混合了一些 \。即如果输入有强烈的 / 成分和一些 \ 成分——那么预测 X。这种信息足以在干净时将 X 与其他字符区分开。训练神经网络是基于损失函数的,如果这种表示已经满足我们的类别,网络就没有必要学习更健壮的表示。

在这种假设情况下,注入少量噪声会比注入大量噪声更容易遮蔽 \ 成分,而遮蔽 / 成分则需要注入大量噪声。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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