當前位置:
首頁 > 知識 > 用腦電波控制智能假肢:如何利用深度學習技術進行EGG數據分類

用腦電波控制智能假肢:如何利用深度學習技術進行EGG數據分類

選自TowardsDataScience

作者:Norman Di Palo

機器之心編譯

參與:張倩、雪

腦電圖是一種利用電極記錄大腦活動的非侵入式技術,但大腦活動和腦電圖信號之間的關係非常複雜,如何「解碼」成為困擾研究者的一大難題。本文作者利用 Kaggle 競賽中的腦電圖數據探索與特定手勢對應的腦電圖模式,並以此設計神經網路。

代碼地址:https://colab.research.google.com/drive/1lDfmXMo7_mcVBo9EAtgLNIgeJV50GTce#scrollTo=AFoTOqC-4Rjl

GitHub 地址:https://github.com/normandipalo/eeg-to-action

神經系統是一個極其複雜的結構。人體內有超過十萬公里的神經與脊髓和大腦相連。這種「網格」傳輸控制每一個運動的電脈衝。每一個指令都從大腦發出,大腦是一個更加神奇的神經元結構,通過電激活信號進行通信。理解和解釋大腦的電模式是神經科學家和神經生物學家的研究熱點之一,但事實證明這是一項極具挑戰性的任務。

記錄大腦活動的一種非侵入式技術是「腦電圖」(EEG),使用固定在患者頭皮上的電極記錄腦電壓波動。通常在頭皮周圍固定大約 30 個電極,記錄腦電波的總體活動。無論如何,大腦活動和 EEG 信號之間的關係非常複雜,如果不藉助具體的實驗測試,我們將很難理解。因此,一個巨大的挑戰是學習如何「解碼」,在某種意義上,這些腦電圖掃描可以允許使用非侵入式腦機介面(BCI)來控制機器假肢和其他設備。

利用 EEG 記錄腦電波。CC BY-SA 2.0,來源:https://commons.wikimedia.org/w/index.php?curid=845554

作為強數據驅動的學科,最近在相關模式識別任務中取得的「深度學習」新突破為使用「神經網路」分析這些電信號創造了一種新方法。在這篇文章中,我們首先介紹這一主題:閱讀 Kaggle 競賽(Grasp-and-Lift EEG Detection)提供的 EEG 數據,該競賽旨在檢測哪些 EEG 模式對應特定的手臂和手勢動作,如抓取或提起物體。在以不同的方式預處理數據之後,我們將設計一個神經網路來執行這種分類。此外,我還將展示一些大腦活動的數據可視化,以便大致了解正在使用的數據。這一研究領域的最終目標是開發平價、實用的假肢裝置,通過大腦控制假肢,幫助截肢者恢復輕鬆進行基本活動的能力。類似的技術也可以應用於讀取肌肉電激活,從而通過分析激活的肌肉來解碼人試圖執行的運動類型。

數據簡介

如果你擁有 Kaggle 帳戶,那麼你可以在該網址免費下載數據:https://www.kaggle.com/c/grasp-and-lift-eeg-detection。數據由幾個.csv 文件組成。這些文件分別是:

EEG 數據,用作模型的輸入,由固定在患者頭皮上的 32 個電極記錄。數據以 500 Hz 的頻率進行記錄。

人體測試者試圖實現的運動的逐幀標籤,一共有 6 個標籤,每幀的標籤是 6 個標籤中的一個。

通過記錄不同人體測試者在執行簡單動作(例如抓取和提升物體)時的腦電圖來收集數據。因此,我們按不同的場景、主題對數據集進行分類。我們將在稍後的準確率預測中看到,腦電波可能非常個性化,因為模型可以非常準確地預測同一個人在沒見過的場景中的意圖,但如果訓練不夠多樣,那麼與新的測試人員進行同樣的訓練會很困難。

因此,目標是創建一個神經網路,該網路將腦電圖數據作為輸入,並輸出測試者試圖實現的 6 個可能動作的概率分布。由於「no action」不屬於 6 個類別,因此我們可以將其添加為類,或者將所有可能的輸出設置為 0 到 1 之間的值,並使用閾值來確定是否檢測到動作。如果每一個動作都低於閾值,則我們就認為沒有動作。

電極位置,來源:https://www.kaggle.com/c/grasp-and-lift-eeg-detection/data

我製作了這些電極活動的動畫數據可視化。由於採樣頻率相當高(500 Hz),因此我使用了簡單的 3 步低通濾波器來平滑數據,並使用前 100 幀(約 1/5 秒)創建動畫。

32 個電極在前 1/5 秒內的激活狀態。

我們還可以將時序數據可視化為 2D 熱圖,其中縱軸代表時間(從上到下遞增),橫軸表示 32 個電極。

EGG 時序熱圖。(時間從上到下增大)

這也非常有用,因為正如我們將看到的,它允許我們使用「時空卷積」。

數據預處理

為方便學習階段,我們應對原始數據進行預處理。例如,與執行動作的較低變化率相比,非常高的 EEG 採樣頻率會引發許多問題:數據變化非常快,但是動作實際上保持不變,因此波動幾乎可以被認為是雜訊。此外,時序模型接收大量快速變化的數據,而分類輸出從不改變。

第一個可能的步驟是「使用低通濾波器過濾數據」。即使是簡單的運行平均值也能起作用:通過這種方式,我們緩解了數據的高頻變化,同時保留了更有用的低頻結構,因為我們即將分類的動作具有非常低的變化頻率(最多 1Hz)。之後,我們可以對數據進行二次採樣,即每 10100 個數據點只保留一個數據點。從某種意義上說,這也有助於降低時間維度及數據的相關性,從而使數據更加時間稀疏。

也可以採用其他預處理技術,但是為了簡潔起見,我們就此打住,開始設計神經網路。

神經網路設計與實驗

處理時序數據時,我們首先想到的架構之一是「循環神經網路」。這些網路具備動態結構,其內部狀態允許它們對時序數據進行編碼,因此這些網路還基於過去的輸入計算輸出。我在 Keras 中設計了一個 LSTM 網路,並為其提供了具備連續時序結構的訓練數據。結果很好,但在這個特定的例子中,我更感興趣的是展示一個通常用於圖像的卷積神經網路如何很好地應用到時序數據上。

如前所述,從某種意義上來說,我們實際上是在處理時空數據:以上熱圖的縱軸表示時間演化,而橫軸表示各種電極,結果相近的電極在人類頭皮上的空間位置往往也很接近。這意味著我們可以用卷積提取有用特徵:2D 卷積核將同時在時間和空間上編碼模式。設想一個 3*3 卷積核:它能夠在熱圖中的矩陣上,通過在 3 個不同時間步(3 個核行)以及在 3 個不同的電極(3 個核列)上進行加權求和,來提取特徵。因此,具有許多核的 CNN 可以發現電極的激活在與想要的動作相關的有限時間周期上的變化特徵」。

我在 Keras 中實現了一個簡單的 CNN,來檢查它在這個數據集上的性能。

為了檢查模型的性能,如 Kaggle 競賽中所建議的,我們可以查看 AUC 分數。如果不熟悉 AUC,建議讀一下這個清晰直觀的解釋(https://datascience.stackexchange.com/questions/806/advantages-of-auc-vs-standard-accuracy)。從代碼所在 notebook 中可以看到,我們可以在快速訓練階段達到約 0.85 的 AUC 分數。

結論

在這篇文章中,我們介紹了腦電信號與腦電圖,後者是一種利用用戶頭皮上的電極記錄有用信號的非侵入式且相對簡單的方法。我們看到了一些直觀的數據可視化,以及如何使用神經網路從這些數據中提取運動意向等特徵。我相信這一領域(機器假肢、腦機介面)將會因為深度學習而得到深入發展。

這些技術的影響將是巨大的。擁有能夠以自然方式控制的低成本假肢可以極大地改善數百萬人的生活。

建議查看近期啟動的 Symbionic Project 項目,參與項目的天才們嘗試創造一種低成本的智能手臂假肢,該假肢可以利用肌肉激活控制,目的是實現這種裝置的平民化。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

「世界第一超算」易主!英偉達GPU加持,Summit超越神威太湖之光
上交大&南科大最新PRL論文:成功用機器學習實現量子態分類器

TAG:機器之心 |