斯坦福大學(xué):人工智能本科 4 年課程清單
最近,一位在行業(yè)內(nèi)工作了幾年的斯坦福人工智能畢業(yè)的專業(yè)人士為自己的人工智能和機(jī)器學(xué)習(xí)的職業(yè)生涯,設(shè)計(jì)一個(gè)完整的 4 年制人工智能本科學(xué)位基礎(chǔ)課程。
如今他把這個(gè)課程分享出來,希望可以為人工智能和計(jì)算機(jī)科學(xué)領(lǐng)域的新手提供幫助。
第一年:打好基礎(chǔ)
在取得人工智能學(xué)位的第一年,你應(yīng)該專注于學(xué)習(xí)計(jì)算機(jī)科學(xué)和現(xiàn)代機(jī)器學(xué)習(xí)基礎(chǔ)的核心概念,在這部分課程里,就是專門為沒有計(jì)算機(jī)科學(xué)方面的經(jīng)驗(yàn)的人準(zhǔn)備的。第一年的大部分時(shí)間應(yīng)該花在軟件和算法基礎(chǔ)知識上,你應(yīng)該關(guān)注的課程包括:
編程基礎(chǔ)知識:介紹面向?qū)ο蟮木幊碳皵?shù)據(jù)結(jié)構(gòu)。人工智能從業(yè)人員需要具有扎實(shí)的軟件工程技能。
相關(guān)課程:https://web.stanford.edu/class/cs106b/
計(jì)算機(jī)系統(tǒng)概論:從初級的角度學(xué)習(xí)計(jì)算機(jī)科學(xué)系統(tǒng)的設(shè)計(jì)和結(jié)構(gòu)。這里的重點(diǎn)是學(xué)習(xí)軟件編譯過程,執(zhí)行計(jì)算機(jī)程序時(shí)會發(fā)生什么,以及如何在內(nèi)存中組織程序。
相關(guān)課程:http://web.stanford.edu/class/cs107/
算法:涵蓋了廣泛使用的計(jì)算機(jī)科學(xué)算法(例如廣度優(yōu)先搜索和動態(tài)編程)背后的數(shù)學(xué)和理論,以及如何分析這些算法的內(nèi)存和運(yùn)行時(shí)特性。
相關(guān)課程:https://stanford-cs161.github.io/winter2021/
概率論:概率論和統(tǒng)計(jì)學(xué)構(gòu)成許多機(jī)器學(xué)習(xí)算法的核心,學(xué)習(xí)如何解釋和分析數(shù)據(jù)對于任何機(jī)器學(xué)習(xí)或數(shù)據(jù)科學(xué)事業(yè)都是至關(guān)重要的。
相關(guān)課程:http://web.stanford.edu/class/cs109/
線性代數(shù):介紹如何處理矩陣和向量,求解線性方程式以及應(yīng)用最小二乘法,這些數(shù)學(xué)基礎(chǔ)廣泛應(yīng)用于機(jī)器學(xué)習(xí)。
相關(guān)課程:https://stanford.edu/class/engr108/
多維微積分,調(diào)試函數(shù)的梯度,反向傳播以及機(jī)器學(xué)習(xí),這些都是經(jīng)常用到的。
相關(guān)課程:https://www.coursera.org/learn/vector-calculus-engineers
第二年:探索階段,發(fā)展系統(tǒng)知識
在人工智能大學(xué)本科學(xué)習(xí)的第二年重點(diǎn)應(yīng)該在了解人工智能的一般原理,以及如何解決這些問題,此外,你應(yīng)該繼續(xù)加深對模型構(gòu)建相關(guān)的計(jì)算機(jī)系統(tǒng)的理解,并練習(xí)軟件工程和設(shè)計(jì)原則。這部分建議的課程如下:
人工智能簡介:該課程涵蓋了對不同人工智能領(lǐng)域的廣泛調(diào)查,比如搜索,游戲,邏輯以及圖像還有機(jī)器學(xué)習(xí)算法的應(yīng)用。
相關(guān)課程:https://stanford-cs221.github.io/spring2020/
編譯器:此課程涵蓋了編譯器背后的設(shè)計(jì)和理論,理想情況下著重于從頭開始構(gòu)建完整的編譯器。編譯器是你編寫的每個(gè)程序的核心,對于人工智能從業(yè)者來說,了解它們的工作原理也很重要,這樣你才能成為有能力的工程師,這樣的課程將是你充分了解如何構(gòu)建復(fù)雜的軟件系統(tǒng),重點(diǎn)關(guān)注編譯器的模塊化組件,除此之外,如果你有興趣追求將人工智能應(yīng)用于語言理解,那么編譯器的設(shè)計(jì)和傳統(tǒng)的自然語言處理堆棧之間的關(guān)系是很微妙的。
相關(guān)課程:http://web.stanford.edu/class/cs143/
數(shù)據(jù)庫導(dǎo)論:介紹數(shù)據(jù)庫管理系統(tǒng)背后的原理,重點(diǎn)介紹關(guān)系數(shù)據(jù)模型、索引、模式和事務(wù)等主題。任何現(xiàn)代數(shù)據(jù)科學(xué)家或機(jī)器學(xué)習(xí)工程師都必須學(xué)會如何與數(shù)據(jù)庫交互,因此了解他們是至關(guān)重要的。
相關(guān)課程:https://cs145-fa19.github.io/
并行計(jì)算:從Apache Spark到gpu等硬件,并行計(jì)算平臺構(gòu)成了當(dāng)今許多平臺和技術(shù)的核心。這門課程會介紹這些系統(tǒng)背后的思想,這樣你就能更熟練有效地使用它們。
相關(guān)課程:http://cs149.stanford.edu/fall19/
操作系統(tǒng):如果你想真正掌握系統(tǒng)編程,成為一名熟練的工程師,那就去上一門操作系統(tǒng)課程,在這個(gè)課程中,你將從零開始構(gòu)建一個(gè)操作系統(tǒng),你不僅將學(xué)習(xí)如何設(shè)計(jì)操作系統(tǒng),還將學(xué)習(xí)如何成為一名優(yōu)秀的代碼管理員,這些基本技能在你未來任何需要寫代碼的職業(yè)生涯中都是無價(jià)的。
相關(guān)課程:http://web.stanford.edu/~ouster/cgi-bin/cs140-spring20/index.php
第三年:開始高級課程學(xué)習(xí)
在第三年,你應(yīng)該專注于深入學(xué)習(xí)機(jī)器學(xué)習(xí),以及統(tǒng)計(jì)原理在特定領(lǐng)域的應(yīng)用,包括自然語言處理、大數(shù)據(jù)分析和計(jì)算機(jī)視覺。以下是一些推薦的課程:
機(jī)器學(xué)習(xí):涵蓋機(jī)器學(xué)習(xí)的原理,包括監(jiān)督和非監(jiān)督學(xué)習(xí)和模型訓(xùn)練相關(guān)概念,比如偏差、方差,正則化以及模型選擇,這部分一定要學(xué)習(xí),因?yàn)樗鼈兠刻於夹枰蝗斯ぶ悄軓臉I(yè)者用到。
相關(guān)課程:http://cs229.stanford.edu/
凸優(yōu)化:涵蓋了統(tǒng)計(jì)、機(jī)器學(xué)習(xí)、信號處理和其它使用凸優(yōu)化的領(lǐng)域,雖然現(xiàn)在許多模型都使用非凸優(yōu)化,但是了解易于處理的優(yōu)化問題背后的邏輯是有幫助的。
相關(guān)課程:http://web.stanford.edu/class/ee364a/
概率圖模型:涵蓋了圖模型范式,它允許對大量隨機(jī)變量的概率集合進(jìn)行建模。在計(jì)算機(jī)視覺和自然語言處理等各種應(yīng)用程序中,許多問題都可以使用圖模型來表示,因此了解這些思想是有幫助的。
相關(guān)課程:https://cs.stanford.edu/~ermon/cs228/index.html
數(shù)據(jù)挖掘:涵蓋如何處理大型數(shù)據(jù)集的技術(shù)和方法,重點(diǎn)關(guān)注推薦算法、聚類以及大規(guī)模的數(shù)據(jù)集計(jì)算與分析,考慮到每天產(chǎn)生的新數(shù)據(jù)量,AI從業(yè)者必須能夠熟練地操作和分析數(shù)據(jù),特別是通過使用Spark等現(xiàn)代工具包。
相關(guān)課程:http://web.stanford.edu/class/cs246/
自然語言處理:介紹了如何讓機(jī)器懂得文本數(shù)據(jù)的理論和時(shí)間,這樣的課程應(yīng)該提供傳統(tǒng)自然語言處理任務(wù)的概述,如解析等,并教你如何使用深度學(xué)習(xí)等技術(shù)處理這些任務(wù)。
相關(guān)課程:http://web.stanford.edu/class/cs224n/
基于CV的卷積神經(jīng)網(wǎng)絡(luò):涵蓋了現(xiàn)代深度學(xué)習(xí)體系結(jié)構(gòu)背后的理論,特別是關(guān)于構(gòu)建計(jì)算機(jī)視覺模型的理論。擁有扎實(shí)的神經(jīng)網(wǎng)絡(luò)基礎(chǔ)對當(dāng)下的人工智能領(lǐng)域相當(dāng)重要。
相關(guān)課程:http://cs231n.stanford.edu/
第四年:實(shí)踐經(jīng)驗(yàn)必不可少
第四年你應(yīng)該要練習(xí)、練習(xí)、再練習(xí),通過前三年的學(xué)習(xí),你已經(jīng)對計(jì)算機(jī)系統(tǒng)和人工智能概念、應(yīng)用有了清楚的理解,因此,接下來你應(yīng)該找到自己感興趣的問題和方向,獲取現(xiàn)有數(shù)據(jù)集(或開發(fā)自己的數(shù)據(jù)集),并開始構(gòu)建模型。學(xué)習(xí)數(shù)據(jù)操作、假設(shè)檢驗(yàn)和錯(cuò)誤分析的細(xì)微差別,學(xué)習(xí)如何對模型進(jìn)行故障排除。
要想成為一名高效的人工智能專家,你需要把學(xué)到的所有理論付諸實(shí)踐,下面是一些如何獲得實(shí)踐的方法:
參加項(xiàng)目課程:有的學(xué)校會提供這類課程,在這門課里,你需要深入研究整個(gè)項(xiàng)目的情況。該課程就屬于這種類型。
相關(guān)課程:http://web.stanford.edu/class/cs341/
參與研究:做研究是一種十分高效的方式,可以讓你在復(fù)雜的人工智能工作中獲得實(shí)際經(jīng)驗(yàn)。幫助研究生完成你感興趣的項(xiàng)目,或者讓導(dǎo)師贊助你自己的項(xiàng)目。通過這種方式,你將獲得大量的機(jī)會了解當(dāng)下人工智能從業(yè)者的日常工作是怎樣的。
做一份行業(yè)內(nèi)實(shí)習(xí):如果時(shí)間允許,考慮從學(xué)校請假一段時(shí)間,到一家人工智能公司實(shí)習(xí),可以是3-6個(gè)月,在那里你可以接觸到你所學(xué)的理論知識是如何在現(xiàn)實(shí)世界中應(yīng)用的,如果你打算一畢業(yè)就進(jìn)入該行業(yè),沒有什么比這種方式更好的了。
至此,你已經(jīng)學(xué)完了一個(gè)完整的思念課程設(shè)計(jì),可以說已經(jīng)為你在機(jī)器學(xué)習(xí)或數(shù)據(jù)科學(xué)職業(yè)生涯奠定了基礎(chǔ)。通過上面的列表,參加課程來填補(bǔ)你自己的概念/技能空白。雖然有很多東西需要學(xué)習(xí),但是只要你對人工智能感興趣,相信這都不斷什么。