老刘说NLP:焦虑被大肆贩卖下的自然语言处理学习思考

一、话题的由来
近期,有不少朋友来信,来询问如何看待自然语言处理这个方向,表示对当前的状态很不满,希望能够尽快地找到一个合适的方向、快速的学习方式,提升自己的自然语言处理能力,从而找到一个算法岗位的面试算法机会,进而进入到这个行业。从交谈的言语中,可以很清晰地看出,这些朋友的焦虑感、因急功近利而产生的盲从和矛盾,从身份中不乏又在读的学生、刚毕业的研究生、已毕业工作的社会打工人(半路出家)。因此,我在想,是否可以就该话题,从自身的角度,对该话题展开自己的观点阐述,抛砖引玉,欢迎大家拍砖批评。

二、“内卷”下的时代大背景
“内卷”这个词,目前已经成了互联网行业甚至全行业的一个现状,“卷到之处,寸草不生”,“内卷”这一词深刻的揭示了当下竞争压力加大的残酷现实。“内卷”是个过程性的状态,包括参与“内卷”的对象、“内卷”的能力、“内卷”的动作三个最基本的构成要素,内卷的人主动或被动地凭借自己“内卷”的能力段位,在整个“内卷”动作中分别分得一杯羹,达到符合自己段位的“蛋糕”或者“薪水”。因此,内卷能力,是最重要的要素,为了让自己在整个动作中处于不败之地,如何让自己更具备“内卷”之力,甚至成为“卷王”、“无敌卷王”,成为了大家最关心的事情。

不过,我们需要承认的是,“内卷”之力从可实施的角度上讲,可以分成“勤奋”和“天分”(专业性)两种,对于一个工作,前者可以通过花费更多的时间去做,使得自己从而达成最终效果,后者则通过自己天生的“天分”以及专业性,来保证自己在达成最终效果的过程中保持先进性。“勤奋”的人,指的更多是非科班出身的人,因为没有先发优势,因此常常需要花费大量的时间去从头学习,而这种时间往往又被大部分的现有工作所挤占,因此常常表现出呈现出一种“下班后充电”的状态。“天分”的人,则根据自身的专业性,持续发挥自身的优势,并持续追踪当前的技术前沿(因为当下技术更新实在太快,常常会发出这个模型才开始熟悉,新的模型又出来了的感叹)。

不过,我们可以发现,在整个内卷的闭环当中,“天分”的人毕竟是少数,因为每年专业对口、科班出身的人数是有限的,每年毕业生就那么多,而“勤奋”的人占多数,而且所占比例越来越大(因为越来越多的人打算、正在或者已经挤进去),这种比例的增加,使得前者面临着与后者趋于“同质化”的风险,而为了避免这种“同质化”,“天分”的人又开始主动或者被迫地寻找新的增量(如参加重大算法比赛、发顶会文章、参与大的项目、写更多的专利、有大厂经历),从而使得前者越来越焦虑,而这种增量反过来又促使后者更变本加厉地投入到刷比赛、跟前沿模型的浩瀚大军之中,使得自己原本就像海绵里的水一样的学习时间变得愈发珍贵。

因此,为了让自己的“勤奋”更高效,更具有针对性,“弯道超车”、“速成”这些名词开始成为了这些人的一个突破口,为了让自己的增量更具备先进性、不被被动“落伍”,我们直接来到了当下的一个的常态之中。当我们打开知乎、脉脉、公众号、软文、自然语言处理速成机构等发布的文章和消息时,总能看到自然语言处理算法岗灰飞烟灭、算法岗高薪速成宝典,从中我们可以看到关于技术实现、技术前沿的大量心得、报道,抛开其质量参差不齐、知识点碎片化的特点不说,这些文章确实在一定程度上“普及”了一些人的知识盲区,并指出了一些方向。但,从历时的公众号软文发布的文章中来看,我们会发现这样一个规律, 当一个公众号人数达到一定规模后,许多公众号就会陆续推出一些推出花式的自然语言处理高薪算法工程师速成手册、速成课程广告等,逐步转换为一个营利性的行为(这也直接揭示了当下大部分公众号文章的最终目的)。

不过,这种目的,显得无可厚非,因为其本质上是在收取“智商税”或者“懒人税”,因为作为看这些文章的人,在享受公众号文章的同时,就必须要接受自己“懒”以及“知识盲区”的事实。但,如果从整个大环境来看,这些以收“智商税”的培训机构或软文营销号正以不断贩卖焦虑、宣扬急功近利为目的从而获利的举动,确实实实在在地往原本竞争就激烈的就业氛围,添油加醋,并让上述提到的两类人,惶恐不安。没有方向感、感觉要学的东西很多,每天都有新的要学的东西出来,自己学不过来。“脉脉”、“知乎”上动辄年薪百万、应届毕业生年薪40-50万起等“头部非正常式炫富”行为给予人的一种落后感和失败感,使得越来越多人(科班的、半路出家的)加入到高薪算法岗的朝圣之路当中,使得整个行业越来越卷,并且逐步形成了市场中人员素质参差不齐、鱼龙混杂,最终劣币驱逐良币的畸形形态。而这种畸形形态,直接使得行业企业面试官在面试过程中对面试人员要求的不断加码,唯有这样,才能更好的区分出谁优谁劣,这种加码又进一步地使得整个“内卷闭环”越来越饿不堪重负。

三、自然语言处理的“冷”与“热”

前面说到,“带有绝对目标性和功利性的急于求成”,成为了越来越多的人的一种心理负担。自然语言处理算法工程师这个岗位,自然而然地成为了当前大家一直追捧的行业明星,并逐步成为了大家的首选,这是实现高薪、小康水平的最直接的道路,也是不让自己落后于他人,保持持平甚至优越的重要保证。

的确,目前的AI热,使得以自然语言处理算法工程师的薪资比一些传统行业要高出许多,尤其是头部的大厂和创业公司为代表,开出的薪资一年比一年高,这也就必然导致越来越多的人想往这个领域去靠。而自然语言处理之所以热,是因为其在目前的大数据时代,有大量的应用场景(已经落地、正在落地以及想象的无法落地),存在着大量的探索价值,而且现在自然语言处理技术研究和业界落地探索力度不断加大,传统的、机器学习的、深度学习的处理方法不断推陈出新,并且阶段性的有“救世主”的出现(如SVM、CNN、RNN、Attention、BERT、GPT),很实际地提升一些业务的性能指标。直接引起了现在自然语言处理的“学术热”和“投资热”。

不过,“冷热交替”是一个技术和行业发展的一个必经阶段,“自然语言处理”大概率不会很长时间都保持这样一个“热”的状态,作为先行者“CV热”,尤其是在今年以来,已经开始逐步降温,CV界的四小龙,目前长期烧钱的独角兽公司除了云从科技上市之外,其他还并没有能够马上上市的消息,因此,也可以从各种渠道听到裁员等消息,也传出现在AI红利消失、AI泡沫的一些感叹。做算法的人都知道,自然语言处理有不少的算法是从图像处理中引入的,如CNN,并且相比图像处理,天生歧义性很强、解空间巨大的文本处理难度要大得多,从理论上来说,其落地难度不会比图像轻松。因此,我们也可以遇见的是,自然语言处理这个行业本身,在未来几年也会逐步降温,即巨大的红利将会消失,消失的结果是会造成一系列的连锁放反应,即:自然语言处理从业者蛋糕的减少->竞争压力的加大->更加内卷->优胜劣汰不断加码->行业会整顿->人员会分流。人员的分流可能是后期的一个形态,因为当一个行业的劳动力过剩,且行业的价值规模逐步回落至真实估值水平,经过业务检验以及落地试错之后,一些概念的技术将会以泡沫形态退出历史舞台(当然会有一些新的概念出来,形成一种增量,但这种增量不一定会那么快到来)。因此,可以预见的是,大方向上,自然语言处理目前正在处于或者不久即将退出风口,高薪可能已经达到了一个峰值,小方向上,自然语言处理从业人员目前会逐步饱和(优质人员),红利期等待大家的时间已经不多了(因此需要有清晰的定位,做正确的事情比正确的做事更重要)。

四、自然语言处理算法工程师需要的能力
在工作这几年,也陆续充当了面试官的角色,因此,可以从自己从页的角度来说说一个合适的自然语言处理算法工程师,虽然说目前面试是“面试造火箭,工作拧螺丝”,但对于一个企业来招人而言,其面试“造火箭”的方法,是从中选拔合适的人,尽可能规避入职后沟通风险、工作风险的最好方式。下面,就从个人的实际经验出发,谈谈目前一个合适的自然语言处理算法工程师都应该具备哪些特质。
**1、基础理论扎实。**一个企业来招一个人,实际上是要招一个能够干活的人,而这个人能够干活的前提,就是他对干的这个活所依赖的一些基础知识有个大概的了解,以减少一个入职后的培养成本,这是一个风险控制点,基础不牢、地动山摇。比如自然语言处理算法岗,对基础的自然语言处理知识是需要了解的,比如传统的语言模型、中文的词法、句法,目前主流的深度学习方法,如bert系列的工作原理、网络构造以及一些网络的优化方法。当然,需要注意的是,不同的公司、在不同的时期,对一些不同的基础理论知识的要求是不断变化的,因为随着时间的推移、技术的更新,在实际落地过程中所使用的技术是不断变动的,因此,对应的基础理论需要与用人单位实际项目中所需要的技术来对齐。例如,几年前,对BP、CNN、LSTM的要求较高,但现在以BERT、Transformer为主。如果拿着掌握前者,而对后者没有涉及,那大概率也是不行的,因此需要与时俱进。另外,这个基础理论扎实,绝不是简单的调包,或者熟悉一些基本的概念,更多的是对一些模型的算法思想、结构等有清晰的认识。

**2、拥有相关项目实践。**拥有实际的项目是一个用人单位最看重的一点,基础理论扎实奠定了面试者可快速培养、上手来解决实际项目问题的重要基础,而基础理论也也还是停留在理论层面,一方面在实际的项目研发过程中会存在大量的问题,如编码问题、性能问题、数据问题、模型问题等多种意外情况。另一方面,基础理论可以通过书本学习、背诵、速记等方法快速养成,只有通过相应的项目实践才能进一步规避“纸上谈兵”以及“弄虚做假”的嫌疑(只是看过一些ppt、软文或者本地运行过一些github上的项目代码)等。实际上,自然语言处理的项目有很多,当我们打开一些垂直的招聘网站中,我们会发现,自然语言处理的岗位占大头主要包括文本搜索、推荐算法、文本分类、信息抽取、舆情分析、知识图谱、文本生成等几个大块,每一类项目都有对应的一些模型和解决方案,因此在面试过程中所需要的项目经历也不外乎这几类。不过,说到项目这一点,对于半路出家的人或者校招生来说,无疑是处于劣势的,对于前者而言,因为其目前所从事的工作并不是自然语言处理相关的,也就必然不会有相关的项目经验,后者则是因为在学校中课题研究,更多的是理论型的研究。因此,在简历当中,我们可以看到一些简历上通过一些公开的比赛项目或者业余自创业项目来作为补充。这种补充虽然在某种程度上是不合时宜的,加上去也无可厚非。但需要明确的是,这些项目在进行面试应答时,需要做好项目细节刨根问底的准备。例如,关于这个项目的概述、业务场景、解决思路、出现的问题、优化的方向、性能部署等多个方面。因为一个项目通常从提出到上线,会持续几个月至一两年不等,其中可能涉及到的问题是很多的。

**3、业务理解与沟通顺畅。**员工是来执行任务的,是需要在给定一个确定的目标下,要求员工能够发挥各种力量来达成。因此,业务理解能力与沟通能力,是衡量一个员工后续工作开展协作的重要指标。沟通成本往往是一个项目开展十分耗时的部分,小到一些基本的概念细节、达到整体的业务目标,如何对于一个业务无法充分理解,整个工作大概率就会跑偏。因此,自然语言处理工程师在面试的过程当中,是需要保持业务描述清晰,具备业务的分解、问题的分析、问题的定位以及风险评估的能力,并且需要听得进去、不自以为是,能够协作。而对于业务理解而言,最好能够分层级、有条理、有逻辑地描述清楚,并做到逻辑自洽。

四、自然语言处理算法工程师的养成

在当下“内卷”的大背景下,在当前用人单位对自然语言处理算法工程师的“基础理论”、“项目实践”、“业务沟通”上的要求,如何全方位的提升自己的能力,使得自己合格化、标准化,下面就个人的经验,给出几条建议。
1、实践是检验真理的唯一标准。“Talk is cheap, show me your code”,这句话,实际上是业界的一个默认的共识,如果只是看了很多的书、读了很多的论文、参加了很多的学术会议,有很多的idea,但如果不动手实践,那大概率是无法真正转化成自己的一个生产力的。前面说到,目前的知乎、微信软文、csdn等论坛中每天都会出现大量的文章,这些文章绝大多数都是用来“扫盲”的,如果只是看,但不动手实践,那么大概率会长期处于一种懂“ppt”的概念型人才(这种人才在学术界、在科研院所、国企事业单位)中做写本子、写项目申报书的岗位中是有特别需求的,但在业界,其更强调实际的动手能力,因为只有动手了,才能发现其中很多细节并没有那么美好,数据很乱、指标提不上去、在线与离线环节不一样的问题会很多。因此,在实际的工作和学习过程中,一方面,可以试着少看一些软文,多做一些复现或者实践,另一方面,就是有的可看,有的可不看,“看书不买,买书不看”,在当下以通识教育为主的概念型书籍大环境下,有可能还是去看一些比较权威的官方文档,挑一本比较经典的来研读,这样才能不让自己在多个概念之间来回游荡。实际上,算法工程师,实际上是“算法”+“工程师”,从语言学的构词上来讲,“算法”是“工程师”的修饰词,“工程”是算法工程赖以生存的基础,因此,“算法”可以不高大上,但“工程”一定要过硬。

**2、聚焦一个或几个小点深入去做。**前面说到,自然语言处理是一个十分宽泛的概念,涉及到文本搜索、推荐算法、信息抽取、舆情分析、知识图谱、文本生成等几个大块,每个大块还可以进一步细分,例如舆情分析中包括文本聚类、情感分析、文本主观性计算、文本分类、话题发现、话题演化分析等子方向;知识图谱包括本体构建、实体识别、实体关系抽取、实体链接、实体对齐、实体搜索、实体表示等多个细分风向,每个方向都有大量的工作可以去做,而且水特别深,遇到的问题和情况十分复杂多变。一方面,这个细分方向,实际上与一个公司的工种配备是对应的,因为一个项目通常会多个人协作完成,每个人只需要完成其中的一个细分模块即可,另一方面,一个人的经验实际上是有限的,大量的coding工作已经占据了大部分时间,因此往往需要算法工程“有所为,有所不为”,选择一个细分的方向,去展开学习,从基础理论到一些项目动手实践,不断提升自己的能力。另外就是,还需要需要关注语言学本身东西,自然语言处理处理的“自然语言”,如果连处理的对象的不认识,那么实际上就会完全变成“深度学习工程师”了。

3、利用好开源项目多加剖析思考。 当前,是一个知识共享的时代,与图书、博客、公众号、论文这种文字性的学习资料不同,踊跃于github、gitee等平台的开源项目,从coding代码的角度给了我们十分好的学习路径。实际上,github上的开源项目不仅给一些自然语言处理项目的初学者提供了一个好的平台,一些优质的项目、组件也成为了众多公司在实际项目研发过程中的贡献来源(即轮子,很多时候轮子拿来即用,后者做轮子的集成即可,用现有的工具、技术来解决实际的业务问题,提高生产力,因此,需要用好这些开源项目。不过,需要注意的是,作为一个长期致力于开源项目共享的人,在这方面还是有一些感触的,总会收到一些人邮件来问关于一些项目的一些“低级”问题,如项目为什么跑不起来之类(虽然很多项目都是经过本地编译通过才提交的)。这些问题,暴露出了当前开源项目学习者的一个错误学习方法,即clone+run,而不是先做代码review,再去运行。虽然说大多数的开源项目都没有reademe文件,没有关于该项目的任何说明,但如果要学习该项目,则更需要切入到该项目的整体结构当中,分析代码结构的构成,项目代码的思想,项目部署运行的环境。当我们开始一个开源项目的学习时候,应该可以尝试着问自己这7个问题:1、这个项目是在解决什么问题,为什么会有这个项目。2、这个项目的运行环境是什么,需要什么环境依赖;3、这个项目的代码逻辑是怎样的,输入和输出分别是什么,输入和输出的格式分别是什么。4、这个代码每一个文件都是什么含义,解决了什么问题;5、该项目是否能够正确运行,运行部署中是否会存在问题;6、这个项目如果要适配我的数据,完成我的任务,如何进行迁移和嵌入;7、这个项目存在哪些不足,有哪些可以借鉴的点,后期如果我要优化的话,可以提哪些点。这7个问题执行下来,差不多就能够将一个开源的项目内化为自己的一个项目,这也是该项目的最大的价值所在。

4、保持积极乐观心态减少焦虑。 不慌不忙、不骄不躁、坦然以对的心态,是一个健康、舒畅的心情的必要保证。前面也说到反复说到了当前比较卷的一个大环境,并且当前自然语言处理大红利已经趋于高峰这样的情况,使得我们也不得不需要抓紧上车,虽说“天下人皆为利来,皆为利往”,“急功急利”是当下太多人身上所有的标签,这并无可厚非。但,在这个浪潮的背后,我们更需要清晰地问自己,自己是否真的适合做这个事情,自己是否真的有时间来做这个事情,自己是否真的耐得住寂寞,抵得住竞争压力,来经历后续几年可能发生的“浪淘沙”。在整个过程中,切勿要做一些超出自己能力范围以及“明知不可为”的事情,因为这些事情大概率是不会有结果,而且会让自己越来越被否定,越来越缺乏自信。当然,在这个时代,最大的可贵,就是己所不欲、勿施于人,如果自己做不到不焦虑,那么就不要贩卖焦虑,将自己自身的焦虑传递给其他人(包括家人、朋友、同事),这样其实已经丧失了一个社会人生活和工作的意义。另外就是,不要强行给自己贴标签,发现自己的优势(如文科计算语言学专业的人,来做自然语言处理,首先要正式自己专业存在的合理性,发挥好自己的语言学优势,将词法、语法等知识融合到深度学习模型中去,或者将规则pattern那套利用好,做一些可以深度结合事情),也不要将前人的经验与自己的发展做强关联和强绑定,过度的设计和规划自己在自然语言处理上的发展路线,从而丧失自己的主观能动性和特点。

五、总结
本文从围绕焦虑被大肆贩卖下的自然语言处理学习思考这一话题,进行了自己的阐述和思考。包括话题的由来(近期一些朋友的来信)、“内卷”下的时代大背景(当下的一个行业大形势)、自然语言处理算法工程师的能力(从面试官的角度来看一个算法工程师应该具备哪些能力)、自然语言处理算法工程师的养成(一个自然语言处理工程师养成的建议)这几个方面,希望能够给大家一些帮助。不过,正如开篇所说的,这是自己的经验所得,所述不一定正确,欢迎批评,一起讨论。

关于作者
刘焕勇,liuhuanyong,现任360人工智能研究院算法专家,前中科院软件所工程师,主要研究方向为知识图谱、事件图谱在实际业务中的落地应用。
得语言者得天下,得语言资源者,分得天下,得语言逻辑者,争得天下。
1、个人主页:https://liuhuanyong.github.io。
2、个人博客:https://blog.csdn.net/lhy2014/。
3、个人公众号:老刘说NLP
欢迎对自然语言处理、知识图谱、事件图谱理论技术、技术实践等落地应用的朋友一同交流。

你可能感兴趣的:(语言信息处理,知识图谱,自然语言处理,自然语言处理,机器学习,面试)