工业界中NLP(自然语言处理)算法工程师的核心竞争力是什么?

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

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

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

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

编辑于 2018-11-16



作者:霍华德
链接:https://www.zhihu.com/question/296661606/answer/532331662
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

-------------------------------------------------------

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

1 实现模型,调参能力

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

2 实际问题的抽象能力

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

3 新问题的解决能力

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

4 经验累积的能力

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

5 技术路线的把控能力

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

编辑于 2018-11-16



作者:邱锡鹏
链接:https://www.zhihu.com/question/296661606/answer/532312612
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

-------------------------------------------------------

作者:机智的叉烧
链接:https://www.zhihu.com/question/296661606/answer/1048388903
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

面部分内容可能不局限在NLP上,而是整个算法圈子工程师的竞争力体现,当然还有针对NLP本身的。

现状

先说说现状吧,从我18年两次校招(额,比较久远了)来看,很多有竞争力的应聘者已经具备基本模型的理解和开发能力,说白了就是算得上“算法工程师”的选手,对认识的模型基本有一定的见解,开发能力虽不如专业的后端、服务端高手,但是学学也是能写几行实现代码,完成实验。所以说自己模型理解有多厉害,多会写代码其实都不能称为所谓的优势,毕竟这些方面不及格的人,其实在这行找到工作都非常困难。

问题的解决能力

大部分入门的算法都容易把精力集中在模型上,无论是理论还是实践,但是却背离了算法本身所依托的背景。作为工程师而非科研人员,其核心价值在于解决问题而非研究模型,当一个问题能使用简单的规则策略去解决的时候,我们并不应该使用训练时间长、结果不可控、效果风险不明确的模型作为解决方案。

举例子,客服机器人大家都知道,对于算法而言可能就会开始看文本生成、对话机器人的知识了,但是实质上,一个“触发词-回答”的词典就能达到初版上线要求。命名实体识别在很多场景其实没有标注数据,模型根本无用武之地,语言模板规则、词典最大逆向匹配都是很好的方法,不必纠结于模型。

另一方面,解决问题的能力还要体现在逆境上,数据不全、数据质量不高、缺乏训练数据的时候,你要提出你的解决方案,尤其是在新项目下,这种场景很常见,能开天辟地的往往是高手,你具备这些能力才能够进一步进阶,除了研究模型本身,多想想类似“万一有XXX情况,这个方法还是否可行,不可行怎么办”

记住,用户对实现方法的高端低端是没有任何感知的,老板也是。

模型的优化能力

算法工程师的工作看着很简单,问题一来加模型调结构上线。

但问题是,如果模型效果不好,你该怎么办?换一个模型,调参?基本也是差不多的效果,大家看论文其实可以看到,在论文里模型的提升基本不会超过10个点对吧,所以换模型只能存在于微调中。那你就没辙了?这就是体现算法工程师优势的能力所在。

你可以:看看数据质量、数据量怎么样要不要提升。看看特征是否足够表征个体。标注是否正确。模型特性是否符合问题(例如RNN和CNN的适用场景)等等。

尤其是在NLP领域,整体非常黑盒,整个模型的流程相对固定,基本没有什么干预措施,所以你的选择会变得更少,如何能进一步提升结果,(新增人工特征、优化数据集、优化模型等)这个需要的是你的智慧和经验了。

顺风局谁都会打,逆风局如何化腐朽为神奇才是高手该体现的能力。

工程能力

这个概念有点模糊,简单举几个例子吧:

  • 你的算法耗时多少,是否具备多线程的能力。(例如一般而言RNN系列模型的耗时都偏长)
  • 算法如何部署,在线部分特征怎么构建和传入。
  • 你写的算法复杂度多少,有没有优化空间。(例如用Trie树代替便利词表实现检索功能)
  • 模型的更新是热更新还是需要重启服务,生效时长等。

具体的难以三言两语说清,欢迎大家看看我这篇文章:

机智的叉烧:ML&DEV[7] | 所谓算法工程师的工程能力是什么意思​zhuanlan.zhihu.com图标

对公司,论文始终不赚钱,要赚钱始终是靠能跑的起来让用户用的产品,所以对于算法工程师而言,首先是工程师,然后才是算法。

知识更新迭代的能力

这一行知识更新很快,要始终保持前言其实很难。虽说工业界不见得每个项目都是bert走天下,甚至不能说是“前沿”了。但是你也知道,这是目前公认大部分领域的最佳结果,那你就得会,甚至要懂,知道里面的positional encoding,知道里面的多层encoder-decoder,知道transformer的原理,面试上肯定的,但是工作中你也要知道这点,方便你分析结果,甚至做出针对问题的改进。

要紧跟时代发展,你还是要坚持看论文,理解论文,知道一些新的解决问题的思路,例如这个positional encoding就很能说明问题,这是一个可以代替RNN系列来处理序列信息的方法,这个能不能用在TextCNN上等等,这就会成为你工具百宝箱中的一个。

NLP工程上的地位和难点

回到NLP,其实NLP在现实应用上并非是一颗明亮的星,而是承担的一个辅助的作用,很少独立存在,为核心问题提供更多信息的一个方法,哪怕是对话机器人这种重度nlp的任务,也不是以nlp为唯一技术点的。

在我看来,目前nlp主要承担语义理解方面的功能,文本分类、实体识别、语义相似度等是们目前最为常用的工作,他在很多大系统中有稳定的一席之地,如搜索(理解query含义)、推荐(理解文档内容)、对话(理解用户需求)等场景。

至于难点,我列举一下:

  1. 很多场景下数据其实并不支持我们使用模型,数据量问题、数据质量等。
  2. 工程性能上,可能会不允许我们使用太过重型的模型,bert之类的真不是谁都跑得起、训的起的。
  3. 由于调研时间不定,很容易成为团队项目安排上时间拖后腿的角色,尤其是NLP这种黑盒性比较强的任务上。
  4. 边缘case更加多又更突出,如“我想过过过儿过过的生活”,这种case非常常见。

然后一一来对应上面难点,提炼出我们需要的能力:

  • 无模型或轻量模型下解决问题的能力。(12)
  • 工程上举一反三的能力。(3)
  • 任务的取舍能力与安排能力。(34)

这些就是我理解的,高于模型和技术本身,我们需要的能力。

以上。

发布于 03-01

-------------------------------------------------------

作者:Dr.Wu
链接:https://www.zhihu.com/question/296661606/answer/532524497
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

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

基础能力:

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

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

高阶能力

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

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

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

编辑于 2018-11-16

-------------------------------------------------------

作者:钨额音
链接:https://www.zhihu.com/question/296661606/answer/1302761497
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

笔者在创业公司工作过三年,做过一阵面试官。现在人在学术圈。抛砖引玉,如果说得不妥欢迎大家拍砖。

这是一个很好的问题,也是每个算法工程师应该想清楚的问题。

我会先分析一下业务问题中和算法相关的问题链。以此为基础分析一下学术界和工业界关注点和解决问题方式的区别。这两段分析其实说明了工业界朋友们可以构建的独特壁垒,以应对每年大量毕业生的竞争。最后再具体罗列一下我认为的算法工程师的核心竞争力是什么。

解决业务问题和算法相关的问题链

1. 是产品设计问题还是技术问题

举个例子,同样是解决快速获取相关信息的问题,如果产品定位是检索系统,受过搜索引擎教育,用户的问句自然会带上重要的关键词,这个时候简单的fasttext和textcnn就可以解决;反之如果是定位成"智能客服",那用户就会提供信息不全的问句,也会问很多奇奇怪怪的问题,这个时候可能需要解决基于常识和推理的意图识别、多轮、闲聊对话、开放域问答等问题。

2. 怎么formulate成一个预测问题

输入输出是什么?输入是否能够完全预测输出?会不会缺特征?有没有更容易解决的proxy problem?

在成本限制下怎么获得数据?怎么控制数据的噪声?能否构建数据闭环,即用户对产品的使用能够持续产生优化模型性能的数据。

怎么构建一个可以线下迭代的评判指标?评价指标和业务目标是否一致?

3. 用什么模型,怎么训练,怎么解corner case?

4. 在资源(内存,算力,QPS要求)限制下怎么部署

用简单模型如线性分类器、树模型还是用复杂的神经网络?怎么样通过模型蒸馏、剪枝和量化压缩内存占用和计算量?要不要通过底层优化减少cache miss以及kernel launch来提高计算速度?使用GPU serving还是CPU serving?

5. 怎么持续运营

遇到新的badcase怎么快速干预?怎么出于求生欲处理敏感内容?怎么在不影响线上运转的情况下更新模型?

学术界和工业界的区别

学术界通常不会考虑算法的上游(业务和问题定义)以及下游(部署和运营)的问题,甚至会作出一些不切实际的假设以绕过一些问题。而工业界则因为需要同时关注到整条问题链,受到成本和业务目标的限制 -- 但是在限制范围内闪转腾挪的空间会比学术界大一些。同样一个少样本带来的性能问题,学术界会将其抽象成few shot learning并花大力气去解(guan)决(shui),而工业界则会花一点钱雇几个数据标注员标个几千条数据,直接训练通用模型并上线。

对于一个方案,学术界更多地关注木桶的长板;工业界中考虑到产品体验会需要解很多corner case,在总体性能达到要求后更多关注木桶的短板。

学术界鼓励原创新颖,鼓励冒险,关注长处,既会有很多严谨可靠的文献,也会有华丽吸引眼球的工作 -- 它们效果不一定好,更不用提为了恰饭而发的灌水文和噪声文了;而工业界鼓励简单有效,鼓励稳定产出,所以会更倾向于做一些组合创新,或者是大力出奇迹的工作,把真正有效的方法组合起来并暴力把效果怼上去。

算法工程师的核心竞争力

1. 和人沟通、打交道,从而把自己(部门)的工作sell出去,把潜在有影响力的业务抢过来(发掘出来)的能力。

这个能力和职级是强相关的。之前自己身边便有例子对比过,人在oppo的老上司也有类似的观察。

2. 对从业务问题到部署整个问题链的sense。

这是多维度解决问题的能力,不仅能更有效地达到业务目标,也能从上游出发避免团队做一些注定失败的无用功。

3. 算法能力

算法能力的积累是为了让你

  1. 能够判断一些技术路线是否靠谱,做好技术路线选择以及预研方向的布局(如果有多余人力的话)
  2. 从噪声巨大的文献海中做好剪枝,帮助团队避免无用尝试
  3. 有效地做好组合创新,在组合创新不够用的情况下跳一跳做一些原创创新
  4. 快速定位准确率的瓶颈,使用有效的调参经验快速将准确率做上去
  5. 在需要的时候快速熟悉一个新的领域
  6. 将业务问题转化成合理的算法问题

4. 工程能力

工程能力的积累是为了让你

  1. 在技术驱动业务的场景下,快速搭一个能用的demo以说服业务爸爸、产品爸爸和甲方爸爸用你的方案,或者说服老板大爷分资源给你推进业务线。
  2. 在业务驱动技术的场景下:
    1. 把东西做出来
    2. 在满足准确率的要求下优化模型的资源占用
    3. 加快迭代的速度:减少返工,用自动化提高效率
    4. 熟悉如何使用不同的工程团队的接口,提供胶水代码帮助他们把模型上线
    5. 将模型部署和运营傻瓜化,避免无意义的返工

编辑于 06-28

-------------------------------------------------------

作者:DASOU
链接:https://www.zhihu.com/question/296661606/answer/1291161131
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

写了一个文章,搬运过来,原文:

https://zhuanlan.zhihu.com/p/149338865​zhuanlan.zhihu.com图标

先简单自我介绍一下,我任职在一家社交公司,做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各种面试题的仓库(这个我自己的笔记还挺多的,慢慢上传吧,我自己也再复习一遍):

https://github.com/DA-southampton/NLP_ability

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

https://github.com/DA-southampton/Tech_Aarticle

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

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

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

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

编辑于 06-21

-------------------------------------------------------

作者:黑白极客
链接:https://www.zhihu.com/question/296661606/answer/530148175
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

这个问题也是我不停思考的问题,现在从我个人的角度来总结一下我认为的NLP算法工程是的核心竞争力:

  1. 技术能力。毋庸置疑,工业界的算法工程师首先是一个技术岗位,因此技术能力必然是核心中的核心。技术能力体现在两个方面:工程(编程)能力和算法能力。

为什么工程能力如此重要,至少我认为目前算法的大热很大程度上离不开工程的优化,工程优化使得许多算法idea能够顺利落地,如果不想成为一个调参侠或炼丹师,那么“Talk is cheap. Show me the code!”。不能读懂实现算法的代码,很大程度是在耍流氓。

NLP算法能力我认为第一体现在系统性,见过不少人沉迷于深度学习,word2vec、cnn、rnn信手拈来,而对于传统的自然语言处理技术却不甚了解,例如对分词、词性标注和句法分析等技术细节不能做到知其所以然。传统技术中蕴含了许多建模的关键,例如对语言标注数据的定义和对语言建模的方法论,系统性的理解才能有助于在业务落地时减少试错的成本。其次,算法能力还体现在对数据和业务的理解,不存在最优的算法,但是存在某个时间点最适合的算法,在开源的大环境下,算法应用的门槛可能越来越低,但是对业务和数据的理解是不能短时间替代的。

2. 学习能力。在当前的环境下,任何职业我都离不开学习能力,而NLP算法工程师面对着一个快速发展且难度指数较高的行业,学习能力必然是保持竞争力的源泉。

剩下一点点人生经验:

3. 学历。学历或许和能力并不是绝对的正相关,但是这个行业当前严重的偏爱学历(被投资人鄙视的经历此处不表~~),因此尽快的提升自己的学历有助于长远发展。

4. 人脉。去认识更多的大牛,和他们交流。

5. PPT。职场升值加薪利器了解下?首先,NLP当前应用的可用程度有目共睹,那么你需要让老板有信心这个东西有朝一日能守得云开见月明。这样你的老板才懂得怎么去游(hu)说(you)投资人~~这样,才有人给你的信仰充值啊!!!~~~~~~~~

以上。

发布于 2018-11-12

-------------------------------------------------------

分为几个方面:算法能力、工程能力、业务理解能力、沟通能力。

算法能力:没这个都过不了面试。

工程能力:包括算法引擎和数据处理和分析能力。强的话可以自己掌控工程,快速迭代,弱的话就得依赖别的工程同学,沟通成本大。

业务理解能力:技术最终是服务于业务的,而算法更要和业务紧密贴合,对业务的洞察是区分搬砖工和建筑师的分界线。业务理解能力过关是高阶技术人员要成为leader的必备条件。

沟通能力:技术合格,业务理解透彻做出来巨牛逼的策略或产品,最终想扩大影响力还是要推广出去。所以这里需要有一定的沟(chui)通(bi)能力,让其他人知道自己或者团队做的事情,就是营销能力。这个非常重要,见过一个哥们技术挺弱,但是推广能力巨强,然后把自己团队的技术方案推广到了公司的好多业务线,然后顺利晋升的。不得不说,这也是为本团队的业绩做出了突出贡献,所以晋升大家也是服气的。

算法人员最终的竞争力往往是f(技术能力)*g(业务理解和沟通能力),在算法和工程上的投入是要持续长期的,在业务理解和沟通上的投入也是必不可少的。

编辑于 2018-12-18



作者:XbtLin
链接:https://www.zhihu.com/question/296661606/answer/554870708
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

-------------------------------------------------------

作者:JemeryChang
链接:https://www.zhihu.com/question/296661606/answer/551572372
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

下面列举了机器之心对于Bengio等大神的采访链接,里面一共提出了四个问题:1、你能否列举困扰NLP领域的三大难题。2、如果必须选择一个,您认为过去十年 NLP 领域最有影响力的研究是什么?3、您觉得有没有什么把 NLP 领域带向了错误的方向?4、您对刚启动项目的 NLP 研究生有什么建议吗?

NLP前路何在?Bengio等27位NLP顶级研究者有话说​mp.weixin.qq.com图标

我通过我的工业界的实习经验以及与我的leader聊天得出的结论是:目前NLP领域马上进入黄金时代,你需要做的是将其与其他的学科进行进行交叉,也就是所谓的落地。业务部门或许并不需要你能够将某一个单一的问题准确率提升多少,但是需要你能够面对多种交叉问题,提出自己的见解以及解决方案。

总结来看的话:

工程方面:

1、能够熟练使用常规的框架,尤其是tensorflow,其虽然很灵活,用起来也没有pytorch或者是keras那么简单,但是其背后有google的支持。

2、能够熟悉常见的机器学习方法,随着公司内部的基础平台的推广,将来所拿到的或许只是文本提取出来的特征,这个时候你的机器学习功底会大有用处。

3、掌握一定的平台开发能力,因为,你做NLP如果是不想做单纯的研究的话,那你大概率会给业务部门做支持,这个你时候你开发一个NLP平台是一劳永逸的事

学术方面:

1、能够紧跟学术的前沿研究,保证自己能够获取第一手的方案,同时也可参加一下ACL这种会议,对于你的学术圈的人脉扩张也很有用。

2、熟练的语言理解以及归纳总结能力。简单来说,就是你的数据敏感度,你如何可以用一个标签就完整的概括一类问题,这个是一种能力,也是你在业务中最直观的体现。

编辑于 2019-01-01

-------------------------------------------------------

作者:吴海波
链接:https://www.zhihu.com/question/296661606/answer/532572546
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

说明下,这个问题是我提的,也是长期困扰自己的一个问题。本来一直没有人回答,最近突然多了很多关注,看来被大佬翻牌了。

我个人并不擅长NLP领域,并不是说这方面的知识储备少,而是没有做出比较像样的成绩。NLP不像广告、推荐等业务,每次模型迭代都能带来线上的反馈,比如收入推升,ctr提升等。这几年做query改写、分词、相关性等,有大量dirty的人肉work在里面,也不好意思说是核心竞争力。

这几年招聘NLP同学的经历可以说是很不顺利,面完候选人,常常问自己一个问题,他对于我们团队会带来什么增量,往往难有正向答案。可能厉害的NLP同学都躲在大厂里不出来吧。

有一段时间,我觉得NLP应该更看重理论背景,比如Paper的质量。但对于我们这个级别的公司,要求太高了。并且,落地不容易。听说百度做了些NLG的应用,辅助作者写作,不知效果如何。也听说大厂老板对目前的智能音箱的能力不满意,NLU也并不美好。

@吴俣

同学提到分布式的工程能力,特别提到了Bert。确实算力是未来机器学习的核心竞争力,但对于大部分公司招聘来讲,这个不现实。对于个人来讲,当然是魔武双修价值高,但对于公司来讲,能通过分工把问题解决就行。以目前的形式,加上这个要求不如把hc撤了。

回看目前深度学习在NLP的杀手级应用,可能也只有翻译(如有补充,欢迎讨论),大部分的技术并不出彩,相关性上,deep的model并没有压倒性的优势(求打脸),智能客服在多轮上依旧堪忧,微软小冰已经是业界顶级,用下来感觉就是挺厉害,但又有什么用呢。没有足够多的杀手级应用,就没有足够多的行业标准,导致难以评估其能力水平。

最近觉得,可能是自己对NLP的预期太高了,其实技术还没有到那个点,大家还处于八仙过海各显神通的阶段,除了关注NLP本身的技术积累,更多的应该是关注对问题的思考、对业务的理解。

@霍华德

同学提了搜索引擎来类别,正好能说明一个事情,任何行业是有生命周期的,搜索引擎的快速发展期已经过去了,至少10年前的搜索引擎比现在值钱,竞争力高多了。而目前的NLP,可能还处于初期,不知何时会迎来大发展,大家任重而道远。

先这么多,以后想到再补充,希望有更多的大佬来讨论。

编辑于 2018-11-16

-------------------------------------------------------

工作了几年,总结下来算法工程师的核心竞争力就是不可替代性,其中包括几个方面:

  1. 技术能力的门槛,对于给一个任务能够完成好,这里并不需要你技术调优到极致,能保证达到产品要求,事事有回音,并且能够稳定运行就很不错了,当然这里你要算你优化的边际成本。
  2. 对有业务的理解,抓主要矛盾的能力,这也是相比于研发,运维等工种,算法工程师最多接触的问题。这部分在学校里很难体会到,不同公司也有不同的风格,比如运营主导还是产品主导,原本的需求经过重重传导是不是背离了起点,其实就是替产品或者运营更多的思考。
  3. 掌握上述技能,再接下来说不可替代行的两个途径:一种是赶上好机会,参与或者负责公司关键项目,离开你暂时不能转,猎头可以定点挖你的那种。或者是在公司有广泛的人脉,你走了能带一堆人走的那种。

说白了企业在不断的和员工博弈,如果计算出新招一个人来取代你成本比你当前离职的成本低很多的话,那么就很危险了,而且当前的github里各种开源框架极大的降低了算法门槛,所以建议更多的算法工程师沉淀到业务中,毕竟业务才是公司立足的根本,技术不是。

编辑于 03-03



作者:南枫
链接:https://www.zhihu.com/question/296661606/answer/1052181061
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

-------------------------------------------------------

个人感觉:

  1. 算法工程能力:实现算法,调参并获得较好结果
  2. 建模能力:面对新问题能够挑选较合适的模型实现并获得较好结果,对领域技术有一定积累
  3. 业务积累能力:能够理解业务提出想法,快速实现并获得结果,快速迭代积累经验
  4. 管理能力:能够根据经验,提出建设性意见,确定技术路线,分工,并且获得较好结果
  5. 领导能力:把握整体,对客户价值能够有很深入理解

一层一层往上,拥有的越多,核心竞争力越扎实

发布于 2019-02-02



作者:匿名用户
链接:https://www.zhihu.com/question/296661606/answer/588021049
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

-------------------------------------------------------

作者:卢军
链接:https://www.zhihu.com/question/296661606/answer/581804134
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

看了以上大佬的回答,受益匪浅,深受启发。也来总结一下,作为自己今后学习工作的参考。工业界的自然语言处理算法工程师顾名思义是一个技术岗位,因此技术能力肯定是最重要的。从各个公司的招聘要求可以看出其基本的技能包括:1、熟练掌握自然语言处理相关理论与技术方法;2、熟练掌握使用java和SQL,至少掌握一种脚本语言,并具备扎实良好的数学基础;3、熟悉中英文分词、词性标注、实体识别、句法分析、自动文本分类,关键值提取等技术,熟悉语义分析方法(相似度计算、本体理论、语义推理等);4、良好的数据分析挖掘能力,能够从数据中发现规律。更高一点的要求还包括:能够从复杂的业务场景中进行算法选型、算法优化并不断提升效果,使其能够真正应用在商业环境;具备良好的沟通能力,成为商业智能的驱动者。个人以为每个公司的招聘要求基本都是实际工作中需要用到的,因为他们都必须为每一个要求付费,所以应该比较有参考价值。

另外我想通过BERT的成功,从另一个角度来谈一点对NLP领域核心竞争力的看法。2018年,谷歌公司开发的BERT语音模型在11个NLP任务中刷新了成绩,效果确实惊人。各大互联网自媒体上大师们的各种口灿莲花、脚踩祥云、爆款刷屏、如假包换的介绍把本人直接整晕了。最后还是只有直接看原论文(论文原文:https://arxiv.org/abs/1810.04805),来了解一下这个BERT究竟是何方神圣。记得小时候看电影,本领高强,宝贝众多的妖怪出场前往往都是以恐怖诡异的音乐配上黑云腥风、飞沙走石来做铺垫,这次打开原文以前,我也是屏住呼吸、瞪大双眼,然后一口气读完全文。感觉被骗了,认真再看一遍,确实如此,想象中的猛禽野兽变成了一只小花猫。BERT模型的全称是Bidirectional Encoder Representations from Transformers,它是一种表征语言模型,是基于微调的多层双向Transformer编码器,其中的Transformer与原始的Transformer是相同的。那么为什么采用“bidirectional”的方式呢?因为在预训练语言模型来处理下游任务时(比如完形填空问题),我们需要的不仅仅是某个词左侧的语言信息,还需要右侧的语言信息。BERT语言模型的训练主要包括两个步骤,首先是预训练,其目标是构建语言模型,BERT使用两个新的无监督预测任务,分别是Masked LM和Next Sentence Prediction对模型进行预训练,Masked LM主要方法就是随机遮挡文本中15%的token,然后训练模型进行预测;而Next Sentence Prediction就是让Transformer模型在训练集上的语句对中,判断哪些语句对是连续的,哪些对子不连续。最后做针对具体任务的模型输出微调(fine-tuning)。然后就完了,简单吧,基本技术思路就一条,利用语言模型预训练然后再fine-tuning,连双向编码器都是用的现成的,但谷歌把它做到了极致,这可能也是核心竞争力的一个重要组成部分吧。

最后,个人感觉所谓核心竞争力还与个人的目标是高度相关的。比如7、8、9的目标就是生存,4、5、6的目标是满足轻奢、优雅、舒适和自由,而1、2、3的目标往往是超越自我,创造历史。目标不同,所需要的技术肯定也会有很大的不同。因此,脚踏实地,各得其所应该就是最好的结果。如果对自然语言处理(NLP)和AI感兴趣的话,欢迎关注一下由我们团队创作的,正在本人知乎主页上连载的《智能机器人》一书,最后祝大家新年快乐,万事如意,谢谢。

发布于 2019-01-25

猜你喜欢

转载自blog.csdn.net/weixin_42137700/article/details/107653212
今日推荐