JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

如何驗證而不自欺

把交叉驗證理解為風險估計、悄悄製造虛假準確率的洩漏分類,以及在非平穩神經資料上讓超參數選擇保持誠實的巢狀流程。

為何單一切分會說謊

在 150 個試次下,單次訓練/測試切分所得的測試準確率,其信賴區間極大——光靠運氣就擺盪 ±10 個百分點是家常便飯。交叉驗證K 次切分取平均,使每個試次恰被測試一次,把一個含噪的數字變成對風險的估計:解碼器在同分布未見資料上的期望誤差。

\hat R_{\mathrm{CV}}=\frac{1}{K}\sum_{k=1}^{K}\frac{1}{|\mathcal{D}_k|}\sum_{i\in\mathcal{D}_k} L\!\big(y_i,\ \hat f_{-k}(x_i)\big)

交叉驗證風險估計。關鍵在於 \hat f_{-k} 是在不含第 k 摺的情況下訓練——唯有該摺的測試試次未影響模型中的任何東西,此估計才有效。

要誠實估計真實世界的誤差,就留下一塊資料,用其餘的訓練,在留下的那塊測試,再輪流換過每一塊——如此每個試次都由一個從沒見過它的模型來評判。

K
資料被切成的摺數。
\mathcal{D}_k
k 摺中的試次——該輪的測試集。
\hat f_{-k}
在除第 k 摺外全部資料上訓練出的模型。
L
損失——例如預測是否錯誤。

K=5,你訓練五次,每次用 80% 的資料、在未碰過的 20% 上測試。任何偷看測試摺都是資料洩漏。參見交叉驗證

這條式子把全部困難藏在一個下標裡:\hat f_{-k} 必須在對第 k認識的情況下建立。每個洩漏臭蟲都是對這個下標的違反。

洩漏動物園

資料洩漏是測試資訊抵達已訓練模型的任何途徑。在神經資料中它是地方病,因為太多流程步驟都是由資料擬合而來。以下是真正會咬人的幾種:

  1. 在完整資料集上做前處理:在切分前就用全部試次擬合 ICA、空間濾波、CSP 或 z 分數標準化——濾波器早已看過測試試次。
  2. 依測試表現選擇特徵或超參數,再回報同一份表現(本篇的巢狀解方)。
  3. 時間重疊:共享樣本的滑動窗或分段跨越訓練/測試邊界,把資訊複製過去。
  4. 區塊洩漏:同一連續區塊的試次同時落入訓練與測試,模型學到的是該區塊的漂移而非任務。
  5. 跨受試者宣稱中的受試者洩漏:同一受試者的資料同時出現在兩集,會誇大表面上的遷移能力。

巢狀交叉驗證:誠實的超參數選擇

只要你一調任何東西——收縮網格、濾波器組、網路學習率——被調過的分數就帶有樂觀偏差,因為你的正是在那份資料上看起來最好的設定。巢狀交叉驗證用兩層迴圈恢復誠實:內層選超參數,外層在內層從未見過的資料上量測整套選擇流程。

  1. 把資料切成 K 個外摺。
  2. 保留外摺 k;在其餘資料上,對超參數網格跑一次內層交叉驗證。
  3. 用內層最佳超參數,在全部外訓練資料上重新擬合。
  4. 在未動過的外摺 k 上評分一次;把這些外層分數平均,作為誠實的表現估計。

時間不可交換

標準交叉驗證假設試次是來自單一分布的可交換抽樣。神經訊號違反此假設:阻抗漂移、電極沉降、注意力衰退,使分布在整場實驗中移動。這就是共變量偏移,一種神經非平穩性。隨機 K 摺因混合了早期與晚期試次,悄悄讓解碼器跨漂移內插,從而高估部署時的準確率。

務實的做法是按時序:以較早的試次訓練、在嚴格較晚的試次上測試,模擬解碼器實際上「校準一次、往後使用」的情境。隨機摺與時序準確率之間的落差本身就是有用的診斷——落差大,表示你的解碼器倚賴的是撐不到明天實驗的非平穩結構。