文 | 夕小瑶

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

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

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

▲如来神掌

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

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

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

  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的过程,多拍脑袋吧,也需要环境、机遇。如果你做到了,记得回来留个言,给小夕留个好友位。。。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

惊了,掌握了这个炼丹技巧的我开始突飞猛进相关推荐

  1. 算法工程师掌握了这个炼丹技巧的我开始突飞猛进

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

  2. 【炼丹技巧】指数移动平均(EMA)【在一定程度上提高最终模型在测试数据上的表现(例如accuracy、FID、泛化能力...)】

    本文中心: 1.指数移动平均(Exponential Moving Average)EMA作用: ema不参与实际的训练过程,是用在测试过程的,相比对变量直接赋值而言,移动平均得到的值在图像上更加平缓 ...

  3. 计算机二级黑板板书书写,清华老师的板书惊艳朋友圈 8个技巧让黑板亮起来

    原标题:清华老师的板书惊艳朋友圈 8个技巧让黑板亮起来 在PPT盛行的现在,你还会坚持上课写板书吗?板书是一个老师的基本功,也是这个职业的鲜明烙印.特级老师魏书生说,板书让老师教书多了一分乐趣,让学生 ...

  4. NLP、炼丹技巧和基础理论文章索引

    玩家你好 恭喜你捡到了一个来自上古时期的*七*星*炼*丹*炉*,只见炉壁上镶嵌着自然语言处理.推荐系统.信息检索.深度炼丹.机器学习.数学与基础算法等失传已久的江湖秘术.熔炉中虽然已有一层厚厚尘土,却 ...

  5. parallels网络初始化失败_出神入化:特斯拉AI主管、李飞飞高徒Karpathy的33个神经网络炼丹技巧...

    选自Andrej Karpathy blog 作者:Andrej Karpathy 机器之心编译 特斯拉人工智能部门主管 Andrej Karpathy 发布新博客,介绍神经网络训练的技巧. Andr ...

  6. Andrej Karpathy的炼丹技巧

    1.先别着急写代码 训练神经网络前,别管代码,先从预处理数据集开始.我们先花几个小时的时间,了解数据的分布并找出其中的规律. Andrej有一次在整理数据时发现了重复的样本,还有一次发现了图像和标签中 ...

  7. pytorch 对抗样本_【炼丹技巧】功守道:NLP中的对抗训练 + PyTorch实现

    本文分享一个"万物皆可盘"的NLP对抗训练实现,只需要四行代码即可调用.盘他. 最近,微软的FreeLB-Roberta [1] 靠着对抗训练 (Adversarial Train ...

  8. 炼丹技巧----不断积累

    UI矩阵, 正着来和反着来, 分别进行mean的操作, 结果会明显提升, 这个事情屡试不爽. 先别急着写代码,多花一点时间进行数据预处理: 了解数据分布并找出其中规律 发现重复样本和错误标签 奇妙新颖 ...

  9. 谈谈怎样提高炼丹手速

    文 | 夕小瑶 最近搞定几件焦头烂额的大事后,终于有了一丢丢的时间来写写文章,并且偶尔思考下算法工程师的核心竞争力是什么. 前不久一时兴起写了篇标题党文章<惊了!掌握了这个炼丹技巧的我开始突飞猛 ...

最新文章

  1. ASP.NET的(HttpModule,HttpHandler)
  2. python判断两个值是否相等_Python--比较两个字典部分value是否相等
  3. sizeof和strlen解析
  4. (仿头条APP项目)5.列表页面设计实现
  5. 从Tronbull引狂欢,看APENFT与波场带来的新可能
  6. 电商搜索能力解读-实体识别(NER)
  7. c#中通过win32API(FindWindowEx)查找控件句柄实例
  8. [Linux 使用(2)] 64位Linux下安装jboss-as-7.1 以及jdk1.7
  9. jQuery框架总体分析
  10. php伪协议漏洞_PHP之伪协议深入理解
  11. windwos开机自启动脚本
  12. Null + Anything = null, 好奇怪的设定啊
  13. 苹果Mac更改备忘录默认字体的方法图解
  14. mapxtreme for java_在MapXtreme for Java 4.8.0 中公布新制造的电子地图
  15. mysql 字段有分隔符_在MySQL字段中使用逗号分隔符
  16. 关于Eureka的自我保护模式
  17. math_泰勒多项式/Taylor级数常用麦克劳林级数
  18. Android刷windows 10系统,无处不在!安卓手机能刷 Win10 系统了
  19. android switch 字体颜色,Switch的简单设置颜色
  20. 罗克韦尔AB PLC RSLogix数字量IO模块基本介绍

热门文章

  1. 使用eclipse以及Juint进行测试
  2. Redis入门指南(第2版) Redis设计思路学习与总结
  3. [转载] linux cgroup
  4. ZOJ 1004 Anagrams by Stack(DFS+数据结构)
  5. 大括号之谜:C++的列表初始化语法解析
  6. C语言判断计算机存储是大端还是小端
  7. 计算最后一个单词的字符串长度
  8. recovery模式下支持ADB连接和串口操作
  9. python书写风格_python书写风格
  10. 电脑如何测网速_物联网卡的网速到底怎么样呢