十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从求解到提设:Discovery Foundation Models 与开放发现智能实践

从求解到提设:Discovery Foundation Models 与开放发现智能实践 做了几年大模型应用我越来越觉得当前基座模型的强是一种“已知领域内的强”。你让它基于文献写代码、做摘要、提取结构化信息它非常顺手可一旦要它去提出一个此前从未被验证过的假设、去设计一组实验来推翻自己的结论、去一片没有标准答案的问题空间里自主探索模型很快就会退化成一本正经地编答案。这里面缺的正是标题里写到的 Discovery Intelligence——面向开放式发现的智能而围绕这种能力设计的 Discovery Foundation Models是我认为继对话助手、编程助手之后第三个真正值得投入的方向。这篇内容不准备讲某个具体跑通的 Demo而是想系统拆解一下这类模型它和普通大模型的架构差异到底在哪训练数据和奖励函数该怎么设计评测怎么做才算数以及当你真把一套“发现循环”跑在真实领域里会遇到哪些文档里不会写的坑。每一点都是我实际踩过、调研过、也和同行反复验证过的经验。1. 从“求解”到“提设”发现智能的分水岭在哪要理解 Discovery Foundation Models第一步要接受一个稍微反直觉的判断发现智能的核心不是“求解”而是“提设”。1.1 传统大模型在解决什么问题传统基座模型的基本范式是给定问题、寻找答案。无论是文本生成、代码补全还是视觉问答本质上都在做一个条件分布采样在已知信息的约束下生成最合理的下一个内容。这种范式非常擅长收敛因为训练目标就是让输出逼近人类标注的正确答案或高概率的续写。它的本质是“已有知识的重新组合”。你可以让它把 Transformer 论文用通俗语言讲出来也可以让它根据已知 API 写一段调用代码但前提是正确答案必须存在于训练语料的某种隐式模式里。一旦问题超出语料覆盖范围模型应对方式往往是流畅地编造而不是严谨地组建一个可检验的新命题。这也就是为什么很多 Agent 项目跑起来以后大家发现它并不“聪明”只是“熟练”——熟练地检索、熟练地调用工具、熟练地把答案拼接得像模像样。熟练本身有价值但离“发现”还差着一个本质动作。1.2 发现智能要完成什么动作发现智能要完成的不是“生成一个可能的答案”而是“生成一个值得被验证的新假设”然后主动设计验证路径用验证结果反过来修正自己的认知模型。这个过程用一句话概括从已知数据里走出未知空间。我比较喜欢用一个简单的三层结构来定义它第一层是感知把当前领域的状态、已有理论和观察数据编码进上下文第二层是假设生成在状态空间里跳出局部最优产生多个不直接来自训练标签的新候选第三层是验证闭环通过真实环境、模拟器或符号逻辑去检验候选再把检验结果压缩回记忆。这个循环跑起来之后模型不再是一个“问一句答一句”的工具而是一个能自己给自己布置作业、自己批改、再根据批改结果重新布置作业的研究助手。用这个标准回头看今天大多数大模型 Agent 只做了第一层和半个第二层验证环节基本交给了外部人工。1.3 一个最小可行的发现闭环长什么样我把它写成了一个非常朴素的数据流后面章节会逐步展开观测 → 提出候选假设 → 设计验证实验 → 收集结果 → 更新记忆 → 产生新观测每个箭头背后都是一堆工程问题。比如“提出候选假设”如何避免重复已知结论“设计验证实验”怎么调用仿真器“更新记忆”怎么处理相互矛盾的观测结果。但有了这个最小闭环你至少能区分两个概念模型是在“检索答案”还是真的在“做发现”。2. 架构上真正要改的四个关键部件如果直接把通用基座模型套一个 Agent 外壳很难支撑上面那个闭环。原因是标准 Transformer 架构是为“序列条件生成”设计的不是为“假设搜索 多步验证”设计的。这里我给出四个我认为必须调整的架构组件。2.1 统一 Token 空间把观察、假设、验证指令编成一个序列第一件事是不要为工具调用单独设计一套协议而是把整个发现循环压进同一个 token 序列。观察数据、候选假设、验证指令、模拟器返回结果全部用特殊 token 做边界标记模型本质上还是在做生成但生成的对象从“自然语言”扩成了“发现状态流”。这样做的好处是可以用同一个 transformer 权重处理不同粒度的信息。模型既能在小范围里生成一句话假设也能生成一段调用模拟器的参数还能读模拟器返回的数据表。训练的时候这些能力共享同一套注意力权重迁移效率比分开训练多个小模型高得多。我见过不少团队把工具调用做成独立模块觉得“模型只负责生成意图工具交给代码逻辑处理”。短期看是省事长期看会让模型失去对工具结果的理解能力因为它看不到工具返回的原始信号只能看到被代码逻辑抽取后的结论。发现任务里最重要的就是原始信号本身所以统一 token 空间是更稳妥的结构选择。2.2 双通道记忆事实记忆与假设记忆必须分开普通模型的 KV Cache 是一种短期上下文记忆存的是这一次对话里出现过的内容。发现任务需要另一种记忆长期、结构化、可更新的假设历史。我建议在架构里明确区分两个通道。事实通道存放已经验证的知识例如“材料 X 的沸点是 Y”“规则 Z 在测试集上有效”假设通道存放尚未验证或正在验证的候选每条记录带有置信度、来源、验证状态和更新时间。两个通道的表示可以是一个可微的数据库也可以是一个额外训练的 Memory Encoder但关键是不能混在一起。为什么必须分开因为模型在做假设检索时需要刻意检索那些确定性不高、甚至和事实通道相矛盾的内容这是发现过程中最重要的信息来源。如果两个通道混合模型会习惯性地回避低置信度内容最后退化成保守的“复读机”。我在实践中发现双通道设计对生成结果的多样性提升非常显著尤其是在连续多轮发现任务里。2.3 模拟器不是外挂而是模型可感知的第二观察源很多 Agent 项目把模拟器当作黑盒工具模型调用以后只拿一个标量结果。但对发现任务来说模型需要看到模拟器内部产生的过程数据而不仅仅是最终分数。比如材料领域模拟器返回的 XRD 谱图、形成能曲线、中间态结构这些过程信息往往比一个判定结果更有价值。因此在架构上验证器应该作为一个“可微观察源”接入。模型生成验证指令模拟器执行后把原始输出特征化成观察向量再重新注入上下文。这个循环可以让模型在下一轮假设中避开已经证伪的具体原因而不是只知道某个方向失败了。说白了模型要能区分“这个材料的带隙太低所以不适合做光伏”和“这个材料不行”之间的差别。后者是结果前者是可改写的机制。只有把过程数据暴露给模型才能让假设生成从粗粒度演化到细粒度。2.4 输出头从“下一个字符”升级为“策略动作”仅有生成能力还不够发现任务里模型必须在多个候选假设之间主动选择先验证哪一个、投入多少计算资源。这已经超出了标准 LM 的定义更像强化学习里的策略决策。我建议在 decoder 之上增加一个轻量的策略头部输入当前记忆编码输出一个动作分布。动作空间可以是“执行假设生成”“调用验证器”“更新记忆”“停止并输出结论”等高层选择。生成模型负责内容质量策略头负责探索路径两者联合训练才能支撑开放式发现循环。这一点在工程上比很多人想的重要。我在一次材料配方搜索里发现如果让模型自由调用验证器它会把 80% 的预算花在验证“自己已经很有把握的候选”上导致探索效率极低。加上策略头用好奇心奖励去压一压保守行为之后同样预算下覆盖的假设空间翻了近一倍。3. 训练数据与奖励设计最容易翻车的一层架构只是骨架真正决定 Discovery Foundation Models 能不能跑起来的是训练数据和奖励设计。这一层出问题后面所有环节都会跟着错而且往往错得很难察觉。3.1 教科书数据会造成“确认偏误”一个常见的错误做法是拿高质量论文和教科书当主要训练语料认为模型读的文章越多越容易产生新发现。现实中效果很差原因在于教科书数据天然偏向“已经被验证的正确知识”模型在这种分布上训练学到的是“复现已知结论”的奖励模式而不是“探索高不确定性区域”的认知策略。你可以理解为一个只读过标准答案的学生很难主动提出反例因为他不知道哪些地方值得怀疑。模型也一样如果训练语料里都是最终的正确答案它会把“生成正确答案”和“做发现”混为一谈。3.2 合成“历史上的失败路径”样本一个更有效的做法是把历史上真实出现过的失败路径也合成进训练数据。比如某个假说在文献里最终被推翻但提出的过程非常有启发性这恰恰是最有价值的训练素材。模型需要学会的不是沿那条失败路径重走一遍而是学会识别“为什么这条路当时看起来合理、后来被推翻了”进而理解假设被否定的结构性原因。我在实际操作中采用过一个技巧从一个已成立的定理出发反向构造多个“曾经看起来可行但最终失败”的推导过程然后要求模型对这些失败路径做复盘。这个训练阶段不追求生成“正确答案”而是要求模型输出“可能的失败原因列表”。训练之后模型在真实发现任务里提出假设的多样性有明显提升而且恶性重复大幅减少。3.3 验证器设计核心原则可检验性优先于真实性奖励模型需要回答的核心问题是这个假设好不好。大多数团队会直接把奖励设成“这个假设是否真实”但这是个陷阱。发现任务里假设的真实性在验证之前是未知的如果奖励模型用真实性做标准它只会奖励那些重复已知知识的输出。我建议把奖励拆成三个维度可检验性这个假设是否可以被模拟器或实验明确判定真假信息增益假设验证后无论真伪能否让我对当前问题空间有更多认识新颖度与记忆通道里的历史假设有多大差异是否存在关键结构上的不同。三个维度里可检验性优先级最高。一个可检验的错误假设在发现任务里价值远高于一个不可检验的模糊但可能正确的陈述。后面第 5 节我还会回到这个评测话题。3.4 不同领域的构造差异材料、生物、数学不同领域做 Discovery Foundation Models 的数据构造方式差异很大我列一个对比表格领域假设的典型形态验证器的依赖最大的坑材料科学新组分、新结构、新工艺参数分子动力学模拟、第一性原理计算模拟器误差太高模型会把模拟伪影当真实信号药物发现新靶点关联、新分子骨架、新给药路径虚拟筛选、体外实验、毒性预测验证成本昂贵无法大规模并行数学新恒等式、新猜想、反例构造符号计算、穷举验证、形式化证明助手假设的表达离散难以用连续向量搜索网络科学新网络机制、新干预策略时序模拟器、因果推断基准混淆相关性与因果性看到差异之后建议不要指望一个万能模型直接通吃所有领域。更实际的路线是这个架构先在单一领域的数据上预训练建立稳定的“假设 验证”模式再通过统一 token 空间迁移到邻近领域。跨领域迁移在发现任务里比在常规 NLP 任务里要难得多因为“发现”本身依赖领域深层的结构约束。4. 跑通一个开放式发现循环催化剂配方案例讲了这么多抽象概念下面用一个我实际接触过的场景来说明白催化材料配方发现。假设你给模型一个目标——寻找一种在低温下高效分解 NO₂ 的催化剂配方。4.1 初始状态与第一轮假设生成模型读入初始领域记忆已知催化材料库、元素周期表性质、已有实验数据、目标约束工作温度低于 250°C、转化率高于 90%。然后它需要在记忆通道里采样多个候选假设这个阶段不需要验证目的是发散。我观察到这类任务里如果模型只是简单地从元素池里随机组合生成结果几乎没有价值。必须有策略地组合先基于已有催化机理挑选可能参与氧化还原循环的元素组合再加入一些低相似度的“陌生元素”增加偶然性。我通常设置 temperature 0.9 以上让模型输出 10 到 20 个候选配方再进入筛选环节。4.2 验证器并行执行与过程信号回收候选配方生成后调用第一性原理计算或已有的催化模拟器。这里不要只记录“成功/失败”我要求验证器把每个配方的关键中间信号都存下来例如吸附能、反应能垒、表面结构稳定性。这一批信号会作为新的观察 token 重新注入模型上下文。一次典型的筛选结果可能是这样候选配方验证器返回核心信号初步判定后续动作AₓB₁₋ₓO₂ 负载 C吸附能 -0.8 eV能垒 0.5 eV有潜力进入细筛DₓE₁₋ₓO₂表面结构坍塌明确的失败记录失败原因F 掺杂 G/H 体系结果波动极大模拟不收敛数据质量存疑重跑检查参数验证器返回的过程信号比最终判定重要得多模型看到“表面结构坍塌”下一轮就会自动避开同类结构取向而不是简单记住这个配方不行。4.3 记忆更新与下一轮假设修正模型把新结果压缩进假设通道哪些假设被证伪哪些还活着每个活着的假设置信度调整到多少。然后开始下一轮“提出候选 → 验证 → 更新”的循环通常跑到第 15 到 30 轮开始出现一些反直觉的候选。有一次模型在第三轮提出一个非贵金属单原子催化剂按照传统催化机理判断这个稳定性不高但模拟结果显示出乎意料的低温活性。后来复盘发现模型是因为看到了上一轮某次“失败”样本里的中间态信号意识到那个结构缺陷刚好能被这个新配位方式弥补。这种跨样本的细节迁移正是发现循环的价值所在它不是简单搜索而是把“失败”转换成认知更新再去指导未知区域的探索。这个案例给我的最大体会是发现循环的工程实现并不神秘核心难点在于每一轮反馈信号是否足够丰富、是否被模型真实理解。如果中间只保留一层“对/错”布尔值循环很快会退化因为模型没有足够信息去修正自己的假设空间。5. 评测“发现智能”的几个反直觉指标给一个发现模型打分比给它做一个阅读理解系统打分麻烦得多。传统的准确率、召回率、BLEU 在“发现”场景里几乎全部失效。下面是我做过一轮实验之后认为最能说明问题的几个指标以及它们为什么会反直觉。5.1 新 idea 率与真实率可能出现反向关系一个新 idea 率很高的模型不代表它做的发现多也可能它只是在胡言乱语。反过来一个非常谨慎的模型新 idea 率很低但每个 idea 都可验证、可靠实际的有用产出反而可能更高。这说明单一指标不能作为评判标准。我把“新 idea 率”定义为模型生成的假设与记忆通道中的历史假设差异程度。差异既可以是文本层面的也可以是语义结构层面的。但必须搭配可检验性一起来看。我推荐使用一个加权分数有效度 可检验性评分 × 新颖度评分 × 信息增益评分这三个子项之间是乘法关系而不是加法任何一个为零整体就是零。这样才能过滤掉“流畅但没有信息量”的假设。5.2 最值得采纳的三个核心指标第一是可验证率。在模型输出的所有候选假设里有多少可以被模拟器或明确的实验设计判定真假。这个指标衡量模型是否理解了领域内的验证边界。我见过不少模型能在 90% 的时间里输出语法通顺的科学表述但可验证率不到 30%也就是说大部分输出都是不可判定的模糊话术。第二是假设反演率。简单说就是模型能否在验证失败后根据反馈修改假设的核心结构而不是换几个参数再来一遍。我把它叫做“错误信息利用率”。好的发现模型失败之后输出的新假设应该和之前的失败原因高度相关差的模型则会在失败后跳到完全不相关的方向说明它没有理解反馈信号。第三是长期记忆一致性。模型在一个长时间发现循环里不断更新假设通道更新之后不能完全推翻早期已经验证的事实也不能无视早期失败记录。跑了很多轮之后如果早期观察到的否定信息还能影响后期假设生成说明记忆通道在工作如果早期信息被遗忘干净那就只是带了一个很弱的短期上下文。5.3 怎么构建“藏起来”的测评集为了避免模型背答案测评集的构建思路应该跟普通 NLP 基准不同。普通基准是选择一批带标签的数据模型要做的是学习映射发现基准要刻意“藏”起结论只给出问题空间和验证器接口让模型自己去探索。我在实践中采用一个“历史后报”方案选择一个已经发表的科研成果但不给模型看论文内容只给模型论文发表之前的领域认知数据、模拟器、问题描述看它能否在限定预算内独立接近真实发现。这个方案特别适合用于材料、化学、生物这些有明确验证器的领域。数学模型因为是形式化验证可以直接拿一个未解决的问题做前瞻性评测。真正的挑战是评估周期很长。一次完整的发现尝试可能要跑数个小时甚至数天。所以我在做工程化评测时会先做一个轻量级在线评测每 100 轮记录一次上面三个指标的变化曲线盯着“可验证率是不是在稳步提升”“假设反演率是不是大于某个阈值”一旦出现指标停滞立刻介入检查记忆通道是否有 bug。6. 真落到生产环境绕不过去的三笔账最后一节讲实际部署时容易被忽略的工程问题。模型结构再花哨算不好这三笔账项目很难走出实验室。6.1 长程发现任务的成本膨胀比想象中快一个标准的发现循环需要多次调用模拟器和模型生成token 消耗不是线性增长的而是随着记忆通道不断扩大、上下文越来越长呈超线性增长。我实测过类似规模的循环跑完一轮 30 次迭代的发现任务模型侧 token 消耗大约是一个普通长文档任务的 15 到 30 倍。应对方案只有一个别让上下文无限膨胀要主动做记忆压缩。我在项目里采用分段总结策略每 5 轮验证后把旧细节压缩成一个结构化摘要只保留假设状态和关键否定原因过程数据另外存到向量库以备查询。这样模型在推理时不需要把所有原始过程都载入上下文成本能压了差不多 40%而且发现效果没有明显退化。另一个容易忽略的成本是模拟器自身。如果做的是第一性原理计算一次验证可能要花好几小时甚至更久模型会把整个流程卡死在验证器上。这时建议做两层验证先用快速但精度略低的代理模型做粗筛只有进前三的候选才跑高精度验证器。发现任务里粗筛带来的召回损失通常可控但等待时间会大幅下降。6.2 负结果数据库要像正结果一样认真管理大多数团队在跑发现项目时会把精力放在“找到了什么好东西”上对失败记录随手丢弃。但正如前面催化剂案例里讲到的失败记录和中间信号是模型修正认知的关键。一旦丢得太多模型会在同一个坑里反复跌进去而且你还不知道它为什么跌。我在生产系统里专门建了负结果库存的是验证器返回的失败详细原因、失败假设的结构化表示、以及当时模型认为它可能成功的关键依据。这个库会被定期重放成训练数据让模型在后续发现任务里自动规避类似结构。负结果库对齐还有一个额外的好处它让整个发现过程可追溯。审计时不再是一个“模型说这个材料好”的黑盒而是一条链提出假设的人、验证依据、失败历史全部有记录。6.3 人机协同的判断界面比自动闭环更现实尽管 Discovery Foundation Models 的目标是开放式自主探索但我并不建议在初期就让整个循环完全自动化。现实中的验证器都有噪声有些假设在模拟器里通过了放到真实实验里却完全失效反过来模拟器显示失败的候选真实实验里可能有特殊条件能跑通。我的做法是引入一个人机协同界面模型自动生成假设、自动调用粗筛验证但在进入高成本实验验证之前把一批候选假设连同验证依据、失败历史、新颖度评分推送给领域专家。专家只需要有限时间做判断不用从头读全部过程数据。这既保留了模型的探索效率又借用了人类的直觉和常识来过滤明显荒谬的伪发现。我接触过的材料、生物两个项目都在这个协同界面上得到了非常正向的反馈。专家普遍表示以前是他们逐篇读文献生成想法现在是他们从模型给的一堆有意思的新方向里挑最有价值的那些效率差距不是一个数量级可以描述的。当然协作界面本身也需要跟模型联合设计因为专家的反馈也需要作为奖励信号回流后续做偏好对齐。6.4 一次失败尝试给我留下的教训最后分享一个具体的踩坑经历。最早我为了省成本把验证器返回的连续信号量化成了三档离散值——好、中、差再送去更新模型记忆。结果模型发现循环跑了二十轮以后开始严重震荡有时候连续产出很多低质量候选有时候又畏手畏脚不敢尝试。后来排查发现问题出在量化丢掉了太多关键信息。比如两个候选都落进“中”档但它们差的地方完全不同一个输在吸附能不够强一个输在表面结构不稳定。模型拿到同一个离散信号没法做结构性的区分导致记忆更新时出现误导。换成保留完整过程信号之后循环立刻稳定下来。这个教训让我意识到发现任务里损失函数和奖励函数的“信息粒度”比它们的形式重要得多宁可增加一点计算成本也要保留能让模型区分失败模式的过程数据。做 Discovery Foundation Models本质上是在教模型一种做研究的方法而不是教它背已知答案。现阶段这个方向还不存在一个能通吃所有领域的成熟基座大部分团队都还在数据构造、验证器接口和评测指标上各自探索。但我个人的体会是这个方向值得投入因为一旦模型真的能在某个领域独立提出可检验的新假设、并且能根据验证反馈自主修正认知它的价值会远超做一个更聪明的聊天助手。这也是我在这个领域持续踩坑、又持续跟进的根本原因。
返回列表