391

自驱动实验室 Self-Driving Lab:闭环自动化合成

自驱动实验室把设计、合成、测试、分析串成自动闭环。这篇讲清系统构成、现实进展与落地的关键约束。

自驱动实验室(self-driving lab)把 DMTA 闭环完全自动化:算法设计实验、机器人执行、仪器分析、结果回流更新模型,然后自动决定下一轮做什么——无需人工干预。这是实验自动化的理想形态,但也最容易被过度宣传。

系统构成

组件 关键要求
决策层 贝叶斯优化、主动学习 能处理噪声与批量选择
规划层 把决策翻译成可执行操作 需要标准化的操作描述
执行层 液体处理机器人、反应器、加热搅拌 可靠性、可重复性
分析层 在线 LC-MS、HPLC、NMR、光谱 自动化进样与数据解析
数据层 实验记录、结果解析、模型更新 结构化、可追溯
调度层 任务队列、资源管理、错误处理 异常恢复能力

最容易被低估的是「规划层」与「错误处理」:把「用 X 催化剂在 Y 温度下反应」翻译成机器人的具体动作序列,以及处理「移液枪堵了」「反应物结晶了」这类异常,是实际工程量的大头。

现实进展:哪些已经做到

  • 反应条件优化这是最成熟的应用。固定一个反应,自动筛选催化剂/配体/碱/溶剂/温度组合,用贝叶斯优化收敛到高产率条件。已有多个成功报道。
  • 材料与配方优化:光电材料、催化剂、制剂配方的组分优化。
  • 简单的分子合成:基于可靠反应(酰胺偶联、Suzuki 等)的类似物库合成。
  • 高通量筛选:本来就高度自动化的领域。

现实进展:哪些还做不到

  • 复杂多步全合成:需要中间体分离纯化、条件差异大、异常情况多;
  • 需要人工判断的操作:相分离、结晶形态观察、判断反应是否完成;
  • 探索性化学:尝试文献中没有先例的新反应;
  • 非标准化的生物实验:细胞状态判断、显微观察;
  • 真正的「端到端做药」目前没有系统能从靶点自动做到候选化合物。宣传中的「AI 自主发现药物」通常只覆盖了某个环节。

贝叶斯优化:决策层的核心

import numpy as np
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import Matern, WhiteKernel
from scipy.stats import norm

class ReactionOptimizer:
    def __init__(self, condition_space):
        self.space = condition_space          # 编码后的候选条件
        self.X_tested, self.y_tested = [], []

    def expected_improvement(self, mu, sigma, best_y, xi=0.01):
        """期望改进采集函数"""
        with np.errstate(divide="warn"):
            imp = mu - best_y - xi
            Z = np.where(sigma > 0, imp / sigma, 0.0)
            ei = imp * norm.cdf(Z) + sigma * norm.pdf(Z)
            ei[sigma == 0.0] = 0.0
        return ei

    def suggest_batch(self, batch_size=24):
        if len(self.X_tested) < 8:
            # 冷启动:先做覆盖性好的初始设计
            idx = np.random.choice(len(self.space), batch_size, replace=False)
            return self.space[idx]

        gp = GaussianProcessRegressor(
            kernel=Matern(nu=2.5) + WhiteKernel(),
            normalize_y=True, n_restarts_optimizer=5)
        gp.fit(np.array(self.X_tested), np.array(self.y_tested))

        mu, sigma = gp.predict(self.space, return_std=True)
        ei = self.expected_improvement(mu, sigma, max(self.y_tested))

        # 批量选择时要考虑多样性,避免选到一堆相似条件
        selected = []
        ei_copy = ei.copy()
        for _ in range(batch_size):
            i = int(np.argmax(ei_copy))
            selected.append(i)
            # 惩罚已选点附近的候选
            dist = np.linalg.norm(self.space - self.space[i], axis=1)
            ei_copy *= (1 - np.exp(-dist**2 / 0.5))
        return self.space[selected]

    def update(self, X_new, y_new):
        self.X_tested.extend(X_new)
        self.y_tested.extend(y_new)

落地的关键约束

  • 投入巨大:设备、集成、维护的成本很高,只有高频重复的任务才划算。
  • 标准化是前提:只有条件参数明确、操作可重复的实验才能自动化。探索性实验反而不适合。
  • 错误处理是主要工程量:机器人的可靠性、异常检测与恢复,往往占开发投入的大头。
  • 分析环节常是瓶颈:合成可以自动化,但如果分析要人工进样与解谱,闭环就断了。
  • 化学范围受限:自动化平台通常只支持有限的反应类型与操作。
  • ROI 要认真算很多情况下,「半自动化 + 熟练技术员」比全自动化更经济

务实的分级路径

# 不必一步到位,按收益排序逐步推进

# 级别 1:数据自动化(收益最高、成本最低)
#   仪器数据自动采集入库,消除手工录入
#   → 立刻改善数据质量与可追溯性

# 级别 2:分析自动化
#   自动进样、自动积分、自动生成结果表

# 级别 3:单元操作自动化
#   平行反应器、自动化后处理

# 级别 4:决策辅助
#   贝叶斯优化建议下一批条件(人工执行)
#   → 这一步的收益/成本比通常最好

# 级别 5:闭环自动化
#   全自动执行 + 决策

# 多数团队在级别 1~4 就能获得大部分收益,
# 级别 5 只在高度重复的场景才划算

级别 4(决策辅助)往往是性价比最高的一步:不需要机器人,只需要把贝叶斯优化接进现有的实验流程,就能显著减少实验轮次。

关键要点

  • 反应条件优化是最成熟的应用,复杂全合成与探索性化学仍做不到;
  • 「规划层」与错误处理是被低估的主要工程量;
  • 分析环节不自动化,闭环就断了;
  • 级别 4(贝叶斯优化辅助决策)性价比最高,不需要机器人即可实施。

延伸资源