我为符号识别编写了一个简单的前馈人工神经网络。
我在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
次测试(每次噪音随机变化)。在X
上执行此操作时,我得到了以下图表。
您可能需要在另一页上打开图像才能看到完整尺寸。
正如您在X测试输入中注入约40%
(x轴400)噪声后所见,它开始预测其他符号。
如果70%
添加了X
噪音,则网络预测X
和\
的可能性相等。
无论如何,我的问题是:
\
和/
图表上的线条不应该几乎完全对齐,因为它们与X
符号相同吗?
为了澄清,在70%
噪音之后,网络平均混合了X
和\
。
然而,在发出〜88%
噪音后,网络会混淆X
和/
。
为什么我的网络会产生这样的结果?
答案 0 :(得分:1)
您假设网络在培训期间正在学习complete
字符X
的表示形式。也许它所学到的内部表示严重偏向于/
,其中混合了\
。即如果输入具有强/
分量和一些\
分量 - 那么预测X
。此信息足以区分X
与其他字符(清理时)。训练NN基于损失函数,如果这种表示已经满足我们的类,网络就不需要学习更强大的表示。
在这个假设情况下,与需要注入大量噪音的\
相比,注入少量噪音会使/
分量变得容易模糊。