浅谈算法工程师的核心竞争力
机智的叉烧
目前尚属新人,看到的比较少,但是工作了接近一年,大概知道自己和大佬们的差距在何处,这些其实就是自己不足的地方。来一份自己目前比较高赞的总结:
下面部分内容可能不局限在 NLP 上,而是整个算法圈子工程师的竞争力体现,当然还有针对 NLP 本身的。
现状
现状先说说现状吧,从我 18 年两次校招(额,比较久远了)来看,很多有竞争力的应聘者已经具备基本模型的理解和开发能力,说白了就是算得上“算法工程师”的选手,对认识的模型基本有一定的见解,开发能力虽不如专业的后端、服务端高手,但是学学也是能写几行实现代码,完成实验。所以说自己模型理解有多厉害,多会写代码其实都不能称为所谓的优势,毕竟这些方面不及格的人,其实在这行找到工作都非常困难。
问题的解决能力
问题的解决能力大部分入门的算法都容易把精力集中在模型上,无论是理论还是实践,但是却背离了算法本身所依托的背景。作为工程师而非科研人员,其核心价值在于解决问题而非研究模型,当一个问题能使用简单的规则策略去解决的时候,我们并不应该使用训练时间长、结果不可控、效果风险不明确的模型作为解决方案。
举例子,客服机器人大家都知道,对于算法而言可能就会开始看文本生成、对话机器人的知识了,但是实质上,一个“触发词-回答”的词典就能达到初版上线要求。命名实体识别在很多场景其实没有标注数据,模型根本无用武之地,语言模板规则、词典最大逆向匹配都是很好的方法,不必纠结于模型。
另一方面,解决问题的能力还要体现在逆境上,数据不全、数据质量不高、缺乏训练数据的时候,你要提出你的解决方案,尤其是在新项目下,这种场景很常见,能开天辟地的往往是高手,你具备这些能力才能够进一步进阶,除了研究模型本身,多想想类似“万一有 XXX 情况,这个方法还是否可行,不可行怎么办。
记住,用户对实现方法的高端低端是没有任何感知的,老板也是。
模型的优化能力
算法工程师的工作看着很简单,问题一来加模型调结构上线。
但问题是,如果模型效果不好,你该怎么办?换一个模型,调参?基本也是差不多的效果,大家看论文其实可以看到,在论文里模型的提升基本不会超过 10 个点对吧,所以换模型只能存在于微调中。那你就没辙了?这就是体现算法工程师优势的能力所在。
你可以:看看数据质量、数据量怎么样要不要提升。看看特征是否足够表征个体。标注是否正确。模型特性是否符合问题(例如 RNN 和 CNN 的适用场景)等等。
尤其是在 NLP 领域,整体非常黑盒,整个模型的流程相对固定,基本没有什么干预措施,所以你的选择会变得更少,如何能进一步提升结果,(新增人工特征、优化数据集、优化模型等)这个需要的是你的智慧和经验了。
顺风局谁都会打,逆风局如何化腐朽为神奇才是高手该体现的能力。
工程能力
这个概念有点模糊,简单举几个例子吧:
- 你的算法耗时多少,是否具备多线程的能力。(例如一般而言 RNN 系列模型的耗时都偏长)
- 算法如何部署,在线部分特征怎么构建和传入。
- 原文作者:知识铺
- 原文链接:https://geek.zshipu.com/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%B5%85%E8%B0%88%E7%AE%97%E6%B3%95%E5%B7%A5%E7%A8%8B%E5%B8%88%E7%9A%84%E6%A0%B8%E5%BF%83%E7%AB%9E%E4%BA%89%E5%8A%9B/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com