從 CSP 到卷積
EEGNet 與 ShallowConvNet 背後的洞見是:古典的震盪流程——先帶通、再空間濾波、再取對數變異數——的每一步都有一個卷積對應物。沿時間軸的卷積是可學習的 FIR 帶通濾波器組;沿通道軸的卷積是可學習的空間濾波器,正是 CSP 以封閉形式所計算的東西。
\text{CSP:}\quad \max_{w}\ \frac{w^\top \Sigma_1 w}{w^\top \Sigma_2 w} \;\Longleftrightarrow\; \Sigma_1 w = \lambda\,\Sigma_2 w \qquad\qquad (x * h)[t] = \sum_{\tau} h[\tau]\,x[t-\tau]左:CSP 作為最大化類間變異數比的廣義特徵問題。右:時域卷積——一個可學習的 FIR 濾波器。卷積網路兩者皆可學。
左邊,CSP 找出一個空間濾波器 w,讓一類的訊號盡量強、另一類盡量弱——這是你要最大化的比值。右邊,卷積只是把一個小濾波器沿著訊號在時間上滑動。卷積網路能從資料學到這兩種濾波器,而非靠人手設計。
- w
- 空間濾波器——對各電極通道的加權。
- \Sigma_1,\ \Sigma_2
- 類別 1 與類別 2 的共變異數(訊號形狀)矩陣。
- \frac{w^\top \Sigma_1 w}{w^\top \Sigma_2 w}
- 在該濾波器下,類別 1 的功率相對於類別 2 的功率之比。
- (x * h)[t]
- 卷積:濾波器 h 掃過訊號 x。
對左手 vs 右手想像,CSP 會找到那些左手功率高、右手功率低的通道。
ShallowConvNet 讓這個對應幾乎是字面上的:一個時域卷積、一個空間卷積、接著平方非線性、平均池化與取對數——這就是一個可微分、可訓練的 CSP 加對數變異數。一旦看穿這一點,深度 EEG 便不再像黑箱魔法,而更像是把濾波器解放開來的古典訊號處理。
EEGNet 的解剖
EEGNet 接收一個形狀為 (1, C, T) 的輸入——一個影像平面、C 個通道、T 個時間取樣——並執行三個階段。(1)F_1 個核長約為取樣率一半的時域卷積,扮演學習得到的頻率濾波器組。(2)一個沿通道維度、深度乘數為 D 的深度卷積,為每個時域濾波器學習 D 個空間濾波器——一個學習得到的各頻帶 CSP。(3)一個可分離卷積先沿時間混合、再廉價地合併特徵圖。
# EEGNet, schematically (PyTorch-ish); input x: (B, 1, C, T) x = TemporalConv(F1, kernel=(1, fs//2))(x) # learned band-pass filterbank x = BatchNorm(x) x = DepthwiseConv(depth=D, kernel=(C, 1))(x) # D spatial filters per band (CSP-like) x = AvgPool(ELU(BatchNorm(x)), (1, 4)) # square-free nonlinearity + downsample x = SeparableConv(F2, kernel=(1, 16))(x) # depthwise-then-pointwise temporal mix x = AvgPool(ELU(BatchNorm(x)), (1, 8)) y = Softmax(Linear(Flatten(Dropout(x)))) # a few thousand params total
為何用深度可分離卷積
一個把 C_{\text{in}} 個輸入圖混合到 C_{\text{out}} 個輸出圖、核大小為 K 的標準卷積,需要 C_{\text{in}} C_{\text{out}} K 個參數。而一個深度可分離卷積把它拆成逐通道的深度濾波與 1{\times}1 的逐點混合,只需 C_{\text{in}} K + C_{\text{in}} C_{\text{out}} 個參數。
\frac{C_{\text{in}} K + C_{\text{in}} C_{\text{out}}}{C_{\text{in}} C_{\text{out}} K} \;=\; \frac{1}{C_{\text{out}}} + \frac{1}{K}參數比值:省下約一個數量級——正是小樣本情境所要求的隱式正則化。
把一般卷積拆成「逐通道濾波」加「混合通道」兩步,會把參數量降到原本的約 \tfrac{1}{C_{\text{out}}} + \tfrac{1}{K}——常常省下約一個數量級。參數越少,正是小樣本神經資料所需要的內建約束。
- C_{\text{in}},\ C_{\text{out}}
- 輸入與輸出通道的數目。
- K
- 濾波器(卷積核)的長度。
- \frac{1}{C_{\text{out}}} + \frac{1}{K}
- 你保留下來的參數佔原本的比例。
當 C_{\text{out}} = 40、K = 25 時,你只保留約 \frac{1}{40} + \frac{1}{25} \approx 0.065 的參數——大約縮減十五倍。這就是深度可分離卷積。
更少的參數不只是更快;它是更強的正則化。在小樣本情境中,能泛化的模型,通常正是那個一開始就無法記住訓練集的模型。EEGNet 的整套設計哲學,就是在物理允許的範圍內保持盡量小。
訓練配方與資料增強
一套可行的配方:帶通約 0.5–40 Hz、以訓練切分擬合的逐通道正規化、切成重疊視窗、dropout 0.25–0.5、批次正規化、提早停止、小學習率。接著資料增強會放大你的有效樣本量:時間平移、加性高斯雜訊、試驗間 mixup、通道 dropout、傅立葉替身訊號,以及頻率遮罩。
解讀學到的濾波器
由於第一層是時域濾波器、第二層是空間濾波器,EEGNet 異常地可解釋:你可以繪出學到的頻率響應與學到的頭皮拓樸圖。但這裡有個微妙的陷阱。一個學到的空間濾波器可能對某通道賦予很大的權重,是為了抵消一個雜訊源,而非因為訊號位於該處。