从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 | 亚马逊网络服务

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 | 亚马逊网络服务

本文由机器学习工程师 Anatoly Khomenko 和 Talent.com 首席技术官 Abdenour Bezzouh 共同撰写。

公司成立于2011, 人才网 是世界上最大的就业来源之一。 该公司将客户的付费职位列表与公共职位列表合并到一个可搜索的平台中。 Talent.com 在超过 30 个国家/地区列出了超过 75 万个职位,提供跨多种语言、行业和分销渠道的职位。 结果是一个为数百万求职者与可用工作匹配的平台。

Talent.com 的使命是集中网络上所有可用的职位,帮助求职者找到最匹配的职位,同时为他们提供最佳的搜索体验。 它的重点是相关性,因为推荐职位的顺序对于显示与用户兴趣最相关的职位至关重要。 Talent.com 匹配算法的性能对于企业的成功至关重要,也是用户体验的关键因素。 根据所提供的有限信息(通常包含几个关键字和位置)来预测哪些工作与求职者相关是一项挑战。

鉴于这一使命,Talent.com 和 AWS 联手使用最先进的自然语言处理 (NLP) 和深度学习模型训练技术创建​​了一个职位推荐引擎, 亚马逊SageMaker 为求职者提供无与伦比的体验。 这篇文章展示了我们设计职位推荐系统的联合方法,包括特征工程、深度学习模型架构设计、超参数优化和模型评估,以确保我们的解决方案对求职者和雇主而言的可靠性和有效性。 该系统由专门的应用机器学习 (ML) 科学家、ML 工程师和主题专家团队与 AWS 和 Talent.com 合作开发。

与之前基于 XGBoost 的解决方案相比,该推荐系统使在线 A/B 测试的点击率 (CTR) 提高了 8.6%,帮助数百万 Talent.com 用户找到了更好的工作。

解决方案概述

下图显示了该系统的概述。 该系统将用户的搜索查询作为输入,并按相关性顺序输出职位的排名列表。 职位相关性通过点击概率(求职者点击某职位获取更多信息的概率)来衡量。

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

该系统包括四个主要组件:

  • 模型架构 – 该职位推荐引擎的核心是基于深度学习的 Triple Tower Pointwise 模型,其中包括对用户搜索查询进行编码的查询编码器、对职位描述进行编码的文档编码器以及处理过去的用户职位的交互编码器交互功能。 三个塔的输出连接起来并通过分类头来预测作业的点击概率。 通过使用来自 Talent.com 的搜索查询、工作细节和历史用户交互数据来训练该模型,该系统可以为求职者提供个性化且高度相关的工作推荐。
  • 特征工程 – 我们执行两组特征工程,从输入数据中提取有价值的信息,并将其输入模型中相应的塔中。 这两组是标准特征工程和微调的 Sentence-BERT (SBERT) 嵌入。 我们使用标准工程特征作为交互编码器的输入,并将 SBERT 派生嵌入馈送到查询编码器和文档编码器中。
  • 模型优化和调整 – 我们利用先进的培训方法通过 SageMaker 来培训、测试和部署系统。 这包括 SageMaker 分布式数据并行 (DDP) 训练、SageMaker 自动模型调优 (AMT)、学习率调度以及提前停止以提高模型性能和训练速度。 使用 DDP 训练框架有助于将我们的模型训练速度加快大约八倍。
  • 模型评估 – 我们进行线下和线上评估。 我们在离线评估中使用曲线下面积 (AUC) 和 K 处的平均精度 (mAP@K) 来评估模型性能。 在在线 A/B 测试期间,我们评估点击率的改进。

在以下部分中,我们将介绍这四个组件的详细信息。

深度学习模型架构设计

我们使用三塔深度学习架构和逐点对建模方法设计了三塔深度逐点(TTDP)模型。 三塔架构提供了三个并行的深度神经网络,每个塔独立处理一组特征。 这种设计模式允许模型从不同的信息源学习不同的表示。 获得所有三个塔的表示后,将它们连接起来并通过分类头,以对点击概率(逐点建模设置)做出最终预测 (0-1)。

这三个塔根据它们处理的信息进行命名:查询编码器处理用户搜索查询,文档编码器处理候选职位的文档内容,包括职位名称和公司名称,交互编码器使用从过去的用户交互中提取的相关特征和历史(下一节将详细讨论)。

这些塔中的每一个在学习如何推荐工作方面都发挥着至关重要的作用:

  • 查询编码器 – 查询编码器接收从用户的职位搜索查询中派生的 SBERT 嵌入。 我们通过微调的 SBERT 模型增强了嵌入。 该编码器处理并理解用户的求职意图,包括我们的特定领域嵌入捕获的细节和细微差别。
  • 文档编码器 – 文档编码器处理每个职位列表的信息。 具体来说,它采用来自职位和公司的串联文本的 SBERT 嵌入。 直觉是,用户会对与搜索查询更相关的候选职位更感兴趣。 通过将职位和搜索查询映射到同一向量空间(由 SBERT 定义),模型可以学习预测求职者点击潜在职位的概率。
  • 交互编码器 – 交互编码器处理用户过去与职位列表的交互。 这些特征是通过标准特征工程步骤生成的,其中包括计算工作角色和公司的受欢迎程度指标、建立上下文相似度分数以及从以前的用户参与中提取交互参数。 它还使用预先训练的命名实体识别 (NER) 模型处理职位名称和搜索查询中识别的命名实体。

每个塔并行生成一个独立的输出,然后将所有输出连接在一起。 然后传递该组合特征向量来预测用户查询的职位列表的点击概率。 三塔架构在捕获不同输入或特征之间的复杂关系方面提供了灵活性,使模型能够利用每个塔的优势,同时学习给定任务的更具表现力的表示。

候选职位的预测点击概率从高到低排名,生成个性化的职位推荐。 通过这个过程,我们确保每条信息(无论是用户的搜索意图、职位列表详细信息还是过去的交互)都由专用的特定塔完全捕获。 它们之间的复杂关系也可以通过塔输出的组合来捕获。

特征工程

我们执行两组特征工程流程,从原始数据中提取有价值的信息,并将其输入到模型中相应的塔中:标准特征工程和微调的 SBERT 嵌入。

标准特征工程

我们的数据准备过程从标准特征工程开始。 总的来说,我们定义了四种类型的特征:

  • 声望 – 我们计算个人工作级别、职业级别和公司级别的受欢迎程度得分。 这提供了衡量特定工作或公司的吸引力的指标。
  • 文本相似度 – 为了了解不同文本元素之间的上下文关系,我们计算相似度分数,包括搜索查询和职位名称之间的字符串相似度。 这有助于我们衡量职位空缺与求职者的搜索或申请历史的相关性。
  • 互动效果 – 此外,我们从过去用户与职位列表的互动中提取交互特征。 一个典型的例子是过去点击的职位名称和候选职位名称之间的嵌入相似性。 此衡量标准有助于我们了解用户之前表现出兴趣的工作与即将到来的工作机会之间的相似性。 这提高了我们工作推荐引擎的准确性。
  • 本人简介 – 最后,我们从用户个人资料中提取用户定义的工作兴趣信息,并将其与新的求职者进行比较。 这有助于我们了解求职者是否符合用户的兴趣。

我们数据准备中的关键一步是应用预训练的 NER 模型。 通过实现 NER 模型,我们可以识别并标记职位名称和搜索查询中的命名实体。 因此,这使我们能够计算这些已识别实体之间的相似性分数,从而提供更有针对性和上下文感知的相关性度量。 这种方法减少了数据中的噪音,并为我们提供了一种更细致、更上下文相关的职位比较方法。

微调 SBERT 嵌入

为了提高职位推荐系统的相关性和准确性,我们使用了 SBERT 的强大功能,这是一种基于 Transformer 的强大模型,以其擅长从文本中捕获语义和上下文而闻名。 然而,像 SBERT 这样的通用嵌入虽然有效,但可能无法完全捕捉特定领域(例如我们的领域,以就业和求职为中心)固有的独特细微差别和术语。 为了克服这个问题,我们使用特定领域的数据微调 SBERT 嵌入。 这种微调过程优化了模型,以更好地理解和处理行业特定的语言、术语和上下文,使嵌入更能反映我们的特定领域。 因此,精炼的嵌入在捕获我们领域内的语义和上下文信息方面提供了改进的性能,从而为我们的用户提供更准确和更有意义的工作推荐。

下图说明了 SBERT 微调步骤。

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

我们使用以下方法微调 SBERT 嵌入 三重态损失 使用余弦距离度量来学习文本嵌入,其中锚文本和正文本比锚文本和负文本具有更高的余弦相似度。 我们使用用户的搜索查询作为锚文本。 我们将职位名称和雇主名称结合起来作为正面和负面文本的输入。 正面文本是从相应用户点击的职位发布中采样的,而负面文本是从用户未点击的职位发布中采样的。 以下是微调过程的示例实现:

import math
from datetime import datetime from torch.utils.data import DataLoader
from sentence_transformers import (SentenceTransformer, SentencesDataset, LoggingHandler, losses)
from sentence_transformers.readers import InputExample model_name = 'all-mpnet-base-v2'
train_batch_size = 16
num_epochs = 1
model_save_path = (f'output/{model_name}_'+ datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) ### load pre-trained SBERT model
model = SentenceTransformer(model_name, device="cuda") ### construct training dataset of triplet texts,
### stored in three lists (achors, positives, negatives)
train_examples =[]
for anchor, positive, negative in zip(achors, positives, negatives): train_examples.append(InputExample(texts=(anchor, positive, negative))) train_dataset = SentencesDataset(train_examples, model)
train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=train_batch_size) ### use TripletLoss with cosine distance metric and margin=0.5
distance_metric=losses.TripletDistanceMetric.COSINE
train_loss = losses.TripletLoss(model=model, distance_metric=distance_metric, triplet_margin=0.5) ### 10% of train data for warm-up
warmup_steps = math.ceil(len(train_dataloader) * num_epochs * 0.1) # Train the model
model.fit(train_objectives=[(train_dataloader, train_loss)], epochs=num_epochs, warmup_steps=warmup_steps, output_path=model_save_path)

使用 SageMaker 分布式数据并行进行模型训练

我们使用 SageMaker 分布式数据并行 (SMDDP),这是基于 PyTorch DDP 构建的 SageMaker ML 平台的一项功能。 它为在 SageMaker 平台上运行 PyTorch DDP 训练作业提供了优化的环境。 它旨在显着加快深度学习模型的训练速度。 它通过将大型数据集分割成较小的块并将它们分布在多个 GPU 上来实现此目的。 该模型会在每个 GPU 上复制。 每个 GPU 独立处理其分配的数据,并且结果在所有 GPU 之间进行整理和同步。 DDP 负责梯度通信以保持模型副本同步,并将它们与梯度计算重叠以加速训练。 SMDDP 利用优化的 AllReduce 算法来最大限度地减少 GPU 之间的通信,从而减少同步时间并提高整体训练速度。 该算法适应不同的网络条件,使其在本地和基于云的环境中都非常高效。 在SMDDP架构中(如下图所示),分布式训练也使用许多节点的集群进行扩展。 这不仅意味着一个计算实例中有多个 GPU,还意味着许多实例具有多个 GPU,这进一步加快了训练速度。

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

有关此架构的更多信息,请参阅 SageMaker 分布式数据并行库简介.

借助 SMDDP,我们能够大幅减少 TTDP 模型的训练时间,使其速度提高八倍。 更快的训练时间意味着我们可以更快地迭代和改进我们的模型,从而在更短的时间内为我们的用户提供更好的工作推荐。 这种效率提升有助于保持我们的职位推荐引擎在快速发展的就业市场中的竞争力。

您只需三行代码即可使用 SMDDP 调整训练脚本,如以下代码块所示。 以 PyTorch 为例,您唯一需要做的就是导入 SMDDP 库的 PyTorch 客户端(smdistributed.dataparallel.torch.torch_smddp)。 客户端注册 smddp 作为 PyTorch 的后端。

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist dist.init_process_group(backend='smddp')

当您拥有适合使用分布式数据并行库的工作 PyTorch 脚本后,您可以 使用 SageMaker Python SDK 启动分布式训练作业.

评估模型性能

在评估推荐系统的性能时,选择与业务目标紧密结合并提供对模型有效性的清晰了解的指标至关重要。 在我们的案例中,我们使用 AUC 来评估 TTDP 模型的职位点击预测性能,并使用 mAP@K 来评估最终排名职位列表的质量。

AUC 是指受试者工作特征(ROC)曲线下的面积。 它表示随机选择的正例排名高于随机选择的负例的概率。 它的范围从 0-1,其中 1 表示理想的分类器,0.5 表示随机猜测。 mAP@K 是一种常用于评估信息检索系统(例如我们的职位推荐引擎)质量的指标。 它测量针对给定查询或用户检索前 K 个相关项目的平均精度。 它的范围从 0-1,其中 1 表示最佳排名,0 表示给定 K 值下可能的最低精度。 我们评估 AUC、mAP@1 和 mAP@3。 总的来说,这些指标使我们能够衡量模型区分正类和负类的能力 (AUC) 以及它在将最相关的项目排在顶部的成功程度 (mAP@K)。

根据我们的离线评估,TTDP 模型的 AUC 优于基线模型(现有的基于 XGBoost 的生产模型)16.65%,mAP@20 优于 mAP@1 11.82%,mAP@3 XNUMX%。

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

此外,我们设计了一个在线 A/B 测试来评估所提议的系统,并对美国电子邮件人口的一定比例进行了为期 6 周的测试。 使用新系统推荐的作业总共发送了约 22 万封电子邮件。 与之前的生产模型相比,点击次数增加了 8.6%。 Talent.com 正在逐步提高向其完整人群和渠道推出新系统的比例。

结论

创建职位推荐系统是一项复杂的工作。 每个求职者都有独特的需求、偏好和专业经验,这些是无法从简短的搜索查询中推断出来的。 在这篇文章中,Talent.com 与 A​​WS 合作开发了一种基于端到端深度学习的职位推荐解决方案,该解决方案可以对要推荐给用户的职位列表进行排名。 在解决这个问题的整个过程中,Talent.com 团队非常享受与 AWS 团队的合作。 这标志着 Talent.com 变革之旅的一个重要里程碑,因为该团队利用深度学习的力量来增强其业务能力。

该项目使用 SBERT 进行微调以生成文本嵌入。 在撰写本文时,AWS 推出了 亚马逊泰坦嵌入 作为其基础模型 (FM) 的一部分 亚马逊基岩,这是一项完全托管的服务,提供来自领先人工智能公司的精选高性能基础模型。 我们鼓励读者探索本博文中介绍的机器学习技术,并利用 AWS 提供的功能(例如 SMDDP),同时利用 AWS Bedrock 的基础模型创建自己的搜索功能。

参考资料


关于作者

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。 易翔 是 Amazon 机器学习解决方案实验室的一名应用科学家 II,她帮助不同行业的 AWS 客户加速 AI 和云的采用。

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。王彤 是亚马逊机器学习解决方案实验室的高级应用科学家,他帮助不同行业的 AWS 客户加速人工智能和云的采用。

德米特里·贝斯帕洛夫德米特里·贝斯帕洛夫 是亚马逊机器学习解决方案实验室的高级应用科学家,他帮助不同行业的 AWS 客户加速人工智能和云的采用。

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。阿纳托利·霍缅科 是 Talent.com 的高级机器学习工程师,热衷于自然语言处理,将优秀人才与优秀工作相匹配。

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。阿布德努尔·贝祖 是一位拥有超过 25 年构建和交付可扩展到数百万客户的技术解决方案经验的高管。 Abdenour 担任首席技术官 (CTO) 人才网 当 AWS 团队设计并执行这个特定的解决方案时 人才网.

从文本到梦想工作:使用 Amazon SageMaker 在 Talent.com 上构建基于 NLP 的工作推荐系统 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。戴尔·雅克 是生成式 AI 创新中心的高级 AI 策略师,他帮助 AWS 客户将业务问题转化为 AI 解决方案。

严俊奇严俊奇 是亚马逊机器学习解决方案实验室的高级应用科学经理。 她创新并应用机器学习来帮助 AWS 客户加快 AI 和云的采用。

时间戳记:

更多来自 AWS机器学习