相当多的参考资料(包括维基百科和http://www.atmos.washington.edu/~dennis/MatrixCalculus.pdf和http://michael.orlitzky.com/articles/the_derivative_of_a_quadratic_form.php)定义了 a 的导数函数由一个向量作为排列成一行的函数的偏导数(因此标量值函数的导数是行向量)。在这个约定中,梯度和向量导数是彼此的转置。这个约定的好处是我们可以将导数的含义解释为一个函数,它告诉你每个方向的线性变化率。梯度仍然是一个向量,它告诉你最大变化率的方向和幅度。
我最近阅读了 Gentle 的矩阵代数(http://books.google.com/books/about/Matrix_Algebra.html?id=Pbz3D7Tg5eoC),他似乎使用了另一种约定,它将梯度定义为等于向量导数,结果在列排列中(因此标量值函数的导数是列向量)。由于这种安排,每个微分结果都是另一个约定中结果的转置。我猜这个约定的好处就是梯度和导数相等。因此,对于优化任务,您可以只进行微分,而不是先微分然后再进行转置。
我认为张力在雅可比和梯度之间。在行约定中,雅可比矩阵直接来自导数的定义,但您必须应用转置来获得梯度;而在列约定中,梯度是不需要转置的,但您必须应用转置才能获得雅可比行列式。因此,如果您更愿意将导数结果视为线性映射,那么第一个约定是有意义的;如果您更愿意将结果视为矢量/方向,那么第二个约定是有意义的。所以你只需要保持一致。
这些约定中哪一个更常用于机器学习?如果我花太多时间在“错误”的约定中阅读作品,我是否会感到无可救药的困惑?