Skip to content
系列
11 篇文章

Harvard CS50 Introduction to Artificial Intelligence with Python 導讀

逐講讀 Harvard CS50 AI with Python:搜尋、知識表示、機率、機器學習、神經網路與語言模型的公開教材與作業。

人工智慧入門:七週從搜尋、邏輯、機率走到神經網路與語言|Harvard CS50 AI 課程總覽

CS50 AI 用七週、十二個 Python 專案走過人工智慧的入門內容:搜尋、邏輯推論、機率、最佳化、機器學習、神經網路與語言。前四週的方法靠人把問題寫清楚,後三週讓電腦從資料裡學。講課、筆記、專案與自動評分都對校外免費開放。這篇是本系列的入口:七週各教什麼機制、一個可以跟著算的例子、先備檢查與閱讀路線。

Search——從 DFS、BFS、A* 到 Minimax 與 Alpha-Beta 剪枝|Harvard CS50 AI 第 0 週

第 0 週講搜尋:DFS 與 BFS 只差在 frontier 用 stack 還是 queue;A* 把已走步數加上啟發式估計,啟發式不高估時能保證最短路;Minimax 讓雙方輪流取最大與最小值,Alpha-Beta 剪掉不會影響結果的分支。附逐段時間連結,以及 Degrees、Tic-Tac-Toe 兩個專案的解題思路、易錯處與檢查方式;參考實作摺疊在各專案最後。

Knowledge——命題邏輯、模型檢查、推理規則與知識表示|Harvard CS50 AI 第 1 週

第 1 週講怎麼讓程式依已知事實推出新事實:用命題符號與五個連結詞把知識寫成句子;model checking 列舉全部 2 的 n 次方種真假組合來判斷知識庫是否蘊涵某個查詢;推論規則與 resolution 改成直接操作句子,先轉成 CNF,再用反證法推出空子句;一階邏輯用常數、述詞與量詞減少符號數量。附逐段時間連結,以及 Knights、Minesweeper 兩個專案的解題思路、易錯處與檢查方式(參考實作摺疊)。

Uncertainty——機率、貝氏網路、馬可夫模型與遺傳推斷|Harvard CS50 AI 第 2 週

第 2 週講機率:條件機率與貝氏法則把證據換算成機率;貝氏網路用箭頭把聯合機率拆成每個節點的條件機率表,列舉推論算得精確但慢,拒絕取樣與概似加權用樣本近似;馬可夫鏈用轉移模型描述隨時間變化的狀態,隱藏式馬可夫模型再加上感測模型,從觀察反推看不到的狀態。附逐段時間連結,以及 Heredity、PageRank 兩個專案的解題思路與檢查方式。

Optimization——局部搜尋、模擬退火、約束滿足問題與填字遊戲|Harvard CS50 AI 第 3 週

第 3 週講最佳化的三種寫法:局部搜尋只記一個 state,hill climbing 往更好的鄰居走、會卡在局部極值,模擬退火用 e^(ΔE/T) 的機率接受變差的一步;線性規劃把問題寫成線性成本函數加線性限制,交給現成的求解器;約束滿足問題用 node consistency、arc consistency(AC-3)縮小 domain,再用回溯搜尋配合 MRV、degree、least-constraining value 三個 heuristic 找解。附逐段時間連結,以及 Crossword 專案的解題思路、虛擬碼、易錯處與檢查方式(參考實作摺疊在最後)。

Learning——監督式學習、k-NN、SVM、強化學習 Q-learning 與 Nim|Harvard CS50 AI 第 4 週

第 4 週講機器學習的三種形式。監督式學習從有標籤的資料學出 hypothesis function:分類可以看最近的 k 個鄰居,或用一組權重畫出決策邊界(perceptron learning rule、logistic regression、support vector machine),再用損失函數、regularization 與 cross-validation 對付 overfitting。強化學習用 Q-learning 依 reward 更新每個 state 與 action 的估計值,ε-greedy 留一點機率隨機探索。非監督式學習以 k-means 分群。附逐段時間連結,以及 Shopping、Nim 兩個專案的解題思路與檢查方式。

Neural Networks——反向傳播、TensorFlow/Keras、CNN 與交通號誌辨識|Harvard CS50 AI 第 5 週

第 5 週講神經網路:一個 unit 把輸入乘上權重、加 bias、再過 activation function;梯度下降一小步一小步調權重,隱藏層靠 backpropagation 把誤差往回分;影像先做卷積與 pooling 再接一般網路,就是 CNN;序列資料用 RNN 把輸出餵回自己。附逐段時間連結,以及 Traffic 專案的解題思路、易錯處與檢查方式。

Language——N-gram、Parser、Attention 與 Transformer|Harvard CS50 AI 第 6 週

第 6 週講電腦怎麼處理自然語言:先用 context-free grammar 手寫規則剖析句子,再改用統計,從 n-gram、Markov chain 生成文字到用 Naive Bayes 判斷評論的正負;接著用 word2vec 把詞變成向量,用 RNN 的 encoder–decoder 處理整個序列,最後是 attention 與 Transformer。附逐段時間連結,以及 Parser、Attention 兩個專案的解題思路、容易出錯的地方與檢查方式。

跨週整理(一):七週的想法怎麼互相銜接與取代|Harvard CS50 AI 主題單元

把七週放在一起看的三種關係:同一個想法在後面的週再出現(馬可夫鏈從第 2 週用到第 4、第 6 週,權重的線性組合從第 4 週變成第 5 週的 unit);前一週的工具是後一週的前提;講課先教一個做法、指出它不夠用、再換下一個。附三個跨週例子與四題跨週自我檢查。

跨週整理(二):十二個專案各用到哪一段講課|Harvard CS50 AI 主題單元

把十二個專案放在一起看:每個專案要寫哪些函式、用到哪一節講課、規格頁給了什麼可以對答案的例子;哪些專案用的是同一種做法(列舉、搜尋、馬可夫鏈、從資料學)、哪些專案要用的東西講課沒有教。附三個算到底的例子與五題自我檢查。官方沒有標難度與時數,本文也不給。

課程回顧與後續路線:七週教了什麼、沒教什麼、接著讀哪裡|Harvard CS50 AI 主題單元

系列最後一篇:用一張表回顧七週各教了什麼、做了哪些專案;課程在 2023 年把第 6 週換成講到 attention 與 Transformer 的新版,其餘六週仍是 2020 年的錄影;講課沒有教怎麼使用今天的語言模型。後半依你想往哪裡走,連到站上九門後續課程的總覽。附三題回顧自我檢查。