最近我开始考虑实施Levenberg-Marquardt算法来学习人工神经网络(ANN)。实现的关键是计算雅可比矩阵。我花了几个小时研究这个主题,但我无法弄清楚如何计算它。
假设我有一个简单的前馈网络,有3个输入,隐藏层有4个神经元,2个输出。图层完全连接。我还有5行学习集。
这真的没有帮助:
神经网络方面的 F 和 x 是什么?
答案 0 :(得分:7)
雅可比矩阵是矢量值函数的所有一阶偏导数的矩阵。在神经网络的情况下,它是一个N×W矩阵,其中N是我们训练集中的条目数,W是我们网络的参数总数(权重+偏差)。它可以通过取每个权重的每个输出的偏导数来创建,并具有以下形式:
其中F(xi,w)是使用权重向量w对训练集的第i个输入向量求值的网络函数,并且wj是网络的权重向量w的第j个元素。 在传统的Levenberg-Marquardt实现中,Jacobian通过使用有限差分来近似。然而,对于神经网络,可以通过使用微积分的链规则和激活函数的一阶导数来非常有效地计算它。
答案 1 :(得分:0)
根据我使用ANN和backpropagation的经验
雅可比矩阵将所有偏导数组织成m×n矩阵, 其中m是输出数,n是输入数。 所以在你的情况下它应该是2x3
所以,让我们说有一个介于1到k个输出之间的设置(图片中为F) 是1和i输入(图片中的x)所以公式应该是这样的
Fk
Jki = ----
xi
抱歉,我不知道如何在这里写一个公式格式,但我希望我的回答足够清楚。
如果您对我的回答有任何疑问,请在评论中提问!
答案 2 :(得分:0)
您有一个形状为(3,1)的输入向量X和一个函数G(x),将其映射到形状为(4,1)的输出向量Y(这是您的隐藏层)。该函数G(x)也称为权重矩阵W,其形状为(4,3)。因此,就矩阵乘法而言,您有
Y = WX + b
,b:偏差并且与Y的形状相同,为(4,1)在这种情况下,Y wrt X的雅可比行列就是您的权重矩阵W。W包含X中每个元素的Y中每个元素的梯度。
2。左上角和右下角由输入和输出矢量尺寸决定
描述Y(F)中每个元素的导数的矩阵,其中X中的每个元素将具有m * n个形状为(m,n)的元素
有关详细的计算和进一步的阅读,请通过以下链接