我一直在关注 Andrew NG 关于神经网络的视频。在这些视频中,他没有将偏见与每个神经元联系起来。相反,他在计算激活值后在每一层的头部添加了一个偏置单元,并使用这个偏置和计算来计算下一层的激活值(前向传播)。
然而,在其他一些关于机器学习的博客和类似的视频中,每个神经元都存在偏差。这种差异是什么,为什么是这样,它的含义是什么?
我一直在关注 Andrew NG 关于神经网络的视频。在这些视频中,他没有将偏见与每个神经元联系起来。相反,他在计算激活值后在每一层的头部添加了一个偏置单元,并使用这个偏置和计算来计算下一层的激活值(前向传播)。
然而,在其他一些关于机器学习的博客和类似的视频中,每个神经元都存在偏差。这种差异是什么,为什么是这样,它的含义是什么?
两种方法都代表相同的偏差概念。对于每个单元(不包括输入节点),您计算前一层(在前馈网络的情况下)向量的权重和激活的点积的激活函数值加上标量偏差值:
(w * a) + b
在 Andrew Ng 中,此值是使用矢量化技巧计算的,在该技巧中,您将激活与指定的偏置常数(通常为 1)连接起来,然后就可以完成工作(因为这个常数对于不同的节点有自己的权重 - 所以这与拥有另一个每个节点的偏差值)。
关于两者之间的差异,@Marcin 已经很好地回答了它们。
有趣的是,在 deeplearning.ai 的深度学习专业中,Andrew 采用了与机器学习课程不同的方法(他为每个隐藏层采用了一个偏差项)并将偏差项与每个相关的神经元相关联。
尽管这两种方法都试图达到相同的结果,但在我看来,将偏差与每个神经元相关联的方法更加明确,并且极大地有助于超参数调整,尤其是在处理大型神经网络架构(如 CNN、Deep神经网络等