之前寫過關於梯度的文章,是從線性近似著手開始寫起,這裡我再次回顧梯度和一些相關的概念/矩陣:

一元函式:

f: \mathbb{R} \to \mathbb{R}

多元函式:

f: \mathbb{R}^n \to \mathbb{R}

向量函式:

f: \mathbb{R}^n \to \mathbb{R}^m

以下討論都預先預設假設 f 必定可導甚至更高階可導。

導數

針對一元函式

f: \mathbb{R} \to \mathbb{R}

, 近似:

f(x) \approx f(x_0) + f

梯度

梯度針對多元函式

f: \mathbb{R}^n \to \mathbb{R}

,是導數的推廣, 它的結果是一個向量:

\nabla f = \begin{pmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n}  \end{pmatrix} \\

也經常寫為, 函式相對於 n x 1 向量

\vec{x}

的梯度運算元為

\nabla_{\boldsymbol{x}}

\nabla_{\boldsymbol{x}} \overset{\underset{\mathrm{def}}{}}{=} \left[ \frac{\partial }{\partial x_1}, \frac{\partial }{\partial x_2},\cdots,\frac{\partial }{\partial x_n} \right]^T=\frac{\partial }{\partial \boldsymbol{x}} \\

近似:

f(\vec{x}) \approx f(\vec{x}_0) + \nabla f(\vec{x}_0) \cdot (\vec{x} - \vec{x}_0) \\

Jacobian 雅可比矩陣

我喜歡 Jacobian 的英文讀音,聽起來很可愛。

針對向量函式

f: \mathbb{R}^n \to \mathbb{R}^m

如果函式

f: \mathbb{R}^n \to \mathbb{R}^m

在點 x 可微的話,在點 x 的雅可比矩陣即為該函式在該點的最佳線性逼近,也代表雅可比矩陣是單變數實數函式的微分在向量值多變數函式的推廣,在這種情況下,雅可比矩陣也被稱作函式 f 在點 x 的微分或者導數。

{\displaystyle \mathbf {J} ={\begin{bmatrix}{\dfrac {\partial \mathbf {f} }{\partial x_{1}}}&\cdots &{\dfrac {\partial \mathbf {f} }{\partial x_{n}}}\end{bmatrix}}={\begin{bmatrix}{\dfrac {\partial f_{1}}{\partial x_{1}}}&\cdots &{\dfrac {\partial f_{1}}{\partial x_{n}}}\\\vdots &\ddots &\vdots \\{\dfrac {\partial f_{m}}{\partial x_{1}}}&\cdots &{\dfrac {\partial f_{m}}{\partial x_{n}}}\end{bmatrix}}} \\

矩陣分量:

 {\displaystyle \mathbf {J} {ij}={\frac {\partial f{i}}{\partial x_{j}}}.}  \\

其它常用符號:

{\displaystyle Df}、 {\displaystyle \mathrm {D} \mathbf {f} }、{\displaystyle \mathbf {J} _{\mathbf {f} }(x_{1},\ldots ,x_{n})}、 {\displaystyle {\frac {\partial (f_{1},\ldots ,f_{m})}{\partial (x_{1},\ldots ,x_{n})}}.}

近似:

f(\vec{x}) \approx f(\vec{x}_k) + J(\vec{x}_k)(\vec{x} - \vec{x}_k)  \\

如果 m = n,那麼 Jacobian 可以形成方陣,這個矩陣可以計算出它的行列式:

導數、梯度、 Jacobian、Hessian

圖片來自wikipedia

也叫做 Jacobian (determinant),它的意義是比如這個微小形狀改變的比值。

Hessian 黑塞矩陣

適用於

f: \mathbb{R}^n \to \mathbb{R}

有點二階導數的意思:

{\displaystyle \mathbf {H} ={\begin{bmatrix}{\frac {\partial ^{2}f}{\partial x_{1}^{2}}}&{\frac {\partial ^{2}f}{\partial x_{1}\,\partial x_{2}}}&\cdots &{\frac {\partial ^{2}f}{\partial x_{1}\,\partial x_{n}}}\\\\{\frac {\partial ^{2}f}{\partial x_{2}\,\partial x_{1}}}&{\frac {\partial ^{2}f}{\partial x_{2}^{2}}}&\cdots &{\frac {\partial ^{2}f}{\partial x_{2}\,\partial x_{n}}}\\\\\vdots &\vdots &\ddots &\vdots \\\\{\frac {\partial ^{2}f}{\partial x_{n}\,\partial x_{1}}}&{\frac {\partial ^{2}f}{\partial x_{n}\,\partial x_{2}}}&\cdots &{\frac {\partial ^{2}f}{\partial x_{n}^{2}}}\end{bmatrix}}\,} \\

是一個 n x n 的方陣,也可以寫成:

{\displaystyle \mathbf {H}_{ij}={\frac {\partial ^{2}f}{\partial x_{i}\partial x_{j}}}} \\

之所以說它二次導數,看一下它的推導 :

f: \mathbb{R} \to \mathbb{R}

 f(x) \approx f(x_0) + f

f: \mathbb{R}^n \to \mathbb{R}

f(x_1,x_2)=f(x_{10},x_{20})+f_{x_1}(x_{10},x_{20})\Delta x_1+f_{x_2}(x_{10},x_{20})\Delta x_2 \\ +\frac {1}{2}[f_{x_1 x_1}(x_{10},x_{20})\Delta x_1^2+2f_{x_1 x_2}(x_{10},x_{20})\Delta x_1\Delta x_2+f_{x_2 x_2}(x_{10},x_{20})\Delta x_2^2] \\

其中:

{\displaystyle \Delta x_{1}=x_{1}-x_{10}\,} \\ {\displaystyle \Delta x_{2}=x_{2}-x_{20}\,}\\ {\displaystyle f_{x_{1}}={\frac {\partial f}{\partial x_{1}}}\,}\\ {\displaystyle f_{x_{2}}={\frac {\partial f}{\partial x_{2}}}\,}\\ {\displaystyle f_{x_{1}x_{1}}={\frac {\partial ^{2}f}{\partial x_{1}^{2}}}\,}\\{\displaystyle f_{x_{2}x_{2}}={\frac {\partial ^{2}f}{\partial x_{2}^{2}}}\,}\\{\displaystyle f_{x_{1}x_{2}}={\frac {\partial ^{2}f}{\partial x_{1}\partial x_{2}}}={\frac {\partial ^{2}f}{\partial x_{2}\partial x_{1}}}\,}

寫成向量形式:

f(\vec{x}) \approx f(\vec{x_0}) +   \nabla f(\vec{x_0}) \cdot (\vec{x} - \vec{x_0}) + \frac{1}{2}(\vec{x} - \vec{x_0})^TH(\vec{x_0})(\vec{x} - \vec{x_0}) \\

其中

{\displaystyle H(x_{0})={\begin{bmatrix}{\frac {\partial ^{2}f}{\partial x_{1}^{2}}}&{\frac {\partial ^{2}f}{\partial x_{1}\,\partial x_{2}}}\\\\{\frac {\partial ^{2}f}{\partial x_{2}\,\partial x_{1}}}&{\frac {\partial ^{2}f}{\partial x_{2}^{2}}}\end{bmatrix}}_{x_{0}}\,} \\

所以推廣到更高階就如上所示,那麼Hessian 的一個很具體的應用就是,判斷函式的極值,正如導數的作用一樣。

一元函式:

f: \mathbb{R} \to \mathbb{R}

,在

x=x_0

點處具有二階導數,且

f

, 則

f

, 極大值

f

, 極小值

f

, 鞍點

f

不存在,沒法直接判斷,或許是極值點

那麼針對於

f: \mathbb{R}^n \to \mathbb{R}

, 在

\vec{x}_0

處梯度為

\vec{0}

,那麼我們可以用

H(\vec{x_0})

來幫助判斷:

H 負定, 極大值

H 正定, 極小值

H 不定, 鞍點

H 不可逆, 也不能直接判斷

至於判定矩陣是否正定可以:

嘗試Cholesky分解,看其是否存在

計算所有的特徵值,看是否為正

大量參考wikipedia