L4.0 17 分鐘閱讀 2026年9月

L4.0 什麼都能擬合,那為什麼還需要別的架構?

本篇重用M0.0霧中下山:Gradient 與方向·M0.3漂流的溫度計:全導數、微分穿過積分與 JVP

起點:一台夠多層的計算機

L0 到 L2 一路上,「模型」都只是「有參數可以調的東西」——多項式基底、或一個兩層的 tanh\tanh 網路。它長什麼樣子從來沒被問過。

而確實有一個定理讓人覺得不必問。universal approximation(Cybenko 1989)說:只要一個隱藏層、夠多的單元、一個非線性的激發函數,就能把任何定義在有界區域上的連續函數逼近到任意精度。

這句話讀起來像是把問題關掉了:既然一種架構什麼都能做,剩下的就只是把它放大。

但真實世界完全不是這樣走的。過去十幾年真正推動進展的幾乎都是架構——卷積、殘差、注意力——而不是「把 MLP 加寬」。如果 MLP 什麼都能擬合,這些東西在買什麼?

一個夠寬的 MLP 能逼近任何函數,
那為什麼幾乎沒有人拿純 MLP 去做影像?
那個定理少講了什麼?

課堂提問Q1

把 universal approximation 寫清楚:它到底保證了什麼?把它和我們真正要的東西逐項對照——哪幾件事它沒說?

先想一想,再展開看整理後的答案

定理說的。 對任何連續的 f:[0,1]dRf:[0,1]^d\to\mathbb R 與任何 ε>0\varepsilon>0,存在一個寬度 hh 與一組參數 θ\theta,使得

supx[0,1]dfθ(x)f(x)<ε.\sup_{x\in[0,1]^d}\big|f_\theta(x)-f(x)\big|<\varepsilon .

注意那兩個字:存在。它是一個關於假設空間 F\mathcal F 有多大的敘述——用 房仲怎麼估價:從例子學規則 的語言,它說的是 approximation error 可以被壓到任意小

它沒說的三件事,剛好就是 L0 到 L2 整段的內容。

  1. 要多寬。 定理不給 hh 的上界。對某些函數(例如高頻振盪的),需要的寬度隨精度指數成長。「存在一個網路」和「存在一個你負擔得起的網路」是兩回事。
  2. 學不學得到。 定理是一個存在性敘述,它不說梯度下降會不會找到那組參數。同一張地圖從不同地方出發:損失曲面與初始化 已經看過:能表示不等於能走到。本篇會把這個缺口量出來——同一個網路、同一組超參數,只換目標的頻率,訓練 MSE 從 0.00000.0000 變成 0.38750.3875
  3. 泛不泛化。 就算學到了,那也只是在訓練點上。十個房仲各看一百間房:Bias 與 Variance 說 approximation error 壓到零的代價是 variance——本篇的寬度掃描會看到訓練誤差一路降而真實風險反而上升。

所以定理關掉的只是三個問題裡的第一個。 而架構真正在做的事,是把後兩個變容易——它不是在擴大 F\mathcal F,多半是在縮小它,只是縮得剛好把真相留在裡面。

架構就是一個先驗

把架構想成一句話:「我事先相信答案長這樣。」

  • MLP:我什麼都不相信。任何一個輸入座標和任何一個其他座標的關係,一開始都一樣可能。
  • 卷積:我相信「局部」與「平移之後還是同一件事」。
  • 注意力:我相信「哪些位置彼此相關,要由內容決定」。
  • 殘差:我相信「這一層多半只需要對前一層做小修正」。

這些相信是有代價的:相信錯了,真相就不在 F\mathcal F 裡(bias 變大)。相信對了,回報很大——同樣的資料量能學到的東西多得多,因為候選函數少了,資料就更能把它們區分開背考古題的學生:過擬合與欠擬合 說過那正是過擬合的來源)。

MLP 在這個座標上是一個端點:它的先驗幾乎是空的。而「幾乎沒有先驗」聽起來很中立,其實不是——本篇最後會看到它其實內建了一個相當強的先驗(對頻率的偏好),只是那個先驗和影像、語言的結構沒什麼關係。

加寬買到什麼、付出什麼

先把 universal approximation 的第一個缺口量掉:加寬到底買到多少 approximation error?

共用 toy(n=30n=30)、1hh11\to h\to h\to1tanh\tanh 網路、Adam η=0.01\eta=0.01 跑 4000 步,每個寬度 5 個 seed 取中位數:

  h=   2  參數     13  訓練 0.0140   真實風險 0.0285
  h=   4  參數     33  訓練 0.0132   真實風險 0.0286
  h=   8  參數     97  訓練 0.0084   真實風險 0.0443
  h=  16  參數    321  訓練 0.0039   真實風險 0.0447
  h=  32  參數   1153  訓練 0.0033   真實風險 0.0454
  h=  64  參數   4353  訓練 0.0030   真實風險 0.0478
  h= 128  參數 16897  訓練 0.0026   真實風險 0.0440

訓練誤差單調下降(0.01400.00260.0140\to0.0026),真實風險在 h=4h=4 之後就開始變差0.02860.04780.0286\to0.0478)。而且 h=2h=2 的真實風險 0.02850.0285 已經很接近不可約誤差 0.02250.0225——兩個參數的隱藏層就夠了,再加寬買到的全是 variance。

這正是 背考古題的學生:過擬合與欠擬合 的 U 形,只是旋鈕從多項式次數換成網路寬度。universal approximation 保證的那個「夠寬」,在只有 30 筆資料的時候是一個你不會想去的地方。

定理管的是 approximation error,而它從來不是實務上的瓶頸。

補充為什麼「一層就夠」的定理在實務上沒有人用一層

Cybenko 的定理只需要一個隱藏層。但實務上幾乎所有網路都是深的,理由不在表達力而在效率:有一類函數,用深度 DD 的網路需要 O(h)O(h) 個單元,用一層則需要 O(hD)O(h^{D}) 個。深度讓「組合」變便宜——每一層可以重用前一層算好的中間結果。

這件事的一般形狀在 L4 會反覆出現:同樣一個函數,不同的寫法所需要的參數量差好幾個數量級,而架構的工作就是挑一種對你的資料便宜的寫法。卷積是「重用同一組權重掃過所有位置」,注意力是「重用同一組投影處理所有 token」,都是同一種便宜。

同一個網路,換一個頻率就學不到了

第二個缺口——學不學得到——需要一個能把「表達力」與「可學性」分開的實驗。做法是固定網路與超參數,只換目標函數

目標取 sin(2πkx)\sin(2\pi k x)kk 是週期數。三件事要先講清楚:資料是無噪聲的(n=200n=200 均勻取樣),k32k\le32 的函數對一個 64×6464\times64 的網路來說表達力綽綽有餘(它有 4353 個參數),而 0.50.5 是「輸出恆為零」的 MSE——也就是完全沒學到的水準。

同一個 64×64 網路、同一組超參數,只換目標的頻率(2 seed 中位數)
   k        200 步      1,000 步      5,000 步
   1        0.0100        0.0000        0.0000
   4        0.4630        0.0003        0.0004
  16        0.4962        0.4717        0.0015
  32        0.4972        0.4960        0.3875

橫著讀是時間,直著讀是難度。 k=1k=1 在 200 步就幾乎學完;k=4k=4 要 1000 步;k=16k=16 要 5000 步;k=32k=32 跑完 5000 步仍然停在 0.38750.3875——離「什麼都沒學到」(0.50.5)比離「學會了」近得多

這不是容量問題(同一個網路),不是資料問題(無噪聲、n=200n=200),也不是最佳化器沒調(同一組超參數、k=1k=1 時完美)。它是 MLP 自己的偏好:低頻的成分先被學到,高頻的成分學得慢、甚至在合理的預算內學不到。 這個現象叫 spectral bias(參考文獻 2)。

「什麼都能擬合」與「在你的預算內學得到」之間,隔著一個和目標長什麼樣子有關的鴻溝。

值得停一下的是:這本身就是一個先驗。MLP 並不是「沒有偏見」的——它偏好平滑、低頻的解。在很多任務上這個偏好剛好是對的(真實世界的函數多半平滑),這也解釋了為什麼 MLP 在表格資料上還是很有用。它壞在那個偏好和影像、語言的結構無關,下一節就是這件事。

回到情境:MLP 對「哪些像素相鄰」一無所知

系列的第二個 toy。 L4 的三篇架構筆記需要一個有空間結構的資料。原本的計畫是用 MNIST 的子集,但那需要下載;改用一個自己造的小影像 toy,好處是結構完全已知、完全可重現,而且我們可以隨意控制「線出現在哪裡」——那正是要量的東西。

IMG = 12
def toy_img(n=600, size=IMG, noise=0.15, seed=0, x_range=(0, 1.0)):
    """size×size 的二元影像分類:class 0 = 一條橫線,class 1 = 一條直線。
    線的位置隨機;x_range 限制線的中心可以落在畫面的哪一段。"""
    rng = np.random.default_rng(seed)
    X = np.zeros((n, size, size)); y = np.zeros(n, dtype=int)
    lo, hi = x_range
    for i in range(n):
        cls = i % 2; y[i] = cls
        L = 6
        c = int(rng.uniform(lo, hi) * (size - L))     # 沿著線的方向的位置
        r = rng.integers(0, size)                     # 另一個方向的位置
        if cls == 0: X[i, r, c:c+L] = 1.0             # 橫線
        else:        X[i, c:c+L, r] = 1.0             # 直線
    X += noise * rng.standard_normal(X.shape)
    return X.reshape(n, -1), y*2 - 1                  # 標籤是 ±1

任務是「這張圖裡的線是橫的還是直的」。人類看一眼就知道,而且換一個位置完全不影響判斷——這正是要檢驗的性質。模型是 14464641144\to64\to64\to1 的 MLP,Adam 訓 3000 步,三個 seed 取中位數。

第一段:先確認它學得會。

  訓練 1.000   測試 0.968

沒問題。44 千多個參數、600 筆資料,MLP 把這個任務做得很好。

第二段:只在左半邊訓練,測右半邊。

  訓練(左) 1.000   測試(右) 0.625

訓練集上完美,換一個位置就掉到 0.6250.625(亂猜是 0.50.5)。同樣是「橫線 vs 直線」,只是線出現在畫面的另一半,模型就幾乎不會了。

原因很直接:MLP 的第一層是 144144 個獨立的權重連到每個隱藏單元。它學到的是「第 37 號與第 38 號像素同時亮」這種和位置綁死的規則。右半邊的像素編號它從來沒有學過,那裡的權重還停在初始值。「線」這個概念從來沒有被學到,被學到的是「某些編號的像素會一起亮」。

第三段:刻意違反——把像素順序整個打亂。

取一個固定的隨機排列,套在所有影像上(訓練與測試都用同一個),再重跑第一段:

  訓練 1.000   測試 0.975

和沒有打亂時一模一樣0.9680.9680.9750.975,差在 seed 的抖動裡)。把一張圖剪成 144 塊、按同一個亂序重排,人類完全認不出那是什麼,MLP 卻毫無感覺。

理由是一行代數:打亂像素順序等於把第一層的權重矩陣乘上一個置換矩陣,而那只是把參數重新編號——同一個假設空間。MLP 對「輸入座標的順序」是不變的,所以它從一開始就不知道有「相鄰」這件事。

MLP 不是「還沒學到局部結構」,是它的假設空間裡根本沒有這個概念。

這三個數字合起來就是整個 L4 的動機。後面每一個架構都是在把某一個「人類早就知道的結構」寫進假設空間裡:卷積寫進局部與平移(它會讓第二段的 0.6250.625 變高,而且會讓第三段的打亂真的造成傷害——那才是「模型看得到結構」的證據);注意力寫進「由內容決定要看誰」;殘差寫進「每一層只做小修正」。

加寬、換頻率、打亂像素:三個把定理掏空的實驗

互動 demo:同一個網路、同樣的步數,目標從 1 個週期換到 32 個,訓練誤差差好幾個數量級。

先消化一下

想一想

一個團隊引用 universal approximation 主張「我們的 MLP 表達力足夠,所以問題一定出在資料或最佳化」。根據本篇的三個實驗,這個推論:

想一想

把影像的像素順序用一個固定的隨機排列打亂之後,MLP 的測試準確率從 0.9680.968 變成 0.9750.975。最準確的解讀是:

想一想

在「只在左半訓練、測右半」的實驗裡準確率是 0.6250.625(亂猜 0.50.5)。若把訓練資料量從 600 筆加到 6000 筆(仍然只有左半),最可能的結果是:

想一想

下列哪一句不對

參考文獻

  1. Cybenko, G. Approximation by Superpositions of a Sigmoidal Function. Mathematics of Control, Signals and Systems 1989.(universal approximation 的原始論文;注意它的敘述是存在性的。)
  2. Rahaman, N. et al. On the Spectral Bias of Neural Networks. ICML 2019.(低頻先被學到的系統性實驗與理論分析,本篇頻率實驗的原型。)
  3. Bronstein, M., Bruna, J., Cohen, T., Veličković, P. Geometric Deep Learning. 2021.(把「架構=寫進假設空間的對稱性」當成統一框架;本篇「架構是一個先驗」那一節的來源。)