學習神經網路,需要哪些前導知識?

學習神經網路,先要把哪些課程學好呢?


從入門到精通估計大概是這麼個順序:

入門

1. 線性代數(初級):神經網路里涉及到最多的就是矩陣運算了

2. 微積分(初級):反向傳播(back propagation)就是求導鏈式法則的應用

3. 線性代數+微積分:學會對矩陣函數(變數是矩陣的函數)求導之後,計算會快很多

4. 編程語言(matlab/python優先):這兩種語言可以很方便做線性代數計算(python可以用numpy)

理解

5. 線性代數(中級):特徵值特徵向量、線性方程組等等,為優化做準備

6. 微積分(中級):梯度、Hessian、曲率等等,為優化做準備

7. 凸優化(中級):優化演算法等,結合線性代數和微積分的知識,可以更好地了解怎麼訓練神經網路

8. 概率統計/隨機數學(中級):了解一些深層神經網路的概率模型,比如resticted Boltzmann machines之類的

應用

9. 計算機視覺/自然語言處理/語音識別等(中級):應用背景了解

10. 計算機原理/體系結構(中級):了解存儲器層級(memory hierarchy)、I/O等等

11. 編譯原理(中級):了解代碼優化

12. 並行計算(中級/高級):了解GPU計算、多線程計算、分散式計算等等

理論研究

13. 凸優化(高級):優化演算法背後的理論(online learning等等)、近幾年的paper

14. 非凸優化(中級/高級):近幾年的paper,可能對神經網路優化有借鑒/指導意義

15. 概率統計/隨機數學(高級):可能對深入了解以概率圖模型(probabilistic graphical models)建模神經網路的方法有幫助

16. 其他可能尚未成體系的模型、優化演算法、目標函數等等:參見近幾年的paper


微積分,線性代數,概率統計,一門語言(python/matlab)


前面的答案都總結得很全面,但我覺得這樣只會把初學者嚇走...事實上,無論是做研究還是學習一門課程,都要抱著「用啥學啥」的態度,如果等把全部的先修課程學完,不知道要學到猴年馬月去了...而且目標太大,反饋就很慢,很容易中途放棄。

這裡,我推薦題主一本神經網路的教材Neural Network Design http://hagan.okstate.edu/NNDesign.pdf 。這是我目前看過的對新手最最最最最友好的教材,多圖到殺貓~而且英文讀起來毫不費力。書貌似02年的,那時候還沒有Deep Learning,不過以它為起點來了解神經網路是極好的。看這本書幾乎不需要什麼先修知識,就連基本的線性代數運算、求導的鏈式法則都會有專門的章節來複習。

另外,任何一本好的教材都會在前言部分列出這門課所需的先修知識並且會對非常具體的知識進行簡要的複習。Take it easy. :)


神經網路在整個機器學習領域裡對數學的要求算最低了。 如果你熟悉怎麼對函數求導,那實現一個神經網路基本不會有什麼問題。 不要等著把前導知識學完再去學習神經網路,最好是學習神經網路過程中去彌補你所欠缺的前導知識。


推薦一本書《神經網路原理》(機械工業出版社,Simon Haykin著,中英文都有),裡面對神經網路解釋的很詳細,也有相關的數學知識!


高數,線代,概率論,這是最基礎的,然後數理統計,微積分吧,就差不多了


推薦閱讀:

基於深度學習的單目圖像深度估計有哪些比較好的參考資料(書籍、博客、論文.....)?求大神指點。
Google 人工智慧引擎 TensorFlow 開源會帶來哪些影響?
如何評價Google即將發表在ICML17上的Placement Optimization的論文?
如何在沒有有效指導的情況下學習深度學習?
什麼是創造力,AI可以獲得嗎?

TAG:計算機科學 | 神經網路 | 深度學習DeepLearning |