不要只关心如何优化模型,这不是机器学习的全部等等才是机器学习研究和应用的全部内容。但很少有人会问:一个在测试中表现良好的模型真的能很好地解决现实世界的问题吗?可解释机器学习方向的研究员、《可解释的机器学习》一书的作者ChristophMolnar最近发表了一篇博客,提醒该领域的所有人警惕这一趋势,并开始关注那些不容忽视的问题在机器学习的应用中。我先讲一个小故事。在德国的某个地方,一个安静的夜晚。大多数人已经睡着了,但我还没有。我必须完成机器学习模型的训练。我在和全世界和我一样对模型着迷的人比赛,我们要看看谁的模型能得到好的预测结果。我电脑的风扇嗡嗡作响,键盘吱吱作响。我目前的模型没有获得任何好的排名,它只是在公共排行榜的中间。这真的很烦人。模型的准确率其实还不错,但在这场比赛中,“不错”是远远不够的。比其他人的模型更好是我的最终目标。我还需要更好的特征工程,更好的学习算法。我已经有了构建新功能的好主意,我也可以用提升树代替随机森林。训练这个模型应该只需要半个小时,然后我就得去睡觉了。几个小时过去了,时间是凌晨三点半。我终于得到了新模型的预测,并且能够在排行榜上取得新的位置。我满怀希望地点击了提交按钮。我太累了,“你的成绩正在评估中”的通知看起来很模糊。我能达到多少个位置,我能达到前10%吗?我开始甜蜜地做白日梦。但是真实的结果很快就击碎了我的幻想,这一刻我觉得很累。别说获得更好的排名,这个新模型的表现也不如以前的模型。代码中有错误吗?过度拟合?还是我上传错文件了?一个又一个的问题在我脑海中浮现,但理智告诉我,我必须躺下。我在床上辗转反侧,梦见一棵不断生长的决策树,大到我永远无法理解。“我必须继续改进我的机器学习模型!”掀开眼罩一看,之前有过类似机器学习比赛用的模型反复折腾到深夜的经历,现在不会再做了,原因有二,1,正常睡眠多了现在对我很重要,2,我对机器学习的理解也发生了很大的变化。当我第一次接触机器学习时,我认为最重要的机器学习技能是知道如何训练一个表现良好的模型。为了达到这个目标,我把所有的精力都放在学习更多的算法上,学习更多的特征工程技能,学习更多的算法评估方法,都是为了立即降低模型的误差。我非常着迷,以至于当时我什至写了一首关于随机森林的诗。今天我的看法发生了很大的变化。我觉得“机器学习”这四个字的意义远不止是最小化损失函数那么简单。在某种程度上,模型拟合可以说是最简单的部分,因为有大量的文献、教材、练习和实用工具可以帮助你改善现状。而且你总能得到即时反馈(只是测试模型没有看到的数据),这通常是令人满意的。我认为就整个机器学习领域而言,模型拟合已经发展的相当成熟了。但是除了拟合模型之外,我们还需要解决很多其他非常困难的问题。例如:如何将现实世界的问题转化为预测任务?我们如何建立对预测模型的信任?训练数据是否有偏差?实际部署后训练数据与输入数据的相似度如何?如果系统运行不正常,您如何调试机器学习模型?模型给出的预测(尤其是错误的预测)会对用户和产品本身产生什么样的影响?当前预测与未来训练数据添加之间是否存在有害的反馈关系?固定模型在不断变化的环境中会如何表现?狗展入口。-“我的狗训练有素”-“不行!”-这就是数据科学家将新模型整合到现实世界时的样子我列出的模型在实际应用中会遇到。但好消息是,总体上人们越来越意识到这些问题的存在,并且正在投入更多的精力去思考这些问题。系统思考、可解释性、公平性、社会影响、数据的作用等问题越来越受到关注。模型的诱惑在我刚开始做机器学习的前几年有一个有趣的故事。那时,我刚加入一家创业公司,负责几个机器学习相关的应用。当时我的编程水平不如团队其他成员,但是我问了很多问题,比如问他们训练用的数据和后面应用用的数据是否相似。我的导师表扬我问了一些好问题,但我不明白他为什么表扬我。显然,当时我更关心的是“为什么我还没有学会用Scala语言编程”;建立更好的预测模型比提出这些问题更重要。直到现在,我才完全明白为什么我的导师会表扬我。我花了五年时间才终于明白“拟合一个好的机器学习模型”的效果是多么微不足道。你能理解为什么花了五年时间吗?简而言之,所有机器学习教学和研究都过分关注“好模型”,从而忽视了数据、人为因素以及预测模型与其环境之间复杂的相互作用。为了扩展,让我们来看看一个假设的机器学习新手。她叫安娜,目前正在攻读电气工程硕士学位,数学基础扎实,还会用C和Python语言编写代码。她的机器学习入门是AndrewNg的机器学习在线课程,她还在看这本书《统计学习基础(Elements of Statistical Learning)》。与所有其他教材一样,在线课程和书籍也陆续列出了各种模型,并详细解释了模型背后的数学原理。他们几乎没有提到如何理解数据、如何考虑社会和伦理影响、如何解释模型、模型的应用场景等等。她当然会看到一些应用案例,但这些案例无非是经过精心设计的简单的理想问题。一段时间后,她开始参加Kaggle上的各种比赛。又一次,她也看到了Kaggle上各种精心设计的预测题,差点被喂到嘴里:我们看到的比赛背后,Kaggle已经做了最难最累的工作,先找公司,找数据,找问题,把问题变成预测任务,然后再考虑使用哪些数据。你可能还需要做一些数据清洗和合并,然后选择一个模型评估标准。这些都由Kaggle负责。对于参加Kaggle比赛的人来说,除了特征工程,留给他们的就只有“拟合好的模型”了!谁是锦标赛奖金的赢家?不是那些模型表现良好且可解释的团队,不是那些他们需要几秒钟训练而其他人需要几天时间的团队,不是那些模型实际上有机会部署到生产中的团队,因为这些模型的预测准确率是注定的不要很高。所以安娜也认为机器学习只是为了找到预测性能最好的模型,而且这种信念越来越强烈。这可不是开玩笑的,大家看得出来,能拿到奖品和荣誉的都是能做出最好的预测模型的,所以安娜对机器学习的热情也被点燃了,她想要在接下来的比赛中获胜。为了更好的排名!幸运的是,机器学习社区很棒而且很开放,有很多技术博客讨论如何调试模型性能供她学习,还有很多最新的机器学习库她可以从GitHub上克隆。她终于明白:机器学习就是拟合一个好的模型。Anna也开始意识到机器学习领域是多么的年轻,学术界和工业界的联系是多么的紧密。为了了解前沿技术,她开始阅读机器学习方面的学术论文。从哪里开始,当然是阅读引用次数高的论文!那么哪些论文的引用次数最多呢?当然是研究常见科研任务模型的论文和各种机器学习框架的论文……数据科学家毕生的梦想:一个解决一切的模型(就像《王者荣耀》中的“一环统领一切”)theRings)可以说,纵观Anna的旅程,她无时无刻不感受到最简单的信息:要做好机器学习,你需要深入研究建模算法(以及特征工程的一些技巧)。除此之外,几乎没有人提及。拟合模型不是重要的部分。说了半天,我想已经说清楚了。仅仅赢得Kaggle比赛还不足以被称为机器学习专家。缺乏什么知识?在我看来,以下主题的重要性已被完全忽视,整个机器学习领域需要开始关注这些问题。问题格式化:将实际问题转化为预测或模式识别问题。数据生成过程:理解数据并理解其在解决问题中的局限性和适用性。模型解释:用交叉验证性能估计方法以外的方式分析模型应用场景:思考模型将如何与现实世界交互模型部署:将模型集成到产品或计算过程中这里只是一些简单的项目,您可以继续添加。完全有可能在拟合好的模型后,在这些地方出现错误,然后你的模型就会变得无用,甚至有害。当您的训练数据与应用程序中的实际数据不匹配时,您的模型可能根本无法给出正确的预测。当你的高管因为担心它是一个黑匣子而拒绝使用该模型时,你必须拉出白板并尝试向他们解释。如果你发现你的模型对不同肤色的人有偏见,那么你不应该使用这个模型。只要做好问题的格式化、数据、解释、场景、部署,你的项目就可以很成功,至于你的模型预测精度一般不重要也无所谓。如果其他方面没有做好,那么即使是调试了很久的测试数据上的集成模型也只能丢进垃圾桶。做错很容易,做对却很难。机器学习模型可以有很好的预测性能,但效果却与人们的预期相反。让我告诉你一个故事来说明这一点。我有一个在电信公司工作的朋友,这家公司的其中一项业务是销售移动通信套餐(通话+短信+数据)。他在公司的数据科学团队工作,然后公司要预测哪些客户最有可能停止使用该套餐,他也是这个项目的成员;做出此预测的目的是为可能不会继续使用的客户提供更具成本效益的组合。然后,项目组着手构建机器学习模型,这个模型在区分用户方面也相当不错。然后他们把高概率的用户列出来,交给另一个团队,这个团队会一一联系这些用户,为他们提供更优惠的套餐。那么结果如何呢?更多的人正在取消这家公司的包裹,而不是更少!他们事后意识到,他们一一联系了那些可能不再使用他们服务的用户,提醒对方不能继续使用公司的套餐。联系用户的行为反而成为他们最终终止合同并转向其他运营商的导火索。为什么有问题?当他们试图将实际问题转化为预测问题时,他们从一开始就错了。他们的模型预测“客户X终止合同的可能性有多大”,但他们真正需要预测的是“客户X在我们联系他时终止合同的可能性有多大”。这也可以看成是应用场景相关的问题。他们没有仔细考虑与已经了解心的人接触的后果是什么。本例中,模型构建可得10分,问题格式化和应用场景考虑仅可得1分。不要认为你的队友是可靠的那么在使用机器学习解决现实世界问题时,是否只有初学者才会犯错误?当然不是。除了拟合模型之外,学习机器学习技能的一个好方法是参与解决现实世界的问题。但这还没有结束,你必须真的想在拟合模型之外的事情上变得更好。仅有经验是不够的。谷歌、亚马逊等在机器学习上有大规模、长期投入的公司,除了模型优化之外,其他方面都掌握了吗?其实没有。即使拥有所有的博士学位、所有的资金、所有的经验、所有的数据、所有的技术专长,他们仍然没有完全弄明白。他们实际上仍在犯愚蠢的错误,因为将机器学习应用于现实世界的任务实在是太难了。以下是一些大公司使用机器学习并将其搞砸的例子:谷歌照片将黑人归类为黑猩猩。然后他们的解决方案是停止要求模型预测黑猩猩类别。这就好像你家的墙壁漏水了,你贴了一张墙纸把它盖起来,而不是和楼上的邻居说话。Google流感趋势高估了患流感的几率。他们已将该产品下线。它的工作方式是先关注与流感发生高度相关的词,然后再挑选像“highschoolbasketball”这样完全没有因果关系的词。亚马逊建立的招聘工具存在性别偏见。亚马逊根据自己的招聘数据对模型进行了训练,该模型简单直接地反映了亚马逊在招聘方面的性别偏见(即偏向男性)。所以他们从来没有使用过这个工具。但与此同时,他们的潜台词是:没有这个工具我们会很好,而当前确实存在的性别偏见将被视为无知。同上,张贴壁纸来掩盖一切。为什么不用数据简化您的生活?为什么不?如果你的工作没有反馈来告诉你做的对不对,你可能会觉得很累。尤其是在做学术研究时,或者当你没有直接的主管时,不确定你现在所做的事情的意义是很常见的。如果你有老板或更高级别的人告诉你该怎么做,感觉会更容易,但我会告诉你真相,没有人真正明白。不管你工作十年、几十年,不管你有多少社会阅历,也不可能从某一天就把这个世界的一切都清楚地知道。一种解决方案是用数据衡量你的进步,这会给你一些反馈。它可以被视为成功的指标。“我今天读了5篇论文。”“我这周完成了一份10页的报告。”“我的网站这个月有1万次访问。”“我今年拿到了2万的奖金。”不知何故,用数字衡量成功是简化工作并帮助您提高工作效率的好方法。然而,这些数据也把“成功”这件事简单化了。怎么可能用几个简单的数字就可以表达所有的条件。比如你的收入很高,但是你不喜欢自己工作的内容。你还成功吗?例如,你的论文经常被引用,但你并没有对现实世界产生任何真正的影响。你还成功吗?比如你有几千粉丝,但是没有人看了你的新闻点赞评论。你还成功吗?假设你在机器学习竞赛中名列前茅,但你偷偷利用了数据中的漏洞,就像其他排名靠前的竞争对手一样。你还成功吗?事实上,很难说什么时候努力达到某个数字,什么时候不努力。在我看来,如果在“获取数字”和“难以衡量的工作”(例如研究新产品,而不是销售更多旧产品)之间进行权衡,整个社会的口味都会严重偏向数字。那边。机器学习也是如此。当我觉得好像有人“要打一个数字”时,我会在脑海中想象赛马。有一匹美丽而强壮的马,被训练得跑得很快。然后如果它在比赛中获得了好的名次,人们就会奖励它胡萝卜(我不确定马是不是特别喜欢胡萝卜,但是为了我的故事方便,我们暂时假设马喜欢胡萝卜)。为了让马的注意力完全集中在目标上,马的眼睛上装有眼罩,可以阻挡马的左右视线,让它们只能看到前方。现在我们这些赛马,每个人都戴着眼罩,只能“盲目”地为评价指标努力。但是很多时候,如果我们左右看一看,也许赛道旁边是一片无人看管的胡萝卜地。作为机器学习领域的一员,我们已经在错误的机器学习竞赛中角逐了太久。我们必须摘下头上的眼罩。所以写这篇博客,希望能启发更多的人摘下眼罩,希望这个领域的关注点可以不再局限于模型性能,而是开始更多地关注数据、解释、应用场景和社会影响力.本文转载自雷锋网。如需转载,请在雷锋网官网申请授权。
