初學者入門深度學習需要了解Python基礎,以優就業深度學習課程為例,內容包括AI概述及前沿應用成果介紹,人工神經網絡及卷積神經網絡原理及TensorFlow實戰,循環神經網絡原理及項目實戰,生成式對抗網絡原理及項目實戰,深度學習的分布式處理及項目實戰,深度強化學習及項目實戰,企業級項目實戰-車牌識別項目實戰,深度學習最新前沿技術簡介八個階段。
打開深度學習,對于大部分小白,編程已然令人生畏,而更加令人難以接受的,那么,深度學習里的數學到底難在哪里?尋常人等又有如何路徑走通,請聽慢慢解析。
線性代數:
想要學習深度學習,你第一個需要理解透徹的學問是線性代數。為什么?因為深度學習的根本思想就是把任何事物轉化成高維空間的向量,強大無比的神經網絡,說來歸齊就是無數的矩陣運算和簡單的非線性變換的結合。這樣把圖像啊,聲音啊這類的原始數據一層層轉化為我們數學上說的向量。
什么imagetovector,wordtovector這些,都在說的一件事情就是這類數學轉化,不同類型(我們通常稱為非結構化數據)的數據最終成為數學上不可區分的高維空間的向量,所謂萬類歸宗。線性代數,就是對于這一類高維空間運算做的默認操作模式,可謂上帝的魔術之手。
因此你要駕駛深度學習這個跑車,線性代數關系你到是否理解發動機的原理。
線性代數核心需要掌握的是線性空間的概念和矩陣的各項基本運算,對于線性組合,線性空間的各類概念,矩陣的各種基本運算,矩陣的正定和特征值等等都要有非常深厚的功力。
概率論:
下一個我們需要講解的是什么呢?概率論基礎。概率論事整個機器學習和深度學習的語言,因為無論是深度學習還是機器學習所做的事情是均是預測未知。預測未知你就一定要對付不確定性。整個人類對不確定性的描述都包含在了概率論里面。
概率論你首先要知道的是關于概率來自頻率主義和貝葉斯主義的觀點,然后你要了解概率空間這一描述描述不確定事件的工具,在此基礎上,熟練掌握各類分布函數描述不同的不確定性。
我們最常用的分布函數是高斯,但是你會發現高斯是數學書里的理想,而真實世界的數據,指數分布和冪函數分布也很重要,不同的分布對機器學習和深度學習的過程會有重要的影響,比如它們影響我們對目標函數和正則方法的設定。懂得了這些操作,會對你解決一些競賽或實戰里很難搞定的cornercase大有裨益。
一個于概率論非常相關的領域-信息論也是深度學習的必要模塊,理解信息論里關于熵,條件熵,交叉熵的理論,有助于幫助我們了解機器學習和深度學習的目標函數的設計,比如交叉熵為什么會是各類分類問題的基礎。
微積分:
微積分和相關的優化理論算是第三個重要的模塊吧,線性代數和概率論可以稱得上是深度學習的語言,那微積分和相關的優化理論就是工具了。深度學習,用層層迭代的深度網絡對非結構數據進行抽象表征,這不是平白過來的,這是優化出來的,用比較通俗的話說就是調參。整個調參的基礎,都在于優化理論,而這又是以多元微積分理論為基礎的。這就是學習微積分也很重要的根源。
優化理論:
機器學習里的優化問題,往往是有約束條件的優化,所謂帶著鐐銬的起舞,因此拉格朗日乘子法就成了你逃不過的魔咒。
優化理論包含一階和二階優化,傳統優化理論最核心的是牛頓法和擬牛頓法。
由于機器學習本身的一個重要內容是正則化,優化問題立刻轉化為了一個受限優化問題。這一類的問題,在機器學習里通常要由拉格朗日乘子法解決。
傳統模型往往遵循奧卡姆剃刀的最簡化原理,能不復雜就不復雜。而深度學習與傳統統計模型的設計理念區別一個本質區別在于,深度模型在初始階段賦予模型足夠大的復雜度,讓模型能夠適應復雜的場合,而通過加入與問題本身密切相關的約束:例如全職共享,和一些通用的正則化方法:例如dropout,減少過擬合的風險。
而正因為這種復雜度,使得優化變得更加困難,主要由于:
1,維度災難,深度學習動輒需要調整幾百萬的參數,是一個計算量超大的問題。
2,目標函數非凸,具有眾多的鞍點和極小值。我們無法直接應用牛頓法等凸優化中的常見方法,而一般用到一階優化(梯度下降),這看起來是比支持向量機里的二階優化簡單,然而正是因為缺乏很好的系統理論,邊角case變得特別多,反而最終更難。
3,深度,由于深,造成反向傳播的梯度往往越來越弱,而造成梯度消失問題。各類深度學習的領先算法往往是圍繞解決梯度消失問題。
圖:臭名昭著的局部極小值問題。
我們用一些非常簡單的實例說一下深度學習的幾個主要應用方向與數學的結合:
階段1:
多層神經網絡(DNN)的前傳與回傳(BP)算法。
理解DNN的前向傳遞過程,這個過程里包含了線性代數的空間變換思想和簡單的高數。
這算是第一難度梯級,你需要掌握的是BP算法,這里含有多元微積分一個最基本的法則:鏈式求導和jacobian矩陣。在此處你會對維度產生全新的認識。
階段2:
深度學習的中流砥柱CNN卷積運算:這里應用的數學是卷積本身,你要通過高數掌握卷積的本質,體會它與相關性,傅立葉變換等運算之間的聯系。這部分也屬于高數內容,而卷積運算本身也需要強大的線性代數基礎。
階段3:
RNN網絡與微分方程。RNN似乎包含比別家算法多很多的數學知識,因為RNN的運算和調參你需要理解一些非線性動力系統的基礎知識。如定點,邊緣穩定性和混沌。非線性動力學是物理的內容,但是大部分講的是數學,這點物理系的學的會很有優勢。
階段4:
深度強化學習。這時候你的數學工具要包含bellaman方程,控制論的一些基礎知識,更多關于馬爾可夫過程和時間序列的知識。簡單的控制論你看看會很好的助力你對整個機器學習用于機器人控制的理解,而馬爾科夫決策樹的基礎知識學了你會覺得什么阿爾法狗阿爾法元都挺簡單的。
階段5:
生成式模型與GAN對抗網絡。這部分的數學難度應該與深度強化學習在同一難度上。需要對概率論有比較深的理解。最基礎的生成模型你要理解玻爾茲曼機這個與統計物理淵源很深的模型,需要較深的概率統計知識。GAN生成對抗模型的目標函數含有了大名鼎鼎的博弈論思想。納什均衡都進來了啊,雖然這時候的優化理論已經飛一樣的難,你還是會有一種融匯貫通的感覺。
階段6:
信息瓶頸理論?計算神經科學前沿?鐵哥恭喜你此處要告別塵緣了。深度學習的盡頭必然要與我們對認知和信息本質的基礎認識相連。此處針對希望做深度學習研究的人員。
基礎教材推薦:
陳希孺院士的《概率論與數理統計》,這是一本數理統計的入門級教材。最好的統計中文教材。參考評論https://d.cosx.org/d/14990-14990
龔升的《簡明微積分》。這本教材是我見過的最與眾不同的寫作結構,不是按常規教材那樣講導數、微分、微分的應用然后是不定積分、定積分。如果覺得難,入門從同濟大學的微積分教材入手也不錯。
線性代數:IntroductiontoLinearAlgebra(GilbertStrang)MIT的教授,網上還有視頻。