文 | 白鹡鸰

编 | 夕小瑶


~前不久,在卖萌屋NLP群里默默潜水的白鹡鸰被群友提到的一篇Google几天前放出的59页超长论文炸得飞了起来。

来,大家来感受一下气势浩大的论文首页

文章名字是Underspecification Presents Challenges for Credibility in Modern Machine Learning。论文作者大都来自Google,横跨了计算机视觉、自然语言处理、生物信息多个领域,他们一起分析了真实场景中的机器学习模型表现欠佳的原理。

论文题目
Underspecification Presents Challenges for Credibility in Modern Machine Learning

论文链接:
https://arxiv.org/abs/2011.03395

Arxiv访问慢的小伙伴也可以在【夕小瑶的卖萌屋】订阅号后台回复关键词【1127】下载论文PDF~

众所周知……

在机器学习领域扑腾的朋友们可能都遇到过一个问题:

你拉取了一个美妙的pipeline,训练了若干个小时,测试效果也的确丝滑:

然后,你高高兴兴把模型投入了真实场景,结果它的表现变成了这样:

这差距咋就这么大呢?

谷歌说,这大概率是因为你的模型学到假特征了。拿NLP的情感分析举个例子,假若你的数据库中恰好有有一个张三,这张三既不尊老爱幼,也不遵纪守法,获得了许多负面的评价:“张三真差劲!”。“张三”反反复复和“差劲”一起出现,那么你的模型就有一定概率把“张三”而不是“差劲”学成了检测负面情感的特征词。

可能会觉得,这就是数据集不够完备的问题啊,要不是穷,数据不够多,这模型必然能学好的!但是,什么样的数据集才算得上完备呢?哪怕数据集有上亿样本,也一定会存在采样偏差,那么模型照样可能学到假特征。这就是文章的核心思想之一:机器学习模型普遍会出现学到假特征的情况。

核心论点和亿些例子

文章特地造了一个新词underspecification用来更加规范地描述这一现象:机器学习模型的训练pipeline不变时,能够训练出参数不同但在训练集上表现相同的多个模型。从这一表述当中可以看出文章在试图解释模型会学到假特征的机理:模型训练阶段的参数量往往远多于真实场景中描述数据实际需要的特征数量,进而,这些冗余的参数干扰了关键特征的学习,导致模型存在多解——显然,这么多解当中最多只会有一个正确描述了真实世界的情况,所以显然你通过训练随机得到的那个解大概率不是那个全部特征恰好学习正确且完备的那个解。

白鹡鸰看到这里,觉得十分有道理,并期待着下文出现详细的推导,然而文章却急着举了三个(并没有很直观的)例子来说明underspecification长什么样。

首先是一个流行病学的模型,如下图所示。

▲图1 流行病曲线因参数变化而发生显著的集体痊愈预估总时长变化

这组图描述了潜伏期和传染率两个参数的细小变化会如何影响到整个感染人口数量随天数的变化。如图1所示,在病例上涨的初期,只有有限的40个数据点(图中左侧加粗的蓝色线条),如果要用数学模型来拟合这40个数据,当然可以存在(几乎无限)多种概率分布模型和配套参数的选择了(图中给出了两条可能的曲线代表两个模型对未来的预测结果,蓝色是正态分布模型,红色是伽马分布模型)。所以,尽管两条线的训练loss相同,但是对未来的预测结果(即真实场景中的表现)是有相当大的差异的。但直到未来到来前,我们无法确定哪个模型是正确的。

此外论文还举了一个随机特征模型的例子和一个基因风险评估模型的例子,这里就不展开讲了,感兴趣的小伙伴自行去论文里翻翻细节~

上面的例子容易被误解成数据采集的完整度是提升模型表现的关键,但是从接下来几个较为复杂的机器学习模型的例子,可以清楚地看出模型学习到假特征是与数据集规模无关的普遍问题。

  1. 图像处理:对ImageNet数据集中图像进行对比度、清晰程度、亮度等方面的调整,然后比较ResNet-50和BiT在修改过的图片上的检测精度。如表格所示,稍作扰动,精度就会显著降低(其实就是搬出来了对抗样本的问题)。

Dataset ImageNet pixelate contrast motion blur brightness ObjectNet
ResNet-50 0.759 (0.001) 0.197 (0.024) 0.091 (0.008) 0.100 (0.007) 0.607 (0.003) 0.259 (0.002)
BiT 0.862 (0.001) 0.555 (0.008) 0.462 (0.019) 0.515 (0.008) 0.723 (0.002) 0.520 (0.005)

表1 图像经过变换后,两类预测器检测物体准确率的变化,括号内为准确率的标准差

  1. 医学图像:测试了在ImageNet数据集上预训练的Inception-V4在迁移到糖尿病相关视网膜病变和肤质数据集上的效果。对检测视网膜病变的模型,使用了不同类型相机拍摄的症状图像作为测试数据,模型精度受到很大影响;对分类肤质的模型,发现对于不同类型肤质预测精度的方差不同。这一部分没有给出太多定量的测试结果,只是简单地说机器学习模型不能暴力迁移到临床数据上。

  2. 自然语言处理:通过分析基于OntoNotes数据集的BERT学习到的特征与刻板印象关联是否正确,检验模型是否正确理解了语义。以性别关联的职业偏见为例,虽然预测器们最终正确率相仿,但并不是每一个预测其都正确理解了偏见的成因。

  3. 临床诊断记录:通过RNN分析美国从2011到2015年703782名急性肾损伤(acute kidney injury, AKI)患者就诊数量在一周内变化的规律(精确到小时),发现模型没能透彻理解就诊人数和各科室工作节奏的关联。

这几个都是领域内挑选的pipelines也是在各个领域公认表现较好的,尽管如此,训练出来的模型仍然被证明会学习到数据中的伪关联,导致在实际任务中表现不佳。看到这里,论文的另一点核心思想也被论证得很明确了:Underspecification是阻碍机器学习模型在真实场景下表现提升的关键因素

问题仍待解决

既然定位了问题,那么如何解决问题呢?遗憾的是,目前还没有什么革命性的办法,只能多做测试! 论文的这一部分写得有点勉强,开始新瓶装旧酒,提(mìng)出(míng)了三类压力测试(stress test):

  1. 分层表现评估(Stratified performance evaluations):选取部分特征,根据这些特征分层数据集,测试在不同层中预测器的表现是否稳定。比如我们把苹果按红绿黄三种颜色分类,然后测试模型在检测这三种苹果时的正确率是否相同。

  2. 迁移表现评估(Shifted performance evaluations):依据特定的规则将数据映射到另一个数据分布上,然后测试预测器表现是否稳定。比如你将一张苹果的照片加了一点点动态模糊(人类依旧能识别),如果模型也能认出这还是个苹果,那它才有可能是一个学到了正确特征的好模型。

  3. 对比评估(Contrastive evaluations):用特例集检验预测器表现。除却上述两种特殊数据测试以外,所有应用场景中可能出现的奇葩案例都应该丢进模型试一试,就像当年那个测试工程师的酒吧笑话一样。

▲你该做多少测试,这下心里有点AC数了吧

这三类测试的设计思想并不新奇,本科概统课上必然提过,归根到底就是举特例举反例。文末进行的讨论也表达了同样的思想,再次强调了大家应当具体问题具体分析,尽可能对模型多做测试

读后感碎碎念

看了这篇文章,白鹡鸰有些失望,开篇气势如虹,仔细一看,问题还是老问题,最期待的原理分析被吃掉了,最后也没有提出什么新颖的解决办法。

文章涉及了很多领域,拼拼凑凑,有点像Google几个小组在各自测评模型后的联合吐槽文,文中存在不少排版和拼写问题(这大概是有一页长的作者团队的必然后果)。篇幅是很长,但没有解决科学问题。花了很多笔墨介绍各领域的背景知识,稍微硬核点的推导只能放到附录。

可以预见的是,工程师们未来在评估模型效果时的工作量又要增加了。乐观地想,模型在真实场景的表现不佳的原理分析仍未定量给出,那也意味着还有研究空间(和发paper空间),而且连大牛们都说了,模型要针对实际数据间的联系进行调整才能在应用中提升表现,这不就是给了大家秉持暴力美学给模型加亿点点细节的正当理由吗[doge]。

萌屋作者:白鹡鸰

白鹡鸰(jí líng)是一种候鸟,天性决定了会横跨很多领域。在上海交大栖息的第五年,进入了名为博士的换毛期。目前以图像语义为食,但私下也对自然语言很感兴趣,喜欢在卖萌屋轻松不失严谨的氛围里浪~~形~~飞~~翔~~

知乎:白鹡鸰,欢迎造访。

作品推荐:

  1. NLP太卷,我去研究蛋白质了~


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
获取本站知识星球优惠券,复制链接直接打开:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。加入微信群请扫码:

谷歌40人发表59页长文:为何真实场景中ML模型表现不好?相关推荐

  1. 全方位解析谷歌云的基础架构在游戏场景中的独特优势

    根据 Sensor Tower 商店情报平台数据显示,2021年2月中国手游发行商在全球 App Store 和 Google Play 的收入排名中,共34个中国厂商入围全球手游发行商收入榜TOP1 ...

  2. 深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读

    导言 从1989年LeCun提出第一个真正意义上的卷积神经网络到今天为止,它已经走过了29个年头.自2012年AlexNet网络出现之后,最近6年以来,卷积神经网络得到了急速发展,在很多问题上取得了当 ...

  3. 【论文速递】9位院士Science88页长文:人工智能的进展、挑战与未来

    [论文速递]9位院士Science88页长文:人工智能的进展.挑战与未来 [论文原文]:Intelligent Computing: The Latest Advances, Challenges a ...

  4. 海外“吃鸡”游戏被下架!开发商Epic与苹果谷歌正面刚 ,60页诉讼状告“苹果税”

    大数据文摘出品 作者:刘俊寰.牛婉杨 一夜之间,游戏圈忽然曝出大瓜. 全球人气火爆的多人射击游戏,腾讯公司投资的海外版"吃鸡"游戏<堡垒之夜>(Fortnite)忽然被 ...

  5. 法国西南部发生火车追尾事故 已造成至少40人伤

    法国西南部比利牛斯-大西洋省17日发生一起两列同向行驶的火车追尾相撞事故,目前已造成至少40人受伤,其中4人伤势严重. 当天下午5时25分左右,在法国比利牛斯-大西洋省的勒斯卡尔市和丹古恩市之间路段, ...

  6. 毕业使人头秃:发现自己的idea已经被人发表了,该怎么办?

    秃栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI △来自一拳超人 做研究,常常令人头秃. 其中,一个重要的秃点是: 当你发现自己想做/正做着的东西,已经有人发表了,还怎么保持动力啊? 有 ...

  7. 华人博士发127页长文:自然语言处理中图神经网络从入门到精通

    图不但包含数据,也包含数据之间的依赖关系,因而图神经网络(GNN)在自然语言处理(NLP)方面的表现有着非常大的潜力.近期,一位华人博士团队便针对这些研究发表了一篇非常详尽的综述. 图是一种可用来描述 ...

  8. 发现自己的idea已经被人发表了,该怎么办?研究生灵魂发问,引起热烈讨论

    秃栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI △来自一拳超人 做研究,常常令人头秃. 其中,一个重要的秃点是: 当你发现自己想做/正做着的东西,已经有人发表了,还怎么保持动力啊? 有 ...

  9. 电子科大自考c语言试题,电子科大“立人班”40人全部读研深造

    电子科大"立人班"部分同学合影 一个本科班40名同学,全部通过保送.申请等途径获得了读研资格,其中,海外深造21人,16人还将直接攻读博士.记者6月19日从电子科技大学获悉,该校& ...

最新文章

  1. Redis初学:4(Redis的常用命令)
  2. 图解排序算法之3种简单排序(选择,冒泡,直接插入)
  3. linux文件属性解析,Linux操作系统的文件属性与目录配置解析
  4. 初识Mongodb总结
  5. CPU实模式和保护模式、全局描述符表GDT、Linux内核中GDT和IDT的结构定义
  6. Win7安装64位CentOS 6.4双系统详细过程
  7. c# ssh到linux,C#通过SharpSSH库与Linux服务器建立SSH连接并执行命令
  8. Python virtualenv激活与退出虚拟环境
  9. AutoRun Pro Enterprise II 教程--- 教你制作软件工具箱教程清晰版(教程画面清晰,教程语音可以调高)...
  10. 在Activity启动过程中如何任务栈的栈顶是否是将要启动的Activity的实例
  11. Linux内核分析 - 网络[七]:NetFilter
  12. PAT乙:1036 跟奥巴马一起编程
  13. 软件设计师18-系统开发和运行01
  14. jquery exif + lazyload实现延迟加载并显示相片exif信息
  15. 全国所有地级行政区(城市)JSON(按拼音首字母排列)
  16. 概率逗号分号_概率里面的逗号
  17. Android 六大布局
  18. js制作倒计时,天,小时,分,秒
  19. WIN7系统的主机怎么查询主机的ip地址
  20. C语言实现成绩等级判别

热门文章

  1. Apache URL重写的配置 及其 apache500错误
  2. Windows常用软件列表(2012.03 Update)
  3. 20175213 2018-2019-2 《Java程序设计》第9周学习总结
  4. C/C++代码的混合使用
  5. 两块 硬盘 主从盘跳线详解
  6. 5种较为简单的缺失值处理方法
  7. GraphPad Prism(医学绘图) v9.1.2.226 for Win
  8. 下列那些是oracle的伪列,oracle伪列
  9. php怎样解析数组,PHP 数组 Array 解析
  10. 写了 15 年代码,总结出提升 10 倍效率的三件事