如何计算神经网络中输出层的二阶导数?

时间:2014-03-29 11:04:46

标签: opencv neural-network mathematical-optimization conv-neural-network hessian-matrix

我正在尝试为卷积神经网络实现随机对角线Levenberg-Marquardt方法,以便反向传播学习权重。 我是新手,并且非常困惑,所以我几乎没有问题,希望你能帮助我。

1)如何从两个输出计算输出层的二阶导数。 由于我在一阶导数中,我必须从所需输出中减去输出并将其乘以输出的导数。 但在二阶导数中我该怎么做?

2)在卷积神经网络的MaxPooling层中,我选择2x2窗口中的最大值,并将其与权重相乘,现在我是否必须通过激活函数?

有人可以给我解释如何在opencv中进行,或者如何使用数学解释或任何显示数学的参考。 提前致谢。

1 个答案:

答案 0 :(得分:2)

如果你已经计算了雅可比矩阵(部分一阶导数的矩阵),那么你可以得到 Hessian 的近似值(部分二阶导数的矩阵) )乘以 J ^ T * J (如果残差很小)。

您可以通过以下方式计算两个输出的二阶导数: y f(X) Jacobian

enter image description here

换句话说,选择Hessian近似 B 来满足:

enter image description here

在本文中,您可以找到更多相关信息。 Ananth Ranganathan: The Levenberg-Marquardt Algorithm