梯度和向量导数:行向量还是列向量?

机器算法验证 线性代数 衍生物
2022-03-21 02:43:48

相当多的参考资料(包括维基百科和http://www.atmos.washington.edu/~dennis/MatrixCalculus.pdfhttp://michael.orlitzky.com/articles/the_derivative_of_a_quadratic_form.php)定义了 a 的导数函数由一个向量作为排列成一行的函数的偏导数(因此标量值函数的导数是行向量)。在这个约定中,梯度和向量导数是彼此的转置。这个约定的好处是我们可以将导数的含义解释为一个函数,它告诉你每个方向的线性变化率。梯度仍然是一个向量,它告诉你最大变化率的方向和幅度。

我最近阅读了 Gentle 的矩阵代数(http://books.google.com/books/about/Matrix_Algebra.html?id=Pbz3D7Tg5eoC),他似乎使用了另一种约定,它将梯度定义为等于向量导数,结果在列排列中(因此标量值函数的导数是列向量)。由于这种安排,每个微分结果都是另一个约定中结果的转置。我猜这个约定的好处就是梯度和导数相等。因此,对于优化任务,您可以只进行微分,而不是先微分然后再进行转置。

我认为张力在雅可比和梯度之间。在行约定中,雅可比矩阵直接来自导数的定义,但您必须应用转置来获得梯度;而在列约定中,梯度是不需要转置的,但您必须应用转置才能获得雅可比行列式。因此,如果您更愿意将导数结果视为线性映射,那么第一个约定是有意义的;如果您更愿意将结果视为矢量/方向,那么第二个约定是有意义的。所以你只需要保持一致。

这些约定中哪一个更常用于机器学习?如果我花太多时间在“错误”的约定中阅读作品,我是否会感到无可救药的困惑?

1个回答

如果考虑向量空间之间的线性映射(例如雅可比行列式)J:uUvV, 要素v=Ju必须在形状上与矩阵向量定义一致:v是行的内积Ju.

在例如线性回归中,(在这种情况下为标量)输出空间是特征的加权组合:wu=v,再次要求内积。

只要您始终保持相同,您最终使用的约定无关紧要。Pedersen 和 Petersen 的 Matrix Cookbook 是一个相当枯燥但绝对信息丰富的资源。