學習目標:鏈式法則給出一串連乘。損失是純量,所以從它那一端開始乘,中間產物永遠是向量——一趟就拿到全部參數的梯度。從輸入端開始乘則要走 P 趟(P=參數個數)。下圖是另一件事:有限差分的精度有一個下限,而它不在 h → 0

縱軸 log:一次梯度所需的時間對參數個數(log-log)。反向傳播 vs 有限差分

縱軸 log:中央差分的相對誤差對 h(log-log 的 V 形);兩條斜線=截斷誤差 ∝ h² 與捨入誤差 ∝ 1/h

參數個數 P = 反向傳播(一趟) = 有限差分(2P 趟) = 倍數 = 目前 h 的相對誤差 =

觀察:反向傳播那條線幾乎水平(一趟就結束,與參數個數無關),有限差分那條線性往上——參數越多差越多。下圖的 V 形是兩種誤差的加總:h 太大時截斷誤差 ∝ h²,h 太小時捨入誤差 ∝ 1/h,谷底大約在 h = 10⁻⁵。打開「故意漏乘激發函數的導數」,整條 V 抬到 10⁻¹ 的量級——這就是 gradient checking 抓得到的東西。