机器学习预测工具正在帮助各个领域的研究人员,比如发现分子的新方法、在分析中发现细微信号,提高医学诊断质量、揭示基本粒子的性质等。然而,机器学习工具也可能成为问题的根源,产生误报,导致盲目试验和错误。现在的许多算法都非常复杂,复杂到可能已经无法一一检查所有参数,无法确切了解输入的运行方式。随着这些算法的应用越来越广泛,出现误解、错误结论和“做无用功”的风险变得越来越大。这些问题其实并不新鲜。现在不少机器学习论文未能完成足够的实验,审查标准也多有不一致。
由于竞争激烈,一些研究人员会为了得到想要的结果而偷工减料,跳过必要的检查环节。虽然我们无法预测所有问题的出现,但至少,研究人员在自己的领域应用机器学习时,应该熟悉并掌握发现和避免这些常见问题的方法和实践。下面以笔者的亲身经历为例,提出在Google Accelerated Science团队中运用机器学习分析时遇到的三个主要问题
不恰当地拆分数据。在构建模型时,研究人员通常会将数据分为训练集和测试集。训练集负责“教授”模型,并通过模型对测试集的描述准确程度来评估模型性能。研究人员一般会随机分割数据。但现实生活中的数据很少是随机的。数据可能存在随时间变化的趋势——比如收集数据的方式不同导致的变化,或者对收集哪些信息的不同选择而导致的变化等。比如,在利用机器学习算法筛选新药的过程中,这些模式就隐藏在分子的数据集中,于是挑战就在于,预测某一分子是否能有效吸收到体内,减轻炎症。这个预测由筛选分子数据开始,但是收集数据的背景可能与机器学习模型的使用方式不同。比如,可以先在公开可用的一组分子上建模,然后将模型用于不同的专有分子集上。
化学家的注意力经常从某些分子群转向其他分子,经常高估模型的实际表现。这可能导致过高的预期,并且在错误的分子上浪费时间和金钱。许多人(包括我自己)都陷入了这个陷阱。换句话说,你想要解决的问题会影响对数据的拆分方式。为了考察模型预测添加几个原子对分子的影响,测试集中的每个分子应该在训练集中加入一个不同的原子。如果你想对不同分子做出很好的预测,那么测试集中的每个分子应该与训练集中的所有分子全部不同。分割数据的“正确”方式可能并不明显,但仔细考虑并尝试多种方法可以提供更高的可靠性。
隐藏变量。在理想的实验中,研究人员可以只更改自己感兴趣的变量,固定所有其他变量。在现实世界中,这种控制通常是不可能实现的。随着时间的推移,设备的精度会发生变化,不同批次的试剂,不同的实验顺序,甚至是不同的天气,都会对结果造成改变。这种“不受控制”的变量在机器学习模型中可能是有害的。
例如,我在Google的团队一直在加州一家核聚变初创公司TAE Technologies工作,优化生产高能等离子体的实验流程。我们建立了模型,试图了解等离子机的最佳设置。我们在几个月的时间里获得了等离子机数千次的运行数据。
建模完毕时,我们很高兴,根据给定的设置预测,等离子体的能量是否会很高。但很快,我们发现的预测结果和我们的设想不符。在印度马杜赖的Aravind医院进行眼科检查,医生和谷歌的研究人员正尝试自动诊断由糖尿病引起的失明当我们再次训练模型时,将实验时间作为唯一输入,也获得了类似的预测能力。为什么?我们认为我们的第一个模型锁定了时间趋势,而不是物理现象。随着实验的进行,有一段时间机械运行良好,有些时间则没有。因此,实验的时间可以为您提供有关产生的等离子体是否为高能量的信息。这里的实验时间就是“隐藏变量”。
隐藏变量也可以由于实验的设计而产生。比如我们的团队正在进行的一个合作项目是对显微镜图像进行“解释”。这些图像包括在实验板上的生物实验阵列,通常是包含细胞和液体的孔的网格。我们的目标是找到具有某些特定特征的孔,比如经化学处理后细胞外观的一些变化。但生物的多样性本身就让每个实验板都略有区别。在一块板上也可能存在差异。位于板边缘的液滴与中心部分的不同,比如边缘部分的液体蒸发更强烈,或者板本身可能出现倾斜,这些都会导致结果的差异。
机器学习算法可以轻松掌握这些人们未意识到的变化。比如模型可能只是负责确定哪些液滴位于板的边缘。检查是否出现这种“隐藏变量”的一种简单方法是让模型预测其他目标,比如液滴在板上的位置,位于哪块板上,显微镜图像来自哪个批次。如果模型成功预测到了,可能就需要对原来的实验结果持一份怀疑。要解决这个问题,可以使用多个机器学习模型来检测意外变量和隐藏变量。其中一个模型预测主问题——比如等离子是高能还是低能状态、细胞是健康还是生病,而用其他模型排除混杂因素。
如果后者的预测结果很强,可能就需要对数据进行标准化处理、进行进一步实验,或准备修正之前的实验结论。认不清真正的目标:“损失函数”不是万灵药认不清目标。机器学习算法要求研究人员指定一个“损失函数”,由它决定各种错误的严重程度。目前人们倾向于使用更小的函数集,这些函数往往无法捕捉研究人员真正关心的内容。比如我们一直在使用机器学习来辅助求解偏微分方程。这些方程在流体力学、电磁学、材料科学、天体物理学和经济建模中都很常见。
我们从一个方程开始描述水波如何在一个维度上传播。该算法的任务是重复预测当前步骤的下一个时间步长。我们使用两种稍微不同的训练模型。从损失函数来看,这两个模型同样好。然而实际上,一个完全不能用,而另一个产生了接近期望的结果。为什么?因为控制学习的损失函数只考虑下一步的错误,而不能量度多步的解决方案的有效性,而我们真正想要的恰恰是后者。在利用机器学习对糖尿病视网膜病变的机器筛查任务中,也出现了不同的目标。对于这种病,如果从眼睛后部的图像中提早检测到,就可以有效治疗。
当我们收集数据,并让眼科医生根据图像提供诊断时,会让机器学习工具预测眼科医生会说些什么。结果出现了两个问题。
首先,眼科医生们经常在诊断意见上无法达成一致。因此我们意识到,不能将模型建立在单一预测上。同样也不能使用“少数服从多数”那一套,因为在医疗准确性方面,有时少数意见是正确的。
第二,其实对这种单一疾病的诊断并不是我们真正的目标。我们本来应该问的是:“这位患者应该去看医生吗?”因此,需要将预测目标从单一疾病的诊断扩展到多种疾病。
机器学习从业者很容易掌握数据和标签清晰的“明显”目标。但可能在算法的设置上没能解决正确的问题。必须牢记总体目标,否则再精确的系统解决的也是错误的问题。
首先,机器学习研究人员要让自己和同事保持更高的标准。对于一台新的实验设备,必须充分了解其功能,如何校准,如何检测错误,设备的局限性有哪些等。对于机器学习模型和算法也要如此。所谓“神奇的魔法”其实是不存在的,使用工具的人必须要理解这些工具。
其次,对于不同的学科,需要制定明确的标准。适当的控制,健全性检查和错误测量将因不同领域而异,这些都需要清楚地说明,以便研究人员、审稿人和期刊编辑能够鼓励良性的科学行为。
第三,关于机器学习科学教育需要囊括这些更广泛的问题。虽然目前已经有一些资源,但我们还需要做更多工作。笔者所在的团队经常教授算法和工具,但学生需要更多地了解如何应用他们的算法,并对算法本身保持适当的质疑。
目前,算力、数据和算法的汇集正迸发出巨大的合力,在机器学习的加持下,为更多的新发现创造了巨大的机会。作为科学共同体的一员,我们有责任确保能够最充分、高效地将这个机会利用好。
© 2024. All Rights Reserved. 沪ICP备2023009024号-1