本文轉載自【HyperAI超神經】(ID:HyperAI);內容來源:https://www.mihaileric.com/posts/complete-artificial-intelligence-undergraduate-course-plan/
內容概要:史丹福大學的計算機本碩畢業生 Mihail Eric,梳理了人工智慧專業所需要的基礎課程和專業課程,並將其整理成四年的學習清單分享出來。
關鍵詞:網課分享 斯坦福AI課程
自 2011 年,MIT 和史丹福大學首次將課程發布至線上,至今已經有數百所學校的上千門課程,免費對全球公眾開放。
其中史丹福大學計算機類的課程以優質、全面、前沿受到全球終生學習者的認可。
近期一位本科與研究生均畢業於史丹福大學計算機專業的小哥哥 Mihail Eric,梳理了一份課程清單。清晰分配了這些課程在四年學習中的順序,介紹了基本內容。完成這些課程,相當於完成了人工智慧本科學位所需要的課程。
曾任斯坦福助教,熱愛知識分享
Mihail Eric 在 2012 年進入史丹福大學就讀計算機專業本科,2016 年繼續就讀計算機碩士,期間加入了史丹福大學著名的 NLP 小組,還擔任過自然語言處理課程(CS 224N)和概率與統計學入門(CS 109)的助教。
Mihail Eric 也會在 Twitter 上分享學習經驗 https://twitter.com/mihail_eric
現在 Mihail 就職於亞馬遜的 Alexa AI 部門,擔任數據科學家。
Mihail 表示這個課程清單,主要受到他在斯坦福本碩期間所學習的課程印象和體會,以及他工作中對於人工智慧學科學習的理解。所以這份課程清單,會更適用於想從基礎理論開始系統學習的人。
自學第一年:夯實計算機基礎知識
在完成人工智慧學位的第一年,應該聚焦於計算機科學和現代機器學習基礎的核心概念。針對沒有計算機學科基礎或基礎不紮實的同學。
這一年的主要精力應該花在學習軟體和算法基礎上,這些知識將貫穿這四年的學習和整個職業生涯,課程安排:
程序設計基礎
課程代碼:CS 106B
CS 106 是斯坦福計算機課程中的經典課程,內容包括面向對象程序設計、數據結構(集合、圖等)知識,這些都是人工智慧從業者需要的基礎軟體工程技能。
課程地址:
http://web.stanford.edu/class/cs106b/
計算機系統導論
CS 107
從底層角度來思考計算機科學系統是如何設計和構成的。其中,課程重點在於學習軟體編譯過程,當你運行程序時會發生什麼,在內存中程序是如何組織的等。
課程地址:
http://web.stanford.edu/class/cs107/
算法設計與分析
CS 161
該課程涵蓋廣泛使用的算法背後的數學和理論,比如廣度優先遍歷、動態規劃,以及如何分析那些算法的內存和運行時特點。
課程地址:
http://web.stanford.edu/class/cs161/
概率論
CS 109
概率統計是許多機器學習算法的核心,學習如何解釋和分析數據,對於任何機器學習或大數據科學的領域來說 ,都是至關重要的。
課程地址:
http://web.stanford.edu/class/cs109/
線性代數
EE 103
涵蓋如何運用矩陣和向量,解線性方程,應用最小二乘法。這些數學基礎知識在機器學習領域都被廣泛使用。
課程地址:
http://web.stanford.edu/class/ee103/
多維微積分
math 51
這門課可以幫助你輕鬆地解開函數梯度,因為這是反向傳播等深度學習主力算法的核心技術。
課程地址:
http://web.stanford.edu/class/math51/cgi-bin/51.php
(超神經備註:2020 學期開設的相關課程有調整,推薦包含線性代數內容的 math51)
自學第二年:深入開發系統知識
人工智慧本科二年級學生的重點應該是讓自己了解人工智慧的一般原理,和解決的問題是什麼,以及是如何解決的。
此外,應該繼續理解與模型構建相關的計算機系統知識,並實踐軟體工程和設計原則。為此,建議學習以下課程:
人工智慧導論
CS 221
涵蓋了不同的人工智慧領域的廣泛概述,如搜索、遊戲、邏輯、圖形模型、機器學習和這些算法的應用。這樣的課程為從符號邏輯,到統計技術等方法的思想演變提供歷史背景。
課程地址:
https://stanford-cs221.github.io/spring2020/
編譯器
CS 143
這門課的課程名稱言簡意賅:Compilers!
涵蓋編譯器背後的設計和理論,實踐從零構建一個完整的編譯器。
編譯器是編寫的每一個程序的核心,即使對人工智慧從業者來說,理解它們的工作原理也是很重要的,這樣你才能成為能力更全面的工程師。
這樣的課程將讓你了解如何構建一個複雜的軟體系統,著重於模塊化的、經過文檔化和測試的、架構良好的組件。除此之外,如果你對自然語言理解的人工智慧感興趣,編譯器的設計和傳統自然語言處理堆棧之間的共通特性是很有趣的。
課程地址:
http://web.stanford.edu/class/cs143/
資料庫導論
CS 145
內容包括:資料庫管理系統背後的原理,重點諸如關係數據模型、索引、模式和事務等部分。任何現代數據科學家或機器學習工程師,都必須在某種程度上與資料庫交互,因此了解它們的組織架構方式至關重要。
課程地址:
https://cs145-fa19.github.io/
並行計算
CS 149
並行計算平臺構成了當今許多平臺和技術的核心,從 Apache Spark 到 GPU 等硬體。並行計算的課程介紹系統背後的思想,以便你更熟練地有效地使用它們。
課程地址:
http://cs149.stanford.edu/fall19/
作業系統
CS 140
如果你想真正擅長系統編程,成為一個更熟練的工程師,那就去上一門作業系統課程,在這門課程中,你必須從頭開始構建一個作業系統。不僅將學習如何設計作業系統,還將學習如何成為一名精通 Debug 代碼的程式設計師。在未來的人工智慧職業中,這些基本技能將是非常有意義的。
課程地址:
http://web.stanford.edu/~ouster/cgi-bin/cs140-spring20/index.php
自學第三年:深入探索進階課程
在第三年,應該專注於深入學習機器學習以及統計原理的特定領域應用,包括自然語言處理、大數據分析和計算機視覺。以下是一些推薦的課程:
機器學習
CS 229
涵蓋機器學習的基礎理論,包括監督和非監督學習和模型訓練概念,如偏方差權衡、正則化和模型選擇。一定要學習這些理論並把它們學好,因為人工智慧從業者每天都在使用它們。
課程地址:
http://cs229.stanford.edu/
凸優化
EE 364A
Convex Optimization,這門課涵蓋解決凸優化問題背後的思想與應用到統計、機器學習、信號處理和其他領域。雖然現在許多模型使用非凸目標,但這有助於理解可處理優化問題背後的形式。
課程地址:
http://web.stanford.edu/class/ee364a/
概率圖模型
CS 228
課程內容包括介紹圖模型範式,它允許對隨機變量的大量集合進行概率建模。計算機視覺和自然語言處理等各種應用中的許多問題,都可以用概率圖模型來表達,因此了解這些知識是有幫助的。
課程地址:
https://cs.stanford.edu/~ermon/cs228/index.html
數據挖掘
CS 246
課程包括如何處理大數據集的技術和方法,尤其側重於推薦系統、聚類和大規模監督機器學習等應用領域。
鑑於每天都會產生大量新數據,人工智慧從業者必須適應大規模操作和分析數據,特別是通過使用 Spark 這樣的現代工具包。
課程地址:
http://web.stanford.edu/class/cs246/
自然語言處理
CS 224N
介紹如何讓機器理解文本數據背後的理論和實踐。這樣的課程介紹諸如解析、命名實體識別之類的傳統自然語言處理中的任務,並講授如何使用諸如深度學習之類的技術來解決這些任務。
課程地址:
http://web.stanford.edu/class/cs106b/
面向視覺識別的 CNN
CS 231N
《Convolutional Neural Networks for Visual Recognition》這門課,包含了現代深度學習體系結構背後的理論,尤其是與構建計算機視覺模型有關的理論。在當今的人工智慧領域中,想要獲得成功,擁有紮實的神經網絡基礎至關重要。
課程地址:
http://cs231n.stanford.edu/
自學第四年:實踐!實踐!實踐!
第四年的課程就是實踐、實踐、再實踐!
重要的事情說三遍,在你完成你的頭三年課程的時候,你對初級計算機科學和軟體工程原理,以及人工智慧概念及其應用理論有了深入了解。所以,你需要多花時間動動手。
找到感興趣的研究領域,獲取現有數據集(數據集下載站推薦 https://hyper.ai 或開發自己的數據集),然後開始構建模型。學習數據處理、假設檢驗和錯誤分析的細微差別。學習如何對模型進行故障排除。
想要成為一名人工智慧領域的專家,那需要將你所學到的所有原則付諸實踐。下面是一些如何儘可能多實踐的方法:
參加校內項目
作者舉例:CS 341
一些大學會開設一些實踐課程,在這些課程中,你可以在整個課程期間深入地處理一類問題中的單個項目。真正深入研究項目的所有複雜性,我想到的一個課程是 CS 341。
課程地址:
http://web.stanford.edu/class/cs341/
超神經備註作者推薦的 CS 341 課程,與大三推薦課程 CS246 數據挖掘內容相關,可互為輔修。
投身科研項目
線下組織或技術社區
參與研究是獲得人工智慧工作中,所有錯綜複雜的實踐經驗的一種十分有效的方式。主動幫助研究生完成你感興趣的課題,或者請求老師資助你自己的課題!通過這樣做,你會很好地了解從事人工智慧課題時的日常工作情況。
進入行業實習
內推或海投簡歷
如果你的時間安排允許,可以考慮從學校請假到一家人工智慧公司實習。許多公司都提供 3-6 個月的實習機會,讓你接觸到所學原理的實際應用。如果你打算畢業後馬上就進入工業界,那麼沒有更好的方式來體驗數據科學家或機器學習工程師的工作。
至此,已經完成了一個完整的四年課程的規劃,為未來成功的機器學習或數據科學的職業生涯準做好了準備!不過,上述所有課程並非必須學習。
比如,結合自身情況比對列表,並選修有關課程來填補自己的知識或技能空白。雖然有很多東西要學習,但現在正是參與進 AI 大潮的重要時刻,研究領域廣闊,機會無限,未來大有可為。