这篇文章主要的工作算是机器学习和神经科学的结合工作,需要读者在这两个方向有一定的基础。
另有科普版本,结构更加清晰,不过删减了很多内容。科普版本如下:
用深度学习来解析梦境中出现的物体 - 行为与认知神经科学
(https://zhuanlan.zhihu.com/p/27948255)
机器学习简介:机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。最近大火的深度学习则是机器学习的一个分支,主要用基于人工神经网络的各种方法来实现目的,现在有很多变种,本文中使用的神经网络是一个卷积神经网络(Convolutional Neural Networks, CNN)。
文章中神经科学实验部分主要使用的信号读取方法是功能磁共振( functional Magnetic Resonance Imaging,功能核磁共振),主要原理是通过监测脑区血流量的变化来间接测量脑区的活动程度,当一个脑区活动程度增强的时候,相应的血流量也会增加,为脑区输送更多的氧气,影响,以及排除废物。功能磁共振的空间分辨率很高,但其时间分辨率比较有限,只能采集到2s 左右时间内的平均活动程度,同时对于神经活动的检测有一定延时。
前一周去开ASSC 的时候听到一个很有趣的工作,用深度学习来解析人类梦境中出现的物体类别。我见到的为数不多融合深度学习和神经科学的工作。回来之后翻了下相关文章,来在这分享下。
本文介绍的总体思路:
-
证明视知觉和梦境在视觉皮层上的神经活动有部分类似的激活模式。[1]
-
以正常视知觉为训练集训练一个 Decoder,从被试的视觉皮层神经活动信号到最后的物体类别。这里是分成两部分,先从 fMRI 信号到特征空间,再从特征空间用相关性分析的办法推测物体类别。[2]
-
用这个 Decoder 来预测梦境中的物体类别。[3]
-
夹点私货,用里面的数据来说下视觉皮层和卷积神经网络底层的相似性,也算是解释了为什么用卷积神经网络的效果要更好。
-
最后我个人从一个认知神经科学研究生和一个机器学习初学者的角度来分析下这个工作。
前三点,对应了他们组发的三篇文章。我们从头开始说。 先是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层神经网络如果用一些更先进的模型,会不会有一些更好的效果。还有特征矩阵做平均,卷积神经网络在低层只是能对简单特征进行反应,一个物体的不同面的局部特征差异会比较大,这样做平均的结果,会导致实际的预测能力比较差。个人觉得或许一个好一些的方法是做继续前向,最后得出类别之后来做投票。除此之外,我个人还有一些其他想法,想来用我这边的一些东西来试着实现下。如果有一样对此有兴趣的同学,欢迎评论区/私信讨论。
行为与认知神经科学 专栏的编辑亦有帮助。
参考文献:
本文使用的全部图片都来基于参考文献中的figure,做了适当裁剪和缩放。
[1] Horikawa T, Tamaki M, Miyawaki Y, et al. Neural decoding of visualimagery during sleep[J]. Science, 2013, 340(6132): 639-642.
[2] Horikawa T, Kamitani Y. Generic decoding of seen and imagined objectsusing hierarchical visual features[J]. arXiv preprint arXiv:1510.06479, 2015.
[3] Horikawa T, Kamitani Y. Hierarchical Neural Representation of DreamedObjects Revealed by Brain Decoding with Deep Neural Network Features[J].Frontiers in computational neuroscience, 2017, 11.