☰
让大语言模型按步编辑分子:兼顾活性与可合成性的设计新思路
2026/11/3 16:45:04 网站建设 项目流程

这题目乍一看是给“AI+化学”圈子里的人看的,但里面藏着一条很值得玩味的思路:不是让大语言模型直接生成一个理想分子,而是让它一步一步告诉你,现有的分子该怎么改,才能既保持活性,又能被顺畅地合成出来。这条“编辑序列”的路线,其实把大语言模型从“凭空创作”拉回到了“做有约束的局部修改”,本质上是把化学合成问题,变成了一个可逐步验证的序列决策问题。

文章发在 Nature Machine Intelligence 上,分量不轻。我研读下来,觉得它对做分子生成、药物设计、AI辅助合成规划的人都有直接参考价值。偏算法背景的,能学到怎么把分子操作封装成大语言模型熟悉的文本动作;偏化学合成的,能看到一套把可合成性“前置约束化”而不是“事后筛选”的落地框架。

1. 先盘清楚:分子可合成性为什么是老大难

1.1 生成分子容易,造出来是另一回事

深度学习做分子设计,近五年已经卷得很厉害了。各种生成模型,从 VAE、GAN,到基于流的模型,再到今天的大语言模型,都能在几秒钟内吐出成千上万的新分子结构。这些模型在指标上很好看,什么新颖性、多样性、与目标蛋白的对接打分,一个比一个高。但你只要把这些分子拿给合成化学家看一眼,大概率会得到一个礼貌但坚定的摇头——这结构太绕了,这手性中心太密了,这中间体根本买不到,这苯环上的取代模式简直是合成地狱。

问题的根源在于,绝大多数生成模型默认的优化目标是“分子的性质”,比如结合能、类药性、理化参数。至于这个分子能不能用不超过十步的反应从商品化试剂做出来,模型是不管的。代偿方案也有,最主流的是在生成后用一套可合成性评估打分器,把明显难做的分子筛掉。但这类后置过滤非常被动,相当于先让模型自由发挥,再指望一个简化打分函数救场,实际筛选效率很低,而且越是复杂的活性分子,被误杀的概率越高。

1.2 可合成性不是一条线,而是一个过程

真正理解这个问题,得换个角度。可合成性不是一个静态属性,它是“从可得原料到目标分子的一条路径”的属性。同一个分子,你从不同的切断点逆推,合成难度完全不一样。所谓“分子难合成”,更准确的说法是“在当前可得试剂和成熟反应库下,找不到一条经济、稳健的路线”。

这就引出了一个关键认知:与其等分子生成好了再去评估合成路线,不如把合成路线的可行性直接嵌进分子的生成过程。而要做到这一点,最自然的方式就是让模型不去“画”一个完整的分子,而是让它去“执行”一系列已知可逆、可控的化学动作。这篇论文里的“编辑序列”,其实就是这一系列化学动作的文本化表达。

注意,这里不是让AI凭感觉随便改结构,而是每做一步编辑,都要保证这步在化学上是有意义的、可以拿现有反应知识解释的。这本质上是从“结果导向”转到了“过程导向”。

2. 为什么大语言模型适合干这个活

2.1 大语言模型的“文本经验”里其实有化学

很多人对大语言模型做分子设计的第一反应是质疑:它又没真做过反应,凭什么指导合成?但事情没这么简单。大语言模型在海量科技文献、专利、实验方法文本上训练过,这些文本里就包含了大量化学反应的隐含描述。比如某类取代反应通常用什么条件,某类保护基在什么环境下不稳定,某些官能团之间会互相干扰。这些知识未必以“精确的反应规则”形式存储,但它能以概率联想的形式体现出来。

更重要的是,大语言模型有一个非常擅长的事:严格的格式转换和逐步推理。你让它一口气设计一个全合成路线,它容易翻车;但你让它“只判断下一步该上哪个基团、不该动哪个位置”,它做得比多数人想象得靠谱。这就是“编辑序列”方案的技术红利——把难题拆成模型擅长的子任务。

我自己的经验也印证这一点。早期我用大语言模型直接生成完整SMILES时,产出经常是化学上不成立的,比如价键数量错误、环闭合乱套。但当我换成“给定一个分子,请只做一步修饰并输出新的SMILES”这种受限任务时,有效输出率一下高了很多。道理不复杂:动作空间小了,幻觉空间也就小了。

2.2 编辑序列把化学动作变成了“语言游戏”

传统的分子优化做法是连续潜空间里的向量运算,比如在隐空间里平移一个向量,就相当于给分子加一个片段。问题是,这个操作缺乏化学语义,你很难解释中间发生了什么。

编辑序列的思路完全不一样。它把一次分子优化拆成一组离散动作,格式上很像自然语言里的指令序列。比如:

  • 在5号位引入甲氧基
  • 把羧基还原为羟甲基
  • 用吡啶环替换末端的苯环
  • 移除一个多余的甲基

每一个动作都可以用SMILES、SmarTS模式或自然语言短语来表达,模型看得懂、算得动、也能被化学规则校验。于是,整个优化过程就变成了一个语法受到严格约束的文本生成过程。这种表达的好处不只是“能跑通”,而是可调试、可审计、可在每步插入硬性化学规则检查。

判断手性中心构型翻转的编辑动作,在文本上很容易写,但化学反应上要实现却是另一回事。所以,真正能用的系统不会完全放任模型自由输出,而是会加一层反应规则校验器,把模型建议的动作放到已知反应模板里过滤一遍。

3. 论文怎么“引导”大语言模型走向可合成

3.1 引导机制的三种可能路径

“引导大语言模型”这个说法本身包含很多技术内涵。我理解下来,至少有三类引导方式,论文里应该也都涉及了。第一种是提示层面的引导,也就是通过精心设计的提示词,把当前分子的结构信息、历史编辑记录、目标约束都组装成一段结构化的文本输入,让模型在这个上下文里做事。第二种是数据层面的引导,用大量已知的、可实现的分子优化案例去微调模型,让模型学会“什么是一个合理的编辑动作”。第三种是解码/搜索层面的引导。这一步最见功力——模型每次提出可能的编辑候选后,系统不是照单全收,而是用一个可合成性评估器对候选动作打分,再用束搜索这类策略筛选出既能改善性质、又不超过合成难度阈值的那条编辑路径。

3.2 评分函数怎么定

看这类工作,最该关心的是目标函数怎么设计。只有“可合成性优化”这个空泛的目标是不够的,必须把它拆成可计算的分量。合成可及性评分是经典项,很多做AI化学的人会直接引入SA_score这类经验函数。但这类老牌评分器的问题是计算过于启发式,按片段频率和复杂度估算,会低估一些看似复杂但实际成熟的反应路线。

成熟的系统通常会把合成难度评估升级成“基于逆合成模板的最短路线长度”。也就是说,评价一次编辑好不好,除了看活性打分涨没涨,还要估计一下,从当前分子出发,要用多少步已知反应才能从商品试剂做到。这里大的取舍就很清楚了:如果活性打分上涨带来的收益,不足以覆盖合成步数增加带来的成本,这条编辑就会被压下去。

还有一种引导也很关键——负面引导。大模型在生成编辑序列时容易走上“只顾性质优化”的老路。为拉回来,可以把已知的不可行编辑直接编码进训练数据或拒绝采样逻辑里。例如某些官能团不能共存于同一分子的特定骨架下,或者某个取代位置会显著降低后续反应的区域选择性。把这类物理化学常识变成模型可见的提示,比光靠模型自己“悟”要稳得多。

3.3 序列长度与搜索成本

编辑序列的长度,是决定整个系统成败的隐藏参数。太短了,模型没有足够的动作空间去真正改善分子性质;太长了呢,搜索空间指数爆炸,每多一步编辑,组合路径就多一个数量级的可能性。我看到的合理做法是,把序列长度当作一个约束条件,不是硬编码死,而是让模型在预算内自行决定是提前收敛还是继续编辑。

这里实际上就涉及一个整体约束的权衡——与其限制编辑动作的绝对数量,不如限制累计合成难度。比如,你可以设定总合成难度分数必须低于某一阈值,在这个预算内,允许模型自由决定编辑步数。这样一个分子可以经过三步改动达到目标,另一个分子可能需要八步,但两者都满足合成约束。

4. 实操层面:我也想用这套思路,该怎么落地

4.1 数据准备是最大的隐性成本

这类系统听着很美好,真正拿过来落地的时候,数据会先给你一个下马威。理想训练数据是什么样的?是大量“分子A经过哪些具体步骤变成了分子B,且B的性质更优”的案例。可惜的是,这类结构化数据在公共数据库里极度稀缺。化学家手头的优化案例散落在专利、论文、实验记录里,不仅格式杂乱,而且很少会诚实记录失败路线。

我自己折腾过一段时间,总结下来,有三个可行的数据来源。一是反应数据库的挖掘,从Reaxys、USPTO这类数据库中提取真实的反应序列,把多步合成路径视为天然的编辑序列。二是高吞吐实验数据,如果课题组有自动化合成平台,可以把每轮设计-合成-测试-再设计的循环记录整理成样本,这是最贴近论文理想场景的数据。三是半合成数据,用逆合成工具把现有药物分子切成片段,再反向重组生成合成难度可控的编辑样本。第三种效率最高,但也要注意别让它把工具自带的偏见带进模型。

4.2 模型选型与微调建议

基座模型的选择,直接影响你的成本上限。如果团队GPU资源有限,不必一上来就追百亿参数的模型。关键在于分子编辑任务的核心能力——遵循指令、输出结构化SMILES变换、保持上下文一致——这些在中等规模模型上经过微调也完全可以达到。

微调阶段有两点值得注意。第一,输入侧不要只给SMILES字符串,最好是结构化地描述分子:SMILES、关键官能团列表、手性中心数量、当前合成难度分数,这些信息挤在一起,模型才能理解“现在这个分子处于什么境地”。第二,输出侧要强约束为“动作+子结构+目标位置”的固定格式。你让模型自由发挥写自然语言,它可能给你三种不同的说法表达同一个动作。固化成类似JSON或模板字符串的格式,后面做规则校验就不费劲。

4.3 束搜索与取舍

真正到了推理阶段,最实用的工程技巧是我个人比较偏好的束搜索策略。大语言模型每个解码步会给出概率分布,你可以只拿概率前几名的候选动作做展开,而不是等模型自己产生完整序列。这样你就能自行控制每一步的分支数,让模型在多个动作选项之间做一笔受控的权衡。

具体实现上,我一般保留5到10个候选分子在搜索束里。每一步都做一次性质评估和可合成性评估,然后把两项分数加权重合,低于当前束内最佳线的分子直接剪枝。这类搜索不保证全局最优,但胜在能在有限时间内给出稳定、可信的次优解。考虑到分子优化本身是巨大的组合搜索问题,找“够好且合成可行”的分子就已经满足应用需求了。

采样温度也是个微妙参数。温度太高,模型会乱来,给出各种罕见的官能团组合;温度太低,搜索会困在局部,所有候选都在小幅微调同一个骨架。我习惯把温度设在0.7到0.9之间,让模型保持适度的探索性,再靠搜索剪枝把不靠谱的路径拦掉。

5. 踩过的坑和排查思路

5.1 模型能改分子,但不一定真的“懂”化学

最大的幻觉风险是:模型给出的编辑在SMILES语法上是合法的,但在化学上根本没有对应的反应路径。比如它们可能会把甲氧基直接按到一个严重受阻的季碳上,或者把氨基安到一个完全不存在C-H键的位置。排查的方法只有一个——建立独立于模型之外的规则校验器。

我在自己的系统里加了一个硬性过滤层:任何候选编辑必须先过一遍已知反应模板匹配。匹配不上,直接丢。匹配上了,还要看看反应中心有没有被模型改动到分子其他不该动的部位。这个过滤很粗暴,但非常有效。实测下来,加上过滤层之后,最终候选分子的化学合理性从不到60%提升到了90%以上。

5.2 可合成性评分被“刷分”

用SA_score这类评分函数做奖励信号时,有个真实存在的漏洞——模型会学会钻空子。它可能会通过删掉一个复杂环来让分数大幅变好。但在真实合成化学家眼里,删掉这个环的同时,关键活性也基本报废了。

这个问题的解决思路,是不在单个评分函数上吊死,用多个互补指标交叉验证。比如SA_score之外,再配一个逆合成路线长度指标。一个编辑如果让SA_score变好,但逆合成步数反而暴涨,那这个编辑就存疑,打个问号。

5.3 序列编辑步数与稳定性

实操的时候还会遇到一个特别恼人的问题:模型前几步改得很好,继续编辑几步之后突然开始原地打转,或者来回加同一个官能团又删掉。这是搜索过程中缺少状态记忆导致的。解决方式不复杂,把历史编辑动作记录到提示词里,让模型看到“这些动作已经做过了”。这里能明显遏制重复编辑。

5.4 评估指标别只看分子性质

最后说一个很多人会忽略的点。评估这类系统时,除了观察产物分子的活性指标,更该统计的指标是搜索效率:平均需要尝试多少次编辑,才能找到一个满足活性提升且可合成性达标的分子。这个指标直接决定了系统的落地成本。

我的经验是,记录每一次搜索束顶端的分数变化曲线。如果曲线稳步上扬,说明引导机制是有效的;如果上下剧烈震荡,大概率是奖励信号设计出了问题,模型在做无效探索。这时候优先回头检查可合成性评分项有没有把模型“带偏”。

6. 这个方向还能怎么玩

这类“引导大语言模型输出编辑序列”的框架,并不局限于分子优化。它其实提供了一个更通用的范式:把领域问题拆解成离散的、可验证的编辑动作,再让大语言模型基于当前状态一步步决策。在材料设计里,它可以被用于合金配方微调;在蛋白质工程中,它可以引导突变序列的生成;在分子从头设计领域,它甚至可以与自动化合成平台闭环联动。

我个人体会最深的一点是:与其逼大语言模型一步到位输出“正确答案”,不如让它在加约束的过程中自己逼近答案,反而能得到更可靠的结果。就像教一个人做菜,你直接甩一份满汉全席食谱给他,他大概率会翻车;你告诉他把肉先切丝,再腌十分钟,然后下锅滑炒——按步骤走,出错率就低多了。

这大概也是“编辑序列”思路的真正价值:把大语言模型从全知全能的幻想中解放出来,变成一位能听懂指示、能分步干活、每一步都能被检查的可靠助理。如果你也想在分子设计相关的工作里试这套思路,我的建议是别贪大,先从单一步骤的分子修饰做起,搭好校验器,跑通一两个真实案例,再慢慢琢磨怎么把序列加长、把搜索做得更精细。那时候你回头看,会发现当初最难的并不是模型本身,而是你怎么设计每一步的评价与引导。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询