算法工程师的三观测试

97214f2cdc62c704293e4f5a1d4098a0.png

文 | 小戏
编 | 小轶

如果我在谷歌输入“How to improve my machine learning models”,我会得到形形色色花样繁多的提升模型性能的方法。从调参到特征工程,从集成模型到数据增强,琳琅满目,不胜枚举。

可是如果我在这个问题上加一点限定,来问“什么才是最能提升模型性能的方法呢”时,这个问题似乎就从一个“罗列与叠加”的工程问题变成了一个“如何取舍”的艺术问题

6b988e9f221425e115696da2e6ae5634.png

最近,在 Reddit 上,这样一个问题引起了广泛的讨论,提问者发问:“在你的经验里,什么是最能提升一个机器学习模型性能的东西,是调参?特征工程?模型集成?还是其他东西?

这个问题换言之其实问的是,诚然有许许多多提升模型性能的方法,但是作为一个算法工程师我应该将自己有限的精力更多的投入到哪一部分才能收获事半功倍的效果呢?

8aedfd16bf3b1d66befe2ce6d63561c3.png

让我们暂停一下,来做一个投票,什么是你第一反应下认为一个算法工程师最该关注的问题?(这里简单列举了一点在 Reddit 上讨论里出现的选项,如果选择了其他那么欢迎在评论区留言哦)

27966cdde8584809ae26b2a96131ea24.png数据为王b2391912012042a167fecc6de413f1da.png

OK,如果和 Reddit 上的结果一样,那么应该是“数据”高票当选全场最佳,榜首的回答“It is data, young Jedi. The data”收获了571条点赞。

794703c58395902f4bea26dc6489e9e8.png

除此之外,还有许多支持“数据”是最大影响的因素的回答,比如,有人认为“Garbage in, Garbage out”,因此数据无疑是任务执行好坏的源头活水。

b9dc9463ff2944c1c13e4b274f38bf83.png

(当然,套用这个句式也可以皮一下“Garbage in, State of the art And Free money out”)

69c2dcd9225b262a6e50251e3fdeb0b3.png

更有十年算法工程师现身说法:

092a73e4279f7f0b57749c32a0f6f515.png

也有人认为将时间投入数据工作的投入产出比是最大的:

5634d2610783a13f2c435a0554d42756.png

以及还有旁敲侧击从侧面论证数据的重要性,比如善意的提醒大家“善待给你标注数据的学生

227953bf27255848a9956bf7f0d03c7d.png

eda88110f4954aa27466df1bd66fd976.png特征工程43c171a863a5cc5cff45de08f1b605ea.png

有人做了一个经验性的排序。有两个答案都提到,提升模型性能时关注的优先级应该先是数据层面,其次是特征工程,最后才是模型层面,诸如模型类型、调参等。

409f6768578e50d7ce5f3c457eba5be9.png

也有人将提升模型性能的过程想象成在扩大数据量级以及缩小模型量级之间找到一个甜点区的过程

39c229e2151143f9853389d8dfac816e.png

而除了主流的认为数据是最重要的影响因素的声音之外,还有一些其他的答案也十分的引人瞩目。比如,有人投票给了特征工程,认为“特征工程可以得到正确的数据以输入给正确的模型”。

77e647e90aeb7c7ace15b2a2dc12d41b.png

有人强调集成模型一般总会对模型性能带来提升,但他认为最重要的还是特征工程与调参。

b0db3faf84e1948b8485d7b7e507bd74.png

也有人则认为并不是所有任务都要求大量的特征工程,因此强调了在深度学习中预训练的重要作用

fdf5a34bbb3db02ef7ba0a5df79827fb.png

5dd7ce8656548c65c4d58349e53db87f.png问题重构5602067772bb70135c08d31a5bb8503c.png

除了这些大家都或多或少知道的方法以外,还有人从另一个角度思考问题,指出了“重构问题或许会更加重要,这个回答认为对问题的定义不同,会对这个问题的求解带来显著影响。

回答的作者提出了一个颇为简单的理论或者说判断准则,作者认为:从原始数据、到数据预处理、到训练得到最终模型,整个过程应该始终沿着“熵”增的方向,这样才能确保得到的结果是可靠的。该作者申明:这里“熵”指的是“whatever you can't measure in a system”。

ef77d4f7007816e89dcb2f9adba5457d.png

譬如原始数据是五年的日均气温数据,如果我们将任务定义为“预测未来某天的最高/最低气温”,模型显然是学不出来的,因为原始数据都没有度量“最高/最低气温”。如果我们把任务仍然定义为“预测未来日均气温”,这样“熵”就没有发生改变。

而如果将任务重构为“预测未来的日均气温所处的区间”(即重构为分类问题:是低于-10℃,在-10℃到10℃之间,还是高于10℃)。由于问题变简单了,这样的问题定义更有可能得到好的模型效果。

因此,作者认为“重构问题”直到“正确的定义问题”有时是更加值得付出时间与精力的事情

6ad6f23893f78c1a210698df621d51db.png

当然关于这个经验的判决准则,也衍生出了颇为有意思的讨论,譬如这里的“熵”究竟如何定义?在简单的例子中或许我们可以判断怎么是熵增的定义,那么在海量的数据与众多的特征之下我们应该如何判断熵这个概念等等,如果大家感兴趣的话可以进入原文看看大佬们的讨论。

2f2f565706e9f59bef08ffa046e7f525.png

94d4abef2ae706395689d3020528e969.png其他观点bd75c3aaf54b68f86a66e72deedb5067.png

除了这些在不同方法上各抒己见的讨论之外,还有人特别反思了一下在前排整齐划一的“数据”声浪中,其他方法会失去价值吗?显然,数据是没错,但在实际情况中我们有时无法得到更多数据,因此也不应该低估其他方法的价值。

比如一直被排序在最后的模型层面的方法,在一些特殊的领域应用中,将一个 Attention 层放在正确地方上可以带来的收益可能要远大于增加一些无用数据带来的收益

其实回想AI的发展,里程碑式的进步大多来源于模型的更新,也许正如这个回答里说的一样“可能大多数模型的改变在没有足够好与足够多的数据的支持下不会带来性能的提升,但是一旦这个模型做到了,那么它将会是一个 Game Changer

4fc735f10cbbe8dd0a8d68285fc2ca7b.png

而在这些关注数据的回答中,也有人开始反思,我们所谓的数据工作究竟意味着什么?在一些高度专业化的领域场景里,作为算法工程师,我们所做的所谓“创造性”的工作,真的只是不断的搜集更多更好的数据吗?甚至再往上推,我们的所谓更好的更多的标注数据是如何来的?答案很可能是来源于领域内的专家的知识,那么,当这些算法知识与工具的学习成本与门槛下降,一个算法工程师相对于一个懂算法的行业专家的优势何在呢

02c2f15361f5282e2af7a41aa71a6df0.png

关于这些问题的答案,乐观一点有人认为很大程度上领域知识与实际做的算法工作是独立的,我们收到标注好的数据,建立起模型,获得答案。

所谓的数据工作也就是收集更多的数据、使用数据增强技术以及数据清洗等等。尽管对算法工程师来说更好的理解自己处理的问题是必要的,但在某种程度上算法工程师与行业专家拥有不同的劳动分工

f56624dafed05a79024a7dfc9fc55ca7.png

而悲观一点有人认为自己所获得的所谓“更好的数据”几乎全部来源于更好的标注。也因此目前算法工程师的高薪或者说价值其实体现在目前算法还不足够成熟以至于行业专家可以自由的使用这些工具

34d12dbbecdd216b12e6c6411b5ccf6f.png

事实上这些讨论可以促使我们去思考,到底什么才是一个算法工程师的核心竞争力,作为一个算法工程师,我们的重心究竟应该落在“算法”上,还是落在这个“工程师”上

也许如这个回答描述的一样,尽管在一些情况下似乎算法工程师被与机器学习深度学习算法捆绑在了一起,但有时为了解决问题,我们完全可以考虑不使用机器学习的算法。相比于将算法工程师的定义局限在机器学习算法之上,倒不如更加强调一点我们的工程师属性,我们需要利用一些工具去解决问题,无论这个工具是穷举搜索、是数学统计还是机器学习。

aac7cffa1984d9c851978d2269b200ab.png

或许诚如前文所述,无论是模型还是数据,都不是解决一切问题的灵丹妙药。作为一名算法工程师,也许我们需要的更多是在特定时间特定资源的背景下去解决问题的能力

显然,区别于单纯的调参、洗数据甚至是改模型,这都是一个更加“能动”的过程,与其说学习我应该将精力投入在数据、特征还是模型之上,不如去思考在我自己的场景之下,如何去选择合适的工具去解决面对的问题。而关于这个问题更加微观一点的答案大家可以参看卖萌屋之前的这篇文章《惊了,掌握了这个炼丹技巧的我开始突飞猛进》。

3426255fcab0a760f88293a42d5dcd0c.png

048f00bf0ada5b2346b9eb375917d0bf.png一些感想f7ba1e0c37134bba947242bc2c73d7ad.png

最后,在管理学领域有一个经典的案例,工厂的机器发生了故障,当我问为什么机器会故障时,我可能会得到因为一颗螺丝钉弹出来了的答案,而当我再深入去问为什么这颗螺丝钉会弹出来时,我就会得到因为没有加润滑油的答案,而如果我再问为什么会没有加润滑油,那么答案可能将会是因为工人没有定期维护设备,如果再问一个为什么工人不会定期维护设备,那么便可能会归因于我们的管理制度没有要求或给工人以定期维护设备的激励。

在这个案例中,如果我们只问一个为什么,那么面对一颗螺丝钉弹出来这个问题我们可能会无能为力并且无法解决最终只能把它归类于小概率事件,而如果我们不断的追问为什么那么这个问题最终将会变成一个可以用管理手段去解决的问题

7b7427e51ed9cdf4af10a9ceb6ecb2fd.png

而面对模型调优也一样,当我们面对“我的模型性能不好,如何调优”这样一个问题时,与其一言不发照埋头苦干照着从数据到模型的经验法则挨个试错,不如像上面这个回答一样思考一下“我们当下面临的问题究竟是什么?”,然后根据现状不断调整,是数据的问题归数据,是模型的问题归模型,最终再面对开头这个问题,答案可能会变成“You, young Jedi. It is you.

dbfe6359e9f543b582c5d4d4497229b8.png

5259c1c9a45248586839927937a49263.png萌屋作者:小戏

边学语言学边学NLP~

作品推荐

  1. 千呼万唤始出来——GPT-3终于开源!

  2. Linux 程 序 员 失 业 警 告

  3. NLP哪个细分方向最具社会价值?

  4. 吴恩达发起新型竞赛范式!模型固定,只调数据?!

  5. GAN 的内在漏洞!只看眼睛就能找出虚拟人脸?

977072d74dc9a5577c8773aec15bb73b.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜广推与求职讨论群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

领域驱动设计在互联网业务开发中的实践

至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD)。在互联网开发“小步快跑,迭代试错”的大…

LeetCode 1377. T 秒后青蛙的位置(BFS)

1. 题目 给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下: 在一秒内,青蛙从它所在的当前顶点跳到另一个 未访问 过的顶点(如果它们直接相连)。青蛙无法跳回已经访问过的顶点。…

已删除

7.12更新:部分基金赎回的钱已经到账小金库了,今日从小金库提现时又提示银行卡已删除,不过这次可以点击重新绑定,重新绑定时会报错“绑定的卡与原卡一致”,流程没法走完。但这时候再退回去却发现“银行卡已删除”的提示没有了。于是…

即时配送的ETA问题之亿级样本特征构造实践

ETA(Estimated time of Arrival,预计送达时间)是外卖配送场景中最重要的变量之一(如图1)。 我们对ETA预估的准确度和合理度会对上亿外卖用户的订单体验造成深远影响,这关系到用户的后续行为和留存&#xff…

LeetCode 1376. 通知所有员工所需的时间(DFS)

1. 题目 公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。 在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第 i 名员工的直属负责人。对于总负责人…

华为天才少年稚晖君做了一把模块化机械键盘,引起极客圈地震,网友:这才是真正的客制化...

作者 | 王玥、李梅,陈彩娴(编辑)来源 | AI科技评论他来了他来了,一人顶一个团队的稚晖君又一次带着一项硬核(虽然他强调是“软核”)黑科技来了!稚晖君,真名彭志辉,三次元…

iPhone X 刘海打理指北

iPhone X 刘海机于9月13日发布,给科技小春晚带来一波高潮。作为开发人员却多出来一份忧虑,iPhone X 怎么适配?我们 App 的脑袋会不会也长一刘海出来?Tabbar 会不会被圆角?先来看一下美团 App 的表现: 图 1.…

大厂们终于无法忍受“加一秒”了,微软谷歌Meta等公司提议废除闰秒

文 | 萧箫 发自 凹非寺源 | 量子位 , 公众号 QbitAI大厂们再也无法忍受闰秒带来的一堆bug了。现在,谷歌Meta微软亚马逊等一众科技巨头发起了一项倡议:废除闰秒!闰秒这玩意,说白了就是通过给“世界标准时间”加_(或减&a…

LeetCode 1374. 生成每种字符都是奇数个的字符串

1. 题目 给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。 返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。 示例 1: 输入&…

Redux从设计到源码

本文主要讲述三方面内容: Redux 背后的设计思想源码分析以及自定义中间件开发中的最佳实践在讲设计思想前,先简单讲下Redux是什么?我们为什么要用Redux? Redux是什么? Redux是JavaScript状态容器,能提供可预…

LeetCode 1375. 灯泡开关 III

1. 题目 房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排。最初,所有的灯都是关着的。 在 k 时刻( k 的取值范围是 0 到 n - 1),我们打开 light[k] 这个灯。 灯的颜色要想 变成蓝色 就必须同时满足下…

MIT指出公开预训练模型不能乱用

文 | 林锐众所周知,用 Imagenet 预训练模型做 backbone,再接个下游任务的头去微调,是个简单有效的迁移学习方法。基本上,炼丹师用这种方法就能成功获得一个优秀的模型(水一个实验室的项目)。但是近些年一些…

从0到1:构建强大且易用的规则引擎

引言 2016年07月恰逢美团点评的业务进入“下半场”,需要我们在各个环节优化体验、提升效率、降低成本。技术团队需要怎么做来适应这个变化?这个问题直接影响着之后的工作思路。 美团外卖的CRM业务步入成熟期,规则类需求几乎撑起了这个业务所有…

LintCode 563. 背包问题 V(DP)

1. 题目 给出 n 个物品, 以及一个数组, nums[i] 代表第i个物品的大小, 保证大小均为正数, 正整数 target 表示背包的大小, 找到能填满背包的方案数。 每一个物品只能使用一次 样例 给出候选物品集合 [1,2,3,3,7] 以及 target 7 结果的集合为: [7] [1,3,3] 返回 22. 解题 dp[…

汽车博主因眼睛小被辅助驾驶误判为开车睡觉!何小鹏亲自回应 蔚来已成立专门研究小组...

源 | 每日经济新闻近日,一位汽车博主表示,他在驾驶小鹏汽车,使用小鹏辅助驾驶功能的时候,因为自己的眼睛比较小,所以被系统判定为“开车睡觉”,从而被扣除了智驾分。据了解,“智驾分”是小鹏汽车…

投资127亿!深圳,再添一所985

源 | 青塔综合转自 | 募格学术据深圳卫视近日消息,中山大学深圳校区多栋建筑将在暑假交付。报道称,中山大学深圳校区主楼正在进行工程最后收尾工作,预计本月底就能竣工验收,确保秋季新学期开始前投入使用。校区总建筑面积约127万平…

Android OOM案例分析

在Android(Java)开发中,基本都会遇到java.lang.OutOfMemoryError(本文简称OOM),这种错误解决起来相对于一般的Exception或者Error都要难一些,主要是由于错误产生的root cause不是很显而易见。由…

NAACL最佳方法论文:课本上的A*搜索算法可以提升文本生成效果!

文 | Yimin_饭煲相信大多数学习过人工智能课程的读者,当听到算法的时候,都会有一种既熟悉又陌生的感觉。说算法熟悉,是因为一听到这个算法,就想起那本厚厚的《人工智能——一种现代的方法》,想起这个算法似乎是人工智能…

LeetCode 6. Z 字形变换(找规律)

1. 题目 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N之后,你的输出需要从左往右逐行…

美团点评移动网络优化实践

本文根据第16期美团点评技术沙龙“移动开发实践(上海站)”演讲内容整理而成。 第18期沙龙:高可用系统背后的基础架构(3月25日)火热来袭!快快点击报名吧。 网络优化对于App产品的用户体验至关重要&#xff0…