撰文 | 子曦
哈佛大學的 CS50AI 是一門在線開放課程,專注于介紹人工智能的基礎知識,并使用 Python 進行編程和項目實踐。該課程由哈佛大學教授 David J. Malan 及其團隊制作和授課,是廣受歡迎的 CS50 計算機科學系列課程的一部分,適合已經(jīng)具備一定編程基礎的學習者。
Artificial intelligence is the new electricity.
— Andrew Ng(吳恩達,英裔美國計算機科學家和技術(shù)企業(yè)家,專注于機器學習和人工智能,谷歌大腦項目的聯(lián)合創(chuàng)始人和負責人,曾任百度首席科學家)
課程簡介
CS50AI 課程的全稱是 CS50’s Introduction to Artificial Intelligence with Python,即 CS50 Python 人工智能入門。哈佛大學和在線課堂平臺 edX 合作于2020年推出該課程,并在2024年進行了修訂和更新。
CS50AI 課程引入現(xiàn)代人工智能的基礎概念和算法,并講解游戲引擎、手寫識別和機器翻譯等技術(shù)的產(chǎn)生思想。通過實踐項目,學生可以接觸到圖搜索算法、分類、優(yōu)化、機器學習、大型語言模型等人工智能主題背后的理論,并將其融入到自己的 Python 程序中。課程結(jié)束時,學生將獲得機器學習庫方面的經(jīng)驗以及人工智能原理方面的知識,從而為進一步深入學習人工智能和機器學習的高級技術(shù)做好準備。
課程網(wǎng)址
edX 課程頁面 :在這里可以免費注冊最新的 CS50AI 課程。注冊后就能看到所有授課內(nèi)容的相關鏈接,還有課程時間線和進度信息。
CS50AI 官網(wǎng) :這是課程的實際主頁。這里包含所有主題單元的授課音視頻、講義筆記和PPT、源代碼、測驗、編程項目及討論群的社交網(wǎng)絡鏈接等。
下圖顯示注冊后收到的電子郵件包含的課程信息及開始鏈接:

課程信息
教學形式為在線自學(Self-Paced),沒有固定時間限制,可以自由安排學習進度。按照推薦的每周10-30小時學習進度,可以七周完成。如果無法達到推薦的周學時也沒有關系,只要在年底(12/31)前完成全部編程項目就算達成目標。
課程包含七個核心單元。教學材料包括視頻講解、代碼示例、測驗和總共12個 AI 實戰(zhàn)項目。每個單元模塊包含一個1~2小時的視頻講座、一個在線小測驗和一兩個編程實踐任務。小測驗是可選的,但非常有助于考察我們對基本概念的理解。編程項目將進一步強化學到的知識點和實際應用能力。
CS50AI 要求的先修知識:
Python 基礎:如果沒有 Python 編程經(jīng)驗,可以先學習 CS50x 或 Python 入門課程 。
數(shù)學基礎:了解基本的線性代數(shù)、概率論和邏輯推理會更容易理解 AI 相關內(nèi)容。
CS50AI 沒有指定的官方教科書,但課程提供了一些相關的學習資源,其中最重要的是《人工智能:現(xiàn)代方法》(Artificial Intelligence:A Modern Approach)。此書的第 4 版是迄今為止最新和最全面的人工智能理論與實踐介紹,在廣度和深度上沒有其它教材可以匹敵,強烈推薦。
Disclosure: This blog site is reader-supported. When you buy through the affiliate links below, as an Amazon Associate, I earn a tiny commission from qualifying purchases. Thank you.

認證證書
課程是完全免費的,學習無需付費。在成功完成所有12個項目并提交后,就可以得到一個結(jié)業(yè)證書。如下圖所示,左邊為項目進度記錄,右邊是完成后生成的結(jié)業(yè)證書。


如果希望獲得哈佛/edX平臺聯(lián)合認證的證書(Harvard edX 認證,下圖為樣例),以助力職業(yè)發(fā)展,可以付費申請官方證書。認證費用現(xiàn)為 $299。網(wǎng)上還可以找到一些折扣碼,省掉~20%的費用。

教學大綱
CS50AI 課程共分為七個核心單元,下面逐一做一些概要說明。
搜索(Search)
第一個單元模塊介紹了幫助人工智能從起點找到目標的搜索算法。講座涵蓋了搜索問題的結(jié)構(gòu)(包括狀態(tài)、動作和目標)并探討了不同的搜索策略,包括深度優(yōu)先搜索(DFS)、廣度優(yōu)先搜索(BFS)、貪婪最佳優(yōu)先搜索和 A* 搜索。這些算法通過迷宮求解等實際例子進行演示,講座還涉及使用極小極大算法(Minimax)和 Alpha-beta 剪枝等對抗性搜索技術(shù)的游戲策略。
編程項目
Degrees(社交網(wǎng)絡最短路徑): 利用圖搜索算法(BFS)找出兩位演員之間的最短合作關系路徑(類似“ 六度分隔理論 ”),算法實現(xiàn)用到了先進先出 (FIFO) 隊列。
Tic-Tac-Toe(井字棋): 應用包含 Alpha-beta 剪枝的 Minimax 算法,實現(xiàn)一個不可戰(zhàn)勝的井字棋 AI。本項目需要安裝 Python pygame 軟件包。
這里探討了人工智能中的知識表示和推理,重點關注如何以機器可用于邏輯推導的方式編碼信息。它介紹了命題邏輯(使用符號和邏輯運算符如 NOT、AND 和 OR等)和一階邏輯(增加了量詞和關系)。講座演示了如何使用推理規(guī)則(如肯定前件式和歸結(jié)法)從現(xiàn)有事實中推導新知識。它涵蓋了知識庫、模型檢驗和自動定理證明,展示了人工智能系統(tǒng)如何通過將知識表示為邏輯語句并應用系統(tǒng)化推理來進行邏輯推斷和解決如謎題游戲等問題。
編程項目
Knights(騎士/無賴) :給定一個能夠解謎的邏輯推理系統(tǒng),可以根據(jù)每個角色所說的一組陳述句子,推斷角色是騎士還是無賴。任務是確定如何用命題邏輯來表示這些謎題,以便此系統(tǒng)運行模型檢查算法為我們解開這些謎題。
Minesweeper(掃雷) :基于知識的智能代理在做出決策時會考慮其知識庫,并根據(jù)這些知識做出推斷。任務是創(chuàng)建一個 AI 代理,收集并分析掃雷游戲中的棋盤信息和知識,從而推斷出地雷的位置。本項目需要安裝 Python pygame 軟件包。
第三講討論了人工智能系統(tǒng)如何處理不確定性,這在處理不完整信息或概率性結(jié)果時是一項關鍵能力。講座介紹了概率論基礎和貝葉斯網(wǎng)絡(Bayesian Networks),用于表示變量之間的關系。它涵蓋了條件概率、隨機變量、獨立性和聯(lián)合概率分布。講座解釋了通過枚舉、抽樣和似然權(quán)重進行推理,以計算復雜場景中的概率。它還探討了用于事件序列的馬爾可夫模型和用于從可觀察數(shù)據(jù)推斷隱藏狀態(tài)的隱馬爾可夫模型(HMM),展示了概率推理如何使人工智能能夠在不確定條件下做出明智決策。
編程項目
PageRank(網(wǎng)頁排名) :實現(xiàn)谷歌 PageRank 算法,計算網(wǎng)頁的重要性。具體應用兩種 PageRank 計算方法 - 1. 通過從馬爾可夫鏈隨機沖浪者網(wǎng)頁中抽樣;2. 通過迭代使用 PageRank 公式。
Heredity(遺傳概率推斷) :任務是利用貝葉斯網(wǎng)絡模擬的基因遺傳模型對人群進行推斷。通過給定信息,AI 將能夠判斷出每個人的基因概率分布,以及測試中性狀表現(xiàn)的概率分布。
此單元模塊專注于尋找復雜問題最佳解決方案的優(yōu)化技術(shù)。它介紹了局部搜索算法,如爬山法和模擬退火(Simulated Annealing),這些算法通過探索相鄰狀態(tài)來迭代改進解決方案。講座涵蓋了優(yōu)化挑戰(zhàn),如陷入局部極值,并探討了克服這些限制的技術(shù)。它討論了線性規(guī)劃和約束滿足問題(CSP),其中 CSP 解決方案必須滿足特定約束。講座演示了回溯搜索、弧一致性(Arc Consistency)和 AC-3 算法等算法,并將這些概念應用于日程安排、地圖著色和數(shù)獨謎題等問題,展示了優(yōu)化算法如何在窮舉搜索不切實際的大型搜索空間中高效找到解決方案。
編程項目
Crossword(填字): 將填字游戲建模為一個CSP,每個方格序列都是一個變量,要求完成一個求解器 - 從給定的詞匯表中為每個變量選擇一個不同的詞,滿足所有的一元和二元約束條件。解決方案的編程要實現(xiàn)回溯搜索和 AC-3 算法。本項目需要安裝 Python pillow 軟件包。
第五講介紹了機器學習基礎,重點關注監(jiān)督學習技術(shù),即計算機從帶標簽的訓練數(shù)據(jù)中學習模式。講座涵蓋了幾種分類算法,包括最近鄰分類、k-最近鄰、感知器學習和支持向量機,每種算法都有自己的決策邊界創(chuàng)建方法。它解釋了用于預測連續(xù)值的回歸分析,并討論了量化預測誤差的損失函數(shù)。講座還討論了過擬合和正則化等重要概念,展示了如何平衡模型復雜性與泛化能力。此外,講座引入強化學習,即代理通過獎勵反饋學習最佳行為,探討了馬爾可夫決策過程和Q-學習算法。最后,它通過k-均值等聚類技術(shù)觸及無監(jiān)督學習,這些算法能在無標簽數(shù)據(jù)中識別模式。
編程項目
Shopping(電子商務購物預測) :任務是建立一個近鄰分類器幫助網(wǎng)站根據(jù)用戶的相關信息確定其購買意圖。項目提供了某個購物網(wǎng)站大約 12,000 個用戶的訪問數(shù)據(jù),以訓練分類器。
Nim(尼姆游戲): Nim 是一種兩個人玩的回合制數(shù)學戰(zhàn)略游戲。項目要求完成一個 AI,應用強化學習的Q-學習算法,反復與自己對弈,最終找到游戲的制勝策略。
第六個單元探討了神經(jīng)網(wǎng)絡,這是一種受人腦生物結(jié)構(gòu)啟發(fā)的計算模型。講座解釋了人工神經(jīng)網(wǎng)絡如何通過互連單元處理信息,這些單元將輸入與加權(quán)連接和激活函數(shù)(如階躍函數(shù)、S型函數(shù)和ReLU)結(jié)合起來。它涵蓋了用于簡單線性決策的感知器模型和用于處理復雜非線性問題的多層神經(jīng)網(wǎng)絡。講座介紹了反向傳播算法作為訓練這些網(wǎng)絡的方法,通過計算誤差和更新權(quán)重。還討論了梯度下降優(yōu)化技術(shù)、防止過擬合的方法(如 dropout)以及 TensorFlow 等實現(xiàn)框架。特別關注了用于計算機視覺的卷積神經(jīng)網(wǎng)絡,解釋了使圖像處理成為可能的技術(shù),如卷積、池化和扁平化。最后,講座介紹了循環(huán)神經(jīng)網(wǎng)絡,作為處理語言翻譯和圖像描述等順序數(shù)據(jù)處理任務的解決方案。
編程項目
Traffic(交通標志識別): 使用 TensorFlow 構(gòu)建一個神經(jīng)網(wǎng)絡,根據(jù)路標圖像對路標進行分類。項目使用德國交通標志識別基準 (GTSRB) 數(shù)據(jù)集,其中包含 43 種不同道路標志的數(shù)千張圖像。
第七個單元模塊考察自然語言處理以及人工智能如何理解和生成人類語言。講座首先介紹了各種自然語言處理任務,如自動摘要、翻譯和語音識別,然后深入探討了語言理解中語法和語義的挑戰(zhàn)。它涵蓋了上下文無關文法和語法樹來表示句子結(jié)構(gòu),并探索了 n-gram 作為捕捉語言模式的詞序列。講座研究了將文本分解為有意義單位的標記化方法,并討論了用于文本生成的馬爾可夫模型。對于文本分類,講座解釋了詞袋模型和樸素貝葉斯分類器,展示了人工智能如何在不理解語法的情況下分析情感。講座解釋了詞表示技術(shù),包括分布式表示和word2vec,展示了人工智能如何捕捉詞語之間的語義關系。最后,介紹了用于語言任務的神經(jīng)網(wǎng)絡架構(gòu),包括具有注意力機制的循環(huán)神經(jīng)網(wǎng)絡和transformer模型,這些模型通過實現(xiàn)語言數(shù)據(jù)的并行處理,徹底革新了自然語言處理領域。
編程項目
Parser(句法解析器): 任務是編寫一個 AI 來解析句子并提取名詞短語,需要使用無上下文語法形式來解析英語句子,以確定其結(jié)構(gòu)。本項目需要安裝 Python 自然語言工具包 ntlk。
Attention(注意力機制): 項目有兩個任務 - 1. 使用人工智能軟件公司 Hugging Face 開發(fā)的 transformers Python 庫,編寫一個使用 BERT 預測遮蔽詞的程序。該程序還將生成可視化注意力分數(shù)圖表,144 個注意力頭各生成一個圖表;2. 分析程序生成的圖表,試圖了解 BERT 的注意力頭在試圖理解我們的自然語言時可能會注意什么。
本博主于2024年度完成了這一在線課程??偟膩碚f,CS50AI 作為人工智能的入門課程非常出色,其課程安排結(jié)構(gòu)清晰、涵蓋內(nèi)容全面,在理論理解和實踐實現(xiàn)之間取得了很好的平衡。它采用的項目驅(qū)動式學習(Project-Based Learning)是一大亮點,通過 12 個 Python 編程項目鞏固理論知識并進行實戰(zhàn)應用。CS50AI 特別適合
想要專攻人工智能的計算機科學學生
希望將人工智能納入技能組合的在職軟件開發(fā)人員
任何尋求系統(tǒng)化方式學習人工智能基礎的人
具體在課程準備、學習進度、時間安排和項目完成上,下面總結(jié)一些個人經(jīng)驗和體會:
課程準備
對完全沒有編程經(jīng)驗的人來說,CS50AI 的學習節(jié)奏可能具有挑戰(zhàn)性。因此,建議一定要先快速入門 Python,達到可以舒適地閱讀與理解簡單的程序代碼、編寫 Python 簡短應用函數(shù)的水平。本課程的數(shù)學基礎要求其實不高,但如果你已經(jīng)忘記了大學一二年級所學的高等數(shù)學和工程數(shù)學的基本知識,就需要補充學習。當然,回頭去看大學的教科書是不實際的。許多 AI 的入門書籍,包括前面推薦的《人工智能:現(xiàn)代方法》,都提供了講解數(shù)學基礎的附錄,非常值得復習。
還可以準備一些 Python 編程和相關數(shù)學知識的小抄(cheatsheet),打印放在手邊隨時查閱,非常方便。網(wǎng)上有許多現(xiàn)成的小抄以供下載,或者匯編組合自己覺得最重要的內(nèi)容,生成定制小抄。
進度安排
對于 Python 編程經(jīng)驗豐富、數(shù)學基礎好的在校學生,如果能夠付出每周20+小時學習 CS50AI,在一個月內(nèi)突擊學完課程所有內(nèi)容并做完全部項目應該問題不大。如果你是和博主一樣的在職人員,無法全日制地學習,可以考慮安排周末的時間。如果能做到周末兩天每天集中6-8個小時學習和做編程項目,那么一個月內(nèi)完成兩個單元是可行的進展方案。這樣整個課程就可以在四個月內(nèi)結(jié)束。
項目經(jīng)驗 工具程序 CS50AI 課程屬于哈佛大學 CS50 在線課程系列的一部分。所用這些課程的編程項目共享一組CA50 工具程序:
check50:用于檢查項目代碼的測試工具。學習者可以使用 check50 本地測試項目代碼。如果測試未通過,可以查看記錄調(diào)試排錯。
style50:一個命令行工具,用它來檢查你的代碼是否與PEP 8 - Python 代碼風格指南一致。
submit50:一個命令行工具,用于提交課程項目作業(yè),可以多次提交以更新。
這些工具程序的運行示例如下(對于不同的項目,只需更換項目名稱即可):
1
2
3
check50 ai50/projects/2024/x/degrees
style50 degrees.py
submit50 ai50/projects/2024/x/degrees
當運行 check50 工具進行測試時發(fā)現(xiàn)錯誤,調(diào)試需要參考測試用例時,可以去 CS50AI 項目的測試代碼倉庫 查閱各個項目的實際測試用例。也可以在本機的~/.local/share/check50/ai50/projects/目錄下找到同樣的測試文件,比如第一個項目Degrees的測試用例位于
1
~/.local/share/check50/ai50/projects/degrees/__init__.py
項目編程
在開始項目編程前,建議先完整地閱讀所提供的代碼,對整個程序框架有一個完整的了解。一些項目可以直接參考講座中的演示代碼(可從課程網(wǎng)站下載)。
如果被某個項目的排錯調(diào)試困住,可以求助各個社交網(wǎng)絡的 CS50AI 討論群(Discord、Slack 等)或者 CS50 AI 助手 。如果實在無法厘清思路,不知從何處著手,可以參考一些項目完成后的代碼倉庫,比如本博主的 GitHub CS50AI代碼倉庫 。即使是這樣,最好在看懂別人的答案后自己整理好思路,然后閉卷重新實現(xiàn)一下。 ??請不要直接復制代碼,因為這樣做使得項目實踐乃至整個課程學習失去意義。
項目總結(jié)
最后給出 CS50AI 12 個項目的總結(jié)比較(備注欄給出編程實現(xiàn)時的一些提示,以供參考):
項目名稱 學習單元 技術(shù)領域和算法 難度 備注 Degrees 搜索 圖搜索(BFS),F(xiàn)IFO 隊列 ★★ 使用隊列實現(xiàn)BFS,留意特殊情況 Tic-Tac-Toe 搜索 對抗性搜索,Minimax 和 Alpha-beta 剪枝 ★★ 從狀態(tài)評估開始,遞歸實現(xiàn) Minimax Knights 知識推理 命題邏輯,模型檢查 ★★ 注意分解復雜語句 Minesweeper 知識推理 知識庫,邏輯推理 ★★★ 使用遞歸,持續(xù)更新安全格子和地雷的集合 PageRank 概率推理 馬爾可夫鏈,PageRank 公式迭代 ★★★ 實現(xiàn)給定的隨機搜索和迭代公式 Heredity 概率推理 概率分布,貝葉斯網(wǎng)絡 ★★★ 使用聯(lián)合概率表,謹慎處理條件式 Crossword 優(yōu)化 約束滿足問題,回溯搜索和 AC-3 算法 ★★★★ 高效使用回溯,優(yōu)化約束檢查 Shopping 機器學習 監(jiān)督學習技術(shù),近鄰分類器 ★★★ 注重特征選擇和數(shù)據(jù)預處理 Nim 機器學習 強化學習(Q-學習) ★★★ 從基礎Q-學習開始,實現(xiàn)探索策略 Traffic 神經(jīng)網(wǎng)絡 TensorFlow,計算機視覺(CNN) ★★★★ 從簡單的 CNN 架構(gòu)開始,逐步優(yōu)化 Parser 自然語言處理 語法解析,規(guī)則處理 ★★★ 標記化細分和樹構(gòu)建 Attention 自然語言處理 注意力機制,Transformer,BERT ★★★★★ 首先關注 TF-IDF 和查詢處理
學習 CS50AI,讓你的 AI 職業(yè)成長之旅從這里開始!
本文作者: 子曦
本文鏈接: https://www.packetmania.net/2025/02/16/Harvard-CS50-AI-intro/
版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 BY-NC-ND 許可協(xié)議。轉(zhuǎn)載請注明出處
熱門跟貼