矩陣求導(一)

小丑与锁鸟發表於2024-04-19

前言


在大學的微積分課程中,我們學習過關於標量函式的導數。但是當我們求解一個多元函式的極值時,單獨一個自變數的偏導數往往不能告訴我們太多資訊,於是我們有一種天然的想法是要把每個自變數的偏導數放在一起,看看他們的聯合效果如何。這個過程其實是一個向量求導的過程。也就是說,我們把每個元素單獨求偏導的結果按照一個順序放入一個向量,與用這些元素組成的向量對函式直接求導,結果是一樣的。因為這些非標量的求導過程實在太重要,我把他們整理到了這個部落格中。

  • 矩陣求導的分類

由於我們現在有三種不同維度的資料容器,我們一共可以求出3*3=9種不同型別的導數,這幾種導數的形狀也各不相同。幸運的是,通常我們只需要瞭解其中一部分,就可以滿足工作中的大部分需求。

上圖是九種組合的情況,其中小寫字母x、加粗小寫字母x以及加粗大寫字母X分別表示標量、向量和矩陣。
標量對標量的導數是自變數在變化一個微小值時函式值的變化比例,我們已經在學校裡接觸過了,這裡九不再贅述。剩餘的還有五種求導形式較為簡單,是我們首先應該掌握的:

  1. 標量對向量和矩陣求導
  2. 向量或矩陣對標量求導
  3. 向量對向量求導

而向量對矩陣的求導,矩陣對向量的求導,以及矩陣對矩陣的求導則更加繁瑣,我們在這裡不做進一步介紹。

  • 求導結果的佈局

然而還有一件事應該先解決,即求導結果的形式。我們在前言裡說過,標量對向量的求導,等於標量對每個分量求導再把求導的結果放到一個向量中。但這其實是不嚴謹的,因為我們沒有說明按照列向量來放置這些結果,還是按照行向量來放。事實上,兩者都可以,取決於一個概念:矩陣求導的佈局。通常大部分時候,我們在談論到一個向量時,除了特殊說明,都預設這是一個列向量。當我們用標量對向量求導時,如果我們選擇將求導結果依然按照列排列,那麼我們把這種佈局方式稱為分母佈局(求導結果的行數與分母相同)。顯而易見,分子佈局下求導的結果應該是分母佈局的轉置。具體來說,這九種求導的形狀如下:

  • 標量對向量和矩陣的求導

正如我們前文所述,當一個標量是一個向量中分量的函式時,我們可以嘗試拿這個標量對向量進行求導。
圖一:標量對向量的求導
標量對矩陣的求導,推導過程是相似的。首先,我們將矩陣分塊成一個列向量的形式,然後按照向量求導進行處理;對於每個求導後的分量,再次用向量求導的方式去處理。那麼對於一個m*n的矩陣,我們的求導結果就是標量對矩陣中每個元素求導的結果,按照原矩陣形狀放到一起而已。

  • 向量或矩陣對標量的求導

向量或者矩陣對標量的求導,只需要將前者的每個元素對標量進行求導,再按照指定的佈局方式放置即可。

以上,就是涉及到標量的四種求導。剩下還有一種向量對向量的求導,以及一些相關的常用公式,我們放到下一節再介紹。

參考文獻:https://www.cnblogs.com/pinard/p/10750718.html
https://www.jianshu.com/p/d4277f9db7a0

相關文章