為何單一切分會說謊
在 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 摺的情況下訓練——唯有該摺的測試試次未影響模型中的任何東西,此估計才有效。
這條式子把全部困難藏在一個下標裡:\hat f_{-k} 必須在對第 k 摺零認識的情況下建立。每個洩漏臭蟲都是對這個下標的違反。
洩漏動物園
資料洩漏是測試資訊抵達已訓練模型的任何途徑。在神經資料中它是地方病,因為太多流程步驟都是由資料擬合而來。以下是真正會咬人的幾種:
- 在完整資料集上做前處理:在切分前就用全部試次擬合 ICA、空間濾波、CSP 或 z 分數標準化——濾波器早已看過測試試次。
- 依測試表現選擇特徵或超參數,再回報同一份表現(本篇的巢狀解方)。
- 時間重疊:共享樣本的滑動窗或分段跨越訓練/測試邊界,把資訊複製過去。
- 區塊洩漏:同一連續區塊的試次同時落入訓練與測試,模型學到的是該區塊的漂移而非任務。
- 跨受試者宣稱中的受試者洩漏:同一受試者的資料同時出現在兩集,會誇大表面上的遷移能力。
巢狀交叉驗證:誠實的超參數選擇
只要你一調任何東西——收縮網格、濾波器組、網路學習率——被調過的分數就帶有樂觀偏差,因為你挑的正是在那份資料上看起來最好的設定。巢狀交叉驗證用兩層迴圈恢復誠實:內層選超參數,外層在內層從未見過的資料上量測整套選擇流程。
- 把資料切成 K 個外摺。
- 保留外摺 k;在其餘資料上,對超參數網格跑一次內層交叉驗證。
- 用內層最佳超參數,在全部外訓練資料上重新擬合。
- 在未動過的外摺 k 上評分一次;把這些外層分數平均,作為誠實的表現估計。
時間不可交換
標準交叉驗證假設試次是來自單一分布的可交換抽樣。神經訊號違反此假設:阻抗漂移、電極沉降、注意力衰退,使分布在整場實驗中移動。這就是共變量偏移,一種神經非平穩性。隨機 K 摺因混合了早期與晚期試次,悄悄讓解碼器跨漂移內插,從而高估部署時的準確率。
務實的做法是按時序:以較早的試次訓練、在嚴格較晚的試次上測試,模擬解碼器實際上「校準一次、往後使用」的情境。隨機摺與時序準確率之間的落差本身就是有用的診斷——落差大,表示你的解碼器倚賴的是撐不到明天實驗的非平穩結構。