本節概述瞭如何在矩陣上應用微積分。請注意,需要對線性代數有一個基本的理解——您應該熟悉矩陣操作的常用方法。
考慮一個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** 求導數! 如上所示,使用矩陣微積分手冊,
,這比計算單個偏導數要優雅得多。