加州TAE能源公司的员工和谷歌研究人员正在利用机器学习,对生成高能等离子体的设备进行优化


【导读】现在机器学习领域急功近利的氛围引发了一系列问题,如论文实验不充分、审查标准不一,结果偷工减料等。CMU博士、谷歌研究员Patrick Riley在Nature上撰文,结合自身经历,指出了在机器学习开发中需要避开的三个“大坑”,值得开发者借鉴参考。

机器学习预测工具正在帮助各个领域的研究人员,比如发现分子的新方法、在分析中发现细微信号,提高医学诊断质量、揭示基本粒子的性质等。

然而,机器学习工具也可能成为问题的根源,产生误报,导致盲目试验和错误。现在的许多算法都非常复杂,复杂到可能已经无法一一检查所有参数,无法确切了解输入的运行方式。随着这些算法的应用越来越广泛,出现误解、错误结论和“做无用功”的风险变得越来越大。

这些问题其实并不新鲜。现在不少机器学习论文未能完成足够的实验,审查标准也多有不一致。由于竞争激烈,一些研究人员会为了得到想要的结果而偷工减料,跳过必要的检查环节。

虽然我们无法预测所有问题的出现,但至少,研究人员在自己的领域应用机器学习时,应该熟悉并掌握发现和避免这些常见问题的方法和实践。

下面以笔者的亲身经历为例,提出在Google Accelerated Science团队中运用机器学习分析时遇到的三个主要问题。

如何拆分数据是门学问

不恰当地拆分数据。在构建模型时,研究人员通常会将数据分为训练集和测试集。训练集负责“教授”模型,并通过模型对测试集的描述准确程度来评估模型性能。研究人员一般会随机分割数据。但现实生活中的数据很少是随机的。数据可能存在随时间变化的趋势——比如收集数据的方式不同导致的变化,或者对收集哪些信息的不同选择而导致的变化等。

比如,在利用机器学习算法筛选新药的过程中,这些模式就隐藏在分子的数据集中,于是挑战就在于,预测某一分子是否能有效吸收到体内,减轻炎症。这个预测由筛选分子数据开始,但是收集数据的背景可能与机器学习模型的使用方式不同。

比如,可以先在公开可用的一组分子上建模,然后将模型用于不同的专有分子集上。化学家的注意力经常从某些分子群转向其他分子,经常高估模型的实际表现。这可能导致过高的预期,并且在错误的分子上浪费时间和金钱。许多人(包括我自己)都陷入了这个陷阱。

换句话说,你想要解决的问题会影响对数据的拆分方式。为了考察模型预测添加几个原子对分子的影响,测试集中的每个分子应该在训练集中加入一个不同的原子。如果你想对不同分子做出很好的预测,那么测试集中的每个分子应该与训练集中的所有分子全部不同。分割数据的“正确”方式可能并不明显,但仔细考虑并尝试多种方法可以提供更高的可靠性。

小心“隐藏变量”:一不留神就让模型失效

隐藏变量。在理想的实验中,研究人员可以只更改自己感兴趣的变量,固定所有其他变量。在现实世界中,这种控制通常是不可能实现的。随着时间的推移,设备的精度会发生变化,不同批次的试剂,不同的实验顺序,甚至是不同的天气,都会对结果造成改变。这种“不受控制”的变量在机器学习模型中可能是有害的。

例如,我在Google的团队一直在加州一家核聚变初创公司TAE Technologies工作,优化生产高能等离子体的实验流程。我们建立了模型,试图了解等离子机的最佳设置。我们在几个月的时间里获得了等离子机数千次的运行数据。建模完毕时,我们很高兴,根据给定的设置预测,等离子体的能量是否会很高。但很快,我们发现的预测结果和我们的设想不符。

在印度马杜赖的Aravind医院进行眼科检查,医生和谷歌的研究人员正尝试自动诊断由糖尿病引起的失明

当我们再次训练模型时,将实验时间作为唯一输入,也获得了类似的预测能力。为什么?我们认为我们的第一个模型锁定了时间趋势,而不是物理现象。随着实验的进行,有一段时间机械运行良好,有些时间则没有。因此,实验的时间可以为您提供有关产生的等离子体是否为高能量的信息。这里的实验时间就是“隐藏变量”。

隐藏变量也可以由于实验的设计而产生。比如我们的团队正在进行的一个合作项目是对显微镜图像进行“解释”。这些图像包括在实验板上的生物实验阵列,通常是包含细胞和液体的孔的网格。我们的目标是找到具有某些特定特征的孔,比如经化学处理后细胞外观的一些变化。但生物的多样性本身就让每个实验板都略有区别。在一块板上也可能存在差异。位于板边缘的液滴与中心部分的不同,比如边缘部分的液体蒸发更强烈,或者板本身可能出现倾斜,这些都会导致结果的差异。

机器学习算法可以轻松掌握这些人们未意识到的变化。比如模型可能只是负责确定哪些液滴位于板的边缘。检查是否出现这种“隐藏变量”的一种简单方法是让模型预测其他目标,比如液滴在板上的位置,位于哪块板上,显微镜图像来自哪个批次。如果模型成功预测到了,可能就需要对原来的实验结果持一份怀疑。

要解决这个问题,可以使用多个机器学习模型来检测意外变量和隐藏变量。其中一个模型预测主问题——比如等离子是高能还是低能状态、细胞是健康还是生病,而用其他模型排除混杂因素。如果后者的预测结果很强,可能就需要对数据进行标准化处理、进行进一步实验,或准备修正之前的实验结论。

认不清真正的目标:损失函数”不是万灵药

认不清目标。机器学习算法要求研究人员指定一个“损失函数”,由它决定各种错误的严重程度。目前人们倾向于使用更小的函数集,这些函数往往无法捕捉研究人员真正关心的内容。

比如我们一直在使用机器学习来辅助求解偏微分方程。这些方程在流体力学、电磁学、材料科学、天体物理学和经济建模中都很常见。

我们从一个方程开始描述水波如何在一个维度上传播。该算法的任务是重复预测当前步骤的下一个时间步长。我们使用两种稍微不同的训练模型。从损失函数来看,这两个模型同样好。然而实际上,一个完全不能用,而另一个产生了接近期望的结果。

为什么?因为控制学习的损失函数只考虑下一步的错误,而不能量度多步的解决方案的有效性,而我们真正想要的恰恰是后者。

在利用机器学习对糖尿病视网膜病变的机器筛查任务中,也出现了不同的目标。对于这种病,如果从眼睛后部的图像中提早检测到,就可以有效治疗。当我们收集数据,并让眼科医生根据图像提供诊断时,会让机器学习工具预测眼科医生会说些什么。结果出现了两个问题。

首先,眼科医生们经常在诊断意见上无法达成一致。因此我们意识到,不能将模型建立在单一预测上。同样也不能使用“少数服从多数”那一套,因为在医疗准确性方面,有时少数意见是正确的。第二,其实对这种单一疾病的诊断并不是我们真正的目标。我们本来应该问的是:“这位患者应该去看医生吗?因此,需要将预测目标从单一疾病的诊断扩展到多种疾病。

机器学习从业者很容易掌握数据和标签清晰的“明显”目标。但可能在算法的设置上没能解决正确的问题。必须牢记总体目标,否则再精确的系统解决的也是错误的问题。

未来要如何改进?

首先,机器学习研究人员要让自己和同事保持更高的标准。对于一台新的实验设备,必须充分了解其功能,如何校准,如何检测错误,设备的局限性有哪些等。对于机器学习模型和算法也要如此。所谓“神奇的魔法”其实是不存在的,使用工具的人必须要理解这些工具。

其次,对于不同的学科,需要制定明确的标准。适当的控制,健全性检查和错误测量将因不同领域而异,这些都需要清楚地说明,以便研究人员、审稿人和期刊编辑能够鼓励良性的科学行为。

第三,关于机器学习科学教育需要囊括这些更广泛的问题。虽然目前已经有一些资源,但我们还需要做更多工作。笔者所在的团队经常教授算法和工具,但学生需要更多地了解如何应用他们的算法,并对算法本身保持适当的质疑。

目前,算力、数据和算法的汇集正迸发出巨大的合力,在机器学习的加持下,为更多的新发现创造了巨大的机会。作为科学共同体的一员,我们有责任确保能够最充分、高效地将这个机会利用好。

原文链接:

https://www.nature.com/articles/d41586-019-02307-y

————

编辑 ∑Gemini

来源:新智元

☞泰勒定理的奇闻轶事

☞丘成桐:漫谈微分几何

☞Leibniz 如何想出微积分?(一)

☞线性相关和秩的物理意义

☞数学史上你认为最丑陋的公式是什么?

☞陶哲轩谈什么是好的数学

☞田渊栋:数学的用处(下篇)

☞你绝对没想过原来数学家这么流氓,一言不合就进行暴力证明

☞世界上最牛的五篇博士论文

☞数学中有哪些巧合让人眼前一亮?

☞算法立功!清华毕业教授美国被抢车,警察无能为力自己用“贪心算法”找回

☞学术史上的奇文:怎样用数学抓狮子

☞台大教授的反思:最难的一课 我们却没教给学生

☞麻省理工学院(MIT)研究生学习指导—— 怎样做研究生

☞分享 数学,常识和运气 ——投资大师詹姆斯·西蒙斯2010年在MIT的讲座

算法数学之美微信公众号欢迎赐稿

稿件涉及数学、物理、算法、计算机、编程等相关领域,经采用我们将奉上稿酬。

投稿邮箱:math_alg@163.com

CMU博士Nature撰文:机器学习要避开这三个“大坑”相关推荐

  1. 《预训练周刊》第14期:World-GAN:Minecraft 世界的生成模型、CMU博士论文探究可控文本生成...

    No.14 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第14期&l ...

  2. 中科院博士整理的机器学习算法知识手册,完整 PDF 开放下载!

    分享一份中科院博士总结的机器学习算法知识手册,文章已打包成压缩文件,感兴趣的同学可下载交流. 文件包含了:机器学习基础,监督学习方法.非监督学习方法,Python数据科学和深度学习等相关知识,若初学者 ...

  3. 德州扑克算法幕后研发者CMU博士Brown专访:AI如何打败顶级人类牌手?

    在上个月举行的单挑无限注德州扑克( heads-up no-limit hold'em)人机对战中,由卡耐基梅隆大学研发的AI程序Libratus以每100手14倍大盲(译者注:缩写为14bb/100 ...

  4. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  5. 机器学习入门笔记(三):K近邻算法

    文章目录 一.K近邻算法的基本概念 1.1 K近邻算法实现 二.K近邻分类三要素 2.1 距离度量 2.2 K值的选择 2.2.1 基于m-fold cross validation的 K值选择 2. ...

  6. ng机器学习视频笔记(三) ——线性回归的多变量、特征缩放、标准方程法

    ng机器学习视频笔记(三) --线性回归的多变量.特征缩放.标准方程法 (转载请附上本文链接--linhxx) 一.多变量 当有n个特征值,m个变量时,h(x)= θ0+θ1x1+θ2x2-+θnxn ...

  7. 周志华-机器学习西瓜书-第三章习题3.3 编程实现对率回归

    本文为周志华机器学习西瓜书第三章课后习题3.3答案,编程实现对率回归,数据集为书本第89页的数据 使用tensorflow实现过程 # coding=utf-8 import tensorflow a ...

  8. 小白学机器学习西瓜书-第三章对数几率回归

    小白学机器学习西瓜书-第三章对数几率回归 3.3 对数几率回归 3.3.1 对数几率函数 3.3.1 估计参数 上一部分我们介绍了线性回归,包括简单的二元回归和多元回归,这两个主要解决的是拟合预测的问 ...

  9. 李弘毅机器学习笔记:第三章—Error的来源

    李弘毅机器学习笔记:第三章-Error的来源 从上节课测试集数据来看,AverageErrorAverage\ ErrorAverage Error 随着模型复杂增加呈指数上升趋势.更复杂的模型并不能 ...

最新文章

  1. DCN-2655 ssh 远程登陆配置
  2. 防水+四扬声器诺基亚X7细节
  3. Leetcode114二叉树转链表-树中修改
  4. python能表示多大整数_Python无法表示99999999999999999999这样大的整数。
  5. Java程序员新手老手都离不开八大开发工具
  6. 爱特php文件管理器2.8_查找「超级蜘蛛池开发者中心 抠:44564876易」安卓应用 - 豌豆荚...
  7. html5 标准结构_IT兄弟连 HTML5教程 HTML文件的主体结构
  8. sysstat linux系统性能分析
  9. iOS开发类似于刮刮卡效果,手指划过的区域形成画笔。适用于取出部分图片(截图),如截取出图片中带文字的区域部分。...
  10. 剑指offerJZ1 二维数组中的查找 C++ python
  11. github视频教程-03 如何使用github上pull-request功能(VS2013)
  12. 企业信息化管理软件,如何走出开发困境
  13. wps 符号操作(仅符号)
  14. socket介绍--数据的编码与解码
  15. Ubuntu 20.04添加临时/永久路由
  16. mailbox的controller
  17. 刑侦大队对涉及六个嫌疑人的一桩疑案的分析,编一程序,将作案人找出来
  18. CSS 样式继承 inherit 属性
  19. 汪升华c语言答案,C语言程序设计教程/普通高等教育“十二五”规划教材
  20. linux终端全选快捷键,linux下终端中的快捷键

热门文章

  1. html网页定位,HTML_定位网页元素(示例代码)
  2. python excel行数计算不对_数十万数据Excel数据不好处理怎么办?几行Python搞定
  3. SQLite3中的数据类型
  4. sql 删除最低分数_软件测试从业者:必备SQL语句21天打卡,前10天
  5. full outer join 与full join的区别_sleep、yield、join都是干啥的? sleep与wait有啥区别?中篇[十五]...
  6. 查看地区的ip段_「教程」CloudFlare 自选 IP优化网站速度
  7. 部署Linux服务器实验报告,Linux服务器学习----tomcat 服务配置实验报告(一)
  8. firefox是什么浏览器_Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试
  9. java io 缓存读取_Java 文件IO写入读取四种方法
  10. jdk1.8 mysql_Centos 7配置JDK1.8+MySQL5.7+Tomcat 8 开发环境