输入差一千倍,输出都是 1.000:BatchNorm 拿什么换的
初始化只管第 0 步,BatchNorm 管每一步 —— σ_W 差一千倍,过完 BN 的输出完全一样。代价是它成了整个网络里唯一让样本互相影响的操作,于是推理要另存一套统计量,于是有了 model.eval()。
初始化只管第 0 步,BatchNorm 管每一步 —— σ_W 差一千倍,过完 BN 的输出完全一样。代价是它成了整个网络里唯一让样本互相影响的操作,于是推理要另存一套统计量,于是有了 model.eval()。
上一篇用 σ_z = √n · σ_W · σ_x 就往下走了。这一篇从期望的定义把它推出来:三条运算规则、交叉项为什么会消失、为什么可加的是方差而不是标准差,以及为什么诊断神经网络盯的是方差,不是均值也不是最大值。
初始 loss 17、六成神经元一出生就死掉 —— 病因是标准差在两个矩阵乘上各被放大了一次。修法只有四行,但真正带得走的是那套「按什么顺序查」的清单,以及为什么 Kaiming 在这个网络上反而输给了拍脑袋。