怎麼訓練神經網路:反向傳播其實是在省重複計算|MIT 6.7960 第 2 堂
反向傳播不是新的數學,是把連鎖律裡各層共用的那一段只算一次。線性層的前向是乘 W、反向是乘 W 的轉置、權重梯度是「輸入 × 回傳的梯度」;計算圖分岔時梯度相加,所以共用參數的梯度也是相加。文末用一個 2-2-1 的小網路手算一次更新,損失從 0.0175 降到 0.0076。
反向傳播不是新的數學,是把連鎖律裡各層共用的那一段只算一次。線性層的前向是乘 W、反向是乘 W 的轉置、權重梯度是「輸入 × 回傳的梯度」;計算圖分岔時梯度相加,所以共用參數的梯度也是相加。文末用一個 2-2-1 的小網路手算一次更新,損失從 0.0175 降到 0.0076。
這堂課從一個定理出發:能用 N 個基本運算算出來的純量函數,梯度也能在 O(N) 時間算完。做法是把鏈鎖律讀成「拿到 ∂J/∂u 就能算 ∂J/∂z,而且只需要中間那個模組的資訊」,再替矩陣乘法與啟動函數各推一個 backward 函數:Wᵀv、vzᵀ、σ′(z)⊙v。本文另外用一個 2-2-1 的小網路把前向與反向手算一遍。
一句「我喜歡貓」不是三個互不相干的字。
L05 用一個四層的情感分類網路當主線,先把計算表示成計算圖、用拓撲排序算出前向值,再用連鎖律與向量–Jacobian 乘積反向傳回梯度,最後拆解 TensorFlow v1 的 placeholder、variable、operation 與 session。投影片有一頁直接標著「important for HW2」。
11-868 第二份作業分三塊:自動微分的 topological_sort 與 backpropagate(40 分)、Linear 層與 MLP 網路(30 分)、binary cross entropy 與訓練迴圈(30 分),最後在 SST-2 上用 GloVe 詞向量訓練情感分類器,驗證準確率要到 75%。預設後端是你作業一寫的 CUDA kernel;repo 已在 2026-09-02 合併了 Fall 2026 的小修正。
L4 前半把線性分類器 f = Wx 換成兩層網路 f = W₂ max(0, W₁x),說明拿掉 max 這個激活函式就會退回線性分類器。後半回答網路變深之後梯度怎麼算:把函式畫成計算圖,每個節點只要知道自己的本地梯度,再乘上從後面傳回來的上游梯度。add 分配梯度、mul 交換、max 路由、copy 相加,四個模式就能追蹤任何網路。最後推到矩陣:dL/dx 永遠和 x 同形狀,所以不要真的建出 Jacobian。
訓練一個模型要回答三個問題。模型是什麼:一層層的神經元,每層是 z = Wa + b 再經過非線性的 activation;一個神經元只能畫一道分界,所以做不了 XOR,疊層才行。什麼叫好的函數:定一個 loss,值越小越好。怎麼挑出最好的:gradient descent 每次看腳下的斜率走一步,實務上用 mini-batch SGD。參數有上百萬個,梯度靠反向傳播算:forward 一趟存下每層的輸出,backward 一趟從輸出層往回算 δ,兩者相乘就是每個權重的梯度。文中用數字各走了一次。
感知器的線性組合做得出 AND、OR,做不出 XOR;再疊一層就可以,這就是多層感知器。這堂課把中間的 sign 換成 tanh、輸出層接線性迴歸,再用連鎖律推出反向傳播:先正向算出每一層的輸出 x,再從輸出層往回算 δ,每個權重的梯度就是前一層的 x 乘上這一層的 δ。最後處理訓練的兩個麻煩:E_in 非凸,初始權重要小而且隨機;d_VC 大約是 O(VD),要靠 weight elimination 與提早停止防過擬合。
HW3 分兩半:書面四題從 logistic regression 的 Newton 法、座標下降的收斂分析,走到反向傳播/VJP/隱式微分,最後用資訊瓶頸重新看「深度網路在壓縮什麼」;notebook 要你用 NumPy 寫出 BearTensor 計算圖、拓撲排序反向傳播、SGD/Momentum/Adam,再拿它訓練紅酒品質回歸,選做 Muon。題目與 notebook 全部公開,官方解答與 hidden tests 不公開。
Lec 17 用 XOR 說明為什麼線性模型、甚至多層線性模型都學不會非線性邊界,只要一層 ReLU 就能解;萬能近似定理保證「存在」,但不告訴你怎麼找權重、要多寬。Lec 18 把 chain rule 系統化成計算圖上的反向傳播:多條路徑的梯度相加,成本和參數數量成線性,有限差分則是平方。Discussion 8 讓你親手證明 GD 收斂速率與一維 ReLU 萬能近似。
CS181 Spring 2026 的 HW3(due 3/23)三題 100 分:先把多項式與 RBF kernel 拆回特徵映射、從 ridge 推到 dual 係數 α 與 support vector 直覺;再手推兩層 sigmoid 網路的 backprop;最後佔一半分數的是在 Fashion-MNIST 上訓練 ResNet,自己量出 scaling law,用 C≈6ND 推算固定算力下模型與資料該怎麼分。
第 5 週講神經網路:一個 unit 把輸入乘上權重、加 bias、再過 activation function;梯度下降一小步一小步調權重,隱藏層靠 backpropagation 把誤差往回分;影像先做卷積與 pooling 再接一般網路,就是 CNN;序列資料用 RNN 把輸出餵回自己。附逐段時間連結,以及 Traffic 專案的解題思路、易錯處與檢查方式。
手寫 NumPy MLP + 反向傳播 → PyTorch Autograd 驗證,完整複現 OCW HW1 核心考點
模型透過 loss 知道自己錯多少,透過梯度知道往哪邊調。梯度下降就是反覆做三件事:算 loss、算梯度、調參數。Learning rate 決定每步調多大——太大會跳過最佳解,太小訓練到天荒地老。
Lecture 12 把神經網路視為 computation graph:forward pass 保存中間量,backward pass 從 loss 開始傳遞 upstream gradient,並用線性層、activation 與 softmax 的局部規則一次算出全部參數梯度。
第 3 講把神經網路訓練拆成計算圖、局部導數與鏈鎖律:forward pass 算結果,backprop 由輸出往回累積梯度,讓每個參數知道自己該往哪裡移。
HW5 的價值在於不靠自動微分,親手追蹤 forward shapes、cache 與 backward gradients。