169

Benchmark 陷阱:AI 制药论文高分是怎样被制造出来的

AI 制药论文的高分是怎样被制造出来的?这篇系统列出常见的评测陷阱与识别方法。

AI 制药领域的论文常常报告令人印象深刻的指标。但相当一部分「提升」来自评测设置而非方法本身。了解这些陷阱,既是读论文的必备能力,也是做自己的工作时避免自欺的前提。

陷阱一:宽松的数据划分

# 最常见也最严重的问题(见 167)
#
# 表现:
#   用随机划分报告主要结果
#   骨架划分的结果放在附录,或干脆不做
#
# 为什么高估:
#   药物数据成系列产生,同系列分子高度相似
#   → 随机划分让测试集的「近亲」留在训练集
#
# 【识别方法】:
#   □ 论文用了什么划分?主表用的是哪个?
#   □ 有没有报告测试集与训练集的相似度分布?
#   □ 不同划分下的差距有多大?
#
# 【DTI 任务的特殊形式】(见 157):
#   药物-靶点矩阵的随机划分
#   → 「药物均值 + 靶点均值」的平凡基线
#     就能接近深度模型
#   □ 论文有没有报告这个基线?

陷阱二:不公平的基线

# 表现:
#   新方法精心调优(贝叶斯优化、几十次试验)
#   基线用默认参数跑一次
#
# 【超参数优化带来的提升常常大于换模型】(见 131)
#   → 这样比较,「提升」的来源无法区分
#
# 其它形式:
#   - 基线用了过时的实现或版本
#   - 基线的特征工程明显不如新方法
#   - 只与弱基线比,不与该任务的实际最优方法比
#   - 【不与 ECFP + 梯度提升这个强基线比较】
#
# 【识别方法】:
#   □ 基线的调优预算是多少?与新方法相同吗?
#   □ 有没有 ECFP/描述符 + 树模型的基线?
#   □ 基线的数字与其原论文报告的一致吗?
#     (明显偏低说明基线没跑好)

陷阱三:单次运行与选择性报告

# 表现:
#   只报告一个数字,没有标准差
#   或只报告最好的一次运行
#
# 为什么严重:
#   分子数据集常常只有几百到几千个样本
#   → 【不同随机种子的结果差异可能大于方法间差异】
#
# 【识别方法】:
#   □ 报告了几个种子?有标准差吗?
#   □ 提升幅度与标准差相比如何?
#     提升 0.02 而标准差 0.03 → 【没有意义】
#   □ 有没有做显著性检验?
#
# 相关的问题:
#   - 在测试集上调超参数(测试集泄漏)
#   - 报告最佳 epoch 的结果而非早停选出的
#   - 多个数据集中只报告表现好的那些
#
# 【一个提示】:
#   如果论文在 10 个数据集上都「全面领先」,
#   这本身就值得怀疑 ——
#   真实的方法通常各有所长

陷阱四:数据泄漏

类型 表现
重复分子 同一分子(不同 SMILES 写法)出现在训练与测试集
预训练泄漏 测试集分子在预训练数据中
特征泄漏 特征中包含了标签的信息
时间泄漏 用未来的数据预测过去
基准自身的偏倚 DUD-E 的诱饵与活性分子性质分布不同(见 241《DUD-E》
结构基模型的配体偏倚 只用配体特征就能达到接近的成绩(见 238《PDBbind》

「只用配体特征的对照基线」是评估所有基于结构的模型时必须做的:如果不看蛋白也能达到接近的成绩,说明模型没有真正利用结构信息。

陷阱五:指标与实际需求脱节

# 表现:
#   报告 ROC-AUC,而实际关心的是前 1% 的富集
#
# 为什么误导:
#   【ROC-AUC 在极度不平衡时会给出误导性的高值】
#   真实筛选中活性分子可能只占 0.1%
#   → AUC 0.9 听起来很好,
#     但前 1% 中可能几乎没有活性分子
#
# 应该报告的:
#   虚拟筛选:EF@1%、EF@0.1%、BEDROC
#   排序任务:分组内的 Spearman
#   分类任务:PR-AUC、特定召回率下的精确率
#
# 其它形式:
#   - 生成模型报告有效性/唯一性(区分度已很低,见 135)
#   - 报告整体相关性而非分靶点/分系列的相关性
#   - 用 RMSE 评价一个实际用于排序的模型
#
# 【识别方法】:
#   □ 这个指标对应什么实际决策?
#   □ 有没有报告更贴近实际需求的指标?

陷阱六:缺乏实际验证

  • 表现:所有结论都来自回溯性的基准测试,没有任何前瞻性验证
  • 为什么重要:基准测试是「已知答案的考试」,而实际应用是「未知答案的预测」——两者的差距可能很大;
  • 更有说服力的证据(按强度递增):
    • 在独立的外部数据集上验证;
    • 时间划分的前瞻性验证;
    • 实际合成并测试了生成/预测的分子
    • 发现的分子进入了后续研发。
  • 识别方法直接搜索论文中有没有「synthesized」「experimentally validated」「we tested」这类描述,以及具体测了多少个、结果如何。

阅读时的快速检查清单

# 【5 分钟快速评估】
#
# 数据:
#   □ 数据集大小?(几百个 → 结论要打折)
#   □ 划分方式?(随机 → 主要结论存疑)
#   □ 有没有相似度分布的分析?
#
# 基线:
#   □ 有 ECFP + 树模型的基线吗?
#   □ 基线的调优预算与新方法相同吗?
#   □ 有任务特定的平凡基线吗?
#     (DTI: 药物均值;结构模型: 只用配体特征)
#
# 统计:
#   □ 几个种子?有标准差吗?
#   □ 提升 vs 标准差的比例?
#
# 指标:
#   □ 指标对应什么实际决策?
#
# 验证:
#   □ 有前瞻性/实验验证吗?
#
# 可复现:
#   □ 代码与数据可用吗?
#   □ 超参数与随机种子有记录吗?
#
# 【如果前四项中有两项以上不过关,
#  这篇论文的主要结论就不应该直接采信】

# 【更重要的一点】:
#   这些检查同样适用于【你自己的工作】
#   → 在向团队汇报结果前,自己先过一遍
#   → 【避免自欺比识别别人的问题更重要】

关键要点

  • 宽松的数据划分是最常见也最严重的问题——随机划分下的数字几乎没有参考价值;
  • 基线必须获得同等的调优预算,否则无法区分提升来自架构还是调参;
  • 小数据集上种子间方差可能大于方法间差异——没有标准差的单个数字不足信;
  • 这些检查更应该用在自己的工作上——避免自欺比识别别人的问题更重要。

延伸资源