先问你一个问题:如果你是个生物学家,手头只有几百个细胞样本的数据,你想知道两组变量之间到底有没有关系,关系有多强,你会怎么办?
过去的答案很残酷:你得先训练一个神经网络,专门为你手头这批数据训练,训练完了才能用。数据量不够怎么办?不够也得训练,训练出来的结果大概率不准。数据类型变了怎么办?比如你这次要处理的是DNA序列,不是连续数值,那之前那套代码基本作废,得重新设计。
这就是**互信息**这个指标长期以来的尴尬处境。
互信息:衡量两个变量之间统计依赖程度的指标,数值越大说明两者关联越紧密,是信息论里最核心的概念之一,广泛用在机器学习、生物学、神经科学等领域。
它理论上很优雅,能捕捉到线性相关系数捕捉不到的非线性关系。但落到实际操作上,几乎每一种现有的估计方法都要求你为每一个新的数据分布单独训练一个模型。这就好比你每次想量一下房间的温度,都得先根据这个房间的形状、材质、朝向,重新造一支专用温度计,造完了才能测,测完这支温度计就扔了,下一个房间还得重造。
这篇来自欧洲电信学院(EURECOM)的论文,提出了一个东西,直接把这套流程给废了。
**核心问题:为什么互信息这么难估计**
要理解Alice这个模型的价值,得先搞清楚互信息估计到底难在哪。
互信息的定义是联合分布和边缘分布乘积之间的KL散度(一种衡量两个概率分布差异的方式)。听起来抽象,但问题的根子在于:你手上永远只有有限的样本,而互信息这个量本质上要求你知道整个联合概率密度,还对高密度区域的罕见事件特别敏感,维度一高,估计的可靠性就急剧下降。
过去十年里,学界发展出了两条主要路线。第一条是变分下界方法,比如MINE、InfoNCE、NWJ、SMILE这些,它们的思路是优化一个可以证明是互信息下界的目标函数,但这类方法有个理论上无法回避的硬伤:如果你只有N个样本,你几乎不可能得到一个高于log N的可信下界。换句话说,样本少的时候这些方法天生就是瘸腿的。
第二条路线是这几年才火起来的,基于扩散模型(diffusion model)的估计器,比如MINDE、InfoBridge、FMMI。这些方法把互信息的计算转化成了一个"速度场差异"的积分问题,理论上更干净,但代价是:每换一个新的数据分布,你都得重新训练一遍网络。
也有人尝试过用超网络(hypernetwork)来做"免训练"估计,比如InfoAtlas,它让一个大网络去生成另一个小网络的参数,理论上避免了每次都重新训练。但论文里的实测数据很直接:InfoAtlas在各种预算下的平均误差都在0.25到0.28纳特(互信息的计量单位)之间,远远落后于那些老老实实训练过的专用模型。这说明"绕开训练"这件事本身不难,难的是绕开训练还能保持精度。
这就是Alice要解决的真正矛盾:既要像基础模型(foundation model)一样,训练一次就能用在任何没见过的数据上,又要在精度上追平那些为每个任务单独调优的专用模型。
基础模型:一种先在海量数据上完成一次性训练,之后可以直接应用到各种下游任务而不需要重新训练的模型,类似GPT这类大语言模型的训练范式,只不过Alice用在了互信息估计这个具体任务上。
**Alice的核心思路:用速度场代替直接估计互信息**
Alice没有直接去学"这两个变量的互信息是多少",它学的是一个更基础、更通用的东西:速度场。
这里要绕一个弯子解释清楚。近几年生成式AI里很火的一类模型叫扩散模型或者流匹配模型(flow matching),它们的核心思路是:把一个复杂的数据分布,通过一个连续的过程,逐渐"拉"成一个简单的高斯噪声分布,这个过程里每一个时刻、每一个点,都对应着一个运动方向,这个方向就叫速度场。
速度场:在扩散/流匹配模型里,描述数据点从"干净样本"逐渐变成"随机噪声"这个过程中,每个时刻每个位置上应该往哪个方向移动的向量场,本质上刻画的是这个位置背后隐藏的概率分布的结构信息。
论文里证明了一个关键数学事实:两个分布之间的KL散度(互信息本质上就是一种KL散度),可以写成这两个分布各自速度场之差的平方,沿时间积分的结果。用大白话说就是:只要你知道了两个分布的速度场,你就能直接算出它们之间的互信息,不需要再做别的事情。
具体到互信息计算,公式要用到三个速度场:联合分布的速度场,以及两个"条件速度场"——分别是固定Y看X的分布、固定X看Y的分布对应的速度场。把这三个场两两做差、平方、按权重积分,答案就出来了。
这个发现的巧妙之处在于,它把"估计互信息"这件事,转化成了"估计三个速度场"这件事。而估计速度场,恰好是扩散模型最擅长干的活。
那为什么这能带来免训练的可能?因为速度场的估计,本质上是从样本里学一个条件期望,这件事是可以被摊销(amortize)的,也就是说可以用一个模型去泛化处理很多不同的分布,而不需要每个分布单独训练。这就是Alice整个设计的出发点。
**上下文学习:让模型看样本就能"现学现会"**
Alice具体是怎么做到不训练就能用的?答案是**上下文学习**(in-context learning)。
上下文学习:模型不通过梯度下降更新参数来学习新任务,而是把任务相关的样本数据直接作为输入喂给模型,模型在一次前向传播里,根据这些样本"现场推断"出该怎么处理这个任务,类似人看几个例题就能举一反三,而不需要重新做作业训练自己。
传统的流匹配模型,一组参数对应一个分布。你想处理一个新分布,就得重新训练一套参数。Alice反其道而行之:它训练一个单一的Transformer网络,这个网络接受两样东西作为输入,一是一批"上下文样本"(context),也就是从未知分布里抽出来的一堆干净数据点;二是一个"查询点"(query),也就是你想知道速度场在哪个位置上的值。模型看了这批上下文样本之后,就能现场推断出这个分布的速度场长什么样,然后回答你查询点上的速度是多少。
这跟请一个经验丰富的翻译员有点像。你不需要针对每一种新语言重新培养一个翻译员,你只需要给他看几百个例句,他凭借过去积累的语言直觉,就能现场推断出这门新语言的语法规律,然后帮你翻译具体的句子。如果没有这种"现场推断"的能力,你每遇到一种新语言,都得从头培养一个专属翻译员,成本高到没法用。Alice的设计就是要避免"每个分布专属一个模型"这种低效模式。
那么这个"现场推断"的能力从哪来?论文里提到,近几年已经有不少理论和实证研究证明,Transformer确实可以在前向传播过程中隐式地执行学习算法,这不是空想,是有严谨工作支撑的方向。Alice站在了这些研究的肩膀上,把这套机制专门用来预测速度场。
**架构设计:如何让一个模型适配任意维度和任意样本量**
光有思路还不够,工程实现上有个大麻烦:真实世界里,不同的数据集维度千差万别,样本数量也千差万别。生物学数据可能是几千个细胞样本,神经科学数据可能是几百次神经元放电记录,维度从2维到100维都有可能。一个模型要怎么同时兼容这些完全不同的情况?
Alice的解法是把每一个标量数值都当成一个独立的"token"(词元)。
Token:在Transformer架构里,指输入序列中的最小处理单元,原本是自然语言处理里"词"的概念,这里被借用来表示数据里的每一个标量坐标值,这样无论数据维度多高、样本多少,都可以被拆解成统一大小的基本单位喂给模型。
也就是说,一个样本如果有d个坐标,就被拆成d个token,每个token经过同一套共享的投影层处理。这样一来,模型的参数量就和数据的维度d、样本数量n完全脱钩,同一套权重可以喂进任意维度、任意样本量的数据。
但这里有个隐患:如果上下文样本数量特别大,比如几万个样本,那自注意力机制(self-attention)的计算量会随样本数量的平方增长,很快就算不动了。Alice借用了稀疏高斯过程里"诱导点"(inducing points)的思路,引入了一组数量固定的"潜在向量"(induced latents),让上下文样本先被压缩进这组固定数量的潜在向量里,之后所有的深层计算都在这组固定大小的潜在向量上进行,计算复杂度就从和样本数的平方相关,降到了和样本数线性相关。
这就好比开一场几万人的大会,你不可能让主持人挨个跟每个人对话,那样效率太低,时间根本不够。合理的做法是先分成几十个小组,每个小组推选一个代表,主持人只跟这几十个代表沟通,代表再把结论传达回本组。如果没有这层"代表压缩"机制,模型面对上万样本时的计算成本会直接爆炸,根本没法在实际场景里落地使用。
除了压缩上下文,Alice还专门设计了一个"关系图"机制,用来捕捉不同坐标之间的依赖关系。因为数据里某个坐标的取值往往依赖其他坐标,比如身高和体重之间有关联,这种关联结构在不同的分布里是完全不同的,模型需要从当前的上下文样本里现场推断出这些坐标之间"谁和谁相关、相关到什么程度、是正相关还是负相关",然后用这个关系图去指导信息在不同坐标表示之间的流动。这个机制用的是非线性特征之间的协方差来刻画关系,比单纯算线性相关系数能捕捉到更复杂的依赖模式,比如一个变量恰好是另一个变量的平方这种非线性关系。
**训练语料:完全合成,从没见过真实数据**
这是Alice最让人意外的一点:它的训练数据完全是人工合成的,没有用过一丁点真实世界的生物、基因或神经科学数据。
训练语料库里包含了四类合成分布:高斯与学生t分布的混合(copula mixtures)、经过非线性变换的潜在空间扭曲分布(latent warps)、非参数回归生成的数据、以及流形(manifold)上的近奇异分布。这些分布的设计目标很明确:要尽可能覆盖各种依赖结构、条件行为模式和支撑几何形状,让模型见识足够丰富的"世界观",这样它面对从未见过的真实数据分布时,才有可能靠泛化能力应对。
这种做法乍一听有点反直觉,你训练一个要用在生物学、基因学、神经科学数据上的模型,居然一点真实的生物数据都不碰?但仔细想想这个逻辑是成立的:Alice学的不是"生物数据长什么样",它学的是"给定任意一批样本,如何推断这批样本背后分布的速度场",这是一个更底层、更通用的能力。就像学开车这件事,你在驾校练的是标准化场地和固定路线,但学会之后你能开到任何一条没练过的真实道路上去,因为你学到的是"驾驶"这个通用技能,而不是某一条具体路线的死记硬背。如果Alice的训练语料只覆盖某几种特定分布类型,它大概率只能在类似的分布上表现好,遇到真正陌生的数据结构就会露馅,这也是为什么论文特意强调训练语料要"简单易定义、成本低、易扩展"。
**验证结果:在标准测试集上的表现**
理论讲完了,效果到底怎么样?
论文在一个叫"Beyond Normal"的标准测试集上做了验证,这个测试集包含40个任务,联合维度从2维跨越到100维,而且每个任务都有精确的解析解作为真值,可以直接算误差,不用猜。
测试设置很公平:每个估计器拿到同样的数据预算,分别是1000、5000、10000个样本。结果是这样的,Alice Base版本在所有三个预算档位下误差都是最低的,1000样本时平均误差只有0.092纳特,而当时表现最好的传统方法CCA误差是0.195纳特,差了一倍还多。更夸张的是那些基于神经网络的扩散估计器,在样本量只有1000时几乎没法用,比如MINDE的误差是0.353纳特,NWJ干脆直接发散报废了。
这组数字说明了什么?
它说明在数据稀缺的场景下,传统方法哪怕拼命训练也追不上Alice的零样本表现。而当样本量提升到5000、10000时,专门训练的方法确实追了上来,比如MINDE的误差降到了0.070和0.065纳特,逼近甚至略优于Alice Base的0.063和0.060纳特,但差距已经很小,而且Alice全程不需要为每个任务单独训练。
这个对比很像请一个已经见过成千上万道数学题型的家教老师,和临时找一个只学过这一道题解法的学生比赛做题。数据少的时候,家教老师靠见多识广的通用能力碾压,数据多了之后,学生靠死记硬背反复做题,勉强能追平,但家教老师根本不用额外花时间备课。如果没有这种"通用推断能力",面对小样本场景时就只能眼睁睁看着传统方法崩盘。
计算成本上,Alice相比InfoAtlas也有明显优势。在同样的8192样本预算下,Alice Base只用1.6×10^13的浮点运算量,误差是0.060纳特;而InfoAtlas用了1.9×10^13的运算量,误差却高达0.274纳特。换句话说,Alice用更少的计算,拿到了更好的结果。
**三个真实应用场景:从未见过的数据类型**
光在合成测试集上表现好还不够说服力,论文特意挑了三个完全陌生的真实科学场景来验证Alice的泛化能力,而且这三类数据的类型(离散分布、DNA序列、时间序列)Alice在训练时一次都没见过。
第一个场景是细胞信号传导分析。研究对象是NF-κB信号通路,这是细胞感知炎症因子TNF-α的关键机制。研究者用了15632个细胞,分11种不同浓度的TNF-α刺激,拍摄2小时、每3分钟一帧共40帧的细胞核内外NF-κB比例变化。Alice在这个任务里展示出三个发现:单帧信息量的变化轨迹和NF-κB的核转位过程高度吻合,在15到21分钟时单帧容量达到峰值约1.2比特;把多帧信息拼起来看比单帧信息量更大,前12帧的容量就能达到饱和状态,说明浓度信息编码在了响应的时序动态里而不是某一个静止瞬间;高浓度组之间光看单帧几乎分不清楚,但看整条轨迹就能明显区分开来。这三条结论跟此前专门针对这个数据集训练的研究结论高度一致,但Alice全程零训练,用的是同一个通用模型。
第二个场景是DNA启动子识别,具体是要在拟南芥的基因序列里定位TATA-box这个关键调控motif(基因调控中的短序列模式)。Alice通过滑动窗口扫描序列,在转录起始位点上游30到32个碱基的位置,精确命中了文献记载的TATA-box所在区间。这个定位精度算是一种"正确性的自我验证",因为这个位置是已知的生物学事实,Alice能精准命中,说明它确实学到了有意义的依赖结构,而不是在瞎猜。
第三个场景是脑区活动模式分析,用的是小鼠执行视觉变化检测任务时六个视觉皮层区域的神经元记录数据。这里Alice估计的是一个叫Ω-信息(O-information)的更复杂的多变量指标,用来衡量多个脑区之间信息共享是冗余主导还是协同主导。由于每个实验session只有一百多到两百个独立的有效数据点,传统方法根本没法给每个session单独训练模型,只能把72个session的数据全部混在一起训练一个模型。而Alice因为不需要训练,可以给每一个session单独出一个估计结果,这直接带来了一个新发现:新颖图像引发的脑区信息冗余程度,会随着小鼠对图像熟悉程度的提升而逐渐减弱,这个"熟悉度效应"是之前那种混合训练的方法完全观察不到的,因为混合训练把不同天数的session数据搅在一起,没法拆开看。
这就好比过去做人口普查,因为普查成本太高,只能把全国数据混在一起算一个平均结论,没法看到每个具体城市的细微差异。现在如果普查成本降到几乎为零,你就能给每个城市单独出一份报告,那些原本被平均掉的地域性规律才终于能浮现出来。如果没有这种"零成本重复估计"的能力,脑区信息冗余随熟悉度变化这个发现根本无从谈起。
**写在后面**
读完这篇论文,最触动我的其实不是Alice在基准测试上刷新了多少个百分点,而是它在脑区活动分析那部分展示出的一个侧面效果:当估计成本从"每个样本集训练一次模型"降到"一次前向传播",科学研究本身能问的问题都会变得不一样。
过去研究者不是不想按session拆开分析,是拆开之后数据量太小,没法训练可靠的模型,只能被迫妥协,把72个session混在一起。这种妥协本身是不会被写进论文摘要的,它只会悄悄地把某些真实存在的规律给平均没了。Alice展示的那个"熟悉度降低信息冗余"的发现,某种程度上是被过去的方法论限制给藏起来的东西,不是数据不存在这个规律,而是没人有能力便宜地把它挖出来看。
这让我想到一件挺有意思的事:很多时候科学上的"新发现",未必是自然界突然多出了一个新现象,而是我们分析工具的精度或者成本门槛突然降下来了,原本被噪声或者被迫的数据合并掩盖掉的东西,重新变得可见。这跟显微镜发明之后突然看到细菌是一个道理,细菌一直都在那儿,只是过去的工具看不到。
Alice目前还有个没解决透的问题,论文自己也承认了:在高维度、稀疏依赖的那类任务上(比如螺旋结构嵌入的测试任务),它的误差明显偏大,最高能到0.44纳特的偏差。这说明合成训练语料再丰富,也没法穷尽真实世界可能出现的所有依赖结构的几何形状。这个坑还在那儿,等着下一个训练语料更丰富、模型更大的版本去填。
Q&A
Q1:Alice和之前的互信息估计方法相比,最大的区别是什么?
A:之前的方法比如MINE、InfoNCE、MINDE都需要针对每一个新的数据分布单独训练模型,Alice训练一次就能直接用在从未见过的分布上,通过让模型"看"一批样本数据来现场推断该分布的特性,不需要重新训练。
Q2:Alice在数据量很少的情况下表现怎么样?
A:在样本量只有1000时,Alice的平均误差是0.092纳特,比当时表现最好的传统方法CCA(0.195纳特)低了一倍多,而同期的神经网络估计器比如MINDE误差高达0.353纳特,NWJ甚至直接发散失效。
Q3:Alice的训练数据用了真实的生物或基因数据吗?
A:完全没有,Alice的训练语料全部是人工合成的分布数据,包括高斯混合、非线性变形、流形等结构,它在生物学、基因学、神经科学这三个真实应用场景中处理的数据类型,训练阶段一次都没接触过。







