百度 NLP 技术在智能招聘中的应用研究
分享嘉宾:秦川博士 百度人才智库实验室(TIC) 人工智能研究员
编辑整理:于晓涛 农银金科
出品平台:DataFunSummit
导读: 人才是企业发展的核心竞争力,人才管理更是企业最具竞争力的武器。传统招聘中,面临着招聘成本高,效率低等问题,将NLP技术运用在智能招聘领域可以有效地提升企业人才管理的效率。
本文分享的工作包含运用语义匹配模型,主题模型,以及变分自编码VAE为基础的改进模型对招聘过程中的人岗匹配、面试辅助以及招聘文本表征问题做了探索和分析。分为以下四个部分:① 智能招聘背景;② 智能人岗匹配;③ 智能面试辅助;④ 招聘文本表征。
01 智能招聘背景
1. 招聘的重要性
人才是企业、组织、社会发展的核心竞争力。习总书记更是多次在各种组织大会上强调了人才兴国,人才强国的重要意义,指出我们应该寻觅人才,求贤若渴,发现人才如获至宝,举荐人才不拘一格,使用人才各尽所能。
戴维•尤里奇(Dave Ulrich),人力资源管理的开拓者认为,对于一个企业,最具有竞争力的武器实际上是组织,也就是人才的聚合,包含了员工的学习能力,整体的组织反应速度等。人力资源管理的使命就是用一些经济学与人本思想的指导,通过招聘,遴选,培训等等的管理形式,对组织内外相关人力资源进行一个有效的运用,从而满足组织当前及未来的发展需求。
企业的人才管理可以分为“选”,“用”,“育”,“留”四大方向,其中选才也就是人才招聘是整个人才管理当中的首要任务,它涵盖了企业从吸引,筛选,招募合适人才的整个过程。
挑选人才的能力是非常重要的,并且招聘也是所有人力资源流程中投资回报比最高的。招聘管理是一个费时费力的环节,并且一个失败的招聘将会对整个人才管理,包括企业的管理造成巨大的损失,所以我们希望通过一些智能化的手段去帮助我们避免人才浪费,人才岗位不匹配的现象。
2. 智能招聘
传统招聘包含了很多劳动密集型任务,它的效率往往是比较低下的,并且随着招聘渠道的增多,也平添了很多的工作量。传统招聘过度依赖于主观判断,精度较低,造成优秀人才的遗漏。
智能招聘时代,大量积累的人才招聘相关数据为我们提供了很好的数据基础,面对我国巨量的就业人口和求职人次,智能招聘具有非常大的市场,前景广阔。
02 智能人岗匹配
1. 人才筛选的核心任务:人岗匹配
在招聘整个的环节当中,最主要的是人才筛选,目的是帮助企业从候选者当中挑选出最合适的人才,让优秀的人才能脱颖而出。人才筛选决定了招聘的质量和效率,其核心任务是人岗匹配。
人岗匹配——衡量人才和岗位之间的一个匹配关系。主要针对场景有人才筛选,简历池筛选,岗位推荐等。随着互联网招聘的蓬勃发展,招聘渠道愈发丰富,招聘信息爆炸式增长。一个岗位往往就有大量的投递者,锁定合适的候选人的成本就更高。所以急需智能化的人岗匹配技术,提升人才筛选的效率,避免主观有偏的判断。
2. 形式化为匹配问题
首先看一下人岗匹配问题中的数据。主要是岗位和简历两部分数据。对于岗位来讲,主要侧重两个方面,一是岗位描述,包含该岗位负责的业务和职能,另一个是岗位技能,即应聘该岗位需要具备的能力。对于简历来讲,除了常见的离散或者连续的特征以外,更多关注于项目工作经历的描述文本,通过这些描述文本,可以更好地去了解候选人是否和这个岗位匹配。因此,我们把这个问题形式化成一个文本匹配的一个问题。
具体来讲,给定一个职位申请,它包含了相应的岗位描述和简历的文本信息,通过一个模型去预测这个岗位和简历是否匹配,这里面的匹配就代表了这个人最后可以成功地拿到这个岗位的offer。
3. 基于深度语义匹配的人岗匹配模型
为了解决上述形式化后的文本匹配问题,我们设计了全球首个基于深度模型的人岗匹配算法。这个模型主要分为三部分,其中包括了词级别的基础的表征,层级能力感知的表征,还有最后的人岗匹配预测模块。
① 首先是词级别的文本表征。使用双向LSTM去构建词级别的文本表征,初步理解在岗位需求和项目经历当中的一些语义信息。
② 四种不同的注意力机制(岗位需求单能力感知;岗位需求多能力感知;候选人经历单能力感知,候选人经历多能力感知)进一步提升表征效果。首先通过单能力感知下的岗位需求表征去感知每一条能力需求当中重要的语义要素,随后通过多能力感知部分去感知每一条能力要求的重要性。而候选人经历的单能力感知和多能力感知部分,我们分别给定不同的技能需求,去感知相应的项目经历中需要被重要关注的内容,最后可以得到一个high level的岗位表征和简历表征。
③ 得到上述的表征之后,最后通过一个MRP层进行预测。为了进一步有效利用历史招聘数据,设计了重训练机制,通过一个池化层将历史成功或失败的候选者的表征进行聚合,把聚合信息送到模型中,进一步提升整个模型的效果。
4. 实验验证
实验验证过程采用了企业真实招聘数据。在人才筛选和岗位推荐的任务当中,我们的模型取得了最好的效果。同时模型还支持非文本的特征,增加了非文本特征后,其效果也有一定的提升。
另外,我们还通过构造的实验去验证了一些敏感特征,比如说性别特征对整个模型的影响,我们发现,在某些特征上数据是存在有偏的,我们的建议是不要使用这类特征,避免模型进一步深化这种不公平的导向,从而导致招聘不公平情况。
我们还给出了一些案例分析,来解释模型如何感知原始岗位文本和简历文本当中的重要要素,从而帮助人力资源员工更好的理解模型的推荐效果,相关算法已经灵活运用到了百度的智能招聘当中。
03 智能面试辅助
1. 人才评估的核心任务:人才面试
人才招聘中重要的一项工作就是人才评估,其目的是通过一系列的评测手段来衡量候选者是否满足具体的能力需求。人才评估中的核心场景就是“人才面试”。通过提问的形式来洞察候选者在不同维度上是否具备相应的能力,以及未来的潜力等。包含任务比如试题推荐,面试官推荐等。出发点是利用公司内部丰富的面试记录数据,比如说面试评价,更好的去帮助我们实现智能化的面试辅助工具。
这里的数据除了之前的岗位数据和简历数据以外,丰富的面试记录数据可以帮助我们进一步了解资深面试官考察候选者的重要关注点,通过关注点的学习,应用到比如技能推荐、面试官培训等场景。
2. 挖掘主题语义空间,建模其中的关联
针对整个问题,首要目标是建模这三类文本(岗位描述,简历,面试评价报告)的语义空间,以及三类文本之间的语义关联性,还有每一块数据要素具备的特异性差异。这里面存在着不少挑战,首先,比如说JD文本实际上是比较短的,许多不同的候选人可能匹配到同一个JD,但是并不是所有的文本在简历中都是重要的,有可能只有部分的简历的部分文本才吸引到了面试官或招聘人员的注意。另一方面,在面试的过程中,随着面试轮次的深入,每个面试的考察点的侧重方向可能是不一样的,有可能是逐步深入,有可能是更侧重主观上的能力等。
3. JLMIA:基于主题模型
以图片处理技术为例,对于相应的投递简历,需要映射到更复杂的空间,比如可能是目标识别、目标检测等。另一方面,简历中的一些内容也能反映出它到底是否具备岗位的要求,最后在面试流程当中,语义空间也存在演化的过程。为此,我们首先提出了一个基础的JLMIA的主题模型,相比于传统的主题模型,主要的差别在于输入数据是一组数据,也就是包括了简历数据,岗位数据,以及面试评价的数据。
4. Neural-JLMIA
在建立模型的过程中,需要建立从岗位的主题空间到相应的简历和面评的语义空间的映射关系。为了求解方便,需要做一个假设:每一组中一个工作的主题空间映射到一个C维的简历或面评的语义空间,但是这样的模型是有问题的,为了方便计算而做出的这个假设是一个比较强的假设且不是很合理的。
我们提出了一种神经主题模型的方式,首先对主题数的假设进行了放松,这种概率图模型和之前也比较相近,唯一的差别就是说我们在检出岗位的主题空间,到验收简历的主题空间的映射关系中,我们移除掉了原有的假设,因此我们也相应地更新了我们的生成过程。在推断当中使用神经变分的推断方式求解问题。
5. R-JLMIA
接着,我们又进一步进行了优化,主要关注两个点:一是对于简历的主题空间的表征,我们希望能够得到一个解离解耦出来的两部分的表征。其中一部分,表征简历中应具备岗位所匹配的相应能力。实际上由岗位需求的主题分布,就可以推断出这部分简历应该具有的主题分布。除此以外,不同的简历有不同的背景,它也会独立出一部分主题空间,因此我们也需要对这一部分表征进行解耦,另一方面在面试轮次的过程中,我们希望模型也能够学习到语义空间的演化过程。为此把整个生成过程进行了更新。
我们还设计了相应的神经网络框架去进行推断。损失函数包含三个部分:首先第一部分,它代表三部分文本通过主题的分布进行的重构的loss。另一部分是在VAE中的KL loss,KL是度量两个分布之间的距离,我们独特的添加了两部分的KL,首先是之前提到的简历主题空间的结构和特性,即从简历中解离出来的这一部分,另一部是分和岗位相关的主题,即从岗位主题分布直接生成到简历的这部分分布,这两部分的主题分布是比较相近的。另一方面,在面评的轮次迭代的过程当中,可以通过当前轮次面评的文本的数据去推断相应的主题的分布,它能利用到之前岗位和简历的主题分布,以及之前轮的不同轮次的面评的主题分布,去推断在下一轮的面评中应该考察的能力的主题分布。
6. 实验验证
围绕以上模型,我们进行了一系列实验。首先基于文本表征的模型,我们首先验证了它的生成能力的效果,在PPL指标上,三类文本的生成效果达到了最好的效果。在感知到三部分文本的表示空间后,可以非常容易的去进行应用设计,比如实现技能推荐,因为面评里面具备很多要考察的技能,直接通过学习到的面评主题和空间的分布,基于分布可以在联合主题空间到技能词的分布进行推断,取Top N的词作为技能推荐的结果。
再举个具体的例子,更好了解模型的应用,给定一个岗位资深产品经理,和一份对应的简历。可以看到,对简历主题空间进行解离,一方面可以通过简历的文本自动去推断主题分布,另一方面也可以通过岗位的主题分布来进行生成,从而得到对应的主题分布。
我们同时发现解离之后,简历和岗位相关的主题分布,是非常接近的。而解离后不相近的一部分,可以有效地highlight出不同的候选者,他所具有的在岗位要求之外即差异性的能力。比如,应聘产品经历,应聘者之前有游戏相关的项目,这个独特的经历就被凸显出来。
04 招聘文本表征
1. 变分自编码VAE
招聘服务中涉及到大量文本数据,所以优秀的,合适的文本表征技术是必不可少的。VAE就是一种常用的技术,另一个是神经主题模型,二者的核心本质差别,是把隐变量空间特异化成体积分布,从而具备更好的可解释性或者表征能力。
VAE模型作为一种通用化的表征模型,有一个很大问题:后验坍缩。模型训练过程中使用一些比较强的decoder比如LSTM或RNN等,由于encoder和decoder的优化速率是不同的,从而导致隐变量分布在训练过程中会让它的后验分布趋于相同。即给出不同文本,模型给出的表征有可能很接近,无法进行下游任务。
那么如何提升VAE的表征效果?现有的一些方法,如增加损失函数,增加互信息等,去度量数据分布和隐变空间之间的关系,但是增加损失函数这种方法又引入了额外的超参,训练过程中这些超参有可能是case by case的,比较难调整。如果用MI增加损失函数,由于MI属性是没有解析解的,还需要一些特殊的训练手段进行近似来求解,或者改变encoder和decoder的训练速度,来避免后验坍缩现象,但是这样的处理方式比较暴力,难以调整。
2. DU-VAE从隐变量的几何特性出发
我们设计了叫做DU-VAE的结构,从隐变量空间的几何特性出发去解决后验坍缩的问题。主要是两个核心点,一个是鼓励表征的多样性,我们需要不同的样本,其后验分布之间具有明显的差异性,这样得到的表征具有比较好的区分度,利于进行后续的任务。第二,表征具有更小的不确定性,即给定一个数据样本,其隐变量的不确定性应尽可能小。首先对于多样性,我们基于ICLR08年提出的MPD度量方式,这个度量方式是给定不同的样本及其相关的隐变量空间,度量它的对称KL,两个空间分布的距离。而对于不确定性,使用更加直观的条件熵进行度量。
我们还增加了对隐变量空间固有的噪声,这个噪声强制保证了微分熵的非负性,帮助优化CE。直观来讲,可以理解为对MPD和CE增加了额外的loss,使用蒙特卡洛方式来近似,如之前所说,这里需要精细化的调参工作。我们理论性地验证了对MPD和CE的度量是只依赖于后验参数的分布,即所对应的均值和方差。
针对上述问题,我们提出了dropout和Batch Normalization方法来解决。方差处引入dropout结构,通过参数d,一个不同于分布的随机变量来帮助我们增加dropout的网络层,α是前述提到的增加的固有噪声,保证非负性。经过推导,可以看到,引入dropout,能够鼓励更大的MPD和更小的CE。再使用一个BN来控制后验参数分布的均值。
通过以上操作,可以做到鼓励多样性和减少不确定性,实际上也就避免了模型后验坍缩的问题。
3. 实验验证
在实验阶段,首先验证了模型的生成效果,可以看到效果非常可观。另外验证了模型表征能力在下游任务上的表现,可以看到在分类任务中也达到了最好效果。
最后通过构造一个数据去形象化地理解整个模型。构造的数据对应我们的隐变量,使用了一个各向的高斯分布,作为隐变量空间,在这个空间上固定一个LSTM模型,通过LSTM模型对实际的数据进行映射,固定LSTM不变,之后在此基础上训练VAE系列模型及DU-VAE模型,可以明显看到,标准VAE系模型有着很明显的后验坍缩问题,而DU-VAE模型学到的隐变量空间表征是和原始的空间表征非常接近的。
05 问答环节
Q:如何确保JD能准确地体现岗位的要求?
A:我们也发现了有些JD是非常不规范的,尤其是互联网招聘,有的企业公司发布的JD会做精细化的处理,但是有些公司,他们可能直接网上download一些模板,在训练的过程中,我们人为选了一些成功招募到候选者,且岗位的描述比较清晰的JD,作为有效数据。针对这些数据的处理,我们也做了相关研究,比如说基于文本生成的方法,实现了一个可以清晰描述岗位需求的文本生成工具,可以帮助我们更好的对岗位描述进行规范,通过这样的文本生成模型,可以更规范、更精准的去捕捉哪些岗位需求是招聘时最为关键和必须的。
Q:有A,B两个人,A更匹配,B不匹配,但B通过一些技巧,简历比A写得更好,更匹配。这种情况下会怎么处理?会不会最终招聘的B而错过了A?
A:我们整个人才管理实际上是分为多个流程的,我们通过人岗匹配模型,以及传统HR所做的事情,首先要基于简历进行初筛,通过初筛,可以花费尽量少的时间去把不合适的简历进行过滤。这样的情况下,如果A、B两个人在简历层面上都有非常好的表现,只通过人岗匹配模型是没有办法发现的,但是后续经过一系列笔试面试或者背调环节,那么我相信像这种虚假简历的情况是会被有效地过滤的。
另外我们组也对虚假简历问题进行了探究,实际上有的简历,比如说B它描写得天花乱坠,但是查他的工作履历,可能发现他之前在A公司马上跳到B公司,他的履历发生了一个巨大的转变。敏感的HR可能一下就知道他是可能存在简历杜撰的情况。我们也可以通过一些智能化的方法去检测到底哪些简历是存在简历杜撰的情况,这点也会进一步去融入到我们人岗匹配和简历初筛的流程当中。
Q:每个岗位能自动生成面试问题吗?如果可以大概的思路和技术能分享一下吗?
对基于岗位生成面试问题,实际上是一个非常有意思的研究,就像之前我们所提出的模型,可以通过人才面试相关模型,对文本进行初步的表征,岗位所具备的关键技能,包括一些文本,已经是可以被主题模型所捕捉到。关键信息被捕捉到了,基于这些信息,比如前文中提到的技能推荐,就能基于推荐的技能在试题库进行查找,生成面试题。我们在2019年的KDD上有一篇文章是通过构建技能之间下位关系,然后基于竞争关系图去实体库中进行搜索,从而实现面试试题推荐,而在直接的生成过程中,一方面来讲,可以基于面评的数据,抽出一些比较好的面试试题框架。另外一方面实际上像linkedin在2020年发表一篇非常有意思的文章,岗位要求了一些实际的能力,比如说它是否具备C++,可能就直接生成初筛的试题,比如说你具备几年C++的一些实践经验,那么就生成相应的判断问题,从而帮助加快整个人才筛选流程,这也是一个非常有意思的方向。
Q:除了简历还有什么其他的方法来度量不同候选人的胜任度匹配度吗?
A:简历的作用要看它所处的不同的环节,如果是在岗位初筛过程中,那么是最直接的,在入职之后,其实也可以进一步去看匹配度。包括我们之前我们提到,比如说入职前通过面试笔试去考量人才是否匹配,而在入职之后,很多公司都是有试用期的,可以去判断这些人在项目上的表现,沟通上的反馈,我们可以从试用期的角度去做人才和岗位之间的匹配,判断这个人是否适合这个岗位。因为有可能招聘的人员,他并不一定是能力不行,只是他不适合这个岗位。这种情况,我们可以通过智能化的方法提供进一步的建议,比如说建议他考虑一些更加适合他的岗位,从而避免人才和岗位在实际的入职之后不匹配的问题,减少因人岗不匹配造成的人才离职,以及因此所导致的企业损失。
分享嘉宾: