想做深度學習,這些數學知識點必須掌握。6000字學習地圖助你快速上手

  • 2020 年 10 月 31 日
  • AI

來源:Medium
編譯:威踢踢

了解機器學習演算法背後的數學是一種超能力。如果您曾經為現實生活中的問題構建過模型,那麼您可能會發現,要想超越基準性能,熟悉細節可能會大有幫助。當您想突破現有技術的界限時,尤其如此。

然而,這些知識大多隱藏在高等數學之後。理解像隨機梯度下降這樣的方法似乎很困難,因為它是建立在多變數微積分和概率論之上的。

但是,有了適當的基礎,大多數想法可以被視為很自然。如果您是初學者,並且可能沒接受正規的高等數學教育,為自己創建課程是非常困難的。在本文中,我的目標是提出一個路線圖,使您從零開始,深入了解神經網路的工作原理。

為了簡單,本次學習目標不涵蓋所有內容。相反,我們將專註於我們的學習方向。這樣,如果有需要,你可以毫無困難地學習其他主題內容。

我建議你把這篇文章作為學習的參考,而不是一口氣讀完。深入了解一個概念,然後檢查路線圖並繼續。我堅信這是最好的學習方式:我會給你指路,但你必須自己走。

 

基礎‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


大多數機器學習都建立在三個基礎上:線性代數,微積分和概率論。由於概率論基於前兩個,所以我們應該從線性代數和微積分開始。它們可以像標準課程中那樣獨立研究。

微積分


微積分是研究函數的微分和積分的學科。本質上,神經網路是一個可微函數,所以微積分將是訓練神經網路的基本工具。


為了熟悉這些概念,你應該使事情變得簡單,一開始去學習單變數函數。根據定義,函數的導數定義為

給定h的比率是點(x,f(x))和(x + h,f(x + h))之間線的斜率。


在極限情況下,這實質上是切線在點x處的斜率。下圖說明了該概念

函數的倒數可視化

 

微分可用於優化函數:導數在局部極大值或極小值處為零。(然而,反過來就不是這樣了;見f(x)= x在0處的位置)導數為零的點稱為臨界點。一個臨界點是極小值還是極大值,可以通過看二階導數來確定:

 

關於微分有幾個基本的規則,但最重要的可能是所謂的鏈式法則:


它告訴我們如何計算複合函數的導數。

積分通常被稱為微分的逆。因為


它適用於任何可積分函數f(x)。函數的積分也可以視為曲線下的有向面積。例如,

因為當函數為負數時,該區域也有一個負號。

-π和π之間正弦曲線下的有向面積

積分本身在理解期望值概念方面起著作用。例如,像熵和相對熵這樣的量是用積分來定義的。 


進一步的研究


我推薦麻省理工學院的單變數微積分課程(總的來說,麻省理工學院的在線課程一直是很好地學習資源)如果你是一個喜歡讀書的人,這裡有很多教科書可供選擇。GilbertStrang所著的《微積分》也是很好的免費學習資源。


線性代數

正如我提到的,神經網路本質上是函數,是使用微積分工具進行訓練的。但是,它們是用線性代數概念(如矩陣乘法)描述。線性代數是一門涉及機器學習許多重要方面的廣泛學科,因此這將是一個重要的領域。

向量空間‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


為了對線性代數有一個很好的了解,我建議從向量空間開始。最好先討論一種特殊情況。您可以將平面中的每個點視為一個元組

這些本質上是從零指向(x 1,x 2)的向量。您可以將這些向量相加並將它們與標量相乘:這是一個向量空間的原型。一般來說,如果可以將向量相加,並將一個向量與一個實數相乘,那麼一個向量V的集合就是一個實數上的向量空間,這樣可以保持以下性質:

別慌!我知道這看起來很可怕(至少在我還是一名數學專業的大一學生時是這樣),但事實並非如此。這些保證了向量可以相加和縮放就像你期望的那樣。當考慮向量空間時,如果你在心裡把它們建模成這樣會很有幫助。

賦范空間

如果你覺得你對向量空間有了很好的理解,下一步就是理解如何測量一個向量的大小。默認情況下,向量空間本身並沒有為此提供任何工具。那麼該怎麼辦呢?你們可能已經知道了,我們有

 

這是一種範數的特殊情況。一般來說,如果有一個函數,向量空間V就是賦范的

稱之為範數

 

同樣,這可能很可怕,但這是一個簡單而基本的概念。有很多範數,但最重要的是p-norm家族。

(p = 2時,我們得到上述特殊情況)和上確範數(supremum norm)

 

有時,例如對於p = 2,範數來自所謂的內積,即雙線性函數

比如:

具有內積的向量空間稱為內積空間。經典的歐幾里得乘積就是一個例子

每一個內積都可以變成一個範數

 

當兩個向量的內積為0時,我們說這兩個向量是正交的。(試著在平面上舉出一些具體的例子來更深入地理解這個概念。)

 

基底和正交/標準正交基底


雖然向量空間是無限的(在我們的例子中),但是您可以找到一個有限的向量集合,它可以用來表示空間中的所有向量。例如,

其中

 

這是基和標準正交基的一種特殊情況。

一般來說,基是向量的最小集合

 

使它們的線性組合成向量空間:

 

對於任何向量空間,基總是存在的。(它可能不是一個有限集,但我們現在不應該關心它。)毫無疑問,在討論線性空間時,基可以極大地簡化問題。

當一組基中的向量互相正交時,我們稱它為正交基。如果每個基向量的範數是1對於一個正交基,我們說它是標準正交的。

線性變換


 與向量空間相關的關鍵對象之一是線性變換。如果您以前見過神經網路,就會知道其中一個基本構建塊是表單的層

 


其中A是矩陣,b和x是向量,而σ是S型函數。(或者,實際上是任何激活函數。)那麼,Ax部分是線性變換。一般來說,函數

 

是向量空間V和W之間的線性變換,如果


對於V中的所有x y都成立,而且都是實數。 

舉個具體的例子,在平面中繞原點旋轉是線性變換。 

毫無疑問,關於線性變換最關鍵的事實是它們可以用矩陣來表示,就像你將在接下來的學習中看到的那樣。

 

矩陣及其運算


如果線性變換清楚了,你就可以轉向學習矩陣。(線性代數課程通常從矩陣開始,但我推薦這種方式,原因將在後面解釋。)

矩陣最重要的運算是矩陣積。一般來說,如果A和B是定義的矩陣

然後可以得到

這似乎很難理解,但實際上非常簡單。看下圖,演示如何計算產品第二行第一列中的元素。

之所以定義矩陣乘法,是因為矩陣表示向量空間之間的線性變換。矩陣乘法是線性變換的組成。 

行列式 


在我看來,行列式是線性代數中最具挑戰性的概念之一。根據您的學習資源,它通常是由遞歸定義或遍歷所有排列的求和定義的。如果沒有豐富的數學經驗,他們都不易理解。

要理解這個概念,請觀看下面的影片。相信我,這是魔法。  

總而言之,矩陣的行列式描述了對象的體積在相應的線性變換下如何縮放。如果變換改變方向,則行列式的符號為負。

你最終將需要了解如何計算行列式。


特徵值,特徵向量和矩陣分解 

標準的第一線性代數過程通常以特徵值/特徵向量和一些特殊的矩陣分解(例如奇異值分解)結尾。 

假設我們有一個矩陣A。如果存在向量x(稱為特徵向量),則數字λ是A的特徵值

成立。換句話說,由A表示的線性變換是對向量x進行的一個基於模型的縮放,這個概念在線性代數中起著至關重要的作用。(實際上在廣泛使用線性代數的每個領域都是如此。)

現在,您已經準備好熟悉一些矩陣分解。如果你想一下,從計算的角度看,哪種類型的矩陣是最好的?對角矩陣!如果一個線性變換有一個對角矩陣,那麼計算它在任意向量上的值是很簡單的。

大多數特殊形式旨在將矩陣A分解為矩陣的乘積,其中最好至少有一個對角線。最著名的奇異值分解(Singular Value Decomposition,簡稱SVD)指出存在特殊矩陣U,V和對角矩陣Σ

 成立。(U和V是所謂的unit矩陣,這裡我沒有定義,只要知道它是一個特殊的矩陣族就足夠了)

奇異值分解也被用於主成分分析,這是最簡單也是最著名的降維方法之一。

進一步的研究


線性代數可以用很多方法來教。我在這裡列出的路徑是受到Sheldon Axler的線性代數教科書的啟發。對於在線課程,我推薦麻省理工學院開放課程的線性代數課程,這是一個很好的資源。

 

多變數微積分


這是線性代數和微積分結合在一起的部分,為訓練神經網路的主要工具——梯度下降打下基礎。從數學上講,神經網路只是一個多變數的函數。(儘管變數的數量可以達到數百萬。)

與單變數微積分相似,這裡的兩個主要主題是微分和積分。假設我們有一個函數

將向量映射為實數。在二維空間中(即n= 2時),你可以把它想像成一個曲面。(因為人類看不到高於三維的東西,所以很難想像有兩個以上真實變數的函數。)

二元函數的影像

 

多變數微分


在單變數中,導數是切線的斜率。如何定義切線呢?表面上的點有多條切線,而不是一條。但是,有兩條特殊的切線:一條平行於x-z平面,另一條平行於y-z平面。它們的斜率由偏導數決定,由

也就是說,對只保留一個變數的函數求導。(形式定義對於≥3個變數是一樣的,只是更複雜的符號)

這些特殊方向的切線橫跨切線平面。

切面

 

梯度


還有另一個特殊的方向:梯度,它是定義的向量

梯度總是指向增幅最大的方向!所以,如果你在這個方向上邁出一小步,你的高度將會是你所能選擇的所有其他方向中最大的。這就是梯度下降法的基本思想,它是一種函數最大化的演算法。它的步驟如下。

1.計算當前位置x₀處的梯度。

2.在梯度方向上走一小步,即可到達點x₁。(步長稱為學習率。)

3.返回到步驟1。重複該過程,直到收斂為止。

當然,這一基本演算法也存在一些缺陷,多年來,該演算法進行了多次改進。現代基於梯度下降的優化器使用了許多技巧,如自適應步長、動量和其他方法,這些我們不打算在這裡詳述。

在實際應用中,梯度的計算比較困難。函數通常由其他函數的組合來描述,例如,熟悉的線性層

式中,A為矩陣,b和x為向量,而σ是S型函數。(當然,也可以有其他激活,但為了簡單起見,我們將堅持使用此方法。)如何計算這個梯度?在這一點上,甚至不清楚如何定義矢量-矢量函數的梯度,所以讓我們來討論!一個函數

總是可以像矢量標量函數這樣寫

g的梯度是由第k行是第k個分量的梯度的矩陣定義的。也就是說,

 

這個矩陣叫做g的總導數。

在我們的例子中

事情變得有點複雜,因為它是由兩個函數組成:

以及:

通過將單變數S形分量應用來定義。將函數l進一步分解為從n維向量空間映射到實數空間的m個函數:

接著

如果你計算總導數,你會發現

這是多元函數的鏈式法則的全面性。沒有它,就沒有簡單的方法來計算神經網路的梯度,而神經網路最終是由許多函數組成的。 

高階導數


與單變數情況類似,梯度和導數在確定空間中給定的點是局部極小點還是極大點時發揮作用。(或沒有)。給出一個具體的例子,訓練一個神經網路等價於最小化參數訓練數據上的損失函數。這都是關於找到最優參數配置w的最小值:

接下來

分別為神經網路和損失函數。

對於具有n個變數的一般可微向量標量函數,有n個二次導數,形成海森矩陣

 

在多個變數中,海森的行列式充當二階導數的角色。類似地,它可以用來判斷臨界點(即所有導數均為零)是最小值,最大值還是鞍點。


進一步研究 


關於多變數演算,有很多很棒的在線課程。我有兩個具體建議:

可汗學院多元微積分,

MIT多變數演算。

現在我們準備接受最後一個主題:概率論!

概率論

概率論是對機會的數學嚴謹研究,是所有科學領域的基礎。

先不談確切的定義,讓我們思考一下概率代表什麼。假設我投擲一枚硬幣,有50%的概率(或0。5的概率)是正面。重複這個實驗10次之後,我得到了多少次正面? 

如果你回答了5,你就錯了。正面是0.5的概率不能保證每一秒都是正面。相反,它的意思是如果你重複n次這個實驗。n是一個很大的數,正面的數目會非常接近n/2。

除了基礎知識之外,您還需要了解一些高級知識,首先是期望值和熵。


期望值 

假設你和你的朋友玩遊戲。你擲一個經典的六面骰子,如果結果是1或2,你贏300美元。否則,你損失200。如果你玩這個遊戲的時間夠長,你每輪的平均收入是多少?你應該玩這個遊戲嗎?

贏100美元的概率是1/3,輸200美元的概率是2/3。也就是說,如果X是編碼擲骰子結果的隨機變數,那麼

這就是期望值,也就是從長遠來看,你每局獲得的平均金額。因為數值為負,你會輸錢,所以你永遠不要玩這個遊戲。

一般來說,期望值定義為

對於離散隨機變數和

 

對於實值連續隨機變數。

在機器學習中,訓練神經網路的損失函數在某種程度上都是期望值。 


大數定律 

人們常常錯誤地把某些現象歸因於大數定律。例如,那些連輸的賭徒相信他們很快就會贏,根據大數定律。這是完全錯誤的。讓我們看看這到底是什麼!

假設

為表示同一實驗獨立重複的隨機變數。(比如,擲骰子或擲硬幣。)

本質上,大數定律說明了這一點

從長遠來看,這就是結果的平均值,等於期望值。

一種解釋是,如果隨機事件重複了足夠多次,則單個結果可能無關緊要。因此,如果您在娛樂場中玩的遊戲的預期價值為負值(就像他們一樣),那麼偶爾贏球也沒關係。大數定律意味著您會賠錢。

為了取得一些進步,LLN對於隨機梯度下降必不可少。

 

資訊理論


來玩個遊戲。我想過一個介於1到1024之間的數字,您必須猜出來。您可以提出問題,但您的目標是使用儘可能少的問題。你需要多少?

如果玩得很聰明,您將對問題進行二進位搜索。首先,您可能會問:數字是1到512之間嗎?這樣,您將搜索空間減少了一半。使用此策略,您可以找出答案

但如果取數時不使用均勻分布呢?例如,我可以使用泊松分布。

泊松分布的概率品質函數

在這裡,你可能會需要較少的問題,因為你知道分布傾向於集中在特定的點。(這取決於參數)

在極端情況下,當分布集中在一個數字上時,你不需要任何問題來猜對它。一般來說,問題的數量取決於分布所攜帶的資訊。均勻分布包含的資訊量最小,而奇異分布是純資訊。

熵是一種量化的方法。它的定義是

對於離散隨機變數和

連續的,實值的。(對數的底通常是2 e或10,但這並不重要)

如果您以前使用過分類模型,您可能會遇到交叉熵損失,定義為

其中P是基準真相(集中到單個類的分布),而另一版本代表類預測。這衡量了多少「資訊」的預測已經比較基準真相。當預測匹配時,交叉熵損失為零。 

另一個常用的量是相對熵,由

 

P和Q是兩個概率分布。這本質上是交叉熵減去熵,熵可以被認為是對兩個分布的不同程度的量化。這是有用的,例如,當訓練生成的對抗網路。最小化相對熵保證兩個分布是相似的。

 

進一步的研究


在這裡,我向您推薦兩本書:

  • 模式識別和機器學習,

  • Trevor Hastie, Robert Tibshirani和JeromeFriedman的《統計學習的要素》。

這是兩本基礎教科書,它們教你的遠不止概率論。它們都超越了基礎知識,但是相應的章節提供了一個很好的介紹。

 

超越數學基礎


至此,我們複習了理解神經網路的必要數學知識。現在,您已經為有趣的部分做好了準備:機器學習!

要真正理解神經網路是如何工作的,你還需要學習一些優化和數理統計。這些主題建立在我們設置的基礎之上。我不會深入討論細節,因為這超出了本文的範圍,但我準備了一個學習路線圖來指導你。


年薪 35w+,倒掛老員工,美團可能不是第一個開頭的

2020-10-29

資源 | 《30天吃掉Tensorflow》開放下載

2020-10-23

深度學習的數學基礎” data-recommend-article-content-url=”//mp.weixin.qq.com/s?__biz=MzI1MDM2OTY3MA==&mid=2247508694&idx=2&sn=9abe8b87c6365f737847113174e7c2d8&chksm=e981a13fdef62829a4c264df5ec4bdf73498b0a1ebce26261f3a5bc3d6bbe1d9812eda471516#rd”>

資料 | 1800頁33章數學方法精要筆記 —深入數學建模, 機器學習和深度學習的數學基礎

2020-10-12

AI研習社是AI學術青年和開發者社區,為大家提供一個高峰會資訊、論文解讀、數據競賽、求職內推等的技術交流陣地,歡迎登陸www.yanxishe.com加入我們吧~

投稿、轉載、媒介合作聯繫微訊號 | bajiaojiao-sz

商務合作聯繫微訊號 | LJ18825253481