人工神经网络的雅可比矩阵计算

7

最近我开始思考实现Levenberg-Marquardt算法来学习人工神经网络(ANN)。实现的关键是计算雅可比矩阵。我花了几个小时学习这个主题,但我无法确切地计算它。

假设我有一个简单的前馈网络,有3个输入,隐藏层有4个神经元和2个输出。层之间完全连接。我还有一个5行长的学习集。

  1. 雅可比矩阵的大小应该是多少?
  2. 导数应该放在哪里?(对于左上角和右下角的公式及其一些解释的示例将非常完美)

这真的没有帮助:

enter image description here

在神经网络中,Fx分别代表什么?

3个回答

8
Jacobian矩阵是一个向量值函数的所有一阶偏导数的矩阵。在神经网络中,它是一个N乘W的矩阵,其中N为训练集中输入的数量,W为网络中参数(权重+偏置)的总数。可以通过针对每个输出对每个权重进行偏导数来创建它,并具有以下形式:
其中F(xi,w)是使用权重向量w对第i个输入向量进行评估的网络函数,wj是网络权重向量w的第j个元素。 在传统的Levenberg-Marquardt实现中,Jacobian矩阵通过使用有限差分来近似计算。然而,对于神经网络,可以通过使用微积分的链式法则和激活函数的一阶导数来高效地计算它。

那么在我提出的问题的例子中,矩阵列数=34+42=20(暂时忘记偏差),矩阵行数与数据集中的行数相同(5)?F函数应该是什么样子的? - Andrzej Gis
@abhinash 梯度和雅可比矩阵是一样的吗?因为即使梯度矩阵的大小为NxW,我们也可以将其插入到梯度下降方程中。 - shaifali Gupta

0

根据我的经验,与人工神经网络和反向传播算法的工作

  1. Jacobian矩阵将所有偏导数组织成一个m x n的矩阵, 其中m是输出数量,n是输入数量。 所以在你的情况下应该是2x3

  2. 假设有1到k个输出(在你的图片中为F)和1到i个输入(在你的图片中为x),那么公式应该如下:

            Fk
    Jki =  ----
            xi
    

很抱歉我不知道如何在这里写公式格式,但我希望我的回答足够清晰。
如果您对我的回答有任何问题,请在评论中询问!


F函数应该长什么样子?此外,Abhinash在他的回答中建议矩阵的大小与您提出的不同(如果我理解正确的话)。也许如果我看到F函数,就会更清楚了。 - Andrzej Gis

0
  1. 您有一个形状为(3,1)的输入向量X和一个将其映射到形状为(4,1)的输出向量Y的函数G(x),这是您的隐藏层。这个函数G(x)也被称为权重矩阵W,其形状为(4,3)。因此,在矩阵乘法方面,您有

    • Y = WX + b,b:偏置,与Y具有相同的形状,即(4,1)

在这种情况下,Y对X的Jacobian矩阵是您的权重矩阵W。W包含每个元素在X中的每个元素的Y的梯度。

  • JX(Y) = W
  • (另外JW(Y) = XT)

2.左上角和右下角由输入和输出向量维度决定

  • X = [X1,X2.....Xn]
  • Y = [Y1,Y2...Ym] 或者如您的问题中的F = [F1,F2....Fm]

描述 Y(F) 每个元素对 X 的每个元素的导数的矩阵将具有形状为 (m,n) 且包含 m*n 个元素。

有关详细计算和进一步阅读,请查看以下链接

  1. http://cs231n.stanford.edu/handouts/linear-backprop.pdf
  2. http://cs231n.stanford.edu/handouts/derivatives.pdf
  3. https://web.stanford.edu/class/cs224n/readings/gradient-notes.pdf

最好添加一些原始文章的示例和引用,而不仅仅是链接。 - cnnr
谢谢您的建议。我会记在心里,并在以后注意到它。 - adityassrana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接