神经网络的异常结果

Unusual results from Neural Network

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

我在 5x5 像素网格中有一组 6 个可能的符号。

这些是{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 之间。

我的人工神经网络由 25 个输入神经元(5x5 网格)、6 个带偏差的隐藏神经元和 6 个输出神经元组成。

每个输出神经元映射到一个符号。 0 和 1 之间的输出确定它识别哪个符号,即 - 选择输出节点的最大值的符号。

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

看起来效果很好。然后我进行了以下实验:

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

对于01之间的每个噪声值,我运行测试2000次(噪声运行domly每次都略有变化) .在 X.

上执行此操作时,我得到了下图

您可能需要在另一页上打开图片才能看到完整尺寸。

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

70% 噪声添加到 X,网络预测 X\.

的机会均等

无论如何,我的问题是:

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

澄清一下,在 70% 噪声之后,网络同样混合了 X\

然而,在 ~88% 噪声之后,网络同样混淆了 X/

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

您假设网络在训练期间正在学习字符 Xcomplete 表示。也许它学到的内部表示严重偏向 / 并混入了一点 \。即如果输入具有强 / 成分和一些 \ 成分——那么预测 X。此信息足以将 X 与其他字符区分开来(干净时)。训练神经网络是基于损失函数的,如果这个表示已经满足我们的类,网络就没有必要学习更鲁棒的表示。

在这种假设情况下,与需要注入大量噪声的 / 相比,注入少量噪声会很容易地掩盖 \ 分量。