系列[MIT 6.7960 Deep Learning](https://deeplearning6-7960.github.io/) 有兩個公開程度截然不同的官方版本:Fall 2025 課站 21 講投影片全公開但 psets 在 Gradescope、解答與錄影鎖在 Canvas(A2);[MIT OCW 的 Fall 2024 版](https://ocw.mit.edu/courses/6-7960-deep-learning-fall-2024/)連影片、五份作業題目與起始檔都開放(接近 A3)。兩版綱要重疊約六成,講師從 Isola/Bernstein 換成 Kaiming He/Omar Khattab,不能拿舊影片硬配新講義。本文給出按目的分流的兩條自學路線。
本講是 6.7960 的導論:deep learning 之所以爆發是『資料 + 算力 + 演算法』三股力量同時到位;本課從架構(CNN/GNN/Transformer)到訓練、表示、生成、遷移、規模、LLM 一路串起來;最後用一個 ~30 行的 PyTorch training loop 確認你的環境能跑。
反向傳播不是新的數學,是把連鎖律裡各層共用的那一段只算一次。線性層的前向是乘 W、反向是乘 W 的轉置、權重梯度是「輸入 × 回傳的梯度」;計算圖分岔時梯度相加,所以共用參數的梯度也是相加。文末用一個 2-2-1 的小網路手算一次更新,損失從 0.0175 降到 0.0076。
單層網路理論上能逼近任何連續函數(萬能近似),但寬度會隨維度指數爆炸;Barron 定理在特定的『Barron 函數類』下讓誤差只隨樣本數 √n 收斂、與維度脫鉤;而深度能對組合/階層函數帶來指數級的寬度節省——這正是深網比淺網強的根本原因。
從 SGD 到 Adam,用縮放規則一次搞懂深度學習優化器怎麼選、學習率怎麼調
正則化不只是防過擬合——Weight Decay、Dropout、BN、Label Smoothing 的機制與組合策略一次看懂
手寫 NumPy MLP + 反向傳播 → PyTorch Autograd 驗證,完整複現 OCW HW1 核心考點
Lec 4 核心重點:為什麼 CNN 是處理網格資料的最佳選擇——卷積、平移等變性、池化與經典架構一次掌握
ResNet 用殘差連接解決退化問題,讓網路能堆到 100+ 層;EfficientNet 複合縮放平衡深度/寬度/解析度;ConvNeXt 吸收 Transformer 設計重奪 CV 王座。
GNN 本質是「在圖上做局部訊息傳遞的 MLP」:它把 CNN 的固定網格鄰居推廣成任意拓撲的鄰居聚合。它必須滿足置換等變/等變性。理論上,一階 GNN 的表達力不超過 Weisfeiler–Lehman 圖同構測試——有些結構它永遠分不出來,這也是後來 GIN、位置編碼、子圖技巧要補的洞。
參數數量與 VC 維度都解釋不了深度網路的泛化:網路能把隨機標籤背到 100%,VC 界因此變成沒有資訊的空話;參數加到超過插值門檻後測試誤差反而再降一次。Isola 的解釋是「擬合資料以外還有別的壓力」,他認為最重要的是架構內建的對稱性與組合性。這個問題到現在還沒有定論。
優化不是孤立的數值問題:用譜視角看 SGD,權重更新的『量』決定特徵學習;Maximal Update Parameterization 讓學習率與初始化跨寬度遷移,critical batch size 決定算力換取收斂的邊際。
Transformer 不是憑空冒出的架構:token 把資料切成離散單元,attention 做軟性的訊息聚合,positional code 補回順序。把它和 MLP/CNN/GNN 擺在一起看,會發現它們都是『對鄰居做加權彙整』的不同特例。
訓練神經網路更像工程而非魔法:先看資料、先在小批次上過擬合證明容量夠、再用正則化把泛化補回來;學習率永遠是影響最大的那顆旋鈕。
RNN 沿時間傳遞隱狀態,梯度連乘可能衰減或放大;LSTM 以門控制 cell state 的保留與更新,改善長程訊號傳遞但不保證穩定。Self-attention 縮短位置間的資訊路徑,單層 dense attention 的總計算仍隨序列長度平方成長。
表示學習的目標是把原始資料壓成「好用」的向量:自編碼器用重建逼出有意義的潛空間,VQ 把連續表示離散化成碼本,自監督則用『遮住一部分再重建』來免費產生監督訊號。
相似性式表示學習不重建輸入,而是直接塑造潛空間的幾何:讓同類表示靠近、異類推遠。InfoNCE 把這件事寫成『在一堆負樣本裡認出正樣本』的分類問題,而 alignment / uniformity 給了它可解釋的評價指標。
把網路變寬到極限,它的隨機初始化輸出會變成一個高斯過程(NN–GP),而訓練動態則由神經切線核(NTK)固定下來。這套理論不只能用來分析,還反過來指導我們設計『對的歸納偏置』。
生成模型本質是在學資料的分佈 p(x)。密度模型直接建模機率,能量模型用一個未歸一化勢能 + 採樣器,GAN 讓判別器逼出逼真樣本,自回歸一步步預測下一個 token,擴散則用『逐步加噪再學去噪』繞開棘手的最大似然。
VAE 的核心是 ELBO + 再參數化:把 log p(x) 替成 E_q[log p(x|z)] − KL(q(z|x)‖p(z)),encoder 輸出 μ/σ 用 z = μ + σ⊙ε(ε ~ N(0,1))讓採樣可反向傳播。訓練 = 重構 + KL 兩項拉扯,由此衍生 β-VAE、posterior collapse、VQ-VAE 等修正。
條件生成的關鍵是「把 y 餵進模型」:cGAN 在 G/D 拼接 y,cVAE 把 y 當額外輸入進 encoder/decoder;擴散模型時代,Classifier Guidance 用外部分類器梯度把生成推向指定類別,Classifier-Free Guidance 則同訓練 conditional + unconditional 並在推論時線性組合兩者——後者是 Stable Diffusion / Imagen 的標準武器。
OOD 失敗不是 bug,是 i.i.d. 假設破掉:covariate shift(影像風格變了)、label shift(類別比例變了)、concept shift(同一個詞意思變了)各有對應的應對方式;最常見的原因是模型抓了『虛假相關』(用草原當牛的存在訊號),IRM 與 domain randomization 想從訓練資料結構本身把這件事修掉,test-time adaptation 在推論時即時修正。
遷移學習的核心是『在大資料上學到的特徵是好的通用表示』:下游任務資料少時,把 backbone 凍住只訓練線性 head;資料夠就全模型微調;想省算力就上 LoRA / adapter。SimCLR、MAE 這類自督導預訓練讓『上游不需要標籤』,下游表現又上一層樓。
生成模型加上它的潛在空間可以當成一份能操作的資料:沿潛在方向移動可以產生反事實影像、少量人工標註可以擴成整份分割資料集(一張標註過的 GAN 影像約抵 100 張一般標註影像)。但用生成資料訓練表示目前仍輸給真實資料(課堂引的數字是 42.6% 對 43.9%),而且稀有類別正好是生成模型最不可靠的地方。
測試損失對資料量、參數量、算力都近似冪律,但指數很小:Kaplan 等人量到的資料指數約 0.095,資料加倍只讓損失降 6%,要砍半得多 1,400 多倍。算力該怎麼分,兩篇論文答案不同:Kaplan 是參數 ∝ C^0.73、資料 ∝ C^0.27,Chinchilla 改成各約一半。公開錄影只涵蓋到第二個發現,後面的內容本文依投影片整理,沒有講者的口頭說明。
語言模型只做一件事:給前文,輸出下一個詞的機率分布。規模夠大之後,控制它的手段變成改輸入:放幾組範例(in-context learning)、要它先寫推理步驟(chain-of-thought,課堂引的例子是一句 Let's think step by step 把算術題正確率從 18% 拉到 80%)。但聽懂指令、會說不知道,都不是光靠預測下一個詞就會有的,要另外用 instruction tuning 與 RLHF 補。
梯度下降等於假定權重空間是歐氏的,而神經網路多半不是。Bernstein 的做法是替每一層選一個範數(線性層用依形狀縮放的譜範數),再用兩條組合規則算出整個網路的範數;用它正規化更新,最佳學習率就不隨寬度與深度漂移。把同一個想法推到對偶映射,線性層的更新變成「把梯度的奇異值全設為 1」,這也是當時 nanoGPT 訓練速度紀錄用的做法。
訓練完的模型不是只能做一次前向傳遞。貪婪取樣不保證找到模型認為最可能的序列(本文的例子裡它拿到 0.30,最佳是 0.36),所以多取樣幾次挑最好的就會進步;評分標準換成驗證器,還能挑出真的對的答案。再把搜尋到的好答案拿回去訓練模型,就是 AlphaGo 與 STaR 的迴圈,Isola 推測 o1 也是這樣做的。