输出神经元的错误值是否不正确?

时间:2015-06-06 11:30:14

标签: machine-learning neural-network

我使用完全连接的神经网络进行图像识别“mnist”。

我的网络有784个输入神经元,一个隐藏的神经元层由1569个神经元组成,输出层由10个神经元组成。

我有两个问题:

  1. 我使用sigmoid和公式来表示错误错误=输出*(1 - 输出)*(目标 - 输出)。问题是如果输出神经元是1,并且所需的值是0,那个错误= 0,但它是错的,不是吗?

  2. 如果隐藏层中的神经元加权总和变得太大而结果是1,那么使用sigmoid是否正确?初始化权重的值是什么?

2 个答案:

答案 0 :(得分:0)

通常情况下,我会在0.01到0.5之间的随机范围内初始化权重时获得良好的结果。

To 1:据我所知,输出层的局部错误通常是expectedOutput - currentOutput,因为这个简化的语句永远不会失败并且具有足够的准确性。在此之后,对于完全连接的图层,使用反向传播来调整隐藏图层的权重。请参阅Yann Lecuns的工作效率:Efficient Backprop

To 2:为了防止输出层输入1,因为hiddens层的总和太大而sigmoid为大量的历元提供1,你可以做一个简单,容易,有效的黑客攻击:总是将每个输出层神经元的输入除以父(隐藏)层中的神经元数量,因此在使用sigmoid传递函数之前,输入始终在区间[-1.0,1.0]中。在大多数情况下,这种技巧会大大减少训练网络所需的时代数量。

答案 1 :(得分:0)

好的它建议你随机初始化你的体重。通常它建议你从范围((-1 /√d),(1√d))中选择神经网络的初始权重,其中d是给定神经元的输入数。

错误总是实际输出电流输出。您提到的公式与隐藏图层权重调整中的BPN算法的其中一个步骤有关。我建议减少模型中隐藏节点的数量。一般建议隐藏节点的数量少于输入数量。

sigmoid功能适用于您的任务。