文 | 夕小瑶

从不拖稿的小夕今天在知乎上刷到一个问题:

哈?一向求真务实、高逼格讨论的知乎画风怎么突然就不一样了。

我以为回答区会有这张图:

▲如来神掌

结果竟然没有!知乎果然没有让我失望,还是一如既往的认真、严谨、有逼格。咳咳,作为一枚知乎算法圈的老司机小可爱,感觉自己有必要来添砖加瓦一下。

相信我,深刻理解数据的重要性与数据构造&迭代&使用技术,你会从算法小白突飞猛进到即将入门!(认真脸

首先贴出我的算法工程师升级打怪路线:

  1. 最菜的算法工程师靠调学习率

  2. 次菜的算法工程师靠试新模型

  3. 合格的算法工程师会懂得做数据

  4. 不错的算法工程师还会用新paper优化实际问题

  5. 优秀的算法工程师能数据、模型、策略joint design&iterate

  6. 顶级的算法工程师能颠覆行业方法论

仅供参考,请勿对号入座! 尤其是正在看本文的技术leader们,不要将自己的小弟对号入座,毕竟从1到6的形状是个倒金字塔╮(╯▽╰)╭

其实从这里可以看出,1和2其实大部分实习生和应届校招生都能做到,而3就是完成学校->工业界的重要转折点,也就是做数据

关于数据

学生思维中的算法工程师日常可能是这样的:

天上掉下来/老板拍过来/网上download下来一个训练集、测试集,然后我开始调模型&调参,调好了就上线了。

尤其是那些整天吹嘘算法岗门槛低,以为跑个BERT刷个榜单就入门了nlp的人,不是学生就是半路转行的调参侠。

当你开始意识到数据的重要性了,不敢说技术突飞猛进吧,至少可以承认你马上要入门这一行了。比如你开始有以下意识:

  1. 嗯,我不能只关注离线测试集指标涨不涨,我还要判断测试集靠不靠谱,包括采样/数据分布的线上一致性、时效性、标注正确率、评测方差/置信度等。

  2. 嗯,我不能对着同一个测试集做大量没道理的炼丹,比如暴力调参、疯狂改随机种子、暴力乱加策略、暴力魔改、暴力增删改查等。我知道大量的无意义超参调整,只会变相的让模型用超参过拟合这个测试集。最终结果往往是,向上汇报猛如虎,线上用户用脚投票。

  3. wok,准确率从90%一下子涨到99%了!肯定不是我nb,绝对是出bug或者标签泄漏了!

  4. 嗯,新老方法都有其存在的意义和发挥作用的阶段,都是不可缺的。

  5. 嗯,从1到2与从0到1的解法有很大区别。

就至少跟200元/天的实习生划清界限了。。。

那么,具体来说,做数据具体要怎么做呢?或者说需要积累哪方面的能力/经验呢?

简单来讲:

  1. 标注标准

  2. 采样策略

关于标注标准,这其实是个比较吃业务经验的事情。

真实的业务场景数据是非常dirty的,即使是情感分类这种看起来非黑即白的NLP任务,在流量大的真实业务场景中,都会面临大量的边界样本和人都要分辨半天,甚至需要足够学历、阅历才能分辨出情感极性的样本(想象一下知乎评论区那些“阴阳怪气”的评论,可能你都不知道对方是在骂你还是夸你)。

此外,哪怕是同一条样本,同样的分类任务,业务场景稍有变化,那么你期待的标签可能会完全相反。比如,句子“oppo最新款手机多少钱”与句子“vivo最新款手机多少钱”的文本相关性,在搜索场景,就是妥妥的负例,因为用户的出发点是获取真实知识,你如果给用户返回vivo的价格,那用户会有一种被欺骗感。

但是,在搜索广告场景,却完全可以作为正例,因为本身vivo和oppo的大众认知相对比较近,用户在搜索广告场景的出发点可能是买一部不错的安卓机,并且用户觉得oppo可能是不错的选择,那这时候你给出vivo的信息,用户往往不会反感,甚至可能因为发现vivo更合适而下单。

当然了,这种品牌实体的替换导致的文本相关性结论并不是永久成立的,比如同样搜索广告,用户问“劳斯莱斯最新款多少钱”,结果你出了一条“五菱最新款价格”,那用户就会感觉受到了侮辱。。所以深刻理解具体业务场景的优化目标,对于制定正确的标注标准是十分必要的。当然,标注标准很大程度上取决于产品标准,而你就是要将这个产品标准深刻理解且转变成众包平台人员也能轻松看懂的标注标准。

一旦标注标准导向错了,坐拥百万标注数据和100层的预训练模型也可能原地踏步。相反地说,如果标准做得好,那将大大提升标注数据的有效性,每周新返回的标注数据带来的增益可能比你花式炼丹一个月都来的有效。

关于采样策略,这个则同时跟业务目标、技术选型与模型水平相关,在不同的场景有不同的策略。

比如你到了要端到端解决问题的阶段,又能做到大规模标注,那可以考虑直接对齐线上真实分布做同分布采样+端到端标注。但是大部分复杂业务,往往是pipeline的方式,则要考虑对齐上一级分布。涉及到具体场景和阶段时,又会根据这个大原则去微调采样策略,比如精排问题中如何mining负例,多路召回时如何采样来优化下游粗排等,在真实分布的基础上做些微调同样可能带来肉眼可见的提升。

除了标准和采样问题外,数据问题上还可以组合大量预处理策略和训练策略,耦合上模型的特点和输入分布偏好,又是一波空间。总之,在当前的大框架下,数据空间往往比模型空间大得多,这也是当下算法工程师炼丹水平高低的一个重要分水岭。

更进一步

说完了倒金字塔最重要的一层,我们继续往下深入。

3到4的过程相对来说不是很难。如果你有刷paper的习惯,配合着高手速,脑子别太笨,那剩下的20%的疑难问题你也能解的七七八八了。即使不怎么刷paper,在靠谱的算法团队里苟着,通过耳濡目染也能get到不少求解疑难算法问题的高端姿势(误)。能做到这一步的,在大厂核心团队里也称得上不错了。如果再有一些软实力加成,至少不会担心没人要。

而4到5的过程,则需要一些顶层设计能力和工作年限积累。首先要做有挑战性的大业务,那些挖个字典、跑跑textcnn、finetune下BERT就完成目标的业务,说难听点都是demo,至少算法肯定不是这个业务的核心竞争力。当然了,这种挑战大的场景主要集中在搜索、推荐、广告等核心赛道上,顶层设计能力纯靠聪明、看paper和小打小闹的业务是学不来的。怎样的策略方案会预期达到怎样的业务效果,消耗多少成本,有哪些风险,甚至这个事情当下能不能做,应不应该做,前置环节是什么,下个阶段要做什么等,这些问题都要有足够的判断力。毕竟,哪个老板愿意拿着几百上千万的年薪让你去他的命根子业务上成长试错呢?

而5到6的过程,多拍脑袋吧,也需要环境、机遇。如果你做到了,记得回来留个言,给小夕留个好友位。。。


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
本站qq群851320808,加入微信群请扫码:

算法工程师掌握了这个炼丹技巧的我开始突飞猛进相关推荐

  1. 惊了,掌握了这个炼丹技巧的我开始突飞猛进

    文 | 夕小瑶 从不拖稿的小夕今天在知乎上刷到一个问题: 哈?一向求真务实.高逼格讨论的知乎画风怎么突然就不一样了. 我以为回答区会有这张图: ▲如来神掌 结果竟然没有!知乎果然没有让我失望,还是一如 ...

  2. 大道至简:算法工程师须知的十个炼丹trick

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨时晴 来源丨炼丹笔记 AI博士笔记系列推荐 周志华&l ...

  3. 算法工程师的三观测试

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 文 | 小戏 编 | 小轶 如果我在谷歌输入"How to improve ...

  4. 谷歌八年算法工程师分享几点算法学习小技巧

    https://www.toutiao.com/a6651524729897222670/ 2019-01-29 17:50:00 作为一名技术人员,我想大部分人都经历过迷茫的阶段,不知道自己该超那个 ...

  5. 算法工程师当前选哪个方向好?

    公众号关注 "视学算法" 设为 "星标",消息即可送达! 链接:https://www.zhihu.com/question/398876586 编辑:深度学习 ...

  6. All in Linux:一个算法工程师的IDE断奶之路

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 在合格的炼丹师面前,python可能被各种嫌弃 前不久卖萌屋的lulu写了一篇vim的分享<算法工程师的效率神器--vim篇>,突然想起来 ...

  7. 追逐冠军的少年 | 算法工程师岗毕业三年总结

    写在前面 从"数字中国建设峰会"回到北京的这个周末,一个人来到公司,回想这几年走过的路感慨良多.于是乎提起笔,写一下我这几年的经历.感悟.收获.给自己做一个阶段性的总结,同时也记录 ...

  8. 算法工程师当前选哪个方向好?| 文末送书

    链接:https://www.zhihu.com/question/398876586 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 当前2020年 ,从社会需求,工资待遇,未来发展方面讲,算 ...

  9. 我们可以一起来聊聊算法工程师当前选哪个方向好?

    链接:https://www.zhihu.com/question/398876586 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 当前2020年 ,从社会需求,工资待遇,未来发展方面讲,算 ...

最新文章

  1. 0 - python简介
  2. mongodb的锁和高并发
  3. 如何让vm虚拟机和主机同时上网
  4. 如何解决Keil5打红叉的问题
  5. php 自留地,重蔚自留地php基本语法-函数(附代码)
  6. BERT小学生级上手教程,从原理到上手全有图示,还能直接在线运行
  7. 【Linux入门到精通系列讲解】Linux如何创建和删除swap分区
  8. linux 实时 网口 速率_Linux 命令行网络端口速度测试
  9. python的多线程threading_Python中多线程thread与threading的实现方法,pythonthreading
  10. WCF 第十二章 对等网 使用自定义绑定实现消息定向
  11. [swustoj 1091] 土豪我们做朋友吧
  12. Putty打开.pem加密的服务器
  13. 北理计算机2017,←2017 计算机学院 2019→
  14. C语言关于素数个数的求法
  15. 第七章 NoSQL数据库技术(二)
  16. 「效率工具」HHKB的常用快捷键
  17. 【JZOJ】给水(water)
  18. 2022081班李亚楠20220920
  19. 调用大智慧L2接口是什么原理?作用是什么?
  20. 关于Twitter Card的一个巨坑

热门文章

  1. Windows控制台程序“选定模式”的问题
  2. ASP.NET缓存全解析4:应用程序数据缓存(转)
  3. TSQL查询内幕::(2.3)查询计划与更新计划
  4. HTML 5.2 新特性介绍
  5. 10大主流压力测试工具推荐(转载)
  6. 获取本地的json并展示
  7. Okhttp、Volley和Gson的简单介绍和配合使用
  8. DisplayContent、StackBox、TaskStack笔记
  9. RAC RMAN 通道配置 RMAN-12001 RMAN-12001 RMAN-10008 RMAN-10003 ORA-01017 错误
  10. SQL Server存储过程的基本概念以及语法【转】