用深度學習來解析夢境中出現的物體(完整版)
這篇文章主要的工作算是機器學習和神經科學的結合工作,需要讀者在這兩個方向有一定的基礎。
另有科普版本,結構更加清晰。。不過刪減了很多內容。。
機器學習簡介:機器學習算法是一類從數據中自動分析獲得規律,并利用規律對未知數據進行預測的算法。最近大火的深度學習則是機器學習的一個分支,主要用基于人工神經網絡的各種方法來實現目的,現在有很多變種,本文中使用的神經網絡是一個卷積神經網絡(Convolutional Neural Networks, CNN)。
文章中神經科學實驗部分主要使用的信號讀取方法是功能磁共振( functional Magnetic Resonance Imaging,功能核磁共振),主要原理是通過監測腦區血流量的變化來間接測量腦區的活動程度,當一個腦區活動程度增強的時候,相應的血流量也會增加,為腦區輸送更多的氧氣,影響,以及排除廢物。功能磁共振的空間分辨率很高,但其時間分辨率比較有限,只能采集到2s 左右時間內的平均活動程度,同時對于神經活動的檢測有一定延時。
前一周去開ASSC 的時候聽到一個很有趣的工作,用深度學習來解析人類夢境中出現的物體類別。我見到的為數不多融合深度學習和神經科學的工作。回來之后翻了下相關文章,來在這分享下。
本文介紹的總體思路:
1.證明視知覺和夢境在視覺皮層上的神經活動有部分類似的激活模式。[1] 2.以正常視知覺為訓練集訓練一個 Decoder,從被試的視覺皮層神經活動信號到***的物體類別。這里是分成兩部分,先從 fMRI 信號到特征空間,再從特征空間用相關性分析的辦法推測物體類別。[2] 3.用這個 Decoder 來預測夢境中的物體類別。[3]
4. 夾點私貨,用里面的數據來說下 視覺皮層和 卷積神經網絡底層的相似性,也算是解釋了 為什么用卷積神經網絡的效果要更好。
5. ***我個人從一個認知神經科學研究生和一個機器學習初學者的角度來分析下這個工作。
前三點,對應了他們組發的三篇文章。我們從頭開始說。 先是13年的一個工作。Neural Decoding of Visual Imagery During Sleep.
實驗部分:
實驗過程中被試躺在核磁共振成像儀里面,在持續通過腦電圖(electroencephalogram, EEG)來檢測被試的睡眠狀態的同時掃描大腦活動。在通過特定的腦電特征了解被試進入夢境狀態之后,會叫醒被試并讓其口頭描述夢境內容。(如下圖所示)
結果部分:
在夢境實驗之前,作者收集了被試們在看圖片時候視覺皮層的Fmri信號,并基于此訓練一個線性SVM(Support Vector Machine,支持向量機)分類器。并用此分類器嘗試解碼出被試在夢境狀態下的看到的物體,這里作者使用的任務相對簡單,是要在兩個物體類別里面挑出正確的那一個。結果是預測準確率大于50%,高于隨機水平,說明視知覺和夢境在視覺皮層有類似的信息表征機制。
這個工作做的其實超前,在13年的時候大概是***嘗試解析夢境的工作,也是很早把機器學習和神經科學結合起來的工作,但是由于和今天的主題不是特別相關,所以只介紹了我需要的結果,至于具體用的思路和方法,在此略過,有興趣的同學,可以自行查找原文。[1]
接下來是重點,如何從被試看圖片的 fMRI 信號中解出物體類別。
實驗部分:
作者在此主要做了兩類實驗,一類是正常看物體的圖片,另一類是基于線索來想象物體的形象。
在看物體實驗中,被試會被呈現不同的圖片,每張圖片9秒鐘。這里加了一個比較簡單的小任務,當出現的圖片和上一張出現的圖片相同的時候,被試需要做按鍵反應。這里是為了讓被試的注意維持在圖片上。 第二類是想象實驗,在線索階段,會有1個目標詞匯和49個干擾詞出現,在聽到‘滴’聲之后,被試要閉上眼睛,想象目標詞匯的形象。過了15s,聽到‘滴’ 之后,睜眼,確認想象的形象是目標形象。 在實驗進行的過程中,會采集被試視覺皮層的fMRI信號。
從fMRI到物體類別
接下來的數據分析工作,也就是從fMRI信號到物體類別是分兩步走的,
***步是fMRI 信號到 特征空間。
作者在此用了一個8層預訓練好的神經網絡來做特征提取。在前七層中每層隨機選1000個神經元,以及第八層的全部1000個神經元,把一張圖片前向傳播過網絡后,這些神經元的輸出作為特征。這樣每張圖片前向傳播之后,可以獲得一個 8層 * 1000 特征/層 的特征矩陣。
之后是被試用被試的fMRI信號來訓練一系列Decoder,從被試的fMRI信號來擬合不同層中不同特征的值。來實現從fMRI信號到特征空間的轉換。
第二步是從特征空間到物體的類別。
這里作者首先做的是,計算各個物體類別的特征矩陣。他的做法是,每一個類別下面所有圖片前向跑一遍網絡,把生成的所有的特征矩陣平均,得到一個物體類別對應的特征矩陣。
如果要計算上一步中,被試夢境中解碼出來的特征矩陣具體對應著哪個類別的物體。這里做一個簡單的相關,取相關系數***的那個類別為預測類別。
結果:
這篇文章做出的結果不能說很好,但是確實為這個領域的應用提出了一個有趣的方向。
這張圖截取的是卷積神經網絡部分預測準確率。可以看到,在被試真正看到圖片的情況下,使用某些層的預測準確率可以到達很高,超過90%,在直接用這個網絡遷移到想象情況下,也可以達到一個高于隨機猜測的準確率。明顯看出,現有模型對于想象圖片的預測能力要差很多。其實想來有一定道理,***就是,想象和直接看肯定有不同的底層視覺機制。第二就是模型是基于真正看圖片的情況來訓練的,遷移到另外一個相似卻不完全相同的任務上表現表現自然會差一些。
解夢的工作:
這篇文章是重點講的。再重點也不會逐字翻譯,我只會把整體的邏輯講通。。喜歡這篇文章的同學們歡迎去看原文。[3]
這篇文章很巧妙的地方在于,他沒做實驗。。。用的是***篇文章的數據和第二篇文章的模型。
Single category feature decoding with averaged trials
夢境中單物體類別的識別。
這里用的是書的例子,被試在做夢的時候,可能會在多個夢境中都出現書這個物體,作者把這幾個夢境對應的fMRI信號加起來做平均,然后通過文章2中訓練處的Decoder 來預測出當前夢境的特征矩陣,之后和書這個類別的特征矩陣做相關。
結果顯示,高級腦區和神經網絡的高層對于物體識別的效果比較好,當他們兩結合在一起時候產生的效果***。
Multi-category feature decoding with individual trials
當然,一個夢境里面只出現書也不現實,大家都有這樣的經歷,夢境更多是一整個場景,會出現多個物體,如上圖,這個夢境中,除了書還有一個男人和食物。所以作者也做了這個實驗,單個夢境里面多物體的識別。用的是單個夢境對應fMRI信號Decode出來的特征矩陣來和被試報告的所有類別的特征矩陣 的平均矩陣做相關比較。這個預測結果更差了。。。但是從趨勢上和上一個實驗類似。高級腦區和網絡的高層有更好的預測能力。
***一個實驗,其實是重現了文章1中***的實驗,在兩個物體類別中找到真正在夢境中出現的那個類別。用的方法也是特征矩陣的相關。準確率大大高于***篇文章基于SVM(支持向量機)的結果。
這里也可以看到的是,看到物體實驗的結果在神經網絡的中間層(4,5,6)層表現比較好,到***層反倒有一個下降的趨勢,這個趨勢在想象的結果中也有體現。對于夢境這個實驗,雖然預測效果同樣大于隨機猜測,但是在7層出現了一個下降而又在8層回升的現象,模式與看圖片和想圖片的模式不符。暗示夢境的神經機制和視知覺雖然有一定相似性,但是具體的機制還存在一定的差異。
夾帶私貨。 用這個文章的數據來簡要討論下卷積神經網絡和人類視覺皮層的相似性。而這個相似性也是我寫這篇文章的原因之一。
Image feature decoding and the homology of CNN and the human brain.
這個圖出現在第二篇文章之中。a 是預測的特征矩陣不同層和實際的特征值的對比,有一定的重合,說明Decoder 確實在一定程度上學到了 從fMRI信號到卷積神經網絡不同層特征的映射。B圖是用不同視覺皮層預測出來的feature value 和 實際的feature value 的比較。這里比較有趣的是,低級的視覺皮層,如V1,V2,V3 在擬合低層卷積神經網絡 的時候效果相對稍好,而高級視覺皮層(FFA ( fusiform face area,梭狀回面孔識別區,神經科學研究發現主要參與人臉識別),PPA(Parahippocampal place area,神經科學發現主要參與場景識別))在擬合高層卷積神經網絡的時候效果相對稍好。
Preferred images and weight distributions for CNN layers.
在神經科學領域,有類似的研究,證明 FFA,PPA 這種相對高級的皮層,會對更復雜的視覺刺激有比較強烈的反應,如FFA,主要對人臉反應,PPA 對物體,而底層皮層,如V1,V2,V3 更多的對底層視覺元素反應,如不同方向的線以及顏色等等。作者用一種 Activation Maximization 的方法來生成更能刺激相應層的圖片,并用這些圖片來給被試看,并用這些數據的fMRI來生成特征矩陣。發現了類似的現象。人越高級的皮層,擬合的結果對應高級卷積層的效果越好。
這暗示著 卷積神經網絡和人類視覺皮層有一定的相似性,低級主管局部特征,高層主管語義特征。
整體文章就完結了。可能有些朋友覺得看的一頭霧水,我在這重新整理下行文邏輯。
1.證明視知覺和夢境在視覺皮層上的神經活動有部分類似的 pattern。
2.以正常視知覺為訓練集訓練一個 Decoder,從被試的視覺皮層神經活動信號到***的物體類別。這里是分成兩部分,先從 fMRI 信號到特征空間,再從特征空間用相關性分析的辦法推測物體類別。
3.用這個 Decoder 來預測夢境中的物體類別。
4. 夾點私貨,用里面的數據來說下 視覺皮層和 卷積神經網絡底層的相似性,也算是解釋了 為什么用卷積神經網絡的效果要更好。
5. ***我個人從一個認知神經科學研究生和一個機器學習初學者的角度來分析下這個工作。 個人對一系列文章的評價:
很有趣的工作,13年的時候,***次用fMRI +機器學習技術嘗試解析夢境,15年的時候,能做到以一定的準確程度從被試的fMRI信號中成功解析看到的物體,從這兩點來看,是非常有開創性的工作。除此之外,關于卷積神經網絡 和相關腦區的比較也是比較有趣的工作,一定程度上說明了卷積神經網絡和人類視覺皮層的相似性。
作為一個認知神經科學研究生,我認為這幾個實驗做得挺好的,簡單,但是十分有效,如果說有什么改進的話,就是如果能來和我們所合作,用7T更高分辨率來試一下是不是會更好啊,還有就是***的一些序列可能能做到更好的結果。但是相信作者也是有一些權衡的,不止要考慮分辨率,還要考慮SNR, 尤其是夢境里面,噪音也需要注意一下。。。
作為一個機器學習方向初學者來說,我個人認為,可以改進的地方還是有一些的,主要集中在模型部分。 這個8層神經網絡如果用一些更先進的模型,會不會有一些更好的效果。還有特征矩陣做平均,卷積神經網絡在低層只是能對簡單特征進行反應,一個物體的不同面的局部特征差異會比較大,這樣做平均的結果,會導致實際的預測能力比較差。個人覺得或許一個好一些的方法是做繼續前向,***得出類別之后來做投票。除此之外,我個人還有一些其他想法,想來用我這邊的一些東西來試著實現下。如果有一樣對此有興趣的同學,歡迎評論區/私信討論。