深度學習中為什麼需要「微分」?(線性代數?)



1. 引言:開發者的合理懷疑

學習深度學習時,你會遇到兩位數學大師——線性代數(Linear Algebra)微分(Calculus)。作為開發者,這裡有個常見的疑問。

「不,名字就說是『線性』代數。y = ax + b 的形式,1 次函數微分後只剩常數 a,還需要微分嗎?直接解方程就能得到答案吧?」

如果模型真的完全線性,微分與否都無關,直接做矩陣逆運算就能得到答案。

但我們面對的實際問題並非如此簡單。今天,我們用開發者的語言,說明為什麼「微分」這個看似複雜的工具是必不可少的。

2. 微分 = 「改變這個設定,結果會怎樣?」(敏感度檢測)

把微分視為一種系統運營的觀點。

想像你正在調優一台擁有數千個設定旋鈕的大型黑盒伺服器。

  • 目標:將伺服器回應時間(Loss)降到接近 0。
  • 問題:不清楚哪個旋鈕該轉動,旋鈕之間相互交織。

此時「做微分」就是一件非常簡單的事。

「把第 1 個旋鈕往右轉 0.001mm,回應時間變快了嗎?變慢了嗎?」

這個問題的答案就是微分值(斜率)

  • 微分值為 正數 (+)? 👉 「轉動會變慢,反方向再轉!」
  • 微分值為 負數 (-)? 👉 「轉動會變快,往這個方向再轉!」
  • 微分值為 0? 👉 「轉動不會改變,可能已經是最優點或該旋鈕無關緊要。」

最終,微分在深度學習中不是解數學問題,而是「告訴你為了減少誤差,應該朝哪個方向調整參數」的指南針。

3. 為什麼不能一次用方程式解決?(非線性魔法)

回到最初的疑問:「如果是線性,直接解就行了?」

深度學習之所以強大,是因為在線性運算(矩陣乘法)之間插入了 ReLUSigmoid非線性函數(Activation Function)

  • 只有線性:不管層數多深,最終仍等同於一次大矩陣乘法(y = a(b(cx)) 會化簡為 y = abcx)。
  • 混入非線性:圖形不再是直線,而是曲折的山脈。單一方程無法「啪」地求得最優解,變成複雜的地形。

因此,我們放棄一次性求解,選擇微分這把「杖」來逐步下降(梯度下降法)。這就是深度學習訓練的核心。

4. 向量微分?就是「一次檢查千萬個設定」

「向量微分」聽起來很複雜?用開發者的語言來說,就是批量處理(Batch Processing)

如果參數只有一個,簡單的標量微分即可;但現在的模型參數已達數十億(LLM 等)。逐個調整根本不可行。

向量/矩陣微分(Gradient)一次性處理所有這些參數。

「現在所有 70 億個參數都要!各自微小移動,結果會怎樣?」

這一大堆報告就是梯度向量(Gradient Vector)。PyTorch 用 GPU 來一次性計算這個龐大的報告。

image

5. 結語:下一步是「反向傳播(Backpropagation)」

現在我們知道微分是「告訴你減少誤差的方向」的指南針。深度學習模型有數十、數百層,如何有效地傳遞這個方向呢?

  • 要減少輸出層的誤差,必須先修正前一層;
  • 再修正前一層,還要修正更前面的層……

這種連鎖的微分計算,通過高效的算法稱為反向傳播(Backpropagation)

下一篇文章將說明反向傳播如何用鏈式法則(Chain Rule)一次穿透這麼深的神經網路,並展示其優雅的機制。