矩陣微分基礎(一)

2022-08-20 08:45:10 字數 3897 閱讀 3447

這篇文章將介紹向量和矩陣微分相關基礎,他是它將是後面學習的基礎。

假設函式\(f:r^ \mapsto r\),它的函式變數為乙個大小為\(m \times n\)的矩陣,函式值為實數,則​\(f(a)\)關於​\(a\)的梯度是乙個由偏導數組成的矩陣

\[\nabla_af(a) \in r^ =

\left [

\begin

\frac} & \frac} & ... &\frac} \\

\frac} & \frac} & ... & \frac}\\

\vdots & \vdots & \vdots &\vdots & \\

\frac} & \frac } &... & \frac}

\end

\right ]

\]請注意,$\nabla_af(a) \(和\)a\(的大小總是一樣的。特別的,當\)a\(是乙個向量\)x \in r^n$時,則

\[\nabla_xf(x) \in r^ =

\left [

\begin

\frac \\

\frac \\

\vdots \\

\frac

\end

\right ]

\]特別需要注意的是:只有當函式\(f\)是實數值時,它的梯度才會被定義,也就是說\(f\)必須返回乙個標量值。例如我們不能求\(ax\)的梯度(\(a\)為\(m\times n\)矩陣,\(x\)為\(n\times 1\)向量),因為\(ax\)結果是乙個向量。由偏導數性質很容易得到下面事實

原則上,梯度是向量函式偏微分的擴充套件,但是在現實使用中,由於符號的原因可能會變得很棘手。下面來看這樣乙個例子,設\(f(z)=z^tz,z\in r^n\),顯然\(\nabla_zf(z)=2z\),現在我們考慮下面式子

\[\nabla f(ax)

\]我們該如何解釋這個表示式呢?在這裡至少有2中解釋。

上面兩個解釋的結果完全不同。根本原因是沒有明確我們到底對誰進行微分,第一種解釋其實對應為

\[\nabla_f(ax)

\]第二種解釋對應為

\[\nabla_xf(ax)

\]所以在梯度表達中,符號一定要清楚,避免產生歧義。

設函式\(f:r^n \mapsto r\),它的函式變數是乙個\(n\)維向量\(x\),則\(hessian\)矩陣是\(f\)對\(x\)二階偏導數組成的矩陣

\[\nabla_x^2f(a) \in r^ =

\left [

\begin

\frac & \frac & ... &\frac \\

\frac & \frac & ... & \frac\\

\vdots & \vdots & \vdots &\vdots & \\

\frac & \frac & ... &\frac \\

\end

\right ]

\]即\(\nabla^2_xf(x) \in r^\),注意\(hessian\)矩陣是乙個對稱矩陣

\[\nabla_x^2f(a) _=\nabla_x^2f(a)_

\]和梯度一樣,\(hessian\)矩陣只在函式\(f\)函式值是實數時才被定義。梯度可以看作向量函式的一階導數,\(hessian\)矩陣看作是向量函式的二階導數。雖然這樣的直覺沒有錯,但是還是需要注意下面的問題。

​ 如果\(f:r \mapsto r\),則\(f\)對\(x\)的二階導數可以認為是\(f\)對\(x\)一階導數的導數。但是在向量函式中,如果\(f:r^n \mapsto r\),則\(\nabla_xf(x)\)是乙個\(n\)維向量,前面說過多值函式的梯度沒有意義,所以說對\(f\)的梯度再求梯度得到\(f\)的hessian矩陣是錯誤的。但是事實上我們可以對\(\nabla_xf(x)_i\)求梯度,它得到的是\(hessian\)矩陣的第\(i\)列。因此不能表示為\(\nabla_x \nabla_xf(x)\),而應該表示為

\[\nabla^2_xf(x)=[\nabla_x(\nabla_xf(x))_1,\nabla_x(\nabla_xf(x))_2,…,\nabla_x(\nabla_xf(x))_n]

\]令線性函式\(f(x)=b^tx\),其中\(b\in r^n\)

\[f(x)=b^tx=\sum_^nb_ix_i

\]所\(\frac=b_i\),所以\(\nabla_x f(x)=b\).現在考慮二次向量函式

\[f(x)=x^tax=\sum_^n\sum_^na_x_ix_j

\]從而

\[\fracf(x)=\frac(\sum_^na_x_ix_k+\sum_^na_x_kx_j+a_x_k^2) \\

=\sum_^na_x_i+\sum_^na_x_j+2a_x_k \\

= \sum^_a_x_i+\sum^n_a_x_j=2\sum^n_a_x_j

\]我們假設\(a\)為對稱矩陣,所以最後一步能化簡。注意到\(\nabla_xf(x)_k\)是\(a\)的第\(k\)行與\(x\)內積的兩倍。因此\(\nabla_x x^tax = 2ax\).

接下來再看看\(f(x)=x^tax\)的\(hessian\)矩陣

\[\nabla_x^2f(x)=\fracf(x)=\frac[\frac]=\frac[2\sum^n_a_x_j]=2a_

\]總結一下:

假設我們有乙個矩陣\(a \in r^\)和乙個向量\(b \in r^m\),這種情況下我們不能找到\(x \in r^n\)滿足\(ax=b\),但是我們可以找找到\(x\)使得\(ax\)盡可能的接近\(b\),於是我們需要最小化

\[j(x)=||ax-b||^2

\]我們考慮求\(\nabla_xj(x)\)然後令梯度等於0即可解出\(x\),這時候得到的\(x\)使得\(j(\theta)\)達到最小。

\[\nabla_xj(x)=\nabla_x(ax-b)^t(ax-b)\quad \quad \quad \quad\quad \quad \quad \\

=\nabla_x(x^ta^tax-2b^tax+b^tb) \\

=2a^tax-2a^tb \quad \quad \quad \quad \quad\quad

\]令\(j(x)=0\)即可得最小二乘法的解為\(x=(a^ta)^a^tb\).

這裡我們來考慮行列式的梯度,回憶行列式計算方法

\[|a|=\sum_^n(-1)^a_m_ \quad for \; any \; j =1,2,...,n

\]其中\(m_\)是\((i,j)\)處的代數余子式。

\[\frac}|a|=\frac}\sum_^n(-1)^a_m_=(-1)^a_m_=a^_

\]其中\(a^*\)是\(a\)的伴隨矩陣。從而

\[\nabla_a|a|=(a^*)^t=|a|(a^)^t

\]以上均假設\(a\)是可逆矩陣。行列式的梯度等於它的伴隨矩陣的轉置。例如\(f(a)=ln(|a|),|a|>0\),求\(\nabla_af(a)\)

\[\nabla_aln(|a|)=\frac\frac=a^

\]上面預設\(a\)是對稱矩陣。

考慮下面的優化問題

\[max_\quad x^tax \quad where \;x^tx=1

\]上式中\(a\)是乙個對稱矩陣。先將使用等式約束的目標函式寫成拉格朗日形式,然後求解最優值

\[l(x,\lambda)=x^tax-\lambda (x^tx-1)

\]其中\(\lambda\)稱為拉格朗日因子,設\(x^*\)是函式\(l(x,\lambda)\)取得最大值的點,則在\(x^*\)函式的梯度為0

\[\nabla_xl(x,\lambda)=2ax-2\lambda x = 0

\]再化簡可以得到等式\(ax=\lambda x\),而且\(x\)是單位向量,於是解就是\(a\)的特徵向量。

矩陣論 向量求導 微分和矩陣微分

複雜的矩陣函式求導。著名的matrix cookbook為廣大的研究者們提供了一本大字典,裡面有著各種簡單到複雜矩陣和向量的求導法則。矩陣求導有兩種布局,分子布局 numerator layout 和分母布局 denominator layout 為了闡明這兩種布局的區別,我們先來看最簡單的求導規則...

矩陣微分求導

看了多篇文章,覺得此篇標量 向量 矩陣求導 兩種布局方式 講解的最形象易理解。其他文章對兩種排布都只是照本宣科,讓人費解。1.如果y是向量或者矩陣,先對y作 分解 保持x不變,將分子y寫成按列的元素排布形式 即 dy1 dx dy2 dx dy3 dx 如果y本身是個標量,則跳過步驟1,直接進入步驟...

矩陣論筆記(七) 矩陣的微分和積分

對矩陣求微分和積分,就是對其每個元素求微分和積分。定義 定理以下是矩陣微分和積分的運算規則,可自行證明 定理一 1 ddt a t b t ddta t ddtb t 2 ddt a t b t b t ddta t a t ddt b t 3 ddt aa t dadt a t ad dta t ...