Meta发布FreeTransformer,模型具备“认知与思考”会怎样?

B站影视 内地电影 2025-10-28 07:13 1

摘要:说白了,他们不是让模型一步步瞎抉择,而是先在“脑子里”定个大方向,再按着这个方向去写东西。技术上怎么做的呢?把原来的 Transformer 稍微改一手,变成带条件的变分自编码器(conditional VAE),在中间某一层塞进一个随机的潜变量 Z。训练时,

Free Transformer 在多项基准上跑出了明显更好的成绩,特别是在代码生成和数学题这类需要整体规划的任务上,提升很明显。

说白了,他们不是让模型一步步瞎抉择,而是先在“脑子里”定个大方向,再按着这个方向去写东西。技术上怎么做的呢?把原来的 Transformer 稍微改一手,变成带条件的变分自编码器(conditional VAE),在中间某一层塞进一个随机的潜变量 Z。训练时,编码器从输入里估计出一个 Z,解码器在要生成后半段之前先拿到这个 Z。推理阶段先从 Z 的分布里抽样,再开始正式写后续的 token。整体改动看上去不大,额外的算力开销也就多个十来二十个百分点。

他们做了几个很直观的实验来证明这玩意儿真有料。先用合成任务做验证:在序列里随机位置插入一段“AAAAAA”,周围加点噪声,让模型学会把这段固定放到某个位置。结果显示,用不同的 Z 多次采样会在不同位置插入,而用同一个 Z 多次生成会把“AAAAAA”固定在同一个位置。也就是说,Z 真能把“在哪儿插入”的信息记住,这个潜变量就像内部的“布局卡片”。

往更实际的基准上走,他们拿 1.5B 和 8B 参数规模的模型比对。代码生成任务(HumanEval、MBPP)受益最大,有些配置提升超过 10%;数学题(GSM8K)也有明显进步;常识问答和理解类(MMLU、CSQA)在 8B 规模上也能看到提升。能理解,写代码和解数学题本来就更靠先有个整体框架——函数要怎么拆、算法大致流程、证明要分哪几步——Free Transformer 这种“先定方案再填细节”的处理,正好契合这种需求。

跟另一档主流思路做个对照会更清楚。现在流行的“链式思考”是把推理过程显式写出来,把每一步都输出成 token,让模型边写边算。Free Transformer 则把规划藏到隐空间里,先给模型一个压缩过的计划(那组潜变量),然后解码器根据这个计划去生成具体内容。一个是把步骤写在纸上,另一个是先在心里想清楚再行动。各有好处,具体任务偏哪种还得看场景。

实现上有几个细节值得注意。Z 用 16 位二进制来编码,也就是理论上有 65,536 种状态;有个叫 Binary Mapper 的模块负责把这个二进制表示采样并映射到模型可用的潜在空间。编码器和解码器设计里,有一半层是共享的,因而不会对原架构大改动。训练目标里加上了 VAE 的损失,要求编码器推断出来的 Z 分布和生成时采样的分布对齐,这样模型在无监督条件下会学出有用的“策划性”模式。工程上来看,主要就是在中层插个模块,训练时多一个损失项,推理时多一步采样,整体还是挺克制的。

调参时他们也观察到 KL 散度的影响。有趣的是,KL 很低时,潜变量基本被闲置,模型行为接近标准 Transformer;KL 到中等水平时,Z 能学到像位置、噪声之类的控制信号;KL 太高又容易把模型拉偏,出现过拟合。这说明要让潜变量既有信息量,又不要把模型表达力全拱过去,得把握一个度。

再说说那句通俗比喻:把标准 Transformer 比作写日记——看到一半就顺着感觉接下去写,最后可能变成好评或差评,这种倾向是慢慢通过词选择浮现的。Free Transformer 更像写到一半暂停开个“中场会商”,决定后面是写好评还是差评,然后照着这个方向继续。这个“会商”的产物看不成句子,而是潜变量 Z,模型把它当成后续生成的指南针。

值得注意的一点是,作者没给潜变量贴标签,也没人工设规则,模型是在无监督条件下自发学出这些规划模式。这种自学能力让方法通用性好,不用人为去定义每种任务的控制信号。论文里还有更多实验细节:合成任务用随机重复字母加噪声来验证 Z 的编码能力,代码和数学任务做了多种规模和配置对比,训练策略总体和原 Transformer 保持一致,差别主要在损失和采样流程上。参数量、训练数据和具体超参都在论文表格里给出,方便复现。

来源:老刘说科学

相关推荐