深度学习——你应该掌握的数学知识
深度學習——你應該掌握的數學知識
聲明:
1)為什么要講數學 ?數學作為一個基礎的工具,對于大多數理工學科,是必不可少的一部分,尤其深度學習是和數學聯系比較緊密的一個學科,對于數學概念的扎實理解,會幫助對深度學習中聽上去很復雜的技術有直觀而清晰的認識。
2)該Deep Learning中的數學知識系列是參考深度學習與計算機視覺及網上大牛博客。具體引用的資料請看參考文獻。
4)該系列的基礎數學知識盡量從定性的角度講解一些與深度學習、計算機視覺緊密聯系的基礎數學概念,不一定會很嚴謹細致,但力求簡單、形象,當然公式是不可避免的,本文會盡量做到簡單講解,有些地方看不懂也沒關系,因為重點是定訓的理解,幫助后面更透徹地明白入門實例中的原理。
2.1、線性變換和非線性變換
2.1.1、線性變換的定義2.1.2、高中教科書中的小例子2.1.3、點積和投影2.1.4、矩陣乘法的幾何意義(1)2.1.5、特征向量和特征值2.1.6、矩陣乘法的幾何意義(2)2.1.7、奇異值分解2.1.8、線性可分性和維度2.1.9、非線性變換2.2、概率論及相關基礎知識
2.3、維度的詛咒
2.4、卷積
2.5、數學優化基礎
2.1 線性變換和非線性變換
2.1.1 線性變化的定義
線性變換是指具有如下性質的函數TTT:
對于向量u?\vec{u}u和v?\vec{v}v,有
T(u?+v?=)T(u?)+T(v?)(公式2?1)T(\vec{u}+\vec{v}=)T(\vec{u})+T(\vec{v}) \qquad \qquad (公式2-1)T(u+v=)T(u)+T(v)(公式2?1)
對于標量aaa,有
T(av?)=aT(v?)(公式2?2)T(a\vec{v})=aT(\vec{v}) \qquad \qquad (公式2-2)T(av)=aT(v)(公式2?2)
公式2-1叫做加性,通俗來說就是兩個向量的和經過變換后等于兩個向量變換后的和。公式2-2叫做齊性,意思是給一個向量縮放一個常數倍在變換,和變換后在縮放這個倍數的結果是一樣的。一般來說,機器學習和視覺中最長遇到的線性變換時矩陣乘法,也即是如下形式的線性變換。
后面如果提到線性變換基本都是指的矩陣乘法,接下來我們從一個小的例子講起。
2.1.2 高中課本的小例子
首先我們來看一個高中數學的一個經典例子:坐標變換。如圖2-1所示,在(1, 0)位置有一個點AAA,問:要把這個點逆時針旋轉60°到點BBB的位置,如果做到?旋轉后的坐標是什么?
根據高中課本,答案是:
這是高中數學里的一個基本問題,我們將上述問題轉換為矩陣乘法的形式:
其中θ=π/3\theta =\pi /3θ=π/3。上述公式就是一個典型的線性變換。所以我們知道,線性變換開業實現旋轉。接下來,如果希望能從BBB到CCC,也就是BBB和原點連線的中點呢?我們想到把xxx軸和yyy軸都縮小為原來的1/2就可以,所以只要把變換矩陣中對應的系數,也就是每一行都乘以0.5,則得到了 將AAA變換到CCC的過程:
所以矩陣乘法除了能旋轉,還能進行縮放,有了這兩個操作我們已經能在給定的坐標系內任一起點和終點都能寫出一個對應的變換了。那么再進一步 ,如果不是這種規律的旋轉加縮放的矩陣,而是任意2×22\times 22×2的矩陣呢?代表的幾何意義又是什么?回答該問題之前,我們首先來看另一個重要的概念:投影。
2.1.3 點積和投影
說到投影有需要有需要一起來回顧一個高中數學知識:點積。對于兩個向量u→,v→∈Rn\overrightarrow{u},\overrightarrow{v}\in R^{n}u,v∈Rn,其中u→=[u→1,u→2,...,u→n]\overrightarrow{u}=[{\overrightarrow{u}_{1}, \overrightarrow{u}_{2},...,\overrightarrow{u}_{n}}]u=[u1?,u2?,...,un?],v→=[v→1,v→2,...,v→n]\overrightarrow{v}=[{\overrightarrow{v}_{1}, \overrightarrow{v}_{2},...,\overrightarrow{v}_{n}}]v=[v1?,v2?,...,vn?],u→\overrightarrow{u}u和v→\overrightarrow{v}v的點積定義如下:
(公式2?7)\qquad \qquad (公式2-7)(公式2?7)
其實上面的公式就是兩個向量的內積,內積是點積的推廣,是一個更廣泛的概念,或者說,點擊是歐幾里得空間的標準內積。在深度學習和計算機視覺應用到的范圍內,這些細節并不重要。我們可以認為點擊和內積是一回事。
知道了定義,來看看點積的幾何意義。先從小學數學開始,2×5=102\times 5=102×5=10,這個大家都知道,2的5倍,等于10.如果不把這么一個簡單的乘法看出是兩個標量想乘,而是想象一下這個乘法發生在二位平面的xxx的軸上,如圖所示。
兩個向量(2, 0)和( 5, 0),他們的點積是2×5+0×0=102\times 5+0\times0=102×5+0×0=10,如果只看其中xxx部分,和乘法沒有區別,從幾何方面來看,就是以一個倍數對另一個量進行拉伸和收縮。
接下來讓(5, 0)這個向量保持長度,逆時針“旋轉”成為(3,4),在和(2,0)做點積,(2×3+0×4)=6(2\times 3+0\times4)=6(2×3+0×4)=6。通過圖2-2b來形象理解一下,(3,4)在xxx軸上的分量的長度是3。而(2,0)在自己方向上的長度就是向量本身的長度,也就是2。這兩個標量的成績2×3=62\times3=62×3=6就是這兩個向量的點積的結果。
事實上這就是兩個向量點積的幾何意義:一個向量uuu在另一個向量vvv方向上的分量的長度,和vvv的長度想乘得到的值。其中u?\vec{u}u在v?\vec{v}v上的分量的長度,叫做u?\vec{u}u在v?\vec{v}v上的投影。
圖2-2中的(2, 0)例子剛好落在了xxx軸,是為了方便理解和演示。接下來一起看看兩個任意方向向量做點積的情況,如圖2-3所示。
如果2-3a,兩個二維向量u?\vec{u}u和v?\vec{v}v,之間的夾角為θ\thetaθ,則u?\vec{u}u和v?\vec{v}v投影長度是∣u→∣cos?(θ)|{\overrightarrow{u}}|\cos \left ( \theta \right )∣u∣cos(θ),這個長度在乘上vvv的長度就是
u→?v→=∣u→∣∣v→∣cos?(θ)(公式2?9)\overrightarrow{u}\cdot \overrightarrow{v}=|{\overrightarrow{u}}||{\overrightarrow{v}}|\cos \left ( \theta \right ) \qquad \qquad (公式2-9)u?v=∣u∣∣v∣cos(θ)(公式2?9)
當然,點積具有交換性,自然對對這個幾何意義的理解也一樣,u?\vec{u}u和v?\vec{v}v的點積也可以看作是vvv在uuu的投影乘以uuu的長度。公式2-9的推導也很簡單,最常見的一種推導如圖2-3b所示,把u?\vec{u}u和v?\vec{v}v看作是三角形的兩個邊,則第三邊的長度為∣u??v?∣|\vec{u}-\vec{v}|∣u?v∣,根據高中數學中的三角形余弦定理,有
(公式2?10)\qquad \qquad (公式2-10)(公式2?10)
而直接展開公式∣u→?v→∣2|{\overrightarrow{u}}-\overrightarrow{v}|^{2}∣u?v∣2,有
(公式2?11)\qquad \qquad (公式2-11)(公式2?11)
又公式2-10和2-11的最后一項應該是相等的,則推到出公式2-9,接下來把公式2-9變形:
(公式2?12)\qquad \qquad (公式2-12)(公式2?12)
也即是說,兩個向量夾角的coscoscos值,就是這量向量方向上的單位向量的點積。這是一個非常有用的結論,因為兩個向量夾角的coscoscos值是這個向量相似性的重要度量,夾角越小說明兩個向量所指的方向月相近,兒公式2-12給我們提供了一個非常簡便的計算這種相似性的方法。另外,雖然我們的示例和推導都是二維的,但是這個結論在高維度也普遍適用,并且在機器學習中是個很有用的公式,這就是余弦相似度的由來。
2.1.4
1 投影角度的理解
了解了點積的幾何意義,在回過頭來看看矩陣乘以向量的幾何意義。從公式2-3以及公式2-7點積的幾何意義可以知道,矩陣乘以一個向量的計算,事實上就是矩陣每一行的航行量和待乘向量的點積所形成的新向量,所以有
(公式2?13)\qquad (公式2-13)(公式2?13)
其中ai,→?\overrightarrow{a_{i},}*ai?,??代表第iii的行向量(a1,1,a1,2,...,a1,n)(a_{1,1},a_{1,2},...,a_{1,n})(a1,1?,a1,2?,...,a1,n?),x→\overrightarrow{x}x為(x1,x2,...,xn)(x_{1},x_{2},...,x_{n})(x1?,x2?,...,xn?)。根據2.1.3節點積的幾何意義,這個運算可以看作x→\overrightarrow{x}x在ai→\overrightarrow{a_{i}}ai??上的投影長度。如果我們把ai→\overrightarrow{a_{i}}ai??看作是一個坐標軸的單位向量,那么矩陣乘法運算后的向量的每一維值對應的就是x→\overrightarrow{x}x在這個坐標軸上的投影長度。也就是說,這個變換計算的是向量x→\overrightarrow{x}x在以ai→\overrightarrow{a_{i}}ai??作為每個坐標軸單位向量的新坐標系下的坐標,這就是從投影角度來看待矩陣乘法的幾何意義。
現在回到2.1.2節中的旋轉和縮放的小例子,旋轉矩陣如下:
所以變換后的坐標州的單位向量是
和
,如圖2-4左圖所示,所以在標準坐標系(0, 1)中,也就是橫軸上的向量,在以x′x^{'}x′和y′y^{'}y′為坐標軸中的就不再是(0, 1),而是如圖2-4右圖中所示的一個落在第一象限的向量的坐標。在新坐標系中每個軸的值如前所示,就是向量在每個軸上的投影長度乘以每個軸向量的長度。
2 坐標角度的理解
從投影角度理解矩陣乘法雖然最能體現投影的意義,但卻不是最直觀的。第一是因為人腦中最形象的空間的參照系都是正交的,簡單來說無論是二維還是三維(請自覺腦補高維圖像),坐標系都是正交的,即互相垂直的。從本節講的內容來理解,就是任何一個軸上的向量在其他軸上的投影是0。所以如果變換矩陣的行向量互相正交,那么還可以像圖2-4中一樣,形象的理解為旋轉。但是如果變換矩陣的行向量不是正交的,甚至哪怕行向量的長度不是1的情況下,就很難形象的想象了,例如下面的矩陣乘法:
畫出(1, 1)和行向量,和變換后的向量(1, 5)的位置,如圖2-5a所示。
在圖2-5a中,(1, 1)在兩個行向量上的投影長度仍然可以形象的理解,但是由于(2, -1)和(1, 4)并不互相垂直,所以還是很難形象的理解矩陣乘法的變換。
從投影角度形象理解矩陣乘法的第二個困難時參考坐標系的變換,對于人們來說最直觀的坐標系就是標準的笛卡爾坐標系,以二維為例子就是(1,0)所在為橫軸,(0,1)所在為縱軸的這種坐標系。在執行矩陣乘法的變換時,無論是變換前的向量,還是變換后的向量,都是以笛卡爾坐標為參考的。所以我們可以換個角度考慮,自始至終都在笛卡爾坐標系下,首先來考慮下面的問題:橫軸和縱軸的單位向量在矩陣乘法之后對應的向量是什么?還是以圖2-5中矩陣乘法為例子,過程如下,對于橫軸單位向量(1,0),有
對于縱軸單位向量(0,1),有
結論一目了然,對于橫軸,也就是第一個維度的單位向量,變換后對應的就是變換矩陣的第一列的列向量(2,1),對于縱軸,也就是第二個維度的單位向量,變換后對應的就是變換矩陣的第二列向量(-1,4)。這個結論很容易推廣到高維的情況,對于第iii維度的單位向量,變換后對應的就是變換矩陣中的第iii列的列向量。
可以把這種變換形象地理解成一種坐標的映射,具體到圖2-5a的例子,就是圖2-5b中的情況,經過變換后原來的(1,0)對應的新坐標是(2,1),(0,1)對應的新坐標是(-1,4)。在這種對應關系下,考慮有(0,0),(0,1),(1,1)和(1,0)圍起來的單位長度的小方框,經過變化后相當于被拉伸成為又(0,0),(2,1),(1,5)和(-1,4)圍起來的四邊形,所以在單位方框中右上角的定點,在變換后就是被拉伸后四邊形的對應定點(1,5)。
在回過來看看最開始講的高中教科書里逆時針旋轉π/3\pi /3π/3的例子,如果2-6所示。
圖2-6 從位置映射角度理解逆時針旋轉$\pi/3$比起投影的角度更加直觀了,橫軸單位向量變換后對應的坐標正式逆時針旋轉π/3\pi/3π/3。在這種情況下,對于任何矩陣乘法的變換,都可以很形象的理解為對變換前的區域進行旋轉和沿特定方向縮放結合一起的操作,讓原來區域經過變形后映射到了一個新的區域里。比如圖2-7中,實現了對一個區域的切換和沿x軸翻轉。
如果希望變換后的坐標有位移,只需要在變換后的結果是加一個位移向量就可以,如圖2-8所示:
如果把圖2-9中的問題想象成一個回歸問題,只通過矩陣乘法的話使無法把圖2-8a中的笑臉變換為圖2-8b中實線的笑臉,而添加了位移向量之后,則能夠輕松擬合。這個位移向量偏執在機器學習中是一種常見的參數,通常被稱為偏置(bias),而形如y=Ax+by=Ax+by=Ax+b的變換形式也是機器學習中最常見的變換,稱為仿射變換。簡單來說,仿射變換就是一個線性變換接著一個位移。
從擬合角度看,偏執對結果的影響主要和樣本的分布相關,當樣本方差大,維度高的時候,則偏執的影響就會小一些。偏執的引入讓變換的靈活度更大,但卻不再使線性變換,并且形式上變得比**y=Axy=Axy=Ax更復雜,一個常用的辦法可以把y=Ax+by=Ax+by=Ax+b化為y=Axy=Axy=Ax**的形式,推導如圖2-9所示。
如推導的第2行所示,加上位移量的時候,可以看作為位移量是1前面的系數,這樣就如圖2-9中灰色方框標識的,通過把位移量加到矩陣的最后一列,同時在待變換向量添加一個值為1的維度,把位移向量/偏執直接包含在矩陣乘法之中。
從形式上看,這樣只是個公式的變換,從維度的角度來看,通過增加維度 ,變換更加靈活。
2.1.5 特征向量和特征值
一提到特征向量,我們都會想到通過特征值的定義對燈飾進行變換后,對著一元二次方程求解特征值的頭疼經歷。這里面我們不會過多的關注特征向量和特征值的細節,而是從定性的角度形象感受一下特征向量。首先,還是要從公式講起,下面來看看特征值和特征向量的定義,對于一個非零向量 x?\vec{x}x和一個矩陣AAA,如果有標量$\beta $使得:
這個矩陣變換的特征向量分別為(?1/2,?1/2)(-1/\sqrt{2},-1/\sqrt{2})(?1/2?,?1/2?)和(?1/5,?1/5)(-1/\sqrt{5},-1/\sqrt{5})(?1/5?,?1/5?),對應的特征值分別是2和3,這里我們使用了大于0的特征值,目的是為了方便討論和計算。首先來看看向量(1,0)和(0,1)經過變換后的情況。
如圖2-10a所示,根據2.1.4節關于矩陣乘法幾何意義的理解,(1,0)向量所示的黑色實線箭頭變換后對應的則是第一列的向量(-1,2),而(0,1)所示的淺色實線箭頭變換后對應的是第二列的向量(1,4)。顯然這兩個向量都發生了變化。接下來看看圖2-10b中對兩個特征向量變換后的情況。(?1/2,?1/2)(-1/\sqrt{2},-1/\sqrt{2})(?1/2?,?1/2?)是黑色實線箭頭 ,(?1/5,?1/5)(-1/\sqrt{5},-1/\sqrt{5})(?1/5?,?1/5?)是淺色虛線箭頭,變換后的兩個向量和變換前的向量方向完全一致,其中黑色虛線箭頭的長度是黑色實線箭頭長度的2倍,淺色虛線箭頭的長度是淺色實線箭頭的3倍,這就是特征值的含義:變換后將對應特征向量方向上的向量進行縮放,縮放的倍數就是特征值
則稱矩陣**AAA**是正定矩陣。從之前講到的點積的幾何意義,正定矩陣可以理解為一個向量經過正定矩陣變換后,和自身的點積大于0,說白了就是正定矩陣對應的變換不會把變換后的向量變到向量本身所垂直的平面的另一側。具體到二維的例子就是,怎么變,變換后的向量和自身的夾角都不會大于90°。考慮如下正定矩陣:
特征向量分別是(0.85,0.53)和(-0.53,0.85),對應的特征向量為1.81和0.69,還是按照圖2-10的方式畫出來如圖2-11a所示,深色實線箭頭為單位向量,淺色虛線箭頭為變換后的向量。
可以看到,兩個特征向量是相互垂直的。正定矩陣的特征向量有什么特別之處呢,來看圖2-11b,想象有關單位長度的向量,把這個向量繞著原點旋轉,并畫出變換前和變換后的軌跡,則這個向量先顯然畫出了一個圓,而變換后的向量畫出的軌跡是一個橢圓。如圖軌跡2-11b所示,而這個正定矩陣對應的特征向量,則正好分別是橢圓長軸和短軸所指的方向 ,特征值則是橢圓的半長軸和半短軸的長度。從幾何上理解就是正定矩陣變換前后的空間里可以找到一組正交的向量,這組正交向量變換后仍是正交的,且方向不變,空間只是沿著這組正交向量的方向發生了拉伸/收縮。如果有接觸過主成分分析的同學肯定已經看出來了,這就是PCA的底層思想 ,關于PCA的細節,后面的章節也會講到。但是這個結論在高維度也普遍使用,并且在機器學習中是個很有用的公式,在后面的實例中還會講到。
2.1.6 矩陣乘法的幾何意義(2)
根據特征值和特征向量的集合意義,我們知道一個正定矩陣對應的變換其實就是沿著特征向量的方向進行了縮放。那么從旋轉和縮放的角度如何看待正定矩陣的變換呢?還是考慮圖2-11的例子,對于圖2-11例子中的變換矩陣 [1.50.50.51.0]\begin{bmatrix} 1.5&0.5 \\ 0.5&1.0 \end{bmatrix}[1.50.5?0.51.0?] 我們還是很難直觀想象出沿著特征向量方向(0.85,0.53)和(-0.53,0.85)進行縮放的幾何過程。在2.1.2節中的公式2-6中,我們知道如果用沿著橫軸和縱軸方向進行縮放,那么形式就非常簡單了,如x-y二維平面中,用一個變換對橫軸縮放aaa倍,縱軸縮放bbb倍的矩陣如下: [a00b]\begin{bmatrix} a&0 \\ 0&b \end{bmatrix}[a0?0b?]該矩陣是一個對角矩陣,對應維度上的元素就是要縮放的倍數。2.1.2節中和2.1.4節中也講了旋轉矩陣和對應的幾何理解,那么對于二維平面的情況,只要用一個旋轉矩陣,把原來空間中對應特征向量的方向旋轉到對應xxx軸和yyy軸,然后進行簡單的縮放,然后用一個矩陣變換旋轉回去,不就和直接乘以一個變換矩陣等效了嗎? 第一步:已知兩個特征向量的方向,現在要把(0.85,0.53)“轉回”xxx軸的位置,只需要當前的xxx軸轉到(0.85,0.53)沿xxx軸對稱的位置,所以根據2.1.4節中的形象理解,第一個列向量就是(0.85,-0.53)。同樣對于(-0.53,0.85),要)“轉回”yyy軸,則需要把當前yyy軸轉到)(-0.53,0.85)沿著yyy軸對稱的位置,也就是(0.53,0.85),所以變換矩陣就是 [0.850.53?0.530.85]\begin{bmatrix} 0.85&0.53 \\ -0.53&0.85 \end{bmatrix}[0.85?0.53?0.530.85?] 也就是從圖2-12a到圖2-12b的情況。 第二步:接下來就是簡單的沿著xxx軸和yyy軸方向進行縮放,其中縮放的倍數分別是兩個特征向量對于的特征值,也就是進行如下的矩陣變換。 [1.81000.69]\begin{bmatrix} 1.81&0\\ 0&0.69 \end{bmatrix}[1.810?00.69?]進一步對于圖2-12b到圖2-12c,變換前的方格里的笑臉已經被扭曲成了斜著的四邊形,接下來最后一步就是“逆旋轉”,其實就是逆變換,注意到旋轉矩陣都是正交矩陣,所以你逆變換就是轉置,也就是特征向量作為列向量的矩陣。 [1.81000.69]\begin{bmatrix} 1.81&0\\ 0&0.69 \end{bmatrix}[1.810?00.69?] 最后就得到了圖2-12d,所以在這個過程中相當于把辯護矩陣按照分解成了3個子變換矩陣: [1.50.50.51.0]=[0.85?0.530.530.85][1.81000.69][0.850.53?0.530.85]\begin{bmatrix} 1.5&0.5 \\ 0.5&1.0 \end{bmatrix}=\begin{bmatrix} 0.85&-0.53 \\ 0.53&0.85 \end{bmatrix}\begin{bmatrix} 1.81&0\\ 0&0.69 \end{bmatrix}\begin{bmatrix} 0.85&0.53 \\ -0.53&0.85 \end{bmatrix}[1.50.5?0.51.0?]=[0.850.53??0.530.85?][1.810?00.69?][0.85?0.53?0.530.85?]
圖2-12 將一個正定矩陣的變換分解為分布的“旋轉——縮放——旋轉操作” 其中第一次和最后一次的變換是單純旋轉,中間的變換是單純地沿坐標軸縮放。 ##2.1.7 奇異值分解總結
以上是生活随笔為你收集整理的深度学习——你应该掌握的数学知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 监督学习——通用线性模型
- 下一篇: 一、数据挖掘概述