原创 光舟 光舟 2022-01-16 19:36
    算法岗核心能力是什么?
    算法岗与算法岗大有不同,今天我想聊的是偏工程向的业务算法工程师。‘AI Lab’与‘xx研究院’中的算法研究员或科学家岗位,往往要通过搞创新发表学术论文提升公司在学术圈和产业界的影响力。而业务算法岗则把更多时间花在与业务场景紧密结合的工程改进。例如,多模态技术 | ‘图文并茂’助力精准用户画像中所提到的,算法本身没有太大创新,只是用最近的模型更新替换业务上现有的模型。换言之,业务算法工程师主要是以工程导向,为传统标准化流程提供人工智能相关的服务,并围绕数据驱动的算法模型对原有业务流程进行改造升级,最终达到降本增效的结果。

    在实际工作中,业务算法工程师到底有哪些能力呢?下面我用形象但不一定贴切的比喻,讲讲我在业务算法岗用到的三板斧:问题调研能力(拾破烂)、模型搭建能力(搭积木)、调参优化能力(捏泥巴)。戏说不是胡说,如有不妥之处,恳请各位看官海涵。

    板斧一:“拾破烂”
    “拾破烂”是一种信息收集和知识归纳能力。信息爆炸的时代,各式各样的开源项目和学术论文等信息浩如烟海。权且先把那些跟当下项目不相干和或者没什么帮助的信息当做‘破烂’吧。
    三板斧看懂算法岗 | 拾破烂、搭积木、捏泥巴 - 图1
    板斧一:问题调研能力
    从杂乱无章的信息中,筛选并梳理出系统的知识。
    关键点一,要懂行。清楚自己想捡到什么样的‘破烂’。
    翻译:对业务背景和技术背景的深入理解。
    能力:要把业务问题抽象成技术问题,同时熟悉相关技术的进展和落地成果。

    关键点二,要会捡。从哪里能捡到这些‘破烂’。
    翻译:各种开源社区调研和不同论文平台检索的能力。
    能力:要清楚不同开源社区的特点从而提高调研效率,要熟悉不同领域的学术会议和期刊并了解最新技术动向。

    关键点三,要识货。清楚捡到的‘破烂’的价值。
    翻译:本质上是通过已有的经验判断检索到信息的价值,逐步筛选去伪存真。能力:类似于推荐系统的召回模型,有粗召回、粗排序、精召回、精排序四个阶段,最终从一堆信息中选定性价比最高的两三个方案。

    P.S.之前的有篇推送,图文多模态开源项目汇总,总有一款适合你!就是对我“拾破烂”能力的一次考验。

    板斧二:“搭积木”
    “搭积木”是一种建立在工程师基础开发能力之上的系统设计和模块组合能力。既有系统论中拆解问题分而治之的思想,又有软件工程中高内聚低耦合的设计理念。简言之,“搭积木”是捡来的有使用价值的开源项目当做积木或组件,先通过顶层设计形成目标系统的蓝图,然后通过中间件协调组合不同的积木,最终搭建成一个能为业务服务的系统。
    三板斧看懂算法岗 | 拾破烂、搭积木、捏泥巴 - 图2
    板斧二:模型搭建能力(搭积木)
    利用各种开源框架和项目,快速搭建一套可用的模型。
    关键点一,要理解不同‘积木’的用途。理解不同类型的积木各自有何功能。

    翻译:各种各样的开源的组件/工具/编译器/领域代码库/编程框架/网络通信/分布式计算引擎/数据库/操作系统…就是积木。
    能力:如果不是计算机科班出身而且又只做一个业务算法工程师,那么了解一点领域专业的代码库或编程框架就可以做项目了。对有的项目来说,即使不理解‘积木’本身内部原理,明确了输入输出和基本功能,就可以快速先做出产品原型来。

    关键点二,要有修‘积木’或造‘积木’的能力。当需求不是很常见时,搭建组合系统时就不容易找到恰好能用的‘积木’。
    翻译:一个工程师可以不造轮子,但是不能没有造轮子的工程能力。
    能力:通过练习写代码、阅读仿写优秀的开源项目,学习如何改‘积木’、如何造‘积木’。

    关键点三,整体架构设计和积木组合能力。这项能力可称为‘绘设计图’,需要通过反复推敲思考修改复盘,多次迭代才能给出一个完善的‘积木设计图’。
    翻译:一个工程师可以不造轮子,但是不能没有造轮子的工程能力。
    能力:通过力扣等OJ平台练习代码基础,通过阅读开源项目学习如何改‘积木’,通过阅读优秀的开源项目体会设计模式和软件工程理论如何应用到实际项目中,不断通过结合业务的实际项目去提升自己的代码组织能力,不断尝试去造‘积木’,不断复盘反思推到重来。

    板斧三:捏泥巴
    “捏泥巴”是一种对统计机器学习算法模型的参数调试能力或经验。泥巴能不能捏好,取决于很多复杂因素,比如原料、机器、环境、工艺流程、捏工技术等等。随着统计机器学习算法模型热度越来越高,集成了各种算法的开源框架和最新的开源模型层出不穷。但是,开源的统计机器学习算法模型并不能直接应用到具体业务上,仍然需要在业务数据进行迭代训练和调参优化。调参过程跟捏泥巴如出一辙,开源社区提供了‘泥胚模具’,业务中真实的数据则是‘胚土’,算法工程师则是用‘胚土’和‘泥胚模具’做出有价值泥塑的工程师。
    三板斧看懂算法岗 | 拾破烂、搭积木、捏泥巴 - 图3
    板斧三:调参优化能力(捏泥巴)
    相同的模型结构,不同的人调参优化,结果截然不同。
    用‘捏泥巴’来比喻算法模型落地的四个步骤:
    1、数据预处理。先对手头的‘胚土’进行清洗分拣搅拌等预处理形成‘泥巴’。
    2、搭建算法模型。把‘泥巴’灌注到开源的‘泥胚模具’快速拿到一个粗糙的通用的泥胚雏形;如果对时间没要求,则可以考虑造个泥胚模具或从头手捏。
    3、算法模型训练调参。手工拉胚,不断迭代,把‘粗糙的通用的泥胚’捏制成适合业务场景使用的‘精致的定制的泥胚’;在反复拉胚迭代过程中,新手往往难以提前量化最终效果的提升,原因是提升效果往往是经验、运气、创作勇气相结合的产物。其中,经验是靠工作经历,能对结果提升空间有大致预判;运气是靠努力花时间多次重复、小心验证才能寻找到更优的参数;创作勇气既是靠大胆尝试,又要靠一套对调参失败后的保底机制。
    4、模型优化和部署。捏出泥巴之后,不一定能直接用。根据业务情况,需要压缩模型参数量和提升计算效率:剪枝(泥胚镂空降低重量)、量化(去除泥胚上多余的毛刺)、转成C++(烧制提升性能)、装盒(gRPC部署)。

    正是由于统计学习中调参优化的不确定性,有时会出现调参优化捏了半晌最后还没最初的模样好的闹心情况。所以,模型调参被有的人戏称为‘社会科学’,而人工智能训练师有时则会被戏称为‘艺术家’。看到这,你是否觉得在实际工作中,算法岗也没那么难呢?如果你也想试试算法岗,那赶快加入光舟求职内推&技术交流群吧。
    三板斧看懂算法岗 | 拾破烂、搭积木、捏泥巴 - 图4
    学弟学妹和朋友们,一入职场方知民生之多艰。在光舟内推交流群里,既有阿里/腾讯/美团/京东/滴滴/字节/快手/微博等互联网大厂的同学,又有银行券商/军工航天/科研院所和公务员朋友。如果二维码过期,直接联系光舟VX:shiningboat/WB@光舟启航。只有积极交流方能在职场少走弯路,我们在群里等你到来~
    三板斧看懂算法岗 | 拾破烂、搭积木、捏泥巴 - 图5
    长按关注不迷路
    你好,我是光舟,
    北理硕,中农本,计算机科班。
    目前在互联网大厂做算法工程师,
    业务方向是社交媒体数据挖掘,
    包括社交网络用户画像、内容分类和检索等。
    小目标是每周至少三篇原创文章,
    记录前沿技术、职场感悟、人生规划,
    与你共同成长,用AI给人生加分!