神经网络的异常结果
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
是添加到该输入的 运行 噪声的百分比。
对于0
和1
之间的每个噪声值,我运行测试2000
次(噪声运行domly每次都略有变化) .在 X
.
上执行此操作时,我得到了下图
您可能需要在另一页上打开图片才能看到完整尺寸。
如您所见,在我向 X 测试输入注入大约 40%
(x 轴上为 400)噪声后,它开始预测其他符号。
将 70%
噪声添加到 X
,网络预测 X
和 \
.
的机会均等
无论如何,我的问题是:
图表上 \
和 /
的线不应该几乎完全对齐,因为它们与 X
符号相同吗?
澄清一下,在 70%
噪声之后,网络同样混合了 X
和 \
。
然而,在 ~88%
噪声之后,网络同样混淆了 X
和 /
。
为什么我的网络会产生这样的结果?
您假设网络在训练期间正在学习字符 X
的 complete
表示。也许它学到的内部表示严重偏向 /
并混入了一点 \
。即如果输入具有强 /
成分和一些 \
成分——那么预测 X
。此信息足以将 X
与其他字符区分开来(干净时)。训练神经网络是基于损失函数的,如果这个表示已经满足我们的类,网络就没有必要学习更鲁棒的表示。
在这种假设情况下,与需要注入大量噪声的 /
相比,注入少量噪声会很容易地掩盖 \
分量。
我写了一个简单的用于符号识别的前馈人工神经网络。
我在 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
是添加到该输入的 运行 噪声的百分比。
对于0
和1
之间的每个噪声值,我运行测试2000
次(噪声运行domly每次都略有变化) .在 X
.
您可能需要在另一页上打开图片才能看到完整尺寸。
如您所见,在我向 X 测试输入注入大约 40%
(x 轴上为 400)噪声后,它开始预测其他符号。
将 70%
噪声添加到 X
,网络预测 X
和 \
.
无论如何,我的问题是:
图表上 \
和 /
的线不应该几乎完全对齐,因为它们与 X
符号相同吗?
澄清一下,在 70%
噪声之后,网络同样混合了 X
和 \
。
然而,在 ~88%
噪声之后,网络同样混淆了 X
和 /
。
为什么我的网络会产生这样的结果?
您假设网络在训练期间正在学习字符 X
的 complete
表示。也许它学到的内部表示严重偏向 /
并混入了一点 \
。即如果输入具有强 /
成分和一些 \
成分——那么预测 X
。此信息足以将 X
与其他字符区分开来(干净时)。训练神经网络是基于损失函数的,如果这个表示已经满足我们的类,网络就没有必要学习更鲁棒的表示。
在这种假设情况下,与需要注入大量噪声的 /
相比,注入少量噪声会很容易地掩盖 \
分量。