你好,我是周磊。
相信你已经知道,一名AI算法工程师,不但需要基础能力扎实,更要具备良好的工程落地能力。那在NLP工程师面试的时候,你知道面试官会从哪些维度去考察你这两方面的能力吗?
今天我就结合我的一些NLP面试和被面试经验来给你讲一讲。
基础能力
我们首先从基础能力的要求开始。
NLP工程师的基础能力,包括理论基础和编码能力这两个方面:
理论基础,又可以分为基础知识和专业知识两大类。其中,基础知识主要包括机器学习、深度学习、概率和统计、计算机理论等;专业知识考察的主要是,自然语言理解方面的各类任务背景和技术,比如序列标注,序列标注需要根据一段文本序列,标记出每个序列的状态或标签。
编码能力,主要考察基本的编码能力。目前NLP工程编码语言主要使用Python、C++,算法框架主要是Pytorch、TensorFlow或者PaddlePaddle,工程上TensorFlow居多。
在实际面试时,你不仅需要知识储备足够广,更需要在某维能力上足够深。因为通常面试官也希望能发掘出候选人在某维能力上的突出和优势,俗称“亮点”。
接下来,我会分别从广度和深度两方面举例说明,什么样的面试回答更好,好在哪里。
首先,从知识储备的广度来讲,以面试问题“语义匹配都有哪些解决方案?”为例,这题不只希望你能够给出当前SOTA的算法思路和方案,更希望你解决这个问题的经验足够丰富,能说清楚产品的不同阶段、不同条件该用什么算法,哪种算法能达到什么效果,还能够结合算法风险、成本、效率等维度把方案进行区分。
毕竟能服务于产品的算法才有价值,而不同场景对算法的要求是不一样的。
在下面这张表格里,我列出了两种不同的面试回答,好的回答需要将技术进行分门别类,每类算法能解决什么问题、劣势是什么、如何做优化。面试官看重的是解决问题的能力,这个问题肯定有很多不同的解决方法,所以你的回答更应该侧重于如何层次化的解决一类问题、如何去演进技术。
其次从某维能力的深度来讲,例如面试问题:“BERT相比于word2vec有哪些优势?”,好的回答应该按照某些维度对两种算法进行划分,讲清楚每个维度的背景和优缺点。
以上这些问题和个人的回答也只是抛砖引玉,面试官也不一定对所有领域的算法都了如指掌,所以如果你能够以实际项目为背景突出自己的广度和深度,进行有效的语言组织并做一些举例,把问题讲透,往往能够得到面试官的认可。
工程能力
讲完回答基础能力需要体现的知识广度和能力深度的要求后,我们再来看看面试时会考察哪些NLP工程能力。
首先你要清楚,不同行业NLP岗位的要求是不同的。例如在医疗行业中更注重工程算法的稳定性和准确性,可能更关注长文本的NLP能力;在政务行业更关注NLP的鲁棒性,如何按时交付不被客户投诉;而在语音对话类行业更关注短文本。
讲到这里,你是不是想问:不同行业的工程能力要求不同,那我该怎么准备面试呢?
其实NLP岗位的核心要求是一致的。总的来说, AI工程能力的核心是,保证AI技术在交付的整个过程都能够达到客户预期。而在整个过程中的不同开发阶段对岗位要求有不同的侧重,我们把整个过程进一步细化为5个阶段:需求阶段、数据阶段、开发阶段、部署阶段和上线阶段。
接下来我以“如何搭建一个行业客服机器人?”的面试题为例,来给你分析每个阶段的侧重点。
需求阶段
在第一个需求阶段,你要先根据客户或者产品需求明确目标,比如怎么明确AI能力的架构和北极星指标。
来看一个行业客服能力的例子。面试中,你可能会被这么提问:“如何根据行业特点设计一个客服架构?客服衡量的指标是什么?”
这一题需要你有对话系统的项目经验,知道对话系统该如何设计,并能分析行业特点找出一种合适的方案。在下面这张表格里,我列出了两种不同的回答,你可以对比感受一下:
好的回答应该把架构设计按架构图的形式展开来说,每个模块是怎么做的?可以怎么选型?当前技术的瓶颈点是什么?
同时,你也需要结合行业特点来给出具体方案,而不是照搬现成最好的架构,这里就需要架构设计的相关能力。
数据阶段
明确好需求和方案后,就需要针对交付项目进行第二阶段的数据准备了。所谓“Garbage in, garbage out”,对于AI能力而言,其上限往往是由数据的质量决定的。
那么,面试官很可能追问你的一个问题就是:“数据的质量该如何保障呢?”
好的回答应该展现出自己对数据质量的要求,并且能用合理的技术手段来保障质量。
你同样需要结合行业特点来给出具体方案,在数据阶段你需要具备良好的数据分析能力。
开发阶段
第三个开发阶段需要进行模型的多种实验、评测和调优。这一阶段面试官一般重点考察你的调优经验,如何选型不同的算法和策略来提升模型的准确和召回。这里以检索问答为例,一个面试的具体问题是:“如何提升匹配能力?”
这个问题重点考察的是对匹配模型的掌握能力,好的回答应该从工程角度对算法架构进行切分,对每个模块的技术选型阐述出自己合理的思考。
部署阶段
在第四个部署阶段,我们要考虑的是离线模型或在线模型的部署,同时也需要考虑是否跨平台等多种场景,还有并发、GPU并行计算等。这些知识点和技术点已经较为成熟,你可以自行查找。
上线阶段
第五个能力上线阶段,重点考察你如何用技术手段保障线上AI的效果,如何持续提升AI的能力,一个具体的面试问题是:“如何评测AI能力在用户侧的表现,如何确保用户满意度?”
好的回答应该阐述线上数据的价值,以及用合理的技术手段来挖掘数据,优化AI能力。
在上线阶段这个阶段,你需要有大数据的相关经验,比如如何利用Spark等大数据框架进行海量数据的挖掘与分析,如何利用Plato等图计算框架做图挖掘,结合线上数据去归纳分析,从而进行算法调优和迭代。
总结
我在这篇文章里总结了NLP能力考察的两个主要维度:基础能力和工程能力。
基础能力包括理论基础和编码能力两方面,这个部分面试官注重从回答中考察面试者的知识广度和某维能力深度;接下来我重点针对工程能力,结合具体面试问题,展开说明了在五个阶段:需求阶段,数据阶段,开发阶段,部署阶段和上线阶段中面试官可能的考察方向。
以上就是这节课的全部内容,希望能给你带来一些参考价值,也预祝你在NLP岗位的面试过程中游刃有余。
文章来源:极客时间《大厂面试 NLP 工程师,会考察你哪些方面的能力?》