在简单的一层神经网络中用零初始化参数后,我如何获得 92% 的准确率?

How am I getting 92% accuracy after initialising parameters with zeros in a simple one layer neural network?

这是来自 tensorflow 示例之一 mnist_softmax.py

即使梯度不为零,它们也必须相同,并且对应于十个 类 的所有十个权重向量应该完全相同,并产生相同的输出 logits,因此产生相同的概率。我认为这是可能的唯一情况是在使用 tf.argmax() 计算准确度时,其输出在平局的情况下是模棱两可的,我们很幸运并得到了 92% 的准确度。但是后来我在训练完成后检查了 y 的值,它们给出了完全不同的输出,表明所有 类 的权重向量都不相同。有人可以解释这是怎么可能的吗?

虽然最好将参数初始化为小随机数以打破对称性并可能加速学习,但这并不一定意味着如果将权重初始化为零,则所有 classes 的概率都相同.

原因是因为 cross_entropy 函数是权重、输入和正确的 class 标签的函数。因此每个输出 'neuron' 的梯度将不同,具体取决于正确的 class 标签,这将破坏对称性。