M.1.1 神經網路的數學基礎-從空間、長度到張量

與應用相關的名詞解釋

標量、向量、矩陣都可以看作是張量(Tensor)的概念的特化(這個說法可能不準確)。

標量即0維張量,是單純的一個數字

向量即1維張量,書本里一般用粗體或者上方箭頭表示,注意區分坐標向量和速度向量:

bold{T}_{1times n}=bold{v}=vec{v}=[x_1,x_2,x_3,....,x_n]

二維矩陣即二維張量,一般書里用黑體表示。

bold{T}_{ntimes n}={left(nbegin{array}{ccccccc}n t_{11}&cdots&t_{1n}nvdots&ddots&vdotsnt_{n1}&cdots&t_{nn}nend{array}nright)}

長度的定義是基於速度和積分的,在歐式空間中可以簡單的表示為:

l=sqrt{sum{(x_n-y_n)^2}}

閔可夫斯基空間下的長度見本文最後。

從坐標開始解釋

笛卡爾空間:空間中的每個點建立一組對應的實數x_1,x_2,cdots,x_n,稱為其坐標,不同點對應不同的坐標組,反之不同坐標組對應不同的點。具有這樣性質的笛卡爾坐標(x_1,x_2,cdots,x_n)的空間為n維笛卡爾空間記為mathbb{R}^n

我們生活的空間是一個四維空間(t,x_1,x_2,x_3),其中的每一個點稱之為「事件」,t是時間,x是位置坐標,在經典的幾何中,t看作是一個常數,這是我們熟悉的三維空間。

假設在同一空間中建立不同的笛卡爾坐標:(x_1,x_2,x_3,cdots,x_n),(z_1,z_2,z_3,cdots,z_n),二者之間的坐標有一定的函數關係:

z_i=z_i(x_1,cdots,x_n)

註:這裡以後並不會進一步討論函數的連續可微性質

對於線性變換:

z_i=sum_{i=0}^{n}{a^i_jcdot x_i}

可以將其寫成矩陣的形式:

bold{Z}=bold{A}cdot bold{X}

一些書本中可以寫成約定求和的方式,省略Sigma符號z_i=a^i_jcdot x_i

線段長度和交線的角度是空間中最基本的概念,但這個兩個概念定義是與空間坐標系相關的。

如果空間中兩點(x_1,x_2,x_3),(y_1,y_2,y_3)長度為:

l=(x_1-y_1)^2+(x_2-y_2)^2+(x_3-y_3)^2

則稱這個空間中的坐標為歐式坐標。用這個空間去描述問題是很方便的。

如果將原點與空間內一點(x_1,x_2,x_3)連線,此時得到的這個向量就可以稱為坐標向量,在用歐式坐標表示函數的過程中就可以表示成坐標向量的形式:

f(x_1,x_2,x_3)=f(vec{x})

定義歐幾里得內積:

<vec{xi},vec{eta}>=sum_{i=0}^n xi^ieta^i或者表示成約定求和的形式vec{xi} cdot vec{eta}=xi_ieta_i

定義向量夾角:

cos(phi)=frac{vec{xi} cdot vec{eta}}{<vec{xi},vec{xi}><vec{eta},vec{eta}>}

將曲線長度定義為關於速度的量:

l=int_a^b |vec{v}(t)|dt

歐式空間中曲線由參數形式給出:

x_i=x_i(t)

那麼速度定義為:

v_i (t)=frac{dx_i(t)}{dt}=dot{vec{x}}

注意此處t並非時空定義中的時間,僅僅是一個自變數是曲線的參數。曲線長度與時間和坐標系選取無關。

速度定義之後其在不同坐標系之下的變換以及依託於速度(長度)等一系列的方程也發生了變化。

坐標變換之下,空間內某一點處的速度分量數值變化方式:

vec{v_x}=bold{A}cdot vec{v_z}或寫成約定求和形式v_x^i=frac{partial x^i}{partial z^j}v_z^j

其中A稱為雅克比矩陣。

bold{A}=(frac{partial x}{partial z})nn

但是注意速度作為空間中的基本定義其是不發生變化的,只是分量數值方向發生了變化。

再來看函數的梯度定義為:

nabla_x f=grad  f=(frac{partial f}{partial x_1},cdots, frac{partial f}{partial x_n})

再看一下梯度的坐標變換形式:

nabla_z f=A nabla_x fnn

梯度的變換形式與速度向量的變換形式不同,此稱為余向量。

那麼如果一個向量的長度定義方式為:

|vec{xi}|^2=g_{ij}xi^i xi^jnn

如果矩陣bold{G}=g_{ij}是正定的,那麼成其為黎曼度量。

再看速度的內積,或稱為點乘,在歐式坐標之下,向量內積:

<vec{xi},vec{eta}>_x=sum_{i=1}^{n}{xi_x^i eta_x^i}=xi^i eta^i

坐標變換之下的內積:

<vec{xi},vec{eta}>_y=vec{xi}_x^T cdot bold{A}^Tcdot bold{A}cdot vec{eta}_x=vec{xi}_x^T cdot bold{A}cdot vec{eta}_x

再經歷一次坐標變換:

<vec{xi},vec{eta}>_z=vec{xi}_x^T cdot bold{H}^Tbold{A}^Tcdot bold{A}cdot bold{H}cdot vec{eta}_x=vec{xi}_x^T cdot bold{G}cdot vec{eta}_xnnn

此時:

bold{G}=bold{H}^Tcdot bold{A}cdot bold{H}nn

這是度量在不同坐標之下的變換方式。

上述方式定義的種種變換不依賴於坐標系的選取。由於偏微分方程也好其他連續函數也好,都是定義在微分形式之下的。而微分形式都是定義空間坐標點以及其鄰域的一些性質,所以空間內某一點向量的變化形式由上述方程給出。而G則代表了這種變化的形式。所以一些人提到張量(Tensor)定義為空間變換的某種形式。同時黎曼度量定義的過程中提到了正定的概念,那麼大概可以理解《線性代數》中一些奇怪的名詞從何而來了。這也是為什麼本文想從現代幾何開始去闡述,知其然也要知其所以然才是學習的態度。當然說了這麼多依然感覺知識很難成一個體系。以後會一一說明。

最後再提一下閔可夫斯基度量:

如果矩陣G非正定,則稱其是一個偽黎曼度量,此種度量下的空間記為mathbb{R}^n_{p,q}q 為負數個數。

閔可夫斯基空間mathbb{R}^4_{1,3}下的長度為:

dl^2=(ct)^2-(dx_1)^2-(dx_2)^2-(dx_3)^2nn

大部分民科所謂的相對論就源於此。

推薦閱讀:

比二次代價函數學習更快的Cross-entropy
多類分類下為什麼用softmax而不是用其他歸一化方法?
等什麼, 趕快抱緊 PyTorch 的大腿!
為什麼你需要計算神經科學
有人說機器學習近些年的發展只是依賴於「大數據」和「高計算」,在演算法上並沒有突破,這是在影射深度學習么?

TAG:神经网络 | 机器学习 | TensorFlow |