1. 程式人生 > >梯度、Hessian矩陣、平面方程的法線以及函式導數的含義

梯度、Hessian矩陣、平面方程的法線以及函式導數的含義

想必單獨論及“ 梯度、Hessian矩陣、平面方程的法線以及函式導數”等四個基本概念的時候,絕大部分人都能夠很容易地談個一二三,基本沒有問題。

其實在應用的時候,這幾個概念經常被混淆,本文試圖把這幾個概念之間的關係整理一下,以便應用之時得心應手。

這四個概念中,Hessian矩陣是最不容易混淆,但卻是很多人難以記住的概念,其它三個概念很容易記住,但卻在某些時候很容易混淆。

  • Hessian矩陣:設有凸函式f(X),X是向量(x1,x2,..., xn),Hessian矩陣M定義為:M的第i行,第j列元素為df(X)/dxidxj, 即為f(X)對於變數xi和xj的二次偏導數。
  • 梯度:設有凸函式f(X),X是向量(x1,x2,..., xn),函式f(X)在點X0處的梯度是一個向量,等於(df(X0)/dx1, df(X0)/dx2, ...., df(X0)/dxn), 即是對於各個變數的偏導數的向量。例子:如果方程是z=f(x,y),梯度是在XOY平面內的一個向量,與z無關。因此要特別注意梯度不是點(X,f(X))處的切線方向。
  • 平面方程的法線:設平面方程Ax+By+Cz+D = 0,向量(A, B, C)為這個平面的法線方向。
  • 函式導數:二維直線的方程y= kx+b,我們說k是直線的斜率;二維曲線y=f(x)的導數f '(x)表示在點x處的切線的斜率,注意是切線的斜率,不是切線的方向,它是標量,不是向量。任意曲線y=f(x1,x2,...xn),對每一個變數求取偏導數,得到一個向量(df(X)/dx1, df(X)/dx2, ...., df(X)/dxn),這個向量就是函式在點X處的梯度,即梯度是表示曲線f(X)在X處變化最劇烈的方向,特別注意梯度並不是在點(X, f(X))處的切線方向, 梯度只是在點(X, f(X))處的切線方向在X構成的“平面”上的投影。注意,對於二維直線y=kx+b,它也是可以求取梯度的,它的梯度是向量(k),只有一個值,表示的是x方向上的向量,大小是x方向上的單位變化導致y變化量的大小,即就是切線的斜率。
一個問題,我們把二維直線方程y=-kx-b寫為平面方程的形式,kx + y+b = 0,這個時候怎麼理解?我們可以理解為把y=-kx-b這條直線往z軸的兩個方向拉伸得到的平面,就是kx+y+b=0。那麼這個平面方程的法線就是(k, 1, 0),這個法線向量與平面kx+y+b=0垂直,這個時候如果我們用XOY平面去與這個平面相交,即令z=0,就表示直線y=-kx-b,因此法線(k,1)是與直線垂直的。注意y=-kx -b的導數的含義:(-k)表示的是x軸方向的梯度,值為直線的斜率。 一定要注意平面方程的形式與其它三個概念的方程形式是不同的,平面方程的右邊是0,而其它三個概念的方程中必須有一個變數在等式的左邊,可以表示為f(X),或者y等形式,本質上f(X)和y都表示的是一個變數,只有方程的形式對的時候才能適用相關的計算,例如,我們不能對方程Ax+By+Cz+D =0,使用梯度或者導數的計算,這個地方非常容易混淆,特此提醒! pku,sewm,shinning