本节概述了如何在矩阵上应用微积分。请注意,需要对线性代数有一个基本的理解——您应该熟悉矩阵操作的常用方法。
考虑一个n乘n矩阵和一个n乘1向量。例如,我们如何求?现在,如果您要天真地应用单变量微积分规则,一个合理的答案将是
毕竟,问题的相应标量形式确实是a。实际上,向量形式的答案是。但现在考虑以下问题:。如果您要采用标量形式,您可能会认为答案应该是。但这并不正确——实际上答案是,其中T表示向量x的转置。
本节的目的是触及这个美丽领域的表面——因为它不是大学里普通的微积分 3 或 线性代数课程会讲到的东西——但它有自己的特点。它有什么用?矩阵微积分在机器学习和计算金融等其他领域得到了广泛应用。它还可以帮助我们避免使用(可能很麻烦的)拉格朗日,并有效地将问题简化为单变量场景!
在本节中,我们考虑涉及对向量x进行微分的问题。与上面一样,我们假设x是一个列向量。
思考这个问题的一种方法是将其简化为标量问题。请注意,我们可以将x视为标量的集合 。现在分别求 的偏导数,其中 。最后将它们组合在一起。我们实际上是在寻找 - 步骤相同(只是之前,x 的大小是 2 或 3,代表 i、j 和 k 坐标系)。
所以让我们从上面的例子中尝试一下。我们想要找到,对于所有的 ,
... 也就是A。对于每个i都一样。
现在,如果你将所有偏导数组合起来会得到什么?就像你如何找到 ,你会得到 。这仅仅是A!实际上,这就是为什么 。
现在我们回到另一个问题:.
假设A是一个2×2的矩阵,并表示A为。使用x相同的记法,进行矩阵乘法
对A的每个元素求偏导数(这等效于求雅可比矩阵)。对于,求
,, 和
但是,接下来该怎么做呢?如何将结果“组合”起来?显然,我们遗漏了一些东西。
让我们退一步,问一个问题:给定一个向量 , 的维度应该是什么?
考虑上面的例子。我们有两个变量:A 有 4 个元素(2x2)和 x 有 2 个元素,我们想要找到 。很容易看出 f 的维度是一个列向量,其中 ,其中 。因此,我们还需要考虑关于 和 的导数。换句话说, 和 是一个 2x2 向量,对应于矩阵 A 的每个元素的偏导数。
总共有多少个元素?对于构成 f 的两个标量中的每一个,都有四个偏导数。这导致了 (2 * (2 * 2)) = 8 个元素 - 实际上是一个张量(可以看作是更高阶的矩阵)。这就是事情开始变得混乱的地方,但幸运的是,这是一个足够简单的例子。
所以让我们利用上面的观察来解决这个问题。
首先考虑 ,其中 。计算各个偏导数: 和 。类似地, 和 。
现在,我们如何将这些组合起来?问题是 是一个张量,但我们只能使用矩阵显示二维表示。因此,让我们取与 对应的“面”。我们可以用矩阵表示我们上面找到的偏导数集合(即雅可比矩阵):。类似地,。我们观察到什么?这仅仅是 (注意从列向量到行向量的变化)!事实上,这就是我们证明 的方法。
在实践中,你无需每次都进行所有这些工作来寻找矩阵的导数。相反,存在许多矩阵手册(有时也称为速查表),它们提供了一张关于矩阵的常见导数的表格,而这正是你在实践中可能需要的。 这里有一个。
考虑 Markowitz 问题。假设我们有n支股票,我们希望分配权重 。每支股票之间的互元素协方差为 ,对于所有 。假设我们想以传统的方式解决这个问题。那么优化问题是最小化 ,受约束条件的约束,虽然很重要,但我们这里不提。
由于存在双重求和,解决这个问题可能很麻烦。 让我们尝试矩阵微积分。 令 **w** 为一个 N 行 1 列的向量, 为一个 N 行 N 列的矩阵。 上述问题可以简化为最小化 ,你只需要对 **w** 求导数! 如上所示,使用矩阵微积分手册,,这比计算单个偏导数要优雅得多。