相信每個入行人工智能的老手,對自己過往的幾年學習生涯都或多或少會有一些遺憾:如果我當年先從基本概念入手就好了,如果我當年把核心算法吃的更透一點就好了 ……
最近,一位在行業內工作了幾年的斯坦福人工智能”師兄“就根據自己的工作和學習經驗,為入學的師弟師妹們送出了一份大禮:人工智能的本科4年課程清單 ,希望想要了解人工智能的新生能夠靠著這份指路圖,少走彎路。
這位學長名叫Mihail Eric,本人也是一位妥妥的“學霸”。在斯坦福大學的NLP研究組里,與Christopher Manning, Percy Liang, Christopher Potts(三位巨佬)一起做研究,度過了3年非常充實的研究時光,收獲頗多。同時Eric向ACL\EMNLP\NLP for AI work投稿論文,均已發表,目前正在擔任ACL的審稿人,也是業內人工智能公司Alexa AI的工程師。
作為已經畢業的學長,Eric離開學校已經有一段時間了,總結了一下自己的學習和工作經歷,Eric為自己的人工智能和機器學習的職業生涯,設計一個完整的4年制人工智能本科學位基礎課程。這些課程是為AI和CS領域的萌新提供的,雖然是萌新定位,但Eric覺得這些課程直到今天都還在用,是基礎必會的技能。
第1年,打基礎假設你沒有CS的經驗,這一年的大部分時間應該用在CS和機器學習的核心概念和算法上,推薦的課程有 :
1.編程基礎 這是AI從業人員必需具備的軟件工程學的基本技能。
課程為CS106B:http://web./class/cs106b/ 2.計算機系統 這門課的重點在于計算機的基礎設計和構建,尤其是學習軟件編譯的時候,運行一個程序會發生什么,以及程序是如何在內存中運行的。
課程為CS107:http://web./class/cs107/ 3.算法概論 這門課包含了計算機算法背后的數學和理論基礎,比如最優搜索算法和動態編程,以及如何分析這些算法的內存和優缺點。
課程為CS161:http://web./class/cs161/ 4.概率論 概率論和統計學是機器學習算法中的核心,尤其是分析數據在實戰里很重要。
課程為CS109:http://web./class/cs109/ 5.線性代數 如何計算矩陣和向量,線性方程組,最小二乘法,這些都是機器學習需要用到的數學基礎。
課程為EE103:http://web./class/ee103/ 6.多維微積分 調試函數的梯度,反向傳播以及機器學習,這些都是經常用到的。
課程為向量微積分(工程師):https://www./learn/vector-calculus-engineers 第2年,慢慢探索AI本科的第二年,至少要明白人工智能的一些原理,應該用什么樣的理論去解決問題,還需要加強對計算機系統運行的理解 。
1.人工智能概論 這門課包括了人工智能領域所運用的研究,比如搜索,游戲,邏輯以及圖像還有機器學習算法的應用。
課程CS221:https://stanford-cs221./spring2020/ 2.編譯原理 主要是講編譯器背后的設計和理論,你學了之后,至少應該了解一個編譯器是如何構建的,還有編譯器的模塊化組件,也需要了解。如果你對語義識別感興趣,可以好好琢磨一下編譯器的設計和傳統的自然語言處理堆棧之間的相似之處,非常有趣。
課程CS143:http://web./class/cs143/ 3.數據庫原理 主要講數據庫管理系統背后的原則,比如關系數據模型、索引、模式等主題,但凡你想成為數據專家或者機器學習工程師,就必須要懂得數據庫的原理。
課程CS145:https://cs145-fa19./ 4.并行計算 并行計算這門課會講Apache Spark到GPU這些系統背后的原理,
課程CS149:http://cs149./fall19/ 5.操作系統 你如果想要擅長系統編程,就一定要上這門課,這門課是講如何從頭開始搭建一個操作系統,不僅需要設計系統,還需要明白如何調試和代碼管理。如果你不明白,你手下的人敲完:sudo rm -rf /*就撤了,你該如何拯救你的代碼?
課程CS140:http://web./~ouster/cgi-bin/cs140 第3年,開啟提升課程這個時候應該開始學高級課程,開始NLP,BA,CV這些方向的研究
1.機器學習 監督學習和模型訓練的概念,比如偏差、方差,正則化以及模型選擇,這些內容看上去簡單,實際上每個AI從業者天天都在用的。
2.凸優化 這門課運用很廣,比如統計學,機器學習,信號處理和其它使用凸優化的領域,雖然現在有不少問題都是非凸化的,但是你最好還是要懂背后的邏輯。
課程EE364A:http://web./class/ee364a/ 3.概率圖模型 像CV和NLP就會經常用到,所以還是需要了解。
課程CS228:https://cs./~ermon/cs228/index.html 4.數據挖掘 大數據與數據挖掘,這門課涵蓋了處理大型數據集的技術方法,會運用到推薦算法、聚類以及大規模的數據集計算與分析,要知道每天產生的數量還是比較大的。
課程CS246:http://web./class/cs246/ 5.NLP 自然語言處理,讓機器懂得文本數據的理論和時間,而且還會在這門課里學到傳統自然語言處理,老師會教如何用深度學習技術來處理這些。
課程CS224N:http://web./class/cs224n/ 6.基于CV的卷積神經網絡 基本包含了深度學習背后的理論,比如CV模型就經常運用,只要學過人工智能課程的人,沒錯,是來自李飛飛教授的CS231N吧。
第4年,開始打比賽經過前面3年課程的訓練,你應該對計算機系統和人工智能概念、應用有了清楚的理解,找到你比較感興趣的方向,拿起數據集,就要開始自己跑模型,做數據分析,調參還有解決Bug。想要成為一個真正的人工智能專家,不僅得學,還得上手練。
1.做研究項目 有的學校會提供這類課程,在這門課里,你需要深入研究整個項目的情況。
課程CS341:http://web./class/cs341/ 2.參加課題研究 主動去找研究生學長學姐,做他們的助理,將基礎知識再過一遍,也可以選擇自己開一個課題項目,進行研究,主要是讓你有一個項目經驗。
3.大廠實習 如果你要是時間管理的好,可以考慮在課余時間去AI公司實習,一般大廠都有這種3-6個月的實習機會,在實習里,不僅讓你了解書本上的基礎知識,還能使用基礎知識進行落地的運用,這種應該算比較好的實戰機會了。
尾巴以上就是作為一個人工智能從業者的斯坦福畢業生Eric,送給AI萌新的4年規劃安排,如果你覺得上面的課程比較難,可以適當調整,當然也歡迎你與大家分享你的學習之路。
就像歌詞所說“一代人終將老去,但總有人正年輕。“AI之路任重且道遠,不管是不是萌新,只要你還愿意學習,就一直在路上,加油!!!