这里是普通文章模块栏目内容页
谷歌高级研究员Nature发文:避开机器学习三大「坑」

算法分析已经成为科学研究的重要方法,生物学家、高能物理学家、病理学家等许多领域的研究者都正在广泛采用机器学习算法来发现新配方和新方法,但是谷歌 Accelerated Science 团队高级研究员 Patrick Riley 近日在 Nature 上发表的文章认为,科研工作者对机器学习的预期普遍过高,这可能会导致研究者将资源浪费在错误的研究方向上。他在文中列出了科研工作者在使用机器学习时可能遇到的一些陷阱和应对思路。

机器学习正在推动各个科学领域的研究进展,其强大的模式发现和预测工具正在助力所有领域的科学家——从寻找合成分子到提升医学诊断效果再到揭示基本粒子,可谓应有尽有。

但是,机器学习工具也可能做出一些徒劳无功的探索——得到假阳性结果、不可行的方法和错误结果。而且很多算法还过于复杂,以至于我们不可能检查其所有参数或推断其处理输入的确切方式。随着这些算法的应用日益广泛,理解错误、得出错误结论以及浪费科研工作资源的风险将会急剧上升。

这些都不是新问题。机器学习领域几十年来一直备受「坦克问题(tank problem)」之苦。最初的研究似乎出现在 1960 年代(据信参考文献 1 是这一研究方向上最早的文献;这是软件工程师 Jeff Kaufman 的功绩),但被埋没在了时间长河里。这样的故事总是层出不穷。

那时候,研究者编写了一个用于识别军方提供的照片中的坦克的算法。得到的模型成功地找到了测试图像中的坦克,但却无法成功识别之后的真实照片的坦克。原因为何?这个故事已被复述太多次了,细节已经无法考证——但其训练所用的图片包含其它模式——出现在晨光之中或云朵之下的坦克。因此,驱动这一算法的是类似这样的其它因素,而不是坦克的存在本身。

类似的迷思带来了今天的反省。很多机器学习论文都没能完成足够的实验集。用于评议的标准也不一致。而且现在竞争很激烈,某些研究者在得到想要的答案后就抄近道、跳过检查步骤。

我们无法预测每次分析中的所有难题,但至少,正将机器学习引入自己领域的研究者应当熟悉常见的陷阱以及用于检测和避开这些陷阱的实践方法。

本文将介绍谷歌 Accelerated Science 团队在使用机器学习分析时所面临并解决了的三个问题,以说明展示这种做法。

三个问题

1. 不恰当地分割数据

在构建模型时,机器学习实践者通常会将数据划分为训练集和测试集。训练集用于模型学习,测试集则用于评估模型在未知数据上的表现。研究者通常以随机方式分割数据,但现实生活中的数据很少是随机的。它们可能包含随时间变化的趋势——比如数据收集方式的变化趋势或所要收集信息的变化。

举个例子,分子数据集中就埋藏着这样的历史模式,它在经过机器学习算法的虚拟筛选后可用于发现候选药物。这个问题的难点在于预测假想分子被人体吸收或减缓炎症的效果。筛选是从有/无所需效果的分子的数据开始的,但数据的收集场景却可能不同于机器学习模型的使用方式。

举个例子,一个模型可能是基于一组公开可用的分子数据集构建的,但却被用在了一个不同的专有数据集上。并且当化学家检查到或丢弃了有潜在希望的线索时,他们的研究重心往往会从特定的分子分组转向其它分组。因此,研究者在实践中往往高估模型的表现。这可能导致预期过高,从而在选择不佳的分子上浪费时间和资金。很多模型构建者(包括我本人)都曾掉入过这个陷阱。

也就是说,你想要解答的问题应当会影响你分割数据的方式。为了使模型预测向一个在分子中分子中添加几个原子的效果,测试集中的每个分子都应在训练集中有仅有几个原子不同的对应分子。如果你希望很好地预测化学上不同的分子,那么测试集中的每个分子应该任训练集中的任何分子。分割数据的「正确」做法可能并不显而易见,但审慎考虑和尝试多种方法能为你提供更多见解。

2. 隐变量

在一个理想的实验中,研究者只需要改变感兴趣的变量,其他都是固定不变的。这种水平的变量控制在现实中往往是不可能实现的。设备的准确性会随着时间的推移而发生变化,试剂的批次也会发生变化,一种实验条件先于另一种执行,实验结果甚至可能被天气影响。这些不可控变量在机器学习模型中可能是有害的。

例如,我在谷歌的团队一直在与加州的一家核聚变创业公司 TAE Technologies 合作,致力于优化生产高能等离子体的实验。我们建立模型,试图了解等离子体机的最佳设备设置。机器中有数百个控制参数,从什么时候给电极通电到在磁铁上设置什么电压。我们记录了一系列测量结果,包括温度和光谱。

谷歌高级研究员Nature发文:避开机器学习三大「坑」

加州的 TAE Technologies 和谷歌的研究者正使用机器学习优化产生高能等离子体的设备。

#p#分页标题#e#

在几个月的时间里,我们从运行数千次的等离子体机中获取数据。设置会随着设备的调整和修改、组件的磨损以及多个想法的付诸实践而发生变化。我们最终得到了一个令人欣慰的模型,它能很好地预测在给定环境下,等离子体的能量是否会很高。但很快我们发现,我们的预测和想法不一致。

当再次训练模型的时候,我们将实验时间作为唯一的输入,而没有选择所有的机器设置,我们获得了类似的预测能力。为什么呢?我们认为第一代模型锁定在了时间趋势,而不是物理现象。随着实验的推进,机器在一段时间内运行良好,而在另一段时间内运行不佳。所以,实验完成的时间会为你提供一些信息,以判断生成的等离子体是否具有高能量。此外,实验的完成时间也可以通过控制参数的设置来进行粗略地预测——这些参数的变化也存在时间趋势。

隐变量也源于实验布局。例如,我们正与很多合作者共同解读显微图像,包括纽约干细胞基金会研究所(New York Stem Cell Foundation Research Institute)。这些图像包括滴定板上的生物实验阵列——通常是包含细胞和液体的网格。目的是发现具有某些特征的阱,如化疗后细胞外观的变化。但是,生物变异意味着每个滴定板常常看起来截然不同。同时,单个滴定板也可能出现变化。例如,如果边缘井中蒸发掉了更多液体或者滴定板出现了倾斜,则边缘常常看起来与中心不同。

机器学习算法可以轻松地捕捉到这些无意的变化。例如,模型或许只是识别出了哪些阱位于滴定板的边缘。检查这种情况是否已经发生的一种简单方式是令模型预测其他情况,如滴定板的位置、这是哪个滴定板以及图像来自哪一批次。如果模型可以做到这一点,则应该对结果提出疑问。

经验教训:使用多个机器学习模型来检测意料之外和隐藏的变量。一个模型集中于你关心的问题——等离子体高能耗还是低能耗;细胞健康还是处于病态?其他模型则排除这些混杂因子。如果后者的效果非常好,则对数据进行标准化处理,做进一步的实验或调整结论。

3. 定错训练目标

机器学习算法要求研究者指定一个「损失函数」,以确定各种误差的严重程度。从业者倾向于使用一小组函数,这组函数可能无法捕获到他们真正关心的东西。

例如,我们利用深度学习来帮助求解偏微分方程。这些公式在各个领域都很常见,如流体力学、电磁学、材料科学等。通常,必须利用数值解法来求解问题,我们训练模型在有限的解中提供更高的准确率。

我们从描述水波在一维中的传播开始。算法的任务是反复预测当前步骤的下一个时间步长。我们在两个存在细微差别的公式上训练模型。根据我们的损失函数,两个模型的表现旗鼓相当。然而,虽然其中一个模型的结果接近预期,另一个模型却产生了无意义的结果。

为什么会出现这种情况呢?原因在于,控制学习的损失函数只考虑了下一步的误差,而没有考虑多步求解的有效性,后者才是我们真正想要的。

我们在构建糖尿病性视网膜病变筛查机器时也遇到了目标不一致的情况。如果能及早地从眼底图像中检测出这种病变,患者就能得到有效的治疗。在我们收集数据并让眼科医生基于图像进行诊断时,我们令机器学习工具预测医生接下来会说什么。这个时候就出现了两个问题。

首先,眼科医生们经常在诊断时存在分歧。因此,我们意识到,我们的模型不能只有单一的预测,也不能采用少数服从多数的策略,因为在医疗准确度方面,有时候少数派的意见才是对的。

其次,单一疾病的诊断实际上并不是真正的目标。医疗领域真正面临的问题是:「这个病人是否需要看医生?」因此,我们将目标从单病种诊断扩展到多病种。

谷歌高级研究员Nature发文:避开机器学习三大「坑」

糖尿病性视网膜病变筛查。

#p#分页标题#e#

机器学习从业者很容易受限于一个「显而易见」的目标,该目标所需的数据和标签都很清楚。但是,他们设计的算法可能无法解决真正的问题。我们必须牢记整体目标,否则就会开发出不实用的精确系统。

如何解决这些问题?

第一点,机器学习专家自身及其同事需要保持更高的标准。当收到新的实验室设备时,我们希望实验室伙伴可以了解它的功能、如何校正、如何检测误差以及设备的功能限制。机器学习也是如此,使用相关工具的人必须充分了解它们的功能。

第二点,不同的学科需要在各自领域就如何执行和衡量机器学习制定明确的标准。适当的控制、稳定性检查和误差测量将因领域而异,并且需要清楚地阐明,这样研究人员、评审者和编辑才可以鼓励良好的行为。

第三点,科学家在机器学习领域的教育内容需要涵盖这些更广泛的问题。我们虽然可以参考现有的一些资源(如 Google AI),但依然需要做更多的事情。我们通常会教给学生算法和工具,但他们需要更多地学习如何应用这些算法,并适当地提出问题。

我们正处在一个神奇的时代——在机器学习的帮助下,计算能力、数据和算法紧密结合,从而有更多的机会发现一些新事物。作为学术界的一份子,我们有责任确保自身能够好好抓住并利用这些机会。

原文地址:https://www.nature.com/articles/d41586-019-02307-y

【本文是51CTO专栏机构“机器之心”的原创译文,微信公众号“机器之心( id: almosthuman2014)”】

戳这里,看该作者更多好文

收藏
0
有帮助
0
没帮助
0