構音假說
組織起現代語音 BCI 的核心發現是:vSMC 編碼的不是音素、也不是聲音,而是構音動作學——聲道發音器官連續而協調的動作。解碼這些構音動作的泛化能力,遠勝於直接解碼聲學,因為少數幾個發音姿勢重新組合,就能構成開放而無盡的詞彙。學會這些姿勢,你就能產生解碼器在訓練時從未見過的詞。
編碼模型
為使此說法精確,我們把每個電極的反應建模為構音特徵的時空濾波器。令 a_f(t) 為構音特徵 f(例如唇開度或舌尖高度)的軌跡、r_i(t) 為通道 i 的反應(通常是高伽瑪功率),則線性編碼模型為:
r_i(t) \;=\; \sum_{f=1}^{F}\sum_{\tau=0}^{T_\ell} \beta_{i,f}(\tau)\, a_f(t-\tau) \;+\; \varepsilon_i(t)時空感受野:每個通道的反應是構音特徵在一段時間延遲範圍內的加權和。濾波器 \beta_{i,f} 即該通道的構音感受野。
每個記錄通道的反應被建模成「構音特徵的加權和」,不只取當下,還橫跨一段近期的時間延遲窗。那些權重就是該通道的感受野——它在聽什麼。
- r_i(t)
- 通道 i 在時間 t 的反應。
- a_f(t-\tau)
- 延遲 \tau 時的構音特徵 f。
- \beta_{i,f}(\tau)
- 特徵 f 在延遲 \tau 的權重(感受野)。
- \varepsilon_i(t)
- 特徵無法解釋的殘餘雜訊。
一個對唇閉合調諧的通道,會在雙唇合上後約 50 毫秒放電——在那個延遲上有非零的 \beta,即構音感受野。
為每個通道各配適一個這樣的濾波器,你就得到完整的編碼模型——一段關於運動意圖如何化為神經活動的正向描述。判讀配適出的權重,便能看出每個電極在意哪些發音器官、以及延遲多久;這正是狀態空間路線中貝氏解碼器所要反轉的同一個觀測模型。
音素與語音特徵解碼
你也可以在音素層級解碼,或更好地在語音特徵層級——構音部位、構音方式與清濁——進行解碼。母音依類似共振峰的結構區分,子音則依聲道在何處、如何收窄而區分。先解碼特徵階層、再組裝音素,對扁平音素分類器所犯的混淆較具韌性,因為聲學上相近的音素共享特徵,失誤時也較為溫和。
聲學到構音的反演
這裡有個實務上的難處:對嘗試發聲的癱瘓使用者而言,我們無法量測其發音器官——根本沒有舌頭動作可記錄。因此我們推論其意圖的構音軌跡,通常是借用一位念出相同目標句子的參考語者,並執行聲學到構音的反演。這種反演是不適定的:許多聲道形狀會產生近乎相同的聲音。推論出的軌跡便充當偽標籤,用來訓練神經編碼與解碼模型。
從編碼到解碼
要真正驅動輸出,你得反轉模型。可解讀的基準是一個正則化的線性解碼器——從神經特徵到動作學的脊迴歸——其封閉形式是值得爛熟於心的主力工具:
\hat{W} \;=\; \arg\min_{W} \lVert A - RW \rVert_F^2 + \lambda \lVert W \rVert_F^2 \;=\; \bigl(R^{\top}R + \lambda I\bigr)^{-1} R^{\top} A脊(Tikhonov)迴歸:在通道眾多且彼此相關、訓練資料僅有數分鐘的情況下,正則化項 \lambda 不可或缺。之後深層循環解碼器會取代這個映射,但線性配適是任何結果都應該勝過的誠實基準。
為了把編碼模型反解成解碼器,脊迴歸配適出能重現資料的權重,但透過懲罰過大的權重來保持謙遜。在通道眾多且相關、資料只有幾分鐘的情況下,正是這個懲罰讓配適不致爆掉。它是任何更花俏的解碼器都必須勝過的誠實基準。
- \hat{W}
- 配適出的解碼權重。
- \lVert A - RW \rVert_F^2
- RW 偏離目標 A 有多嚴重。
- \lambda \lVert W \rVert_F^2
- 對權重大小的懲罰;\lambda 決定它的強度。
- \bigl(R^{\top}R + \lambda I\bigr)^{-1} R^{\top} A
- 閉式解。
即使通道近乎冗餘,\lambda I 這一項也能讓 R^{\top}R 保持可逆——這就是 Tikhonov(脊)正則化。
# R: (T, C) neural features, e.g. high-gamma power per channel # A: (T, F) target articulatory kinematics import numpy as np lam = 1e2 W = np.linalg.solve(R.T @ R + lam * np.eye(R.shape[1]), R.T @ A) A_hat = R @ W # predicted kinematics