前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ML&DEV[16] | 算法工程师内功修炼

ML&DEV[16] | 算法工程师内功修炼

作者头像
石晓文
发布2020-07-03 18:00:22
5300
发布2020-07-03 18:00:22
举报
文章被收录于专栏:小小挖掘机小小挖掘机

所谓算法,所谓人工智能,很多媒体,或者是一些教程,甚至是现在的主流论文,很容易地会把大家的思路带入到各种深度学习(没错,机器学习都已经out那种)等之类所谓比较高端的东西去了,于是大家会花很多时间在模型上,无论是学习本身,还是在日常工程中,在一些实践中,我逐步想明白,模型固然重要,但只学模型,翻翻论文,读读博客,只能让缓解我们对知识的焦虑,能让自己觉得“我的水平提升了”,但是是否真的提升了,这个事情要好好想想。

自己本身也不是高手,想很多前辈讨教学习中,下面是一些自己的思考,欢迎大家补充和指教。

模型的选择能力

在现实场景,在确定需要建模的场景,众所周知好的模型选择会让我们更快更好地解决问题,然而问题在于,怎么根据现实场景选择模型,这就是一个非常复杂的问题。

慢慢来拆解问题,首先是,我们怎么识别这个场景的特点。因为我们识别场景特点是为了模型服务的,所以我们往往需要对模型有充分的理解,再来识别在这个场景。例如性能(时间和空间)、特征是否交叉、时间序列依赖之类的,特定问题下,例如NLP,长短文本、任务类型、语言特点等,推荐系统则更为复杂,召回排序阶段、长短期兴趣、特征形式等。

识别场景后就到模型了,模型的选择一定是基于问题的特色的。特征交叉切勿维度较高就要考虑一些类似FFM之类压缩的方法序列依赖则要用RNN、LSTM之类的内容,或者是采用一些positional embedding的方法也行,超短文本的序列信息不足可以考虑小模型之类的,产生一些类似词典的作用。

这是一种内功,很吃经验,但是更多的还是大家要多看论文和学模型,学模型要学到家,一方面是要知道模型的原理,另一方面是要吃透模型的优缺点,工具都是有他的适用范围、优缺点的。

模型之外的方法

根据现在的经验来看,很多人上来就是这模型那模型的,很大程度上这个人只会模型,没有别的方法可以解决问题了,这就体现一个人知识的匮乏,这个事情就和医生只会开刀切除是一样的,一个小感冒其实没必要开刀,一个系统下的一个小任务或者需求其实一个规则就能解决,何必需要模型呢。

规则是模型之外很必要的解决方案,但是问题在于规则这个东西难以写进教程,因为他对业务的依赖很强,是需要根据问题去总结归纳的,这是其一,其二就是经验,说白了就是对现状的敏感,什么样的规则,设计影响面有多大比较合适,最终能产生什么效果,有什么风险,能预估到,那就能设计好的规则。

知道要做什么

在一个系统下,除了接产品需求,剩下的其实就是算法自己要使出浑身解数来优化特定的指标,点击率、GMV之类的,包括我在内其实很多时候都会比较懵,不知道该做什么才能提升效果。

首先,要对整个领域的常规操作有一定的理解,可能比较深的,例如推荐系统,业界的常规操作会让你去关注用户的兴趣,不同时间跨度可以考虑;冷启动物料和用户有没有服务好,之类的,这些应该指导自己思考优化方向。

然后,要有一些分析能力,预判收益、策略覆盖率,某件事情决定做之前,是最好都有比较准确的预期,这也是很多算法会说自己是“sql工程师”的一大原因,数据分析是需要和sql大量的打交道的。

规划

人无远虑必有近忧,做一整个项目,除了做短期的任务,还需要对长期有一定的规划。

  • 迭代更新有一定的节奏,无论是从产品层面、用户感知层面等。
  • 项目前期有大量的基础工作等待开发,但是功能又要迭代,此时两者并行能保证对外效果,对内技术债的减少。
  • 减少重复性工作,用了模型A以后,后需要模型迭代成B,不需要所有代码推翻重来。
  • 优先级调整,前期用户量不大,性能压力不大,但是发展到一定程度后,性能压力就会成为主要问题了,需要进行升级改造。前期用户行为较少,可以使用一些跨度较大的长期兴趣,后续用户行为多了,短期甚至超短期兴趣就可以开始进行探索。

规划的视角,在我现在看来是这些吧,可能还有更多,我也要持续的学习。

数据分析能力

虽然不是专门的数据分析,但是在项目进行的各个过程,都需要算法自己来做很多的分析工作,举几个例子:

  • 探索型,衡量某个策略的预期收益和成本,看看有没有做的必要。
  • 离线分析。模型和策略的效果如何,是否可以上线。
  • 在线分析。策略上线后,AB实验下效果如何,是否扩量或者全量等。

而且,这个分析往往只有自己清楚要做什么、怎么做,这些数据背后反馈的问题是什么,口径上有没有什么问题,这些都是非常需要具备的。

工程能力

老生常谈,之前也专门写过这个问题,不再赘述。

其他相关技术的跟进

算法本身只是系统的一环,在做这些的过程,我们其实要关注很多与我们相关的基础工作,这些工作是肯定需要我们来推进的,这些我们应该尝试了解、关注,甚至是,我们要知道做什么,怎么做,才有利于整个系统的推进和迭代。

  • 大数据处理,hadoop、hdfs、hive方面的技术工具。
  • 用户行为埋点,尤其是埋点的原理、时机和口径,埋点埋不好直接导致算法不可用。
  • 实验平台,AB实验。
  • 监控和告警。
  • 离线和在线的特征生产,需要快捷方便。
  • 模型相关的引擎,模型服务、热更新等等。

小结

最近接触一些项目,需要去协调不少东西,开始自己有很多焦虑吧,感觉这些协调对个人成长没有什么好处,甚至在拖后腿,但是后来和很多人沟通交流,发现自己其实是在新的方向有了更多的进步吧。当然的,自己的持续学习也没有让自己在原有的模型理解方面落后太多,紧跟论文前沿,坚持学习是自己持续年轻的保温剂,这个习惯还是要持续保证,大家共勉~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小挖掘机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模型的选择能力
  • 模型之外的方法
  • 知道要做什么
  • 规划
  • 数据分析能力
  • 工程能力
  • 其他相关技术的跟进
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档