查看原文
其他

一份职位信息的精准推荐之旅,从AI底层架构说起

CSDN App AI科技大本营 2019-10-30


整理 | 夕颜
出品 | AI科技大本营(ID:rgznai100)

【导读】也许,每天早上你的邮箱中又多了一封职位推荐信息,点开一看,你可能发现这些推荐正合你意,于是按照这些信息,你顺利找到一份符合自己期待的新工作。当然,也有可能推荐的信息根本无法让你满意,于是你手一滑,这份邮件的命运就是在你点下清空键之前,永远躺在邮箱底部,第二天被新的邮件淹没。

 

职场社交 App 的规则就是这么简单粗暴,在信息日益爆炸,各大职场社交平台竞争日益激烈的时代,只有对用户有价值的信息,才会留住他们流转的目光。

 

那么,怎样才能留住用户的目光?领英决定用当下最热、最有前景的 AI 技术和大数据处理来实现本地化的创新,以期为用户打造更好的产品体验。

 

自 2014 年进入中国以来,领英在中国北京和美国硅谷从无到有,构建了一支超过 100人的本土研发团队,两地团队以“One Team”的形式协作,利用总部的技术资源优势,希望推动中国市场完成本地化产品与技术创新。

 

本文采访了领英人工智能研发总监张梁,将从领英的AI系统底层架构与应用、流数据处理、开源三个角度,从技术层面对其进行全方位剖析,希望领英的 AI 技术与实践对读者有所启发和帮助。


AI系统底层架构与应用


领英产品设计、人工智能系统和AB测试之间的关系


推荐系统+知识图谱

 

据领英人工智能研发总监张梁介绍,领英希望通过人机结合的方式,将数据标准化成人工智能系统可以理解的形式。

 

在领英应用的众多 AI 技术中,用户最熟悉的可能就是以站内信或消息推送等形式到达客户端的内容。用户收到的内容不尽相同,这背后涉及领英个性化推荐系统进行的一系列复杂的计算和推断。

 

领英个性化推荐系统的基础架构是怎样的?模型构建和基础架构的过程中采用了哪些技术使得其可以实时推送精准的个性化内容呢?

 

对此,张梁介绍道,领英的职位推荐系统的基础是通过大量用户数据建立的知识图谱和研发针对自然语言的标准化技术。针对每位用户的简历,领英使用基于深度学习模型的标准化技术,如 LSTM、CNN 等来实现信息抓取。


领英追踪、检索和排名架构


 领英人才搜索架构和流程


张梁回忆道,6、7年前,领英的职位推荐还是一个线性模型,如果求职者是一位软件工程师,系统就会推荐一个软件工程师的职位给他。但后来他们在使用中发现,根据用户简历和工作职位的描述来做推荐,不一定能够完全实现个性化。

用于具有树交互功能的GLMix模型管道


“我们还希望根据用户之前的职位申请,为他推荐更多类似的职位,即深度的个性化。之后我们又研发了 Generalized Linear Mixed Model(GLMix),针对每个用户和每个职位建立一个单独为他们服务的模型,这使得模型的参数量达到了上百亿的规模,同时也成功地把职位申请的数量提高了30%。领英团队把这个模型用在中国的数据上,又将职位申请的数量额外提高了 11%。”张梁说道。

 

除了智能推荐之外,领英还构建了自己的知识图谱。


领英知识图谱


领英知识图谱


领英全球拥有 6.45 亿会员、3.5 万项职业技能、3000 万雇主公司、超过 2000 万个开放职位以及 9 万家教育机构,形成高度结构化的数据集。领英的知识图谱便是建立在超过 10 亿数据点之上的一个大型知识库,包括用户职位、职级、技能、公司、地理位置、学校等。领英运用这些数据点及其之间的关系,优化推荐、搜索以及其他产品功能,推动业务增长。

 

首先,创建这样一个庞大的知识库本身就是一个巨大的挑战。与谷歌的知识库和微软的 Satori 从互联网上自动提取事实的做法不同,领英主要从会员、招聘人员、广告商和公司管理人员等大量用户生成的内容中获得领英的知识图谱,并用从互联网上提取的数据进行补充。因此,这些数据噪音大,并可能存在重复。

 

为了解决这一挑战,领英应用了自然语言处理、机器学习等技术手段,对用户生成的内容和外部数据源进行数据标准化,如使用机器学习进行实体分类结构、实体关系推理、下游数据消费者的数据表示、从图谱中提取洞察,以及从用户处获取交互式数据,以验证推理并收集训练数据。

 

利用这个庞大的知识图谱,领英能够做到什么呢?

 

张梁介绍道,以领英档案数据为例,几乎所有会员数据都是由会员自己自行输入的。因此,同一个职位在一家公司可能称为“资深软件工程师”,而在另一家公司则称为“研发负责人”。为了将这些大量的职位进行标准化,领英的分类学家创建了职位分类体系,然后采用机器学习模型(LSTM模型、其他神经网络等)进一步将大量职位进行关联。了解这些关联后就可以进一步推断出每名会员在档案内容之外具备的深层次技能,例如,具有“机器学习”技能的会员同时也了解“人工智能”。这就是构建领英知识图谱分类和关联体系的一个实例。

 

2019 年初领英中国APP推出了“职业指南”功能,便是知识图谱标准化的一大成果体现。“职业指南”基于领英知识图谱中已经标准化、系统化数据点,从知识库里的职位、职级、技能、公司等信息中提取出级别分布、升职年限,以及该职业“入行前”和“转行后”详细分析等精细洞察,并应用机器学习保证更好的相关性与精准性。

 

另外,2019 年领英中国APP推出的“薪资洞察”功能是基于用户提供的数据,利用贝叶斯平滑等人工智能技术来推测(Inference)不同领域和职级的平均薪资。具体来看,为了尽力消减样本量过小导致的误差,领英技术团队使用贝叶斯平滑等人工智能技术进行有效推测,确保最终呈现薪资区间的真实性。举例来说,在一些比较冷门的行业或地区,用户提供数据量不足时,产出的洞察容易缺少代表性。此时,为了得到相对接近真实情况的薪资区间,领英运用人工智能对数据进行筛选,寻找相近的地区或行业的数据来扩充样本量,并以形成的基准进行合理推测。


 

此外,“薪资洞察”的数据既有用户主动提交的薪资数据,又有企业职位段的数据,确保参考样本量足够大的同时,也从不同数据维度综合衡量,尽可能真实反映职场人的薪资情况。当数据源覆盖得足够广足够多时,产生的洞察自然会更全面、精准。

 

另外,领英还把知识图谱与 AI 推荐系统结合起来,提供更加精准的服务。具体来说,基于领英数据的知识需要以机器可读的方式清晰地表达出来,领英知识图谱通过在实体分类法(entity taxonomies)之上形成专业领域的本体(ontology)来标准化实体和关系,定义每个实体的身份和属性以及实体之间的关系。例如,在领英职位推荐中,领英从成员个人资料中提取标准化实体,如职位、技能、公司、教育、地理位置等,并与从职位描述中提取的相同类型的实体直接匹配。这样的匹配信息可以直接用于驱动推荐系统的机器学习模型。与直接使用会员和职位发布者提供的原始数据相比,知识图谱中的标准化实体为推荐系统提供了更好的相关性。

 

多层感知器(MLP)解决延迟问题

 

针对某些指导性学习任务,领英会在必要时采用典型多层感知器。

 

MLP(多层感知器)网络是一个简单的深度神经网络模型,已被用于领英的推荐、搜索系统的推断过程,在类似于招聘者搜索和信息流排名等应用中使用了这种网络。

 

MLP 模型的优势在于它可以被快速试用而不必担心延迟。如果使用完全在线评分的系统,更复杂的模型,如 CNN 和 BERT 有时会面对延迟带来的挑战。领英通过离线、近线和在线评分的混合方法解决了这样的延迟挑战。例如,在搜索应用中,如果用于排序的神经网络模型遵循双塔模式 (two-tower neural network,一个神经网络用于对查询关键字的计算,另一个神经网络用于对需要排序的文档的评分),你可以对查询关键字使用在线计算,对文档使用离线/近线评分。

 

此外,领英还已经开始尝试在推荐、搜索在线系统中使用更高级的模型,如最近在搜索系统中尝试了 CNN、BERT 和 sequence-to-sequence 模型,并获得了较好的离线和在线结果。

 

运算平台:在线评分+近线评分+双塔模式

 

领英的运算平台面对庞大的用户数据和信息量,这要求领英对各种信息的处理需要“区别对待”,例如对于线上和线下的请求处理,领英就采用了不同的 AI 模型,以使效率最大化。

 

具体来说,张梁解释道,就是当用户向领英服务提出请求,并且需要在几毫秒内响应时,领英的 AI 模型通常会使用在线评分(scored online);其他情况下,则使用近线、离线评分。举例来说,对于领英的信息推送通知,因为不需要对用户请求以毫秒为单位进行响应,AI 模型会使用近线评分(scored nearline)来决定向谁和何时发送何种内容的通知。

 

而当模型需要大量运算力来满足对于延迟的要求时(例如深度神经网络模型)时,领英会将模型分解为在线评分和离线或近线评分组件,以在延迟和准确性之间达成良好的平衡。这将要求 AI 模型具有一定的结构以使其可以分割。例如,领英经常使用双塔(two-tower)方法(一个神经网络用于会员,另一个神经网络用于需要排序的文档),因此可以在会员在发出请求之前,给需要排序的文档的神经网络中的嵌入向量预打分,从而减少在线评分对系统延迟的影响。

 

Pro-ML“人工智能自动化”平台

 

AI 自动化已成为一股技术潮流,领英也不例外地赶上了这股技术潮流,并将其应用于服务中。

 

2017 年 8 月,领英开始了一项名为“Productive Machine Learning”(简称“Pro-ML”,人工智能自动化)的新项目。Pro-ML 的目标是将机器学习工程师的效率提高一倍,同时为来自领英的工程师打造人工智能和建模工具。

 

在构建 Pro-ML 的过程中,领英尽可能地利用和改进现有代码库中的最佳组件,从而灵活地支持现有的主要 ML 算法和将要出现的新算法。在 Pro-ML 平台上,领英主要做了:

  • 开发(Exploring and authoring):建模过程从探索问题空间、特征和数据开始,然后确定特定目标。通过交叉折叠验证、曲线下面积 AUC、F分数等方法评估机器学习算法并进行重试。

  • 训练(Training):利用 Azkaban 和 Spark 进行模型训练。模型通过脱机验证后,训练库会将经过训练的工件和元数据传递给部署系统。

  • 部署(Deploying):Pro-ML 将通过自动验证、编排、监视和通知,确保所需的代码和数据工件同步,部署的过程还与实验平台相关联,以确保所有活跃实验在整个系统中的正确目标中具有所需的工件(Artifacts)。

  • 运行(Running):为了构建真正能够成功运行的系统,领英需要可靠、高效、可操作地评估生产中的模型,包括在 Spark 和 Pig 等系统中的离线运算, Samza 中的近线数据处理,REST 服务中的在线评分以及在搜索系统中的文件抽取和排序。


除此之外,领英还采用多模态技术,使用多种不同类型的信号来优化信息流和搜索排名,如用自然语言处理技术(NLP)做文本理解,用计算机视觉技术做图像和视频理解,用微软生成视频脚本的 API 技术进行语音识别等,在信息流和搜索排序方面为会员提供了更有吸引力、更具个性化的用户体验。

 

流数据处理


Kafka:面向大规模流数据的标准消息系统

 

面对如此大的数据规模,领英在稳定运行机器学习模型上遇到哪些挑战?如何解决?

 

2011 年 7 月,领英开始大规模使用 Kafka,它由领英的工程师在 2010 年研发。

 

张梁坦承,在领英,不同的应用使用同一个 Kafka 集群,所以如果某个应用滥用 Kafka,将会对共享集群的其他应用带来性能和 SLA 上的负面影响。即便是有些合理的使用场景,也有可能会带来很坏的影响,比如,在某些场合如果要重新处理整个数据库的所有数据,那数据库中的所有记录会迅速推送到 Kafka 上,即便 Kafka 性能很高,也会很容易造成网络饱和磁盘冲击。

 

为了解决这个问题,领英研发了一个机制:如果每秒钟的字节数超过了一个阈值,就会降低这些Producer 和 Consumer 的速度。对于大多数应用来讲,这个默认的阈值都是可行的。但是有些用户会要求更高的带宽,于是领英引入白名单机制,让白名单中的用户能够使用更高数量的带宽。

 

对于领英来说,采用 Apache Kafka 好处很多。2011 年,当时 Kafka 每天大约处理 10 亿条消息,这一数据在 2012 年达到了每天 200 亿条,而到了 2013 年 7 月,每天处理的消息达到了 2000 亿条。目前,领英每天利用 Kafka 处理的消息超过 5 万亿条,在峰值时每秒钟会发布超过 450 万条消息。如今,Apache Kafka 已经成为了一个面向大规模流数据的,标准的消息系统,在领英,它被用作各类数据管道的支柱,支持一系列关键服务,已经成为确保企业基础架构健壮、容错和高性能的核心组件。

 

从MapReduce/Pig 框架迁移到 Spark

 

另一方面,领英已逐渐把数据处理从旧的 MapReduce/Pig 框架迁移到 Spark,并在 Spark 上做了一些创新。

 

张梁介绍道,领英从 2015 年开始在 Spark 上构建数据处理流程,现在大多数生产环境离线工作流都使用Spark 而不是 MapReduce 或 Pig。而且,领英已经将 Jupiter NoteBook 和工作流管理工具 Azkaban 与 Spark 集成在一起。

 

在 Spark 之上,领英还构建了许多机器学习库,例如 GLMix库,它能帮助领英构建具有数百亿参数的,针对个别用户或个别文档的个性化模型。

 

另外,可能会有人好奇,领英处理流数据是否为 Spark 和 领英自建的流数据处理框架 Samza 并用?以哪个为主?为什么?

 

对此,张梁也为我们解答了疑惑。“对于流数据处理,我们主要使用 Samza。在领英,Samza 每天处理超过一万亿条消息,并被数百个拥有超过 10,000 个容器的生产应用程序使用。我们之所以选择 Samza,是因为它在有效支持状态、快速故障恢复、再处理和无 Lambda 架构以及可扩展性方面具有独特优势。

 

大规模图处理

 

此外,随着自媒体的快速发展,每天都有大量用户生成的图信息涌现出来,如何应对大规模图处理带来的问题变得迫在眉睫。对此,领英是怎么做的呢? 

 

对此,领英尝试在多处应用在线和离线图处理系统(online and offline graph processing systems)来解决问题。 领英的功能“你可能认识的人”(People You May Know)一直在使用 Gaia——一个实时图推荐平台来提供推荐服务。

 

离线图处理系统可以为工程师执行数据分析或生成非时间敏感的建议,探索新的图算法以生成建议和评估度量的影响。有前景的算法将会进入离线推荐管道( 使用离线图平台),然后进入领英的在线推荐解决方案( 使用在线图平台)。

 

张梁透露,目前,领英正在探索如何使用 Gaia 来收集可以用于离线训练的特性。


开源


如今,开源开放已成为一股潮流,很多大型企业都加入其中,推动着技术进步,同时从中受益。领英作为其中一员,也对开源持开放的态度,并做出了自己的贡献。

 

据张梁统计,目前领英已经开放了超过 100 个项目,贡献了超过 50 万行代码,跨越了许多软件类别,包括数据、框架、系统操作、测试和移动,如 Kafka、Samza 等开源项目已得到了广泛的应用。除了已经在前面介绍过的 Kafka,下面简单介绍一些其他开源项目:

  • Samza:Apache Samza 是一个开源框架,可以帮助开发者进行高速消息处理同时具有良好的容错能力。Samza 可从 Kafka 中获取消息并进行处理,处理完毕后把结果返回 Kafka

  • TonY(TensorFlow on YARN):TonY 是领英开发的在 Hadoop 上自然运行 TensorFlow 的框架。TonY 旨在通过处理资源协商和容器环境等任务,为在 Hadoop 上可靠、灵活地运行TensorFlow 提供相同的支持。

  • Photon ML: 一个用于 Apache Spark 的机器学习库。通过将 Spark 快速处理海量数据集的能力与强大的模型训练和诊断实用程序相结合,可以运用 Photon ML 对推荐系统选择的算法做出更明智的决策。

 

从 2014 年进入中国开始,领英不断地探索着中国这片独具特点的市场。未来,领英希望进一步依靠 AI 和大数据技术升级优化用户体验,这一次,它能够凭借技术吸引住用户的目光吗?我们且静待市场的反响。

 

采访嘉宾:

 

张梁,领英人工智能研发总监


(*本文为AI科技大本营原创文章,转载微信联系1092722531)



精彩推荐




推荐阅读


你点的每个“在看”,我都认真当成了喜欢“

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存