設(shè)計腦機(jī)接口的實踐指南(設(shè)計腦機(jī)接口的實踐指南是什么)
背景:BCI 是什么意思?
腦機(jī)接口(BCI)指的是將大腦與計算機(jī)連接起來的工具。過去十年間,業(yè)界對 BCI 的關(guān)注度迅速增長——一個典型例子就是,埃隆·馬斯克名下主要研發(fā)腦機(jī)接口技術(shù)的初創(chuàng)企業(yè) Neuralink 每次開新發(fā)布會都會引發(fā)輿論熱議[1]。Neuralink 可以在大腦中植入人造物來完成多種任務(wù),諸如用思維來控制動作或直接在大腦中播放音樂等。
你會感到恐懼嗎?沒關(guān)系,這是很正常的。但在這篇文章中,我們將只關(guān)注一個簡單的 BCI 實現(xiàn),具體來說是用一個娛樂設(shè)備[2]記錄腦電波活動,即腦電圖(EEG)。這個實現(xiàn)不需要對人體做任何手術(shù)(也不會有疼痛或死亡風(fēng)險)。雖然你(很遺憾)不能用它來收聽你最喜歡的樂曲列表,但可以實時觀看 BCI 佩戴者的情緒波動(只不過是以代碼的形式)。
一個用例:用 EEG Unicorn 估測情緒
如前所述,在本教程中我們將從想法一路走到具體的實現(xiàn),完成所有必要的步驟來設(shè)計一個處理具體任務(wù)的 BCI。作為示例,我們要做的 BCI 屬于情緒估測領(lǐng)域。這個應(yīng)用旨在估計參與者的情緒狀態(tài)。
情緒 BCI 圖解。
如圖所示,這個管道的目的是將參與者的 EEG 信號作為輸入,并返回相應(yīng)的 V-A 情感坐標(biāo)圖。V-A 圖是一種應(yīng)用于生物心理學(xué)的情緒坐標(biāo),其中 Valence(橫軸)代表愉快和不愉快(即積極和消極)的程度,而 Arousal(縱軸)代表興奮和平靜的水平?;谶@種表示,任何情感狀態(tài)均可表示為 VA 坐標(biāo)平面上的一個點。
設(shè)計情緒識別 BCI 的關(guān)鍵步驟
具體而言,為設(shè)計和部署 BCI,我們必須遵循幾個關(guān)鍵步驟。
范式定義和信號記錄
首先我們要定義 BCI 的范式:我想對什么事物建模?或者想要估計哪些信息?我的應(yīng)用程序的目的是什么?我是否想通過 BCI 來控制機(jī)械手/腳?我是要評估駕駛?cè)蝿?wù)中駕駛員/成員的警覺性嗎?是要預(yù)測疾病的發(fā)作幾率?還是檢測癲癇發(fā)作狀態(tài)?科學(xué)界對一些可以插入 BCI 的研究項目存在巨大興趣。
在本文的案例中,我們決定關(guān)注之前的一項研究工作,就是估計參與者觀看一些視頻時的情緒狀態(tài)[3]。這篇論文還提出了一個可以促進(jìn)特定情緒狀態(tài)的視頻列表(我們對此非常感興趣?。?。這些視頻的列表和對應(yīng)的情緒都可以在 youtube 上找到,并列在注[4]中。
因此我們設(shè)計了一個實驗基準(zhǔn)測試,包括在參與者觀看宣傳特定情緒的視頻時記錄他們的 EEG 信號。在我們的存儲庫中,腳本registration_pipeline.py給出了一段完成這一任務(wù)的代碼,用戶只需將他想要處理的視頻放在專用目錄中(或改變路徑)即可。
概要分析
有了上述基準(zhǔn)測試,我們就可以完成腦電波信號的記錄工作了。這些信號最后將構(gòu)成訓(xùn)練 ML 模型(甚至是 DL)所必要的數(shù)據(jù)集。
我們來做這個模型吧……等一下!在建成一個能夠從 EEG 信號中估計情緒的管道之前,我們必須提取信息來幫助模型處理數(shù)據(jù)。如果你有大量信號和/或可用的計算資源,跳過這一步也是可以的。但為了保持簡潔,我們考慮采用更自然簡單的模型來簡化復(fù)雜性。一種可能的提取信息的方法是基于腦電圖信號的頻率特性,也就是說“這個腦電圖片段是在高頻率還是低頻率范圍內(nèi)振蕩?”。過去,科學(xué)家們發(fā)現(xiàn),一些腦電圖信號是由幾個頻段組成的,每個頻段在特定的任務(wù)或行為中都會增強/減弱[4]。
- δ為深度睡眠,[0-4Hz]。
- θ表示昏昏欲睡,[4-7Hz]。
- α代表放松和閉目思考,[8-15Hz]。
- β代表積極思考和與專注相關(guān)的狀態(tài)[16-31Hz]。
- γ代表感受到更多壓力的狀態(tài)[32-50Hz]。特征提取的圖示。
按照這個過程,我們從每個 EEG 片段中提取了一個信息向量。這個過程的目的是提取信息,以便更好地處理生物醫(yī)學(xué)信號。這個步驟可以使用腳本outline_analysis.py的第一部分來處理。
最后(如果你還跟得上的話),你應(yīng)該知道剩下的步驟是創(chuàng)建一個模型,用它從上面預(yù)計算的特征向量中估計情緒狀態(tài)(是快樂還是悲傷?)。這里為了讓我們的方法簡單易懂,我們考慮一個由決策樹組成的簡單模型。這種簡單方法背后的想法是尋找動態(tài)閾值來區(qū)分信息向量,例如第 i 個電極的高α貢獻(xiàn)對應(yīng)于低 arousal,第 j 個電極的中等γ貢獻(xiàn)對應(yīng)于高 valence,等等。
給出特征向量 X 和它的標(biāo)簽 y,就可以創(chuàng)建一個名為 clf 的分類器(對應(yīng)于決策樹)。該分類器可以通過以下幾行代碼輕松訓(xùn)練。
from sklearn import treeclf = tree.DecisionTreeClassifier() # definition of the modelclf.fit(X, y) # training of the model...
復(fù)制代碼
在 outline_analysis.py 的第二部分給出了一個更完整的解釋,包括整個模型描述和訓(xùn)練。訓(xùn)練完這個簡單的決策樹后,可以用 joblib 庫來保存它。
...from joblib import dumpdump(clf, 'classifier_file_name')
復(fù)制代碼
實時實現(xiàn)
在訓(xùn)練和保存模型之后,剩下的步驟是將各個部分合并在一起。
兩個聯(lián)合腳本必須并行工作:第一個腳本旨在記錄、處理和估計來自 EEG 的情緒狀態(tài)pylsl_emotion.py;第二個腳本會在圖形上顯示相應(yīng)的情緒和對應(yīng)的笑臉,如play_emotion.py所述。
嘗試一下
最后提一句:自己嘗試一下吧!上述代碼和自述文件都放到了Github上。你可以自己嘗試,或者為不同的模型或 EEG 耳機(jī)改編代碼。
了解更多軟件開發(fā)與相關(guān)領(lǐng)域知識,點擊訪問 InfoQ 官網(wǎng):https://www.infoq.cn/,獲取更多精彩內(nèi)容!