我目前正在阅读Michael Nielsen的电子书《神经网络与深度学习》,并运行了第1章末尾的代码,该代码训练了一个神经网络来识别手写数字(略作修改,使得反向传播算法基于小批量矩阵)。
然而,运行这段代码并达到略低于94%的分类准确率后,我决定从网络中移除偏置的使用。在重新训练修改后的网络后,我发现分类准确率没有任何变化!
注意:该网络的输出层包含十个神经元;如果这些神经元中的第i个激活值最高,则输入被分类为数字i。
这让我开始思考,为什么在神经网络中使用偏置是必要的,而不仅仅是权重,以及在哪些任务中使用偏置会提高网络性能,而在哪些任务中不会?
我的代码可以在这里找到:https://github.com/pipthagoras/neural-network-1
回答:
偏置用于考虑到基础数据可能不是中心化的这一事实。在线性回归的情况下,这一点更为明显。
如果不使用截距(或偏置)进行回归,你会强迫基础模型通过原点,如果基础数据不是中心化的(例如,如果真实生成过程是Y=3000),这将导致一个糟糕的模型。另一方面,如果你的数据是中心化的或接近中心化,那么消除偏置是好的,因为你不会引入一个实际上与你的预测变量无关的项(这就像选择一个更简单的模型,只要它确实反映了基础数据,这种模型往往会更好地泛化)。