283

Optibrium Cerella:AI 辅助 DMTA 决策平台

Optibrium Cerella 用主动学习填补稀疏的项目数据,辅助 DMTA 决策。这篇讲清缺失数据填补的思路、主动学习在实验设计中的价值与适用前提。

Cerella 是 Optibrium 的 AI 决策辅助平台,针对药物项目数据的一个典型特征:极度稀疏。一个项目做了几百个分子,但每个分子只测了部分性质——有的测了活性没测溶解度,有的测了 ADMET 没测选择性。传统建模需要完整数据,而真实项目数据表上到处是空格。

核心思路:把稀疏矩阵补全

Cerella 的做法借鉴了推荐系统中的协同过滤与深度填补:不同性质之间存在相关性(如 logP 与溶解度、与通透性),已测的性质可以帮助推断未测的性质。同时,相似分子之间也可以互相借力。

传统建模 缺失数据填补
每个性质单独建一个模型 所有性质联合建模,共享信息
需要该性质有足够训练数据 数据少的性质可从相关性质借力
丢弃有缺失的样本 利用全部已测数据
输出点预测 输出预测 + 不确定性

主动学习:决定「下一个该测什么」

这是它更有价值的部分。实验资源有限时,不是所有测量的信息价值都一样

  • 测一个模型已经很确定的分子,几乎学不到新东西;
  • 测一个模型高度不确定、且对决策影响大的分子,信息价值最高;
  • 主动学习就是形式化地量化这个价值,给出「下一批该测哪些分子的哪些性质」的建议。

实际收益是减少无效实验。在 DMTA 闭环中,每一轮实验的周期是数周,能把轮数从 6 轮压到 4 轮,就是几个月的项目时间。

用开源实现的思路

import numpy as np
from sklearn.ensemble import RandomForestRegressor

# 1) 多任务模型处理稀疏标签(Chemprop 原生支持缺失值)
#    chemprop train --data-path multi_task.csv --task-type regression
#    缺失值留空,模型只在有标签处回传梯度

# 2) 用集成方差做不确定性估计
def uncertainty_from_ensemble(models, X):
    preds = np.stack([m.predict(X) for m in models])
    return preds.mean(axis=0), preds.std(axis=0)

# 3) 主动学习采集函数:优先测「不确定性高 + 预测值接近决策边界」的分子
def acquisition(mean, std, threshold, beta=1.0):
    """结合不确定性与决策相关性"""
    dist_to_boundary = np.abs(mean - threshold)
    return std * beta - dist_to_boundary * 0.5     # 越大越该测

mean, std = uncertainty_from_ensemble(models, X_candidates)
scores = acquisition(mean, std, threshold=6.5)     # 如 pIC50 > 6.5 为达标
next_batch = np.argsort(scores)[-24:]              # 下一轮测这 24 个

适用前提

  • 性质之间确实相关:如果各性质完全独立,联合建模没有增益。ADMET 性质之间通常有相关性,这个前提大体成立。
  • 数据量要过最低门槛:几十个分子的项目,任何模型都学不到可靠规律。通常需要至少一两百个分子、多轮迭代后才有意义。
  • 数据质量一致:不同批次、不同实验条件的数据混在一起,模型学到的可能是批次效应。
  • 决策标准要明确:主动学习需要知道「什么算达标」才能算信息价值。

常见误区

  • 把填补值当实测值这是最危险的错误。填补的是预测,带有不确定性。用它做排序和优先级可以,写进报告当数据、或作为决策的唯一依据不行。
  • 忽略「缺失非随机」:数据缺失往往不是随机的——化学家可能只对看起来有希望的分子做了完整测试。这种选择性缺失会让填补模型产生系统性偏差。
  • 只看预测不看不确定性:填补值的可靠性差异很大,必须一并看不确定性。
  • 期待它替代实验设计判断:主动学习给出的是统计上的信息价值,不考虑合成难度、化学直觉、项目策略。它应该作为化学家决策的输入,而非替代。

提示

商业平台功能与定价变动较快,本文为方向性介绍,采购前请核对官方最新信息。缺失数据填补与主动学习的思路本身值得引入任何 DMTA 流程,用开源工具即可实现基础版本。

延伸资源