Prior-Data Fitted Network
从贝叶斯后验预测到 Prior-Data Fitted Networks
Prior-Data Fitted Networks(PFN)提供了一种与传统监督学习显著不同的建模范式。在通常的机器学习流程中,当一个新的训练数据集到来时,我们需要重新拟合模型参数:线性模型求解新的回归系数,梯度提升树重新构造树结构,神经网络重新进行梯度下降;在贝叶斯方法中,则需要基于新的观测数据重新计算或近似参数后验。PFN 的核心思想恰恰是把这一过程进一步抽象:能否不再为每一个新数据集重新运行一套学习算法,而是提前训练一个神经网络,使其本身近似“学习算法”乃至“贝叶斯推断算法”?
TabPFN 是这一思想在表格数据上的代表性实现。原始 TabPFN 将训练样本与测试样本共同作为 Transformer 的上下文输入,不在真实任务上进行梯度更新,而是在一次前向传播中直接输出测试样本的预测分布。原始工作将这一过程明确解释为对指定数据先验下 Bayesian posterior predictive distribution,即贝叶斯后验预测分布的近似。 从这个角度看,PFN 最值得理解的地方在于它重新安排了机器学习中的计算位置:昂贵的推断被提前摊销到离线预训练阶段,而真实数据集上的学习被转换成一次条件前向传播。
这也是理解 PFN 的主线:先从贝叶斯推断出发,得到理想预测器;再构造一个能够产生大量机器学习任务的先验;最后用监督学习训练一个神经网络去逼近这个理想预测器。下面将沿着这条路线,从数学上完整推导 PFN。
1. 从监督学习重新表述问题:我们真正需要预测的是什么
1.1 传统参数学习与贝叶斯学习的区别
考虑监督学习数据集
\[D_{\mathrm{train}} = \{(x_1,y_1),(x_2,y_2),\ldots,(x_n,y_n)\}.\]对于一个新的输入 $x_\ast$,目标是预测对应标签 $y_\ast$。在传统参数化机器学习中,我们首先假设一个模型族 $f_\phi$,其中 $\phi$ 表示模型参数,然后通过训练数据找到某个参数估计值,例如最大似然估计
\[\hat{\phi}_{\mathrm{MLE}} = \arg\max_{\phi}p(D_{\mathrm{train}}\mid\phi),\]或者最大后验估计
\[\hat{\phi}_{\mathrm{MAP}} = \arg\max_{\phi}p(D_{\mathrm{train}}\mid\phi)p(\phi).\]得到 $\hat{\phi}$ 后,再使用 $p(y_\ast\mid x_\ast,\hat{\phi})$ 完成预测。这种方法的关键特点是:最终预测依赖一个确定的参数点估计。即使训练数据并不足以唯一确定模型,我们通常仍然选择一个“最好”的参数解。
贝叶斯推断采取不同的观点。贝叶斯方法并不认为训练数据一定能够确定唯一正确的 $\phi$,而是把模型参数、函数、结构甚至整个数据生成机制视为随机变量。首先给出先验分布 $p(\phi)$,它描述在观察数据之前我们认为不同假设有多大的可能性;观察训练数据以后,通过 Bayes 定理得到后验分布
\[p(\phi\mid D_{\mathrm{train}}) = \frac{ p(D_{\mathrm{train}}\mid\phi)p(\phi) }{ p(D_{\mathrm{train}}) }.\]其中边缘似然为
\[p(D_{\mathrm{train}}) = \int p(D_{\mathrm{train}}\mid\phi)p(\phi) \,d\phi.\]因此,贝叶斯方法回答“在观察当前训练数据以后,各种 $\phi$ 分别还有多大可能性”。
1.2 真正用于预测的是 posterior predictive distribution
对于新的 $x_\ast$,真正需要计算的是后验预测分布 Posterior Predictive Distribution,简称 PPD:
\[p(y_\ast\mid x_\ast,D_{\mathrm{train}}) = \int p(y_\ast\mid x_\ast,\phi) p(\phi\mid D_{\mathrm{train}}) \,d\phi.\]把 Bayes 定理代入,可以得到
\[p(y_\ast\mid x_\ast,D_{\mathrm{train}}) = \frac{ \int p(y_\ast\mid x_\ast,\phi) p(D_{\mathrm{train}}\mid\phi) p(\phi) \,d\phi }{ p(D_{\mathrm{train}}) }.\]忽略与 $y_\ast$ 无关的归一化常数,也可以写成
\[p(y_\ast\mid x_\ast,D_{\mathrm{train}}) \propto \int p(y_\ast\mid x_\ast,\phi) p(D_{\mathrm{train}}\mid\phi) p(\phi) \,d\phi.\]这正是 PFN 所希望逼近的核心对象。TabPFN 的论文同样从这一形式出发,将 $\phi$ 更一般地解释为一个数据生成假设:它可以是一组神经网络权重,也可以是一种结构因果模型,甚至可以包含模型结构、超参数以及噪声机制。
这个公式揭示了一个重要事实:贝叶斯预测是在所有可能的数据生成机制上进行加权平均。一个假设 $\phi$ 的权重由两部分共同决定:先验 $p(\phi)$ 描述它原本有多合理,似然 $p(D_{\mathrm{train}}\mid\phi)$ 描述它与已经观察到的数据有多吻合。因此,PPD 可以理解为一个理论上规模无限的 Bayesian ensemble。
2. 困难:积分昂贵
2.1 不能直接计算 PPD
如果 $\phi$ 是一个只有少量参数的共轭模型,上述积分有时可以解析求解。例如 Beta-Bernoulli、Dirichlet-Multinomial 或某些 Gaussian 模型都存在封闭形式。然而,一旦 $\phi$ 表示神经网络权重、复杂图结构、超参数组合或结构因果模型,后验
\[p(\phi\mid D_{\mathrm{train}})\]往往不再具有容易计算的解析表达式。此时通常需要 Monte Carlo 方法、MCMC、Sequential Monte Carlo 或 Variational Inference 等近似算法。
以 Monte Carlo 为例,如果能够从后验分布中取得 $M$ 个样本 $\phi^{(1)},\ldots,\phi^{(M)}$,则 PPD 可以近似为
\[p(y_\ast\mid x_\ast,D_{\mathrm{train}}) \approx \frac{1}{M} \sum_{m=1}^{M} p(y_\ast\mid x_\ast,\phi^{(m)}).\]问题在于,每得到一个新的真实数据集 $D_{\mathrm{train}}$,我们通常需要重新构造相应的后验分布,并再次运行采样或变分优化。也就是说,贝叶斯推断的计算成本发生在 每一个新任务上。
PFN 改变的正是这一点。
2.2 学习如何推断
假设我们不是只面对一个数据集,而是不断面对来自某种任务分布的新数据集。如果这些任务具有某种共同的先验结构,那么我们可以考虑训练一个参数为 $\theta$ 的神经网络
\[q_\theta \left( y_\ast \mid x_\ast,D_{\mathrm{train}} \right),\]直接把“训练数据集加查询样本”映射到预测概率分布。如果这个神经网络能够满足
\[q_\theta \left( y_\ast \mid x_\ast,D_{\mathrm{train}} \right) \approx p \left( y_\ast \mid x_\ast,D_{\mathrm{train}} \right),\]那么每次遇到一个新数据集以后,就不必重新执行 MCMC 或变分推断,而只需要运行一次网络前向传播。
这种思想属于 amortized inference,摊销推断:我们不再为每一个问题单独支付完整的推断成本,而是通过大量离线任务把“如何推断”本身编译进神经网络参数 $\theta$ 中。PFN 的核心正是这种对贝叶斯预测算法的摊销。
3. PFN 核心:先验是一台任务生成器
3.1 从参数先验推广到数据集先验
PFN 的名称 Prior-Data Fitted Network 中,最重要的词实际上是 Prior-Data。这里的 prior 并不局限于传统意义上的参数分布 $p(\phi)$,而是通过一个可采样的生成过程定义完整的数据集分布。
首先从假设空间中采样一个数据生成机制
\[\phi\sim p(\phi),\]然后从该机制生成一个数据集
\[D\sim p(D\mid\phi).\]因此,边缘化掉 $\phi$ 后得到的数据集先验为
\[p(D) = \int p(D\mid\phi)p(\phi) \,d\phi.\]也可以写成
\[p(D) = \mathbb{E}_{\phi\sim p(\phi)} \left[ p(D\mid\phi) \right].\]TabPFN 的原始设计正是通过这种方式生成大规模合成机器学习任务,并使用这些任务进行 prior-fitting。
这里存在一个非常关键的概念变化。在普通神经网络中,我们往往通过模型结构、权重衰减、Dropout、网络宽度或者树深等机制引入 inductive bias;而 PFN 可以直接通过“什么样的数据集更容易从先验生成出来”定义 inductive bias。如果我们认为真实表格数据通常存在非线性关系、噪声、不同类别比例、相关特征、隐藏变量和较简单的生成机制,那么这些假设都可以直接编码进 $p(D)$。
换言之,PFN 的 prior 本质上就是对“世界上的机器学习问题可能长什么样”的概率模型。
3.2 PFN 学习任务空间上的条件预测算子
传统模型学习的是某个特定数据集上的函数
\[x\mapsto y.\]PFN 学习的对象则更加抽象,可以写成
\[(D_{\mathrm{train}},x_\ast) \mapsto p(y_\ast\mid x_\ast,D_{\mathrm{train}}).\]因此,训练数据集 $D_{\mathrm{train}}$ 本身已经成为神经网络输入的一部分。网络参数 $\theta$ 并不代表当前任务的分类边界,而是代表一个跨任务共享的 inference algorithm。具体任务的信息则通过上下文数据 $D_{\mathrm{train}}$ 动态提供。
这也解释了为什么将 PFN 简单理解成“预训练过的普通分类器”并不准确。更精确的说法是:PFN 是一个经过 prior-fitting 的条件概率预测器,它试图把贝叶斯后验预测映射编译进网络权重。
4. PFN 与贝叶斯推断的关键数学推导
这是理解 PFN 最核心的一部分。
为什么在合成数据集上最小化交叉熵,会让网络趋向贝叶斯 posterior predictive distribution?
4.1 第一步:定义真实的贝叶斯目标分布
定义上下文变量
\[C=(D_{\mathrm{train}},x_\ast).\]在先验生成模型下,$C$ 与 $y_\ast$ 具有联合分布
\[p(C,y_\ast).\]给定具体上下文 $C$ 后,理论上的最优 Bayesian predictor 是
\[p(y_\ast\mid C) = p(y_\ast\mid x_\ast,D_{\mathrm{train}}).\]PFN 则给出一个参数化预测分布
\[q_\theta(y_\ast\mid C).\]我们的目标就是让 $q_\theta$ 尽可能逼近真实条件分布 $p$。
4.2 第二步:PFN 的训练目标
训练过程中反复从数据先验 $p(D)$ 采样完整的合成数据集,然后从其中选出一部分作为 $D_{\mathrm{train}}$,另一部分作为待预测样本。对于单个测试点,原始 PFN 目标可以写为
\[\mathcal{L}_{\mathrm{PFN}}(\theta) = \mathbb{E}_{(D_{\mathrm{train}},x_\ast,y_\ast)\sim p} \left[ -\log q_\theta (y_\ast\mid x_\ast,D_{\mathrm{train}}) \right].\]原始 TabPFN 论文正是以合成任务中 held-out 样本的交叉熵作为 prior-fitting 目标。
表面上看,这只是一个普通的监督分类损失。但由于训练样本本身是从 先验定义的完整联合分布 中生成的,它实际上具有更深的统计意义。
4.3 第三步:对训练目标按上下文条件化
利用条件期望,可以将目标写成
\[\mathcal{L}_{\mathrm{PFN}}(\theta) = \mathbb{E}_{C} \left[ \mathbb{E}_{y_\ast\sim p(y_\ast\mid C)} \left[ -\log q_\theta(y_\ast\mid C) \right] \right].\]对于任何固定的上下文 $C$,内层期望就是两个概率分布之间的交叉熵:
\[H \left( p(\cdot\mid C), q_\theta(\cdot\mid C) \right).\]根据交叉熵的标准分解,有
\[H(p,q) = H(p) + D_{\mathrm{KL}}(p\Vert q).\]因此
\[\mathcal{L}_{\mathrm{PFN}}(\theta) = \mathbb{E}_{C} \left[ H \left( p(\cdot\mid C) \right) + D_{\mathrm{KL}} \left( p(\cdot\mid C) \Vert q_\theta(\cdot\mid C) \right) \right].\]其中第一项
\[H \left( p(\cdot\mid C) \right)\]完全由数据生成先验决定,与网络参数 $\theta$ 无关。所以优化 $\theta$ 实际上等价于最小化
\[\mathbb{E}_{C} \left[ D_{\mathrm{KL}} \left( p(\cdot\mid C) \Vert q_\theta(\cdot\mid C) \right) \right].\]由于 KL divergence 满足
\[D_{\mathrm{KL}}(p\Vert q)\geq 0,\]且仅在 $p=q$ 时取得最小值 $0$,理想情况下的全局最优解满足
\[q_{\theta^\ast} (y_\ast\mid x_\ast,D_{\mathrm{train}}) = p (y_\ast\mid x_\ast,D_{\mathrm{train}})\]对于先验分布所覆盖的上下文几乎处处成立。
这就是 PFN 最关键的数学结论:当任务确实从训练时定义的 prior 产生、合成任务数量趋于充分、模型表达能力足够且优化成功时,最小化 held-out prediction 的交叉熵会迫使网络逼近该 prior 下的 Bayesian posterior predictive distribution。
4.4 第四步:把贝叶斯积分代回去
而理论目标 $p(y_\ast\mid x_\ast,D_{\mathrm{train}})$ 又等于
\[p(y_\ast\mid x_\ast,D_{\mathrm{train}}) = \int p(y_\ast\mid x_\ast,\phi) p(\phi\mid D_{\mathrm{train}}) \,d\phi.\]进一步展开为
\[p(y_\ast\mid x_\ast,D_{\mathrm{train}}) = \frac{ \int p(y_\ast\mid x_\ast,\phi) p(D_{\mathrm{train}}\mid\phi) p(\phi) \,d\phi }{ \int p(D_{\mathrm{train}}\mid\phi) p(\phi) \,d\phi }.\]因此最终可以把 PFN 的学习目标理解为
\[q_{\theta^\ast} (y_\ast\mid x_\ast,D_{\mathrm{train}}) \approx \frac{ \int p(y_\ast\mid x_\ast,\phi) p(D_{\mathrm{train}}\mid\phi) p(\phi) \,d\phi }{ \int p(D_{\mathrm{train}}\mid\phi) p(\phi) \,d\phi }.\]PFN 没有在推理时真正逐项执行右边的积分,也没有显式产生 $p(\phi\mid D_{\mathrm{train}})$。它是在预训练过程中见过大量由不同 $\phi$ 产生的数据集以后,学习了一个神经近似器 $q_\theta$,试图直接输出积分最终得到的结果。
PFN 直接 amortize 整个 Bayesian posterior predictive computation。
5. 为什么 PFN 不需要显式恢复隐藏的数据生成模型
5.1 Bayesian model averaging 与 PFN
假设先验中存在很多候选生成机制 $\phi_1,\phi_2,\ldots$。传统贝叶斯方法首先更新这些模型的概率,再将各模型预测进行加权:
\[p(y_\ast\mid x_\ast,D) = \int p(y_\ast\mid x_\ast,\phi) p(\phi\mid D) \,d\phi.\]如果是假设空间离散,则形式变成
\[p(y_\ast\mid x_\ast,D) = \sum_k p(y_\ast\mid x_\ast,\phi_k) p(\phi_k\mid D).\]这看起来像一个无限规模或极大规模的 ensemble。PFN 的目标不是显式恢复每个 $p(\phi_k\mid D)$,而是直接学习最终的加权和。
从计算图角度,可以把传统贝叶斯过程理解为
\[D \rightarrow p(\phi\mid D) \rightarrow p(y_\ast\mid x_\ast,D),\]而 PFN 希望学习
\[(D,x_\ast) \rightarrow q_\theta(y_\ast\mid x_\ast,D).\]中间的显式 posterior representation 被跳过了。
5.2 这不是说模型“忽略了 posterior”
PFN 并不是不使用后验信息。恰恰相反,它试图让 Transformer 的隐藏状态隐式编码完成预测所需的 posterior information。只是这种信息不需要具有明确的解析形式,也不要求输出一个可解释的 $p(\phi\mid D)$。
因此,PFN 与经典贝叶斯推断的关系可以概括成:
Bayesian inference 规定应该计算什么;PFN 学习如何快速近似这个计算。
6. PFN 的完整训练流程:Offline Prior-Fitting
6.1 步骤一:定义 prior over tasks
PFN 首先需要定义一个能够采样数据集的概率生成过程。一般可以写成
\[\phi\sim p(\phi),\]随后
\[D\sim p(D\mid\phi).\]这里的 $\phi$ 可以包含远比普通模型权重更丰富的信息,例如网络结构、函数形式、因果图、噪声类型、特征分布、类别数、特征数以及超参数。原始 TabPFN 更进一步,将 SCM 和 Bayesian Neural Network 作为主要的 synthetic prior,并让大量 prior hyperparameter 本身也服从概率分布,从而不是只在某个固定结构上生成任务。
这意味着每一次采样都可能产生一个完全不同的机器学习问题。
6.2 步骤二:生成一个完整的 synthetic task
从 prior 采样 $\phi$ 后,生成
\[D = \{(x_i,y_i)\}_{i=1}^{N}.\]随后将 $D$ 随机拆成 context 与 query,例如
\[D_{\mathrm{train}} = \{(x_i,y_i)\}_{i=1}^{n},\]以及
\[D_{\mathrm{test}} = \{(x_j,y_j)\}_{j=n+1}^{N}.\]对于 PFN 而言,$D_{\mathrm{train}}$ 并不是传统意义上用来进行梯度更新的 training set,而是当前 meta-task 的 上下文。真正用于更新 PFN 全局参数 $\theta$ 的信号来自 query 标签。
6.3 步骤三:把训练集本身输入 Transformer
对于训练样本,网络能够观察到 $(x_i,y_i)$;对于 query 样本,只提供 $x_\ast$,而隐藏 $y_\ast$。因此模型接收到的逻辑输入类似于
\[\left[ (x_1,y_1), (x_2,y_2), \ldots, (x_n,y_n), x_\ast \right].\]模型输出
\[q_\theta (y_\ast\mid x_\ast,D_{\mathrm{train}}).\]在原始 TabPFN 架构中,训练样本 token 可以相互进行 attention,而测试样本只能利用训练样本提供的上下文,不允许通过其他测试标签泄漏信息。真实数据集推理同样只进行一次前向传播,并且不会根据当前真实数据运行梯度下降。
6.4 步骤四:使用 query label 计算损失
对于分类问题,损失为
\[-\log q_\theta (y_\ast\mid x_\ast,D_{\mathrm{train}}).\]若一次处理多个 query,则可以平均:
\[\mathcal{L} = -\frac{1}{m} \sum_{j=1}^{m} \log q_\theta (y_j\mid x_j,D_{\mathrm{train}}).\]随后对 $\theta$ 进行反向传播。需要注意,此处更新的是 跨所有任务共享的 PFN 参数,不是某一个 synthetic dataset 的专属模型。
6.5 步骤五:不断采样新的任务
下一次迭代不一定继续使用当前的数据生成机制,而是重新采样
\[\phi'\sim p(\phi'),\]再生成新的
\[D'\sim p(D'\mid\phi').\]大量不同任务不断迫使 Transformer 学会这样的映射:
\[(D_{\mathrm{train}},x_\ast) \mapsto p(y_\ast\mid x_\ast,D_{\mathrm{train}}).\]因此 PFN 预训练并不是“在一个巨型合成表格上训练”,而是在一个 distribution over datasets 上训练。
原始 TabPFN 的 prior-fitting 就是一次性的离线阶段;论文中的模型在大量合成数据集上预训练一次,随后同一个网络用于所有真实评估任务。
7. 在线阶段:一个新数据集到来以后到底发生了什么
7.1 不再进行 conventional fitting
假设现在拿到一个从未见过的真实任务
\[D_{\mathrm{real}} = \{(x_1,y_1),\ldots,(x_n,y_n)\},\]以及待预测样本 $x_\ast$。普通神经网络通常执行
\[D_{\mathrm{real}} \rightarrow \text{gradient descent} \rightarrow \hat{\theta}_{\mathrm{real}} \rightarrow \hat{y}_\ast.\]PFN 执行的则是
\[(D_{\mathrm{real}},x_\ast) \rightarrow q_\theta (y_\ast\mid x_\ast,D_{\mathrm{real}}).\]参数 $\theta$ 在这一阶段保持不变。真实训练数据仅仅作为 context 改变 Transformer 的 activation,而不改变 Transformer 的 weights。
这就是 PFN 中 in-context learning 的含义。
7.2 “fit” 仍然存在,只是发生在 activation space
因此说 PFN “完全不训练”其实容易产生误导。更准确的说法是,它 不在新任务上使用梯度下降更新全局模型参数。但模型仍然必须通过 context 理解训练数据中的统计结构,只不过这种适应发生在前向传播产生的隐藏表示与 attention pattern 中。
这与语言模型的 in-context learning 有明显相似性:LLM 的参数不会因为 prompt 中加入几个示例就发生改变,但输出行为会依据上下文显著变化。PFN 将相似的机制应用在监督学习任务上,只不过 prompt 不再是自然语言,而是一个由特征、标签以及查询样本构成的数据集。
8. TabPFN 的先验具体如何构造
PFN 理论本身并没有要求 prior 必须是什么,只要求我们能够从 $p(D)$ 高效采样。但 PFN 是否能在真实世界工作,很大程度取决于 synthetic prior 与真实问题之间是否具有足够合理的结构匹配。TabPFN 因此将 prior design 视为整个算法的核心组成部分,而不仅仅是数据增强技巧。
8.1 Structural Causal Model prior
结构因果模型可以写成一组结构方程
\[z_i = f_i \left( z_{\mathrm{PA}(i)}, \epsilon_i \right),\]其中 $\mathrm{PA}(i)$ 表示 DAG 中节点 $z_i$ 的父节点,$\epsilon_i$ 表示独立或按指定机制生成的噪声。
为了从一个 SCM 生成表格数据,可以首先采样 DAG 结构和各节点对应的函数 $f_i$,然后选择其中若干节点作为可观察特征 $z_X$,另一个节点作为目标 $z_y$。每生成一个样本时,重新采样噪声并沿 DAG 传播,就可以获得一行
\[(x,y).\]重复这一过程即可得到一个完整 synthetic dataset。
TabPFN 原始工作并不试图在实际推理阶段显式恢复真实因果图。SCM 的作用主要是为 synthetic task 提供结构化 inductive bias:让特征之间能够出现共同原因、中间变量、非线性依赖以及复杂相关关系。论文明确区分了这种“使用 SCM 作为数据生成先验”和真正执行 causal inference。
8.2 Bayesian Neural Network prior
另一种生成方式是 BNN prior。首先采样一个神经网络结构以及网络参数
\[W\sim p(W),\]再对每个输入采样
\[x_i\sim p(x),\]并通过随机网络产生
\[y_i=f_W(x_i,\epsilon_i).\]由于不同数据集会使用不同的网络结构、参数和噪声,因此 PFN 会观察到大量不同的非线性函数关系。原始 TabPFN 将 BNN prior 与 SCM prior 组合使用,使 synthetic task distribution 覆盖更加丰富的数据机制。
8.3 从连续生成机制构造分类任务
如果生成器首先得到连续潜在目标 $\hat y$,可以通过随机阈值将其转换成类别标签。假设类别数为 $N_c$,采样 $N_c-1$ 个边界
\[B_1,\ldots,B_{N_c-1},\]随后定义
\[y_i = \sum_j \mathbf{1} \left[ B_j<\hat y_i \right].\]这种机制能够生成类别不平衡程度、决策边界和类别数量不同的分类问题,而不是让所有 synthetic datasets 都具有完全相同的结构。
9. 为什么 Transformer 适合承担 PFN 的推断器
9.1 数据集本身就是上下文
PFN 要求模型处理变长的数据集
\[D_{\mathrm{train}} = \{(x_i,y_i)\}_{i=1}^{n},\]同时预测多个 query
\[X_{\mathrm{test}} = \{x^\ast_j\}_{j=1}^{m}.\]Transformer 的 attention 机制非常适合构造这种“context-conditioned computation”。训练样本之间可以互相交换信息,以形成对当前任务结构的隐式表示;query token 再读取这些表示,根据训练集决定自己的预测分布。
标准 attention 的核心形式为
\[\operatorname{Attention}(Q,K,V) = \operatorname{softmax} \left( \frac{QK^\top}{\sqrt{d_k}} \right)V.\]从 PFN 的角度来看,attention 并不仅仅是在寻找“相似样本”,而是在执行一种学习得到的任务级统计计算。随着层数增加,网络理论上可以组合局部关系、类别结构、边界形状、特征尺度和训练样本整体分布等信息。
9.2 attention mask 避免标签泄漏
训练 token 可以表示为
\[t_i=e_x(x_i)+e_y(y_i),\]而 query token 只能包含
\[t_\ast=e_x(x_\ast),\]因为 $y_\ast$ 是未知的。通过 attention mask,可以控制测试样本只从允许的信息源读取表示,从结构上避免把待预测标签泄漏给模型。
原始 TabPFN 将训练数据与查询数据作为 set-valued input,并直接返回每一个 query 的 PPD 估计。
9.3 PFN 与普通 meta-learning 的联系
从更广泛的机器学习视角看,PFN 可以被视为一种 meta-learning。外层训练优化的是跨任务参数 $\theta$:
\[\theta^\ast = \arg\min_\theta \mathbb{E}_{T\sim p(T)} \left[ \mathcal{L}_T(\theta) \right].\]区别在于 PFN 为这种 meta-learning 赋予了非常明确的概率解释:如果任务分布确实来自指定 prior,并且训练目标采用适当的对数损失,那么理论目标不是一个抽象的“快速适应能力”,而是 prior 下的 Bayesian posterior predictive distribution。
这使 PFN 同时位于三个研究范式的交叉位置:Bayesian inference 提供理论目标,meta-learning 提供跨任务训练视角,Transformer in-context learning 提供具体实现机制。
10. PFN 为什么可以被称为摊销贝叶斯推断
10.1 传统贝叶斯推断的计算结构
对于第 $k$ 个真实任务,经典方法需要重新执行
\[D_k \rightarrow p(\phi\mid D_k) \rightarrow p(y_\ast\mid x_\ast,D_k).\]如果存在 $K$ 个任务,就要运行 $K$ 次复杂 posterior inference。
10.2 PFN 的计算结构
PFN 把大量计算集中到一次离线训练:
\[p(D) \rightarrow \text{many synthetic tasks} \rightarrow \theta^\ast.\]之后每个新任务只执行
\[(D_k,x_\ast) \rightarrow q_{\theta^\ast} (y_\ast\mid x_\ast,D_k).\]如果离线训练成本记为 $C_{\mathrm{pre}}$,传统单任务贝叶斯推断成本记为 $C_{\mathrm{Bayes}}$,PFN 单次前向成本记为 $C_{\mathrm{forward}}$,那么在大量任务场景中,可以粗略理解为传统方法付出
\[K C_{\mathrm{Bayes}},\]而 PFN 付出
\[C_{\mathrm{pre}} + K C_{\mathrm{forward}}.\]当 $K$ 很大且 $C_{\mathrm{forward}}\ll C_{\mathrm{Bayes}}$ 时,一次性的 prior-fitting 成本就会被逐步摊销。
因此,“amortized”并不只是一个类比,而准确描述了 PFN 的计算经济学。
11. PFN 与 MCMC、变分推断和普通深度学习到底有什么区别
| 方法 | 新数据集到来后的主要计算 | 是否显式构造 posterior | 是否需要每个任务重新优化 | 输出 |
|---|---|---|---|---|
| MLE / MAP | 优化参数 | 否或仅使用 posterior mode | 是 | 点估计模型预测 |
| MCMC | posterior sampling | 是 | 是 | Bayesian predictive |
| Variational Inference | 优化近似 posterior | 是 | 是 | Approximate Bayesian predictive |
| 普通预训练模型 | 通常仍需 fine-tuning | 否 | 通常需要 | 任务模型预测 |
| PFN | context-conditioned forward pass | 通常不显式构造 | 否 | Approximate posterior predictive |
PFN 与 MCMC 的最大区别是推断发生的时间不同。MCMC 在观察真实数据以后进行计算;PFN 则通过海量 synthetic tasks 提前学习“看到这样的数据以后应该输出什么”。
PFN 与 Variational Inference 的区别也很重要。VI 通常对当前数据集构造某个参数化后验 $q_\lambda(\phi)$,然后针对当前任务优化 $\lambda$;PFN 的 $q_\theta$ 则直接以整个数据集作为输入,输出预测分布,$\theta$ 在不同真实数据集之间共享。
12. 为什么这种机制尤其适合小样本表格数据
12.1 小数据意味着 posterior uncertainty 很重要
当 $n$ 很小时,训练数据通常不足以唯一确定一个复杂预测函数。传统高容量模型在单个小数据集上从头训练,很容易产生较大的 estimation variance;贝叶斯方法则天然倾向于在多种可能解释之间保留不确定性。
PFN 通过逼近 posterior predictive 而不是单一最优模型,理论上能够利用这种 Bayesian model averaging 的优势。训练样本较少时,prior 对 posterior 的影响更明显,而这恰好是 PFN 可以充分发挥其预训练 inductive bias 的区域。
12.2 PFN 实际拥有大量“跨任务经验”
真实任务可能只有 $100$ 个样本,但 PFN 的参数并不是只从这 $100$ 个样本中学出来的。参数 $\theta$ 已经在数量庞大的 synthetic tasks 上学习过“什么统计模式通常意味着什么预测规律”。
因此 PFN 面对一个小数据集时的有效信息来源可以拆成两部分:
\[\text{prediction} = \text{prior knowledge in }\theta + \text{task information in }D_{\mathrm{train}}.\]这与从随机初始化开始训练一个模型存在根本区别。
13. 误解点:PFN 的贝叶斯性质取决于 prior
13.1 “Bayesian optimal”永远是相对于某个 prior 而言
前面的推导告诉我们,理想 PFN 满足
\[q_{\theta^\ast} (y_\ast\mid x_\ast,D) = p_{\mathrm{prior}} (y_\ast\mid x_\ast,D).\]注意右侧是 训练 prior 下 的 posterior predictive,而不是某种脱离假设、普遍正确的真实世界预测器。
如果真实任务分布为
\[p_{\mathrm{real}}(D),\]而训练 prior 为
\[p_{\mathrm{prior}}(D),\]且两者存在明显差异,那么即使 PFN 完美逼近自己的 Bayesian target,也未必在真实任务上最优。
这就是 prior misspecification。
13.2 PFN 的误差至少可以分成三类
第一类是 prior error,即 synthetic prior 与真实世界数据分布之间的差异。第二类是 approximation error,即 Transformer 的容量不足以表达真正的 posterior predictive mapping。第三类是 optimization and finite-sampling error,即训练任务有限或者优化没有达到理论最优点。
因此现实中的 PFN 更准确地满足
\[q_\theta \approx p_{\mathrm{prior}} (y_\ast\mid x_\ast,D),\]而不应该直接写成
\[q_\theta = p_{\mathrm{true}} (y_\ast\mid x_\ast,D).\]这是理解 PFN 理论边界非常重要的一点。
14. 从原始 TabPFN 到更大规模模型:理论没有改变,工程实现不断扩展
原始 TabPFN 的实验重点是较小的表格分类任务,论文中的主要设置覆盖最多约 $1{,}000$ 个训练样本、$100$ 个数值特征和 $10$ 个类别。 后续版本则不断扩展模型能够有效处理的数据规模和数据类型,但其核心思想仍然是 synthetic prior、prior-fitting 与 in-context posterior predictive approximation。
例如 TabPFN-3 技术报告描述了从早期版本到更大规模模型的扩展:模型通过新的表示压缩、column-wise feature distribution embedding、row-wise feature aggregation 以及最终的 in-context learning stage,将特征处理与跨样本推理解耦。 报告给出的 benchmark-validated regime 已经显著超越早期模型,并强调了更大规模数据上的推理与内存优化。
因此,不能把 PFN 的概念与某一个固定版本 TabPFN 的工程约束等同起来。PFN 是方法论;TabPFN 是方法论在表格学习中的具体模型族。当前公开仓库依然保持类似 scikit-learn 的接口,例如通过 TabPFNClassifier 或 TabPFNRegressor 执行 fit 与 predict,但这里的 fit 不应该机械等同于传统模型从随机参数开始针对当前数据进行完整优化。
15. 一个完整的 PFN 心智模型
如果希望用一套统一的数学结构理解 PFN,可以把整个系统压缩成三个层次。
15.1 第一层:定义世界
首先规定机器学习任务如何产生:
\[\phi\sim p(\phi),\] \[D\sim p(D\mid\phi).\]这一步定义 inductive bias,也定义 PFN 所理解的“世界”。
15.2 第二层:计算理想 Bayesian predictor
给定一个具体训练数据集,理论上的最优预测分布为
\[p(y_\ast\mid x_\ast,D) = \int p(y_\ast\mid x_\ast,\phi) p(\phi\mid D) \,d\phi.\]这是我们真正想要的 Bayesian answer。
15.3 第三层:用神经网络编译这个推断过程
训练
\[q_\theta(y_\ast\mid x_\ast,D)\]最小化
\[\mathbb{E} \left[ -\log q_\theta(y_\ast\mid x_\ast,D) \right].\]通过
\[H(p,q) = H(p) + D_{\mathrm{KL}}(p\Vert q),\]可知理论最优点满足
\[q_{\theta^\ast} (y_\ast\mid x_\ast,D) = p (y_\ast\mid x_\ast,D).\]于是,一个原本需要针对每个任务执行复杂积分或 posterior approximation 的算法,被转换为一次 Transformer forward pass。
这就是 PFN 最核心的理论结构。
16. PFN 的完整工作流总结
16.1 Offline:Prior-Fitting
首先设计数据生成先验 $p(\phi)$,其中可以包含函数、参数、SCM、BNN、噪声、结构和超参数分布;随后重复采样 $\phi\sim p(\phi)$ 并生成 $D\sim p(D\mid\phi)$。每个数据集再拆成 $D_{\mathrm{train}}$ 与 $D_{\mathrm{test}}$,将训练样本及其标签作为上下文、将测试特征作为 query 输入 Transformer,由网络产生 $q_\theta(y_\ast\mid x_\ast,D_{\mathrm{train}})$,最后利用真实 synthetic query label 计算 negative log-likelihood 或 cross-entropy,并对共享参数 $\theta$ 更新。经过足够多不同 synthetic tasks 后,网络逐渐近似先验下的 Bayesian posterior predictive mapping。原始论文将这一过程明确描述为一次性 synthetic prior-fitting。
16.2 Online:Real-World Inference
部署以后,新真实数据集到来时,将
\[D_{\mathrm{real}} = \{(x_i,y_i)\}_{i=1}^{n}\]与新的 query $x_\ast$ 一起输入已经预训练好的 PFN,直接计算
\[q_\theta (y_\ast\mid x_\ast,D_{\mathrm{real}}).\]这个阶段不要求重新优化 $\theta$,因此 task adaptation 主要发生在 in-context computation 中。原始 TabPFN 将这一过程概括为在新真实数据集上通过 single forward pass 输出 PPD estimate。
16.3 整个计算逻辑
从宏观上看,PFN 可以被写成
\[\text{Prior} \rightarrow \text{Synthetic Tasks} \rightarrow \text{Prior-Fitting} \rightarrow q_\theta \rightarrow \text{Real Dataset as Context} \rightarrow \text{Posterior Predictive Approximation}.\]传统机器学习的重点通常是“如何在当前数据集上找到一个好模型”,而 PFN 将问题改写为“能否事先学习一个通用推断器,使其读取一个数据集以后直接产生这个数据集对应的预测规则”。
17. PFN 最深层的意义:把算法本身变成可学习对象
PFN 的真正新意并不只是合成数据、Transformer 或 zero-shot tabular prediction 中任何单独一个元素,而是将统计推断算法本身参数化。经典机器学习通常人为设计优化过程,然后让优化过程寻找模型参数;PFN 则进一步把“观察数据以后应该怎样更新预测”也交给神经网络学习。
因此传统流程可以抽象为
\[\text{human-designed learning algorithm} + D \rightarrow \text{task-specific model},\]而 PFN 更接近
\[\text{learned learning algorithm} + D \rightarrow \text{task-specific predictive distribution}.\]从贝叶斯角度,它把 posterior predictive inference 编译进了网络;从 meta-learning 角度,它学习跨任务的 adaptation rule;从 Transformer 角度,它利用 attention 在上下文中执行任务级计算;从 foundation model 的角度,它又体现了“预训练一次、适配大量下游任务”的基本思想。
因此,如果只把 TabPFN 理解成“一个在小表格数据上效果很好的 Transformer”,实际上忽略了 PFN 最有研究价值的部分。更准确的理解应该是:
PFN 是一种通过 synthetic prior-fitting 学习贝叶斯预测算法的摊销推断框架。它从可采样的数据生成先验中获得大量机器学习任务,通过交叉熵训练学习 posterior predictive mapping,并在新数据集上利用 in-context learning 近似完成原本需要重新执行的贝叶斯推断。
这也是为什么 PFN 的研究价值远远超出表格分类本身:只要一个问题能够构造合理的任务先验、能够从该先验高效模拟训练任务,并且目标 posterior quantity 可以通过监督信号定义,那么“先模拟大量问题,再训练神经网络学习推断算法”的思想原则上就可以被扩展到时间序列、因果效应估计、图学习、贝叶斯优化以及科学计算等更广泛的问题中。
18. PFN 的另一种理解:MoE 与 In-Context Learning 视角
PFN 还可以从两个现代深度学习概念获得更直观的理解:Mixture of Experts(MoE) 与 In-Context Learning(ICL)。
PFN 所逼近的 Bayesian posterior predictive 在概率结构上类似于一个由后验概率动态路由的“无限专家混合”,而 Transformer 则通过 in-context learning 将这一复杂的条件推断过程隐式执行出来。PFN 可以被视为一个通过 ICL 执行的 amortized Bayesian mixture predictor。
从 Bayesian model averaging 到隐式 MoE
考虑离散假设空间 $\Phi={\phi_1,\phi_2,\ldots,\phi_K}$。贝叶斯后验预测分布可以写成
\[p(y_\ast\mid x_\ast,D) = \sum_{k=1}^{K} p(y_\ast\mid x_\ast,\phi_k) p(\phi_k\mid D).\]其中,每一个 $\phi_k$ 都可以理解为一种候选数据生成机制或者候选预测模型,而 $p(\phi_k\mid D)$ 则表示观察数据集 $D$ 以后,我们对第 $k$ 个假设的后验置信度。根据 Bayes 定理,
\[p(\phi_k\mid D) = \frac{ p(D\mid\phi_k)p(\phi_k) }{ \sum_{j=1}^{K}p(D\mid\phi_j)p(\phi_j) }.\]如果把这一公式与标准 Mixture of Experts 的形式进行比较,就能够看到明显的结构对应。一个典型 MoE 可以表示为
\[p(y\mid x) = \sum_{k=1}^{K} g_k(x) p_k(y\mid x),\]其中 $p_k(y\mid x)$ 是第 $k$ 个 expert 的预测,而 $g_k(x)$ 是 gating network 或 router 产生的混合权重,满足 $\sum_k g_k(x)=1$。因此,在 Bayesian model averaging 中,可以形式化地建立对应关系
\[\phi_k \longleftrightarrow \text{Expert}_k,\] \[p(y_\ast\mid x_\ast,\phi_k) \longleftrightarrow \text{Expert}_k(x_\ast),\]以及
\[p(\phi_k\mid D) \longleftrightarrow g_k(D).\]这里最值得注意的是最后一个关系:Bayesian router 的输入不是单个样本 $x_\ast$,而是整个观测数据集 $D$。 数据集本身决定哪些 hypothesis 应该获得更大的权重。如果某个候选机制 $\phi_k$ 对当前训练数据具有很高的 likelihood $p(D\mid\phi_k)$,那么对应 posterior weight $p(\phi_k\mid D)$ 就会上升;反之,如果一个假设难以解释当前数据,它在最终预测中的贡献就会下降。
因此,对于离散模型空间,可以将 posterior predictive 写成一种 dataset-conditioned MoE:
\[p(y_\ast\mid x_\ast,D) = \sum_{k=1}^{K} \underbrace{p(\phi_k\mid D)}_{\text{dataset-dependent routing weight}} \underbrace{p(y_\ast\mid x_\ast,\phi_k)}_{\text{expert prediction}}.\]如果假设空间是连续的,这个求和进一步推广成积分:
\[p(y_\ast\mid x_\ast,D) = \int \underbrace{p(\phi\mid D)}_{\text{continuous router}} \underbrace{p(y_\ast\mid x_\ast,\phi)}_{\text{expert prediction}} \,d\phi.\]从这一角度看,完整 Bayesian posterior predictive 可以被理解为一种连续、甚至无限规模的 Mixture of Experts:每一种可能的数据生成机制都是一个潜在 expert,而 posterior $p(\phi\mid D)$ 则负责根据当前数据集动态决定不同 expert 的权重。
PFN 与显式 MoE 的关键区别
虽然上述形式与 MoE 非常相似,但 PFN 通常并不会真的构造 $K$ 个独立 expert,更不会显式计算每一个 posterior weight。标准 MoE 的计算过程通常是
\[x \rightarrow g_1(x),\ldots,g_K(x) \rightarrow E_1(x),\ldots,E_K(x) \rightarrow y,\]其中 router 和 experts 都具有清晰、显式的模块化结构。
而经典贝叶斯推断需要执行
\[D \rightarrow p(\phi\mid D) \rightarrow \int p(y_\ast\mid x_\ast,\phi)p(\phi\mid D)d\phi.\]PFN 则直接学习
\[(D,x_\ast) \rightarrow q_\theta(y_\ast\mid x_\ast,D).\]也就是说,PFN 并不要求内部出现显式的
\[p(\phi_1\mid D),\ldots,p(\phi_K\mid D),\]也不要求网络分别计算
\[p(y_\ast\mid x_\ast,\phi_1),\ldots,p(y_\ast\mid x_\ast,\phi_K).\]训练目标只要求最终输出满足
\[q_\theta(y_\ast\mid x_\ast,D) \approx p(y_\ast\mid x_\ast,D).\]因此,更准确的描述不是“PFN 是一个 MoE”,而是:
\[\boxed{ \text{PFN approximates the output of a Bayesian mixture without explicitly materializing its experts or router.} }\]换言之,经典 Bayesian model averaging 显式执行“posterior routing + expert averaging”,而 PFN 把整个计算过程通过 prior-fitting 编译进一个神经网络。
PFN 与 In-Context Learning 的对应关系更加直接
如果说 PFN 与 MoE 的联系主要是一种概率结构上的类比,那么 PFN 与 In-Context Learning 的联系则更加直接。
对于自回归语言模型,典型 ICL 输入可以抽象为
\[C_{\mathrm{LLM}} = \{ (x_1,y_1), (x_2,y_2), \ldots, (x_n,y_n), x_\ast \},\]其中前面的 $(x_i,y_i)$ 可以理解为 few-shot demonstrations,$x_\ast$ 是新的 query。Transformer 不需要根据这些示例执行梯度下降,而是直接产生
\[p_\theta (y_\ast\mid C_{\mathrm{LLM}}).\]PFN 的输入形式几乎完全一致:
\[C_{\mathrm{PFN}} = \{ (x_1,y_1), (x_2,y_2), \ldots, (x_n,y_n), x_\ast \},\]输出则是
\[q_\theta (y_\ast \mid x_\ast,D_{\mathrm{train}} ).\]因此,在计算范式上,PFN 本质上执行的是一种 supervised in-context learning:
\[\boxed{ D_{\mathrm{train}} + x_\ast \rightarrow \text{Transformer} \rightarrow q_\theta(y_\ast\mid x_\ast,D_{\mathrm{train}}) }\]真实任务上的参数 $\theta$ 保持不变,训练样本只通过 attention 和 hidden states 改变当前 forward pass 的计算结果。因此,PFN 对新数据集的适配发生在 activation space,而不是 parameter space。
二者可以建立如下对应关系:
| 自回归模型中的 ICL | PFN |
|---|---|
| Prompt / Context | $D_{\mathrm{train}}$ |
| Few-shot demonstrations | $(x_i,y_i)$ |
| Query | $x_\ast$ |
| Next-token distribution | $q_\theta(y_\ast\mid x_\ast,D)$ |
| Prompt-conditioned computation | Dataset-conditioned computation |
| 推理时参数保持不变 | 推理时参数保持不变 |
| Attention 执行上下文适配 | Attention 执行任务适配 |
区别在于,通常的 autoregressive language modeling 使用 next-token prediction 作为训练目标,
\[\mathcal{L}_{\mathrm{LM}} = -\sum_t \log p_\theta (x_t\mid x_{<t}),\]而 PFN 的训练目标被明确设计成
\[\mathcal{L}_{\mathrm{PFN}} = \mathbb{E} \left[ -\log q_\theta (y_\ast\mid x_\ast,D_{\mathrm{train}}) \right].\]由于 synthetic task 本身来自定义好的 prior,这个目标又可以进一步分解成 posterior predictive 与 PFN 输出之间的 KL divergence。因此,PFN 的 ICL 并不仅仅是在经验上“看几个例子以后做出正确预测”,而具有更明确的 probabilistic target:
\[q_\theta (y_\ast\mid x_\ast,D) \approx p_{\mathrm{prior}} (y_\ast\mid x_\ast,D).\]这也是 PFN 与一般 LLM ICL 之间一个重要的理论区别。
隐式 Bayesian routing
把 MoE 与 ICL 两个视角结合起来,可以进一步形成一个更完整的解释。
假设当前数据可能来自多个候选机制:
\[\phi_1,\phi_2,\ldots,\phi_K.\]观察数据集 $D$ 后,一个理想 Bayesian learner 应该首先根据数据重新调整不同 hypothesis 的权重:
\[p(\phi_k) \xrightarrow[]{D} p(\phi_k\mid D),\]再利用这些后验权重组合不同模型的预测:
\[p(y_\ast\mid x_\ast,D) = \sum_k p(\phi_k\mid D) p(y_\ast\mid x_\ast,\phi_k).\]如果按照显式算法执行,那么逻辑流程是
\[D \rightarrow \text{infer posterior over hypotheses} \rightarrow \text{route probability mass} \rightarrow \text{combine predictions}.\]PFN 则试图通过 Transformer 在一次上下文计算中完成整个过程:
\[(D,x_\ast) \rightarrow \text{attention / hidden-state computation} \rightarrow q_\theta(y_\ast\mid x_\ast,D).\]因此,可以将 Transformer 内部的 task adaptation 理解成一种隐式 Bayesian routing:网络没有必要显式告诉我们“当前数据有 $37\%$ 的概率来自 $\phi_1$、$21\%$ 来自 $\phi_2$”,只需要在内部形成足以产生正确 posterior predictive 的表示。
从这个角度,PFN 学到的不只是一个固定预测函数,而更接近一个
\[\text{dataset} \rightarrow \text{inference strategy}\]的映射。
与自回归基础模型的更深层联系
这一视角也解释了 PFN 为什么经常被用来研究 in-context learning 的机制。在大型自回归模型中,人们经常观察到类似现象:模型读取 prompt 中的 demonstrations 后,会改变接下来解决问题的方式。例如,同一个 Transformer 可以根据上下文执行分类、回归、模式匹配甚至某些算法任务。
抽象地说,可以写成
\[\text{Context} \rightarrow \text{infer latent task} \rightarrow \text{execute task-dependent computation} \rightarrow \text{prediction}.\]PFN 则提供了一个概率结构更加明确的版本:
\[D \rightarrow \text{infer which data-generating mechanisms explain }D \rightarrow \text{implicitly average plausible hypotheses} \rightarrow p(y_\ast\mid x_\ast,D).\]因此,PFN 可以被视为研究“Transformer 是否能够学习推断算法”的一个相对干净的实验环境。对于普通 LLM,很难严格判断其 ICL 究竟是在进行 Bayesian inference、nearest-neighbor retrieval、implicit gradient descent、algorithm selection,还是多种机制的组合;而 PFN 在设计阶段就明确规定了希望网络逼近的目标,即
\[p(y_\ast\mid x_\ast,D).\]一个统一的抽象:ICL 执行的 amortized Bayesian mixture
综合以上两个视角,可以将 PFN 的计算过程概括为
\[\text{Prior over hypotheses} \rightarrow \text{Bayesian model averaging} \rightarrow \text{amortization} \rightarrow \text{Transformer ICL}.\]经典 Bayesian inference 中,
\[p(y_\ast\mid x_\ast,D) = \int p(y_\ast\mid x_\ast,\phi) p(\phi\mid D) \,d\phi.\]从 MoE 视角看,$p(\phi\mid D)$ 相当于 dataset-conditioned router,而 $p(y_\ast\mid x_\ast,\phi)$ 相当于 expert prediction;从 amortized inference 视角看,PFN 使用一个参数化网络 $q_\theta$ 学习整个积分;从 ICL 视角看,真实数据集 $D$ 则作为 context 驱动网络在一次 forward pass 中完成 task adaptation。
这个视角也能够解释 PFN 最关键的三个性质为什么会同时出现:它能够根据不同数据集表现出不同的预测行为,因为存在 dataset-conditioned ICL;它天然输出概率预测,因为训练目标是 posterior predictive distribution;它不需要在每个新任务上重新进行复杂 Bayesian computation,因为原本的 hypothesis weighting 与 model averaging 已经被 amortize 到参数 $\theta$ 中。
19. 结论
理解 PFN 最有效的方法,不是从 Transformer 架构开始,而是从 Bayesian posterior predictive distribution 开始。贝叶斯监督学习要求我们计算
\[p(y_\ast\mid x_\ast,D) = \int p(y_\ast\mid x_\ast,\phi) p(\phi\mid D) \,d\phi,\]但对于复杂模型而言,这个积分通常十分昂贵。PFN 因而构造大量由 prior 产生的 synthetic tasks,并训练一个条件预测器 $q_\theta(y_\ast\mid x_\ast,D)$。由于训练时最小化期望 negative log-likelihood 等价于最小化真实 conditional distribution 与模型输出之间的 KL divergence,因此在理想条件下,
\[q_{\theta^\ast} (y_\ast\mid x_\ast,D) = p (y_\ast\mid x_\ast,D).\]于是,原本需要在每个数据集上重新进行的 Bayesian inference,被摊销成一次离线 prior-fitting 与大量廉价的在线 forward passes。真实数据不再主要用于更新模型参数,而成为模型执行推断时的上下文。这一结构解释了 PFN 为什么天然适合 in-context learning,也解释了 TabPFN 为什么能够在小样本表格任务中表现出与传统“每个数据集重新训练”方法完全不同的计算特征。
