资讯动态

Brain-Score:用神经科学基准量化深度学习模型的类脑程度

发布时间:2026/10/22 5:01:05 来源:尧图企业网站定制
近两年AI圈有个特别有意思的转向大家不再只盯着ImageNet正确率、刷SOTA榜反而开始认真问一个问题——深度学习模型的内部表征和真实的生物大脑到底有多像Brain-Score就是这个问题的最直接回答。它是开源、免费的神经科学基准评测平台目标很明确在你没有任何脑成像设备、不懂神经科学的情况下也能拿你的模型去和猴子视觉皮层、人类fMRI实测数据“对标”打一个分。这个平台我从去年开始断断续续用过跑了几个CV模型也踩了不少坑。这篇就把它的定位、机制、实操流程和我自己的排障经验一次性说清楚。适合两类人看一是做AI模型研究、想给模型增加“生物学合理性”判断的开发者二是想做计算神经科学入门、但不想啃论文代码的读者。1. 项目概述与核心价值1.1 一句话理解这套平台到底在比什么Brain-Score本质上是一套“AI模型-大脑数据对照测评协议”。传统的模型评测关心的是任务完成度分类是否准确、检测框是否贴合、分割mIoU高不高。Brain-Score关心的不是任务本身而是模型内部的“中间层特征”是否与大脑处理视觉信息时的神经响应模式一致。具体做法可以简化成三步给模型看一堆图片记录它在某一层网络里产生的激活向量给大脑看同一堆图片记录神经元的放电频率或fMRI体素响应最后用相似度指标比如表征相似性分析Representational Similarity Analysis简称RSA来比较这两类响应矩阵的结构是否相近。相近就能拿到高分说明模型内部的计算逻辑在“某种层面上”和大脑对齐了。这套东西的价值不在于替代传统评测而在于提供一个跨学科的统一尺子。以前我们想知道某个模型是否像“人脑”只能定性地说说“attention机制有点像视觉注意”没有任何量化手段。Brain-Score把这件事变成了可提交、可复现、可排名的公开基准彻底改变了AI与神经科学之间的对话方式。1.2 它要解决的是什么问题它的核心动机是打破两个领域之间的信息孤岛。一方面AI研究者手里的工具很锋利而且能快速迭代。今天提出一个注意力模块明天就能在几万张图上把效果跑出来。但如果不考虑生物约束模型很容易走偏成“只会在特定数据集上变聪明”的捷径解。另一方面神经科学家积累了半个世纪的动物电生理、脑成像数据这些数据包含了视觉系统怎么分解轮廓、颜色、深度、运动等丰富信息但缺少一个和模型对照的标准框架。Brain-Score瞄准的痛点就是让神经科学的成果能被AI研究者“直接用上”让AI模型的结构差异能被神经科学量化“看穿”。它不是要代替你写训练代码而是给你一个额外的校验维度。在我实际用下来这个维度比想象中有价值得多。有一次我在自己的特征融合网络上做改动准确率提升不到一个点按理说算个无效调整。但用Brain-Score一测某个脑区相关benchmark从38分跳到44分。这给了一个传统指标完全无法提供的信号这个改动让模型更像大脑了可能有更深层的算法意义。2. 平台架构与评分机制解析2.1 从电生理记录到模型激活分数是怎么算出来的我看很多人第一次打开Brain-Score的GitHub仓库看到一堆benchmark、ceiling、score概念直接劝退了。其实剥开看机制很简单先把大脑数据变成“标准答案”再把模型激活映射到同一个空间。大脑侧的数据来自发表于公开数据集中的真实实验记录。有的是猕猴下颞叶皮质IT皮层多电极阵列记录有的是人类fMRI采集的体素响应。为了公平比较官方把数据分成两拨一拨用于拟合线性映射一拨用于计算最终相似度。这里不能把映射拟合和打分混在一起算不然会出现模型记忆某个固定表征导致的虚高分数。这种“持出验证”的思路和机器学习里的train/valid拆分一脉相承。模型侧的处理流程则标准化了输入图片先统一缩放成网络要求的尺寸前向传播截取某一个层或某几个层的激活把激活矩阵展平成“模型表征矩阵”。然后对模型表征矩阵和脑数据矩阵计算RSA得到表征相似性矩阵再算皮尔逊相关系数。多个脑区benchmark的分数取平均或加权就是最终总分。我补充一个容易忽略的细节Brain-Score并不要求你的模型结构必须和解剖学对齐它只看激活空间的几何结构。也就是说哪怕你没有显式模拟感受野、没有模拟V1到V4的分层通路只要激活之间的距离结构和脑数据相似你也能拿高分。这是一把双刃剑——好处是门槛低坏处是高分不一定意味着机制上真的同构这一点在做结论时要克制。2.2 榜单、评测子集与可复用套件平台提供了一套完整的可复用组件。最常用的是brain-score.score_model这个入口函数传入模型对象和需要评测的benchmark列表它会自动完成数据下载、图片预处理、激活收集、相似度计算最后返回分数和明细。官方排行榜公布了几十个模型的结果从早期的经典深度卷积网络到Vision Transformer、MLP-Mixer、自监督模型都有覆盖。我刚开始看榜单时的第一反应是Transformer在大脑相似性上并没有想象中那么碾压CNN这个结论本身就挺有信息量。它提示我们视觉Transformer虽然在任务上跑得漂亮但其内部表征结构和灵长类视觉通路的对齐程度并不天然更好。各个benchmark之间差异也很大有些模型在早期视觉皮层benchmark上表现特别好有些则在下游高级脑区benchmark上领先。所以看总分时一定要同时看明细否则很容易被平均分误导。它还提供了ModelTrained封装层方便把PyTorch模型包里成统一接口。实际开发时你只需要用这个类把自己的模型“包一层”其余事情平台代劳。对于不想碰命令行的人官方网页还支持直接提交模型输出文件不过本地跑一遍的价值在于你能看到中间激活方便排查问题。2.3 为什么说这比“刷榜”更有意义过去二十年深度学习进展几乎都由任务指标驱动这没什么错但存在一个盲区任务指标只衡量“输出对不对”不衡量“过程像不像人”。一个黑盒分类器完全可以通过偶然的统计捷径达到高精度人脑却必须处理实时流式输入、在极低功耗下工作、在嘈杂环境中保持稳定。两者之间一定存在某种结构性的差异而这种差异恰恰是通用智能研究中最值得关注的部分。Brain-Score把“过程质量”拿到了台面上用生物学响应数据给它赋予了一个可量化的度量。这在工程上能帮助筛选模型候选架构在科学上能为我们提供“算得越多是否等于想得越像样”的判断依据。我个人的体会是对这种平台不要神化。它不会告诉我某个模型一定比另一个模型好但只要它给出的分数变化方向和我的理论假设一致就能显著增强我的信心。比如我想要验证“感受野结构越真实模型对遮挡越鲁棒”这个假设传统做法是做大量消融实验耗时耗力而用脑分数做辅助证据效果直观且说服力强。3. 亲测实操从安装到出分全流程3.1 环境准备与代码获取我在Linux服务器和本机Windows WSL2环境各跑过一次整体坑不算多但有几个关键点值得提前注意。Python版本建议3.8到3.10之间。太新的Python版本偶尔会遇到某些旧依赖包没有预编译轮子的问题源码编译会拖慢进度。需要安装PyTorch和Torchvision版本不宜太旧因为新版模型接口变化大。但也不用刻意追求最新版本稳定优先。先clone仓库然后pip install -e .[dev]把依赖装齐。如果只想调用benchmark接口而不参与开发普通安装即可。git clone https://github.com/brain-score/brain-score.git cd brain-score pip install -e .[dev]这里有个我踩过的坑如果你同时安装了其它深度学习评测库它们可能共享一部分依赖包但版本要求不同pip在解析时偶尔会静默降级某个库导致后续模型前向传播报错。最好在干净的虚拟环境里安装conda create -n brainscore python3.9这种姿势最省心。3.2 首次运行选模型、跑评测、拿结果先挑一个简单的预训练分类网络做实验。把模型包进ModelTrained指定你关心的benchmark然后跑评分。import brain_score from brain_score.tools import ModelTrained model ModelTrained(model, identifiermy_model_v1, visual_degrees8) score brain_score.score_model(model, [dicarlo.Majaj2015]) print(score)第一次运行时平台会联网下载大脑数据集体积不小全程看网络状况。之后数据会被缓存在本地目录重复实验不会再占用带宽。可能有人要问visual_degrees8这个参数是干嘛的它翻译过来是“模型输入图片应占视角8度”。这是神经科学实验里控制视觉刺激大小的标准做法因为灵长类实验对刺激的视角大小很敏感不同视角会激活不同规模的神经元群体。如果你用的模型输入分辨率是224x224平台内部会自动计算对应的转换关系。这个参数缺失或设错不会报错但会影响分数一致性所以务必按实验规范填写。跑完会输出一个包含多个字段的Scoreboard。最外层是总分的几何平均往下是各benchmark的原始分、ceiling基准线上限和相对ceiling的百分数。ceiling这个概念很关键它表示当前脑数据可解释的最大相似度因为采集本身带有噪声任何模型都不可能超过这个上限。很多时候我们看绝对分数可能觉得低得可怜但看相对ceiling才知道模型已经达到八九十的水平这种情况要分开解读。3.3 读懂分数与可视化结果跑通之后别急着收工强烈建议把每个benchmark的相似性矩阵画出来。平台提供了简单的API导出激活和相似度矩阵你可以用常用的绘图库自己画热力图。我第一次画的时候才发现我的模型在早期视觉层和脑数据之间出现了清晰的“对角线激活”说明逐层表征编码顺序和大脑视觉通路的拓扑顺序有对应关系这种图表放论文里非常加分。另外官方榜单上给出了每个模型“已发布分数”和“最新提交分数”两个概念。已发布分数意味着该结果与论文公开结论绑定严谨性更高最新提交分数则是随时可变。如果只是自己内部比较用最新提交即可如果要写进正式报告务必走发布流程并附上哈希值保证可复现。4. 核心环节实现的细节与调优4.1 数据流图与缓存机制整个评测流程可以被看成一个流水线图片 → 模型前向传播 → 激活提取 → 与脑数据对齐 → 相似度计算。平台体现在已经把流水线封装得很干净但了解内部数据流有助于你排查莫名其妙的性能问题。我在跑大批量模型对比时发现激活提取这一步最耗时因为它要对每个benchmark各自的图片集重新走一遍前向传播。平台默认使用“repeat原则”每张图片在多次重复中配上不同噪声这是为了和大脑实验中的多次试次设计对齐。如果你不想做重复噪声对比可以显式关掉能节省接近一半时间但分数会少一个维度的稳健性评估。缓存机制上平台会把中间激活写入磁盘。如果换机器或清空缓存某个benchmark就要重新下载脑数据这对调参实验周期影响很大。我的习惯是用软链接把缓存目录指向大容量机械硬盘反正激活文件顺序读取SSD和HDD差距不明显省下固态空间给训练用。4.2 输入预处理对分数的影响输入预处理是被低估的影响因素。模型训练时用的归一化均值、方差千万不要在评测时偷懒省掉否则激活分布整体偏移分数会大幅波动。我在一个自训练模型上试过忘记加归一化层IT cortex benchmark分数直接掉了8分。这个跌幅甚至比换掉模型头部结构的影响还大很反直觉。对比多模型时还要统一输入尺寸。不同模型的原始训练分辨率差异很大比如一个训练在224px的模型和一个训练在384px的模型直接都用224输入可能让后者发挥不出真实实力这并非模型“不像大脑”而是评测条件不对等。尽量选择与模型训练配置一致的输入设置或者统一用平台推荐的转换管线。还有一个细节是中心裁剪和缩放。大部分视觉模型训练时用随机裁剪做增强但评测时应该用中心裁剪。如果直接resize不做裁剪物体比例变形会导致激活模式异常噪声变大。平台上这些细节都做了合理默认但若你自己写自定义数据通路就很容易重蹈覆辙。4.3 多模型横向对比的正确姿势做横向对比时最忌讳的是“不同模型在不同benchmark组合下比较总分”因为不同benchmark的打分基数不一样。正确姿势是固定benchmark组合只改变模型。比如我想比较自监督预训练和监督预训练谁更像大脑就在完全相同的数据子集上跑同一个head、同一层激活这样的差异才货真价实。选哪一层作为“模型表征”也大有讲究。拿卷积网络来说很多人默认取全局池化前的最后一层卷积输出其实不同层次对应不同脑区。早期层对应V1/V2中间层对应V4高层对应IT。所以如果我要评估模型是否贴合“腹侧视觉通路整体结构”就应该逐层和对应脑区benchmark比较而不是只挑最终层。平台支持layer参数指定层名名称最好用模型内部的层索引字符串别跟模型自定义层名搞混。另一个值得注意的点是head的选择。很多分类模型最后的全连接层是针对1000类ImageNet优化过的它的激活空间受任务标签影响很大未必反映模型真正学到的一般表征。我对比过用倒数第二层和用最后一个全连接层输出分数差异可以到两位数。具体选哪一层取决于你的研究问题关心通用特征就选倒数第二层或倒数第三层关心任务专化特征可以选分类头前一层。5. 常见问题与排障实录5.1 问题速查表我把实际遇到的经典问题整理成表格按出现的频率排序。这张表基本覆盖了90%的新手卡点。现象可能原因解决办法数据下载卡在某个benchmark网络不稳定或代理配置异常断网重试或手动下载数据包放入缓存目录再重跑报错提示模型输入尺寸不匹配模型期望尺寸与平台默认不一致在ModelTrained中显式指定图片尺寸和visual_degrees分数异常低或NaN模型未进入eval模式、有dropout干扰调用eval()要求推理阶段无随机性不同次运行分数抖动未固定随机种子PyTorch设置seed并关闭cudnn的benchmark模式内存占用过大导致OOM同时缓存多个大模型的激活分批评测缩短batch size或换大内存机器版本冲突导致导入报错与其它库共享依赖时被pip降级用隔离虚拟环境固定requirements版本这里面NaN问题最隐蔽。有一次我自己的模型里忘了关训练模式的batch normalization统计更新导致评测过程产生了信息泄露计算结果直接无效。千万记住给平台传入的模型务必处于.eval()状态并且没有启用任何随机性模块。5.2 经验心得第一条心得先小后大先少后多。初次尝试不要一下子跑平台的全套benchmark那会涉及数个GB的脑数据下载和几小时的GPU前向推理。先选一个相对独立的benchmark跑通流程、看清输出格式再逐步扩展。我头一回头脑发热全量跑结果中途磁盘满了前功尽弃。第二条心得记录所有超参数环境。平台版本、PyTorch版本、模型权重哈希、缓存目录路径这些都要钉进实验记录里。脑评测和普通训练评测本质区别在于“真实世界数据固定不变”一旦换了版本或缓存复现就非常痛苦。我后来养成习惯每个模型的评测结果都生成一个JSON元信息文件随分数一起存档。第三条心得不要盲目跟榜单攀比。不同提交者使用的评测环境、输入尺寸、层选择都可能有差异直接在公开排行榜上横向比分会失真。榜单的价值更多在于观察趋势和研究团队在不同时期的实验方向你应该把它当作参考文献而不是竞赛排名。6. 前沿方向与个人建议6.1 这个平台下一步可能长成什么样从社区动态来看Brain-Score正在从纯视觉扩展向多模态和语言方向延伸。视觉早期只涉及静态图像但现在已经有团队在尝试把视频刺激、听觉刺激、认知任务态数据都纳入评测框架。这意味着未来一个多模态模型可以同时对照多个感觉通路的脑数据给你一个更全面的“类脑指数”。另一个方向是反向针对模型结构设计可解释性工具。现在的分数是整体相关未来可能会细化到“哪个模块贡献了分数上涨”“哪个层和脑区的匹配度驱动了总分”这对架构搜索和神经科学假设检验都很有价值。我预测这类归因工具会逐渐成为平台的标准组件。还有个方向自然通往“仿神经架构”的工程实践。类脑子方向中的脉冲神经网络可以天然地在这里评测平台为它们提供了和传统深度网络相同的尺子这种混合评估框架能帮你判断生物合理性和任务性能之间的权衡是否划算。6.2 我后续准备怎么用它就我自己的研究来说接下来打算把Brain-Score纳入模型选型的固定流程每个候选架构不仅报告激活精度还附带脑分数明细。多余的成本就是一点GPU时间与网络带宽但换来的是一个更立体、更不容易被单一指标欺骗的模型画像。对于刚接触这个平台的人我的建议很直接不要害怕神经科学术语。你只需要理解“激活矩阵距离和脑响应矩阵距离越近越好”这一个核心就够了其余都可以在跑通第一个benchmark的过程中逐步理解。真的跑一次后你会对“模型内部表征”这件事产生完全不同于以往的直觉。这个领域最迷人的不是做一个更高分的榜单模型而是第一次发现某种你在代码里随手写的结构竟然对应了灵长类视觉系统演化几亿年才得出的计算策略。Brain-Score把一个虚无缥缈的“类脑”概念变成了可以量化的标尺哪怕它现在还有各种不完美但这种“可证伪、可比较、可积累”的方向才是AI与神经科学真正开始融合的价值所在。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑