NLP算法岗一年半的工作总结--聊聊什么才是NLP算法工程师的核心竞争力

首发公众号:【 NLP从入门到放弃】--日常更新技术分享

先简单自我介绍一下,我任职在一家社交公司,做NLP算法工程师,主要做文本分类,序列标注,文本相似度方向的工作,也做过搜索/推荐方向的需求。

工作快有一年半的时间了,在这一年半的时间里,我在工作的同时,一直都在思索,究竟什么才是算法工程师的核心竞争力,怎样才能避免刚入行就不停被灌输的那个35岁中年危机。

我看过很多别人的经验总结,结合我自己的工作经历,慢慢有了一点自己的感悟,想要分享出来,希望对大家能有帮助。

我用一句大白话说一下我自己对核心竞争力的总结就是:不同的场景,挑选合适的方法,获得最大的效果。

这句话很浅显,但是想要做到绝非没那么简单!!这需要我们长年累月的经验积累和总结。

接下来,我会模拟一个工作场景,讲讲究竟核心竞争力体现在哪些方面,以及怎么才能不断提升自己的能力!!

0. 背景

假如现在接到了一个新的业务方的需求,你第一步要做什么?

打开冰箱,把大象...啊,不对

1. 需求定性

首先第一步,我们需要对这个需求定性,定方向,它是属于文本分类任务?命名体识别?还是机器翻译?不同的方向我们使用的方法和侧重点就会不一样。当然,很多时候一个需求不仅仅是一个任务,多数情况下是多个任务的结合,这个暂且不论。

2. 调研

定好方向,比如是关于一个文本分类的任务,接下来是要做调研。

调研主要是分为两个部分:数据和模型。

调研数据:对于一个算法工程师,处理数据绝对是占据一天绝大部分时间,很多人调侃自己是 SQL BOY 。但是我想要说的,数据决定模型的上限,这句话绝对是真理。只有真正的了解我们的数据,才能在接下里的任务中作出好的结果。

你需要知道你的数据量级大概是多少;不规范的数据多不多;需不需要做数据增强,针对当前这份数据哪种数据增强技术可能效果会不错;有哪些特征可能组合起来会有用等等,这些都需要在调研数据的时候值得我们仔细思考。

这里插一句,如果数据很不规范,在这个时候你就要思考是从模型下手还是从数据本身下手,各自有什么合适的方法。比如你可以看看这些不规范的数据究竟有什么特点可以利用。比如是不是可以不分词,而只是使用基于字的模型,等等吧。

在数据处理这个过程中,因为现在很多公司数据都存在hive我们会用到 MapReduce,Hive,Spark 等等大数据开发工具,掌握这些工具绝对可以让你轻松搞定数据处理。

调研模型: 宗旨就是根据不同的要求,使用合适的模型。你需要综合各方面的条件作出决策。如果业务方需要高准确度,选择什么模型能满足要求。如果业务方需要高响应速度,选择哪种模型合适。针对当前这种数据,哪种模型可能效果会不错。

还是以我们这个文本分类这个需求为例,如果看中速度,FastText会不会更好一点,或者TextCNN怎么样?如果要求精度,那么Bert可以吗?或者宽松一点 Albert怎么样,FastBert怎么样?

在这个过程中,你需要去读大量的论文和博客,看看别人的经验和总结,帮助自己作出最终的决定。

3.训练/优化模型

模型的训练和优化,一般来说占据的太多的时间。有句话忘了在哪里看到的了,说是处理数据花了两周的时间,训练模型花了两个小时。听起来可能有点夸张,但是是这么个意思。在这个过程中,你的主要工作就是需要使用代码实现模型,去思考怎么样才能更高效的运行这个模型,需要去思考怎样才能获取更好结果?

比如说,使用 GPU 进行训练模型,你需要熟悉模型/数据并行化的知识。比如说,针对特定任务,修改损失函数,修改优化函数,等等吧。

4.部署上线

我们需要为开发人员提供接口,从而可以处理数据返回结果。这个时候,你就要思考你的接口响应速度怎么样?做多可以多少并发?针对这种情况,自己做一个简单的压测就可以。一般来说,你需要掌握 grpc,kafka,flask,nginx 等常用工具。当然,这些你不需要精通,如果需求方对接口要求很高的话,你可以使用一些成熟的开源框架就可以,所以,不用太慌。

好了,大概就是这样,整个流程我们有着极强的耐心,而且要不停的从过程中积累经验。

5. 总结

总结来说,要想提高自己的核心竞争力,做到两个方面:算法+工程 。

对于算法,要深入底层,把手弄脏。算法模型重点在质量,而不是数量。既然要搞一个模型,就要彻底把他搞清楚,要把它掰开了揉碎了琢磨,不要似是而非。

对于工程,你需要有大数据开发能力和模型训练部署能力。

两个都要抓,两手都要硬,才能无往不利。其实,在这方面,我做的也很不好,人都是有惰性的,大道理说起来一套套的,做起来就是个行动的矮子...然后我痛定思痛,想逼自己一把,于是几天前就建了两个仓库。

一个是关于NLP各种面试题的仓库(这个我自己的笔记还挺多的,慢慢上传吧,我自己也再复习一遍):

github.com/DA-southampt

一个仓库是关于各种模型是如何在各大公司实战落地的。地址在这里:

github.com/DA-southampt

对于这个仓库,我也没想到,这两天star数目对于我来说还挺多的。

我自己思考,可能大家都有这么一个痛点,只知道模型是啥没什么用,还得知道模型真正怎么用才是王道。

所以感兴趣的朋友可以去看看,如果能给大家带来一点帮助,就很开心了,我会持续更新,争取每篇文章都带有新的思考,而不是新瓶装旧酒。

打完收工,点个赞,这样我在天堂超市可以开心的多喝几瓶!鞠躬感谢!

你可能感兴趣的:(自然语言处理,python,NLP,算法工程师,数据,模型)