深度学习火了后,nlp也开始追求end to end,人工feature越来越少,而模型结构更多是学术在推进。工业界的同学应该做什么才能带来核心竞争力的提升?

相关问题:广告演算法工程师的核心竞争力是什么?


在不同阶段的竞争力要求不一样。从T4到T9的能力进阶路线:

1 实现模型,调参能力

给一个idea或论文,能够快速实现(可以基于开源),并复现结果。

2 实际问题的抽象能力

将实际的繁琐问题抽象为某个典型的NLP任务(比如分类或序列标注),并用成熟的模型来解决。

3 新问题的解决能力

有些问题无法用现有模型解决,需要改进模型或别的方法来解决。

4 经验累积的能力

经过长时间的打磨,不管是使用了高大上的技术还是人工规则,成功开发了一种核心技术,具有不可替代性。这种经历和经验就是你最核心的竞争力。

5 技术路线的把控能力

结合公司的业务,确定团队的整个技术路线。要有适当的前瞻性,不走弯路。正确衡量某个任务的工作量,合理进行团队分工,制定工作计划。


我们组是做搜索的,今天组里还在讨论Elastic Search上市,从系统来讲,ES虽然是开源项目,但并不比我们公司开发了多年的搜索引擎差,甚至在运维和监控方面做得更好。

那搞搜索的工程师是不是就没有价值了,会不会被淘汰掉?

对于信息检索真正的门槛不在于搜索系统(当然那也是很重要的,否则不会值50亿美元),而在于检索词(query)的理解,改写,纠错和用户搜索意图的识别。这部分是ES提供不了的。往往都是大公司的核心资产。百度挖掘过海量的用户搜索日志、同义词、实体词,阿里挖掘过无数商品的品牌词、产品词。换句话说,这些或多或少都和知识挖掘相关,和知识图谱相关,这些领域深度学习爆发之后进展不是特别巨大,还有一定门槛。

所以我想说,能够深入理解、分析、挖掘数据,也算nlp工程师的核心竞争力之一吧。


前一阵找工作,也非常认真思考了这个问题。抛开不谈软实力,比如能吹善写,有领导力这些,就谈技术硬实力。我把能力分为基础能力和高阶能力。

基础能力:

1,纯工程能力。此能力包括但不限于 洗数据,挖数据,写规则,调包式模型实现,线上代码简洁性和效率。

2,模型调参能力。此处和之前不一样的是,input是定的,假设数据已经洗好了,要实现模型了。feature engineering 或者 end2end的深度学习模型模型你能不能把效果调上去。无论是内部数据集还是公开的benchmark,能刷分绝对是一个必不可少的技能。

高阶能力

1,造活儿能力。你必须承认基本所有大公司都是生产力过剩的,僧多粥少,清楚的活儿抢的都不行。如何能够另辟蹊径,看准技术能实现也有需求的活儿非常重要。

2,做有影响力研究的能力。虽然论文已经越来越多了,但是中国做出有影响力的论文还很少。当然,有影响力的研究不光需要论文质量高,还需要后期宣传。

3,分散式系统能力。NLP进入深度学习时代,突出一个数据量大,模型训练慢。无论是大规模word2vec ,seq2seq还是bert都需要系统能力。多机多卡了解一下。此处在说一下bert,此模型非常非常的强,基本是碾压的存在。某些奖金极高的AI比赛,稍微fine-tune一下中文的bert-base阅读理解就可以前几名,公开的benchmark各种被刷爆,内部的数据集也是很难幸免。近两个月,你要是说你能自己把bert训出来,绝对是核心竞争力。


我跟 @吴海波 大佬的看法恰好相反。人肉work在几乎每个落地场景都会大量存在,毕竟实验室里搞的数据集的难度跟现实世界数据集肯定会存在不小的gap,0人肉的话这得要求model有多么强大的鲁棒性呀。。。别说NLP了,其他更简单的领域也做不到一个黑匣子模型彻底解决问题的好吧。另外,很多公司的一些产品用纯人肉方式解决,但是并不能因此唱衰整个NLP行业,只能说这些公司不重视技术或者没钱升级技术,比如国内一些小公司做搜索引擎连神经网路都用不到,但是Google都上线RL了还挺work的。甚至还有一些学术界都没有曝光的黑科技在一些重视技术的公司可能早就内部应用了。

这个题我从NLP应用的角度解释一下我认为的NLP演算法工程师的核心竞争力吧,来给认为「NLP除了机器翻译基本没有落地应用」的小伙伴科普一下。

信息检索

与机器翻译技术相比,我觉得信息检索、文本匹配远比机器翻译重量的多吧?面向整个互联网空间的搜索引擎,比如Google搜索、百度搜索、Bing搜索等,背后的核心演算法难道不是NLP么?是不是太过日常了以至于把它都遗忘了呢;垂直领域的搜索,比如淘宝的商品搜索,tensorflow官网里的搜索框,其背后也是或浅或深的文本匹配技术呀。

很早之前就是基于关键词的粗暴匹配,但是现在深度学习玩起来后,各种黑科技带来检索体验的大幅提升。都不必说各种深度文本匹配演算法,甚至包括很多人唱衰,觉得工业界没啥用的强化学习,你难道不知道Google都拿它来极大的提升搜索体验了么?你说「哈?我咋觉得现在的检索系统还跟以前一样?」那只能说你接触的检索系统确实比较辣鸡,总有很多公司不舍得花钱花精力去升级它的检索系统,曝出来太尴尬,就不举例了╮(╯▽╰)╭

对话系统

开放域对话系统自身很难成为杀手级应用,但是对话在垂直领域早已开始大规模落地发挥威力了呀。每个人都忍受过弱智般的闲鱼、滴滴、各大银行APP、各大通信公司APP的线上人工客服,但是在一些人工智慧发展和落地强势的大厂,不管是FAQ型的(比如关于公司各种流程答疑的),还是任务型的(比如预订会议室),垂直领域的智能客服已经发展非常成熟了,几乎用不到人工的参与,也用不到在手机上下一堆APP各种戳戳戳了,垂直领域对话系统的落地带来的用户体验的提升和人力成本的降低在现在和未来绝对都是一块非常非常大的蛋糕。最起码我是真的受够了弱智的人工客服,真的理解力不如自己写的对话系统。也受够了「人工客服全忙,正在排队,您前面还有101人...」。

没错,对话系统很难自己成为一个产品,但是可以预见的是将来绝对会成为AI应用系统的杀手级组件。为什么物联网的概念凉的那么快?很重要的一个原因是人机介面不成熟。万物交互可以以文本聊天的形式进行,也可以以语音对话的形式进行,但是绝对不可能以下载一堆APP然后在里面戳戳戳的方式进行。并不是每个人都像小夕一样喜欢学习和新事物的好么!

问答系统

虽然问答对话不分家,但是将知识用于问答的难度显然要比用在对话中简单的多。经过这么多年的发展,结构化知识图谱做的辣么大不就是为了拿来用的么!那么多非结构化知识如wiki也不是写著玩儿的好么!你说没见过KB-QA和机器阅读理解的应用?简单搜索了解一下?(此处非软广,只是拿我日常使用的手机APP举例而已)

KB-QA

机器阅读理解:

你看,NLP杀手级应用早已经融入你的日常,帮你过滤互联网上的海量垃圾文本,节省了你大量的时间,但是你还说没见过,那就只是你不细心和不善于发现了╮(╯▽╰)╭

看不见的NLP

上面提到的三个方向是比较容易被注意到的,而其实NLP目前更广泛的价值恰好在于那些看不到的地方。比如通过文本query生成用户画像,为推荐系统提供文本特征,垃圾邮件识别、黄反识别等无处不在的文本分类,输入法里的语言模型,文档质量评分,淘宝商品评论区的情感分析与观点挖掘,知识库的自动构建等。这些早已融入日常很多年。

而这么多NLP任务当然不是一盘散沙,你会发现各个子任务高度相似。反正本质上无非就是分类、序列标注和生成这三大类。而序列标注和生成本质上也是分类。所以其实一个应用方向+底层技术基本可以把NLP的全貌get的差不多。就像几年前的word2vec让DL-based NLP遍地开花,前不久的BERT学习到的文本表示怒刷各大NLP榜单,很容易发现每一次底层技术的突破都是几乎整个NLP领域的玩法革新,NLP的各个你看得见的与看不见的落地应用自然也要跟著更新一圈,向用户体验的奇点爆发前进一大步。最终各个方向在底层的突破上加以互相借鉴,最终各方向的解决方案也会长得差不多。

所以从上面浅浅的而且可能带有偏见的应用分析上,很容易总结出NLP演算法工程师应该具备的核心竞争力:

1、在一个有极大商业价值和潜力的大应用方向(检索、对话、问答、翻译等)上有搞事情的直觉、经验和最前沿的嗅觉;

2、融合规则、ML、DL和数学基础的对NLP基础技术和解决方案的深刻理解(快速建模一个NLP任务的baseline模型和解决方案;快速迁移和适应新NLP应用方向;通用调参直觉与经验);

另外,在比较有争议的分散式训练问题上,我觉得哪怕是为了BERT也要掌握基础玩法。实测如果只是为了满足日常需求的话真的不复杂,为了一条分散式训练而撤hc真的不至于。建议Uber Horovod和它的前身Baidu Allreduce了解一下,不需要HPC的基础也能轻松get。


由于我工作时间不算长,跟上面的老兵比肯定是不行的,我就以小兵的角度抛砖引玉吧,谢邀。

这里面的核心竞争力我个人感觉应该分为两类,一类是工作的竞争力,另一类是面试的竞争力。

工作的竞争力:我觉得最重要的应该是业务问题抽象能力,比如抛出给你一个case你是不是能较快的从业务问题抽象成一个完整的数据清洗+模型选择+训练预测工程化+评测的体系。工业界(我暂指那些比较大的互联网公司,中国top20吧)追求的真不是kaggle那种「拼一枪」的思维,稳定性、时效性、ROI都是要考虑的,有些实习生进了大公司觉得「妈呀为什么大公司不用XX训练还要用我两年前的方法」,其实真的不是不能用,是真怕不稳定出故障啊。

面试的竞争力:面试造核弹这个问题任何公司都有,主要就是看一下你知识天花板在哪里(而不是能力的天花板),这也是为什么学历会占据一定分量的原因,它代表你的学习能力。NLP面试竞争力我觉得主要是「懂得多」和「复现能力」两块:懂得的多就是你一定要跟踪学习最近的好论文,paperweekly推荐的那种就挺好的,没必要吃透,能写个综述就行了;复现能力主要指的是论文是否能有所产出,比如能不能复现个BERT(个人感觉能复现BERT的人现在公司基本都抢著要了...),或者解释一下BERT的原理并用一个开源包实现,里面有什么trick等等。 反而我觉得编程和工程能力并不是主要的考察对象,所以我一直都很反感追著白板编程不放的NLP面试官...

如果你问我上面两个我应该更重视哪个呢?这个很难回答,不过我觉得后者更重要一些,因为前者不管你学习能力多么弱,还是可以明白的,但是后者真的很难做到,最起码大公司title不带「研究」俩字的95%都做不到,而现在的公司,不管规模大小都在争抢这5%的人。


推荐阅读:
查看原文 >>
相关文章