非計算機專業的學生如何入門深度學習?
您好,以下是我的回答,望采納。
我精簡了科班本科階段的學習路線,可直接按以下管線學習,足夠學上至少兩年。
第一部分對應學習管線,第二部分對應管線中每一個環節所推薦的參考書目。
一、推薦的學習管線
1.編程語言學習篇
C -> C++ -> Java -> Python
這一套學完就基本掌握了語言的精髓了。
本科難度一般指的是熟悉,而非精通。
2.算法與數據結構篇
離散數學 -> 算法與數據結構 -> 算法競賽入門
這一套學完就不懼怕面試的算法題了。
對于求職,主要掌握線性/樹/圖/網絡四種結構,以及貪心/DP/分治/搜索等基本算法即可。
3.計算機體系篇
匯編 -> 計算機組成原理 -> 數據庫 -> 操作系統 -> 編譯原理
這一套學完對計算機的理解會提高幾個層次。
但一般的程序員很可能用不到太深的內容。
4.人工智能入門篇
計算機圖像 -> 計算機圖形 -> 大數據分析 -> 計算機視覺 -> 自然語言處理
這一套學完大概能理解AI的發展和應用。
這幾門不能說有嚴格的遞進關系,每門大概熟絡后就可以進入下一門,對于有志于從事AI相關的,能精通一個方面就很難得了。
二、對應科目推薦的書籍清單如下
C:《C程序設計語言》
C++:《C++程序設計語言》
Java:《JAVA編程思想》
Python:《Python核心編程》
離散數學:《離散數學及其應用》
算法與數據結構:《算法導論》(前幾章)
算法競賽入門:《挑戰程序設計競賽》
匯編:《匯編語言程序設計》
計算機組成原理:《計算機組成原理》
數據庫:《數據庫系統概念》
操作系統:《現代操作系統》
編譯原理:《編譯原理》
計算機圖像:《數字圖像處理》
計算機圖形:《OpenGL編程指南》
大數據分析:《統計學習方法》
計算機視覺:《計算機視覺》
自然語言處理:《Deep Learning in Natural Language Processing》
關于目的,這篇回答想告訴非科班科班學生每天在學什么,以便于重塑基礎,追趕進度,并非為了短時沖刺,跟風求職。(對于突擊求職,精讀具體的細分方向是更好的選擇)
關于時間,課表里一共17門課,按每課3學分折算共51學分,差不多是兩學期的課時。
關于硬核,這里的每門課在科班的培養計劃里都能找到,但不是每個計算機科班學生都能完全掌握這些課程,計算機這門學科本身就很硬核。
關于依賴關系,有些模塊中確實不強,能力足夠的話可以自行調整順序,或者按能力需求跳過部分課程。
對于從零開始的小白,我還是建議C/C++入門,大多數大學也都是這樣設置的。從某種程度上來講,面試時能用C/C++手寫高效算法象征著較好的邏輯思維能力和良好的計算機功底,會在面試中獲得很大的加分。