2015-06-06 29 views
0

我使用完全连接的神经网络进行图像识别“mnist”。输出神经元的错误值是不正确的?

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

我有两个问题:

  1. 我使用乙状结肠和式为错误错误=输出*(1 - 输出)*(靶 - 输出)。问题是,如果输出神经元为1,并且所需值为0,那么错误= 0,但它是错误的,不是吗?

  2. 是,如果在隐藏层神经元的加权和过大的结果是1使用权乙状结肠?什么值来初始化权重?

回答

0

通常情况下,我在0.01到0.5之间的随机范围内初始化权重时经历了很好的结果。

为1:据我所知,输出层的局部误差通常是expectedOutput - currentOutput,因为这个简化的说法从来没有失败,并且有足够的精度。在此之后,对于完全连接的图层,您可以使用反向传播来调整隐藏图层的权重。请参见Yann Lecuns的高效工作:Efficient Backprop

要2:为了防止输入1到输出图层,因为隐藏图层的总和太大,并且sigmoid为大量时代提供1,您可以执行一个简单,容易,高效的攻击:总是将每个输出层神经元的输入与父层(隐藏层)中的神经元数量相除,因此在sigmoid传递函数之前,输入始终在区间[-1.0,1.0]用过的。在大多数情况下,这个技巧会大幅减少训练网络所需的时代数量。

0

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

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

和乙状结肠功能是罚款你的任务。

+0

你能否扩展一下'error = output *(1 - output)*(target - output)'的理由。何时适用?在我看来,拥有sigmoid激活功能是必要的,但我一直无法找到解释如何或为什么。 – vsnyc