在神经网络中实现偏见的正确方法

时间:2018-06-29 23:48:18

标签: matrix machine-learning neural-network dot-product bias-neuron

我可以建立一个神经网络,我只需要澄清偏见的实现。哪种方法更好:在权重矩阵各自独立的矩阵中为每一层实现偏差矩阵B1, B2, .. Bn,通过添加{{1 }}到上一层的输出(该层的输入)。在图像中,我正在询问是否实现:

enter image description here

或此实现:

enter image description here

是最好的。谢谢

3 个答案:

答案 0 :(得分:1)

我认为最好的方法是有两个单独的矩阵,一个矩阵用于重量测量,另一个矩阵用于偏差。为什么? :

  • 我不相信计算量会增加,因为W*xW*x + b应该等效地在GPU上运行。在数学和计算上它们是等效的。

  • 更大的模块化。假设您要使用不同的初始值设定项(1、0和glorot等)来初始化权重和偏差。通过具有两个单独的矩阵,这很简单。

  • 更易于阅读和维护。

答案 1 :(得分:0)

  

通过将上一层输出(该层的输入)加1来在权重矩阵中包括偏差。

这似乎是在此处实现的:Machine Learning with Python: Training and Testing the Neural Network with MNIST data set在“具有多个隐藏层的网络”段落中。

我不知道这是否是最好的方法。 (也许不相关,但仍然如此:在上述示例代码中,它可以与sigmoid一起使用,但是当我用ReLU替换时失败了。)

答案 2 :(得分:0)

在我看来,我认为分别为每一层实现偏差矩阵是可行的方法。这将创建许多模型必须学习的超参数,但它将为模型提供更多的收敛自由。

有关更多信息,请阅读this