黑塞矩陣 Hessian Matrix

2021-09-30 16:36:18 字數 2897 閱讀 4322

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

在機器學習課程裡提到了這個矩陣,那麼這個矩陣是從**來,又是用來作什麼用呢?先來看一下定義:

黑塞矩陣(hessian matrix),又譯作海森矩陣、海瑟矩陣、海塞矩陣等,是乙個多元函式的二階偏導數構成的方陣,描述了函式的區域性曲率。黑塞矩陣最早於19世紀由德國數學家ludwig otto hesse提出,並以其名字命名。黑塞矩陣常用於牛頓法解決優化問題。

一般來說, 牛頓法主要應用在兩個方面, 1, 求方程的根; 2, 最優化.

在機器學習裡,可以考慮採用它來計算n值比較少的資料,在影象處理裡,可以抽取影象特徵,在金融裡可以用來作量化分析。

影象處理可以看這個連線:

量化分析可以看這個:

下面使用tensorflow並且使用黑塞矩陣來求解下面的方程:

**如下:

#python 3.5.3  蔡軍生    

#   

#  import tensorflow as tfimport numpy as npdef

cons

(x):

return tf.constant(x, dtype=tf.float32)def

compute_hessian

輸出結果如下:

再來舉多乙個例子的原始碼,它就是用來計算量化分析,這個**很值錢啊,如下:

#python 3.5.3  蔡軍生    

#   

# import numpy as npimport scipy.stats as statsimport scipy.optimize as opt#構造hessian矩陣

defrosen_hess

(x):    x = np.asarray(x)    h = np.diag(-400*x[:-1],1) - np.diag(400*x[:-1],-1)    diagonal = np.zeros_like(x)    diagonal[0] = 1200*x[0]**2

-400*x[1]+2    diagonal[-1] = 200    diagonal[1:-1] = 202 + 1200*x[1:-1]**2 - 400*x[2:]    h = h + np.diag(diagonal)    return hdef

rosen

(x):

"""the rosenbrock function"""

return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)def

rosen_der

(x):    xm = x[1:-1]    xm_m1 = x[:-2]    xm_p1 = x[2:]    der = np.zeros_like(x)    der[1:-1] = 200*(xm-xm_m1**2) - 400*(xm_p1 - xm**2)*xm - 2*(1-xm)    der[0] = -400*x[0]*(x[1]-x[0]**2) - 2*(1-x[0])    der[-1] = 200*(x[-1]-x[-2]**2)    return derx_0 = np.array([0.5, 1.6, 1.1, 0.8, 1.2])res = opt.minimize(rosen, x_0, method='newton-cg', jac=rosen_der, hess=rosen_hess,                   options=)print("result of minimizing rosenbrock function via newton-conjugate-gradient algorithm (hessian):")print(res)

輸出結果如下:

********************== restart: d:/ai/sample/tf_1.43.py ********************==

optimization terminated successfully.

current function value: 0.000000

iterations: 20

function evaluations: 22

gradient evaluations: 41

hessian evaluations: 20

result of minimizing rosenbrock function via newton-conjugate-gradient algorithm (hessian):

fun: 1.47606641102778e-19

jac: array([ -3.62847530e-11,   2.68148992e-09,   1.16637362e-08,

4.81693414e-08,  -2.76999090e-08])

message: 'optimization terminated successfully.'

nfev: 22

nhev: 20

nit: 20

njev: 41

status: 0

success: true

x: array([ 1.,  1.,  1.,  1.,  1.])

>>> 

可見hessian矩陣可以使用在很多地方了吧。

給我老師的人工智慧教程打call!

關於雅克比矩陣與黑塞矩陣

乙個非常好的部落格 關於牛頓法 參考部落格中牛頓發的圖,在求函式的根的問題時,即f x 0,用函式的一階導數逼近即可。相應的,在求極值問題時,即f x 0,用函式的二階導數才可以逼近。也就是黑塞矩陣了。求函式極值的問題在推導過程中,可以將函式表示式替換成函式的梯度來推導,這樣就跟求根的推導一樣了。雅...

正定矩陣 正定矩陣與極值的關係 黑塞矩陣 牛頓法

目錄 正定矩陣 正定矩陣與極值的關係 黑塞矩陣 hessian matrix 牛頓法 1 廣義定義 設a是n階方陣,如果對任何非零向量x,都有 正定矩陣有以下性質 1 正定矩陣的行列式恒為正 2 實對稱矩陣a正定當且僅當a與單位矩陣合同 3 若a是正定矩陣,則a的逆矩陣也是正定矩陣 4 兩個正定矩陣...

關於SIFT特徵點檢測與黑塞矩陣的讀書筆記

sift特徵點我看了不下六次,每次都看一半就不看了,現在還是半懂不懂,當然和我個人數學水平 知識積累 懶惰的個性有關。不過sift確實包含了很多內容,如高斯金字塔 dog 矩陣求導以及黑塞矩陣,要求較深的矩陣知識和影象處理知識,如果是初學者我建議先不要看sift特徵,一方面確實是浪費時間,另一方面是...