Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Amazon Web Services

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Amazon Web Services

Esta postagem é de coautoria de Anatoly Khomenko, engenheiro de aprendizado de máquina, e Abdenour Bezzouh, diretor de tecnologia da Talent.com.

Fundada em 2011, talento.com é uma das maiores fontes de emprego do mundo. A empresa combina listas de empregos pagos de seus clientes com listas de empregos públicos em uma única plataforma pesquisável. Com mais de 30 milhões de empregos listados em mais de 75 países, a Talent.com oferece empregos em vários idiomas, setores e canais de distribuição. O resultado é uma plataforma que combina milhões de candidatos a empregos com empregos disponíveis.

A missão da Talent.com é centralizar todas as vagas disponíveis na web para ajudar os candidatos a encontrar a melhor opção, proporcionando-lhes a melhor experiência de pesquisa. Seu foco está na relevância, pois a ordem dos trabalhos recomendados é de vital importância para mostrar os trabalhos mais pertinentes aos interesses dos usuários. O desempenho do algoritmo de correspondência da Talent.com é fundamental para o sucesso do negócio e um contribuidor fundamental para a experiência dos usuários. É um desafio prever quais empregos são pertinentes para um candidato com base na quantidade limitada de informações fornecidas, geralmente contidas em algumas palavras-chave e um local.

Dada esta missão, Talent.com e AWS uniram forças para criar um mecanismo de recomendação de empregos usando processamento de linguagem natural (PNL) de última geração e técnicas de treinamento de modelo de aprendizagem profunda com Amazon Sage Maker para fornecer uma experiência incomparável para quem procura emprego. Esta postagem mostra nossa abordagem conjunta para projetar um sistema de recomendação de empregos, incluindo engenharia de recursos, design de arquitetura de modelo de aprendizado profundo, otimização de hiperparâmetros e avaliação de modelo que garante a confiabilidade e eficácia de nossa solução para candidatos a emprego e empregadores. O sistema é desenvolvido por uma equipe de cientistas dedicados de aprendizado de máquina aplicado (ML), engenheiros de ML e especialistas no assunto em colaboração entre AWS e Talent.com.

O sistema de recomendação gerou um aumento de 8.6% na taxa de cliques (CTR) em testes A/B online em comparação com uma solução anterior baseada em XGBoost, ajudando a conectar milhões de usuários do Talent.com a empregos melhores.

Visão geral da solução

Uma visão geral do sistema é ilustrada na figura a seguir. O sistema toma como entrada a consulta de pesquisa do usuário e gera uma lista classificada de empregos em ordem de pertinência. A pertinência do trabalho é medida pela probabilidade de clique (a probabilidade de um candidato clicar em um emprego para obter mais informações).

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

O sistema inclui quatro componentes principais:

  • Arquitetura modelo – O núcleo deste mecanismo de recomendação de trabalho é um modelo Triple Tower Pointwise baseado em aprendizado profundo, que inclui um codificador de consulta que codifica as consultas de pesquisa do usuário, um codificador de documento que codifica as descrições de trabalho e um codificador de interação que processa o trabalho anterior do usuário recursos de interação. As saídas das três torres são concatenadas e passadas por um cabeçote de classificação para prever as probabilidades de clique do trabalho. Ao treinar esse modelo em consultas de pesquisa, especificidades de empregos e dados históricos de interação do usuário do Talent.com, este sistema fornece recomendações de empregos personalizadas e altamente relevantes para quem procura emprego.
  • Engenharia de recursos – Realizamos dois conjuntos de engenharia de recursos para extrair informações valiosas dos dados de entrada e alimentá-las nas torres correspondentes no modelo. Os dois conjuntos são engenharia de recursos padrão e incorporações de Sentença-BERT (SBERT) ajustadas. Usamos os recursos de engenharia padrão como entrada no codificador de interação e alimentamos a incorporação derivada do SBERT no codificador de consulta e no codificador de documento.
  • Otimização e ajuste do modelo – Utilizamos metodologias de treinamento avançadas para treinar, testar e implantar o sistema com SageMaker. Isso inclui treinamento SageMaker Distributed Data Parallel (DDP), SageMaker Automatic Model Tuning (AMT), agendamento de taxa de aprendizagem e parada antecipada para melhorar o desempenho do modelo e a velocidade de treinamento. O uso da estrutura de treinamento DDP ajudou a acelerar o treinamento do nosso modelo para aproximadamente oito vezes mais rápido.
  • Avaliação de modelo – Realizamos avaliações offline e online. Avaliamos o desempenho do modelo com Área Sob a Curva (AUC) e Precisão Média Média em K (mAP@K) na avaliação offline. Durante os testes A/B online, avaliamos as melhorias de CTR.

Nas seções seguintes, apresentamos os detalhes desses quatro componentes.

Projeto de arquitetura de modelo de aprendizagem profunda

Projetamos um modelo Triple Tower Deep Pointwise (TTDP) usando uma arquitetura de aprendizagem profunda de torre tripla e a abordagem de modelagem de pares pontuais. A arquitetura de torre tripla fornece três redes neurais profundas paralelas, com cada torre processando um conjunto de recursos de forma independente. Este padrão de design permite que o modelo aprenda representações distintas de diferentes fontes de informação. Depois que as representações de todas as três torres são obtidas, elas são concatenadas e passadas por um cabeçote de classificação para fazer a previsão final (0–1) na probabilidade de clique (uma configuração de modelagem pontual).

As três torres são nomeadas com base nas informações que processam: o codificador de consulta processa a consulta de pesquisa do usuário, o codificador de documento processa o conteúdo documental do cargo candidato, incluindo o cargo e o nome da empresa, e o codificador de interação usa recursos relevantes extraídos de interações anteriores do usuário. e história (discutida mais na próxima seção).

Cada uma dessas torres desempenha um papel crucial no aprendizado de como recomendar trabalhos:

  • Codificador de consulta – O codificador de consulta utiliza os embeddings SBERT derivados da consulta de pesquisa de emprego do usuário. Aprimoramos os embeddings por meio de um modelo SBERT que aprimoramos. Este codificador processa e entende a intenção de procura de emprego do usuário, incluindo detalhes e nuances capturados por nossos embeddings específicos de domínio.
  • Codificador de documento – O codificador de documentos processa as informações de cada lista de empregos. Especificamente, são necessários os embeddings SBERT do texto concatenado do cargo e da empresa. A intuição é que os usuários estarão mais interessados ​​em candidatos a empregos mais relevantes para a consulta de pesquisa. Ao mapear os empregos e as consultas de pesquisa para o mesmo espaço vetorial (definido pelo SBERT), o modelo pode aprender a prever a probabilidade dos empregos potenciais em que um candidato irá clicar.
  • Codificador de interação – O codificador de interação lida com as interações anteriores do usuário com listas de empregos. Os recursos são produzidos por meio de uma etapa padrão de engenharia de recursos, que inclui o cálculo de métricas de popularidade para cargos e empresas, estabelecimento de pontuações de similaridade de contexto e extração de parâmetros de interação de envolvimentos anteriores do usuário. Ele também processa as entidades nomeadas identificadas no cargo e nas consultas de pesquisa com um modelo pré-treinado de reconhecimento de entidade nomeada (NER).

Cada torre gera uma saída independente em paralelo, todas elas concatenadas. Esse vetor de recursos combinado é então passado para prever a probabilidade de clique de uma lista de empregos para uma consulta do usuário. A arquitetura de torre tripla oferece flexibilidade na captura de relacionamentos complexos entre diferentes entradas ou recursos, permitindo que o modelo aproveite os pontos fortes de cada torre enquanto aprende representações mais expressivas para uma determinada tarefa.

As probabilidades previstas de cliques dos candidatos às vagas são classificadas de cima para baixo, gerando recomendações de vagas personalizadas. Por meio desse processo, garantimos que cada informação – seja a intenção de pesquisa do usuário, detalhes da lista de empregos ou interações anteriores – seja totalmente capturada por uma torre específica dedicada a ela. As complexas relações entre eles também são capturadas através da combinação das saídas da torre.

Engenharia de recursos

Executamos dois conjuntos de processos de engenharia de recursos para extrair informações valiosas dos dados brutos e alimentá-los nas torres correspondentes do modelo: engenharia de recursos padrão e embeddings SBERT ajustados.

Engenharia de recursos padrão

Nosso processo de preparação de dados começa com a engenharia de recursos padrão. No geral, definimos quatro tipos de recursos:

  • Popularidade – Calculamos as pontuações de popularidade em nível de trabalho individual, nível de ocupação e nível de empresa. Isso fornece uma métrica de quão atraente um determinado trabalho ou empresa pode ser.
  • Semelhança textual – Para compreender a relação contextual entre diferentes elementos textuais, calculamos pontuações de similaridade, incluindo similaridade de strings entre a consulta de pesquisa e o cargo. Isso nos ajuda a avaliar a relevância de uma vaga de emprego para o histórico de pesquisa ou inscrição de um candidato.
  • Interação – Além disso, extraímos recursos de interação de envolvimentos anteriores de usuários com listas de empregos. Um excelente exemplo disso é a semelhança incorporada entre os cargos clicados anteriormente e os cargos dos candidatos. Essa medida nos ajuda a entender a semelhança entre empregos anteriores nos quais um usuário demonstrou interesse e oportunidades de emprego futuras. Isso aumenta a precisão do nosso mecanismo de recomendação de empregos.
  • Perfil – Por último, extraímos informações de interesse de emprego definidas pelo usuário do perfil do usuário e as comparamos com novos candidatos a emprego. Isso nos ajuda a entender se um candidato a emprego corresponde ao interesse do usuário.

Uma etapa crucial em nossa preparação de dados é a aplicação de um modelo NER pré-treinado. Ao implementar um modelo NER, podemos identificar e rotular entidades nomeadas em cargos e consultas de pesquisa. Consequentemente, isso nos permite calcular pontuações de similaridade entre essas entidades identificadas, fornecendo uma medida de relacionamento mais focada e consciente do contexto. Essa metodologia reduz o ruído em nossos dados e nos fornece um método de comparação de empregos com mais nuances e sensível ao contexto.

Incorporações SBERT ajustadas

Para aumentar a relevância e a precisão do nosso sistema de recomendação de empregos, usamos o poder do SBERT, um poderoso modelo baseado em transformador, conhecido por sua proficiência na captura de significados e contextos semânticos de textos. No entanto, incorporações genéricas como o SBERT, embora eficazes, podem não capturar totalmente as nuances e terminologias únicas inerentes a um domínio específico como o nosso, que se centra em emprego e procura de emprego. Para superar isso, ajustamos os embeddings SBERT usando nossos dados específicos de domínio. Esse processo de ajuste fino otimiza o modelo para compreender e processar melhor a linguagem, o jargão e o contexto específicos do setor, tornando as incorporações mais reflexivas de nosso domínio específico. Como resultado, os embeddings refinados oferecem melhor desempenho na captura de informações semânticas e contextuais dentro da nossa esfera, levando a recomendações de trabalho mais precisas e significativas para nossos usuários.

A figura a seguir ilustra a etapa de ajuste fino do SBERT.

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

Ajustamos os embeddings SBERT usando Perda tripla com uma métrica de distância de cosseno que aprende a incorporação de texto onde textos âncora e positivos têm uma similaridade de cosseno maior do que textos âncora e negativos. Usamos as consultas de pesquisa dos usuários como textos âncora. Combinamos cargos e nomes de empregadores como insumos para os textos positivos e negativos. Os textos positivos são amostras de anúncios de empregos nos quais o usuário correspondente clicou, enquanto os textos negativos são amostras de anúncios de empregos nos quais o usuário não clicou. A seguir está um exemplo de implementação do procedimento de ajuste fino:

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)

Treinamento de modelo com SageMaker Distributed Data Parallel

Usamos SageMaker Distributed Data Parallel (SMDDP), um recurso da plataforma SageMaker ML que é construído sobre PyTorch DDP. Ele fornece um ambiente otimizado para executar trabalhos de treinamento PyTorch DDP na plataforma SageMaker. Ele foi projetado para acelerar significativamente o treinamento do modelo de aprendizado profundo. Isso é feito dividindo um grande conjunto de dados em pedaços menores e distribuindo-os por várias GPUs. O modelo é replicado em cada GPU. Cada GPU processa os dados atribuídos de forma independente e os resultados são agrupados e sincronizados em todas as GPUs. O DDP cuida da comunicação gradiente para manter as réplicas do modelo sincronizadas e as sobrepõe aos cálculos gradientes para acelerar o treinamento. O SMDDP utiliza um algoritmo AllReduce otimizado para minimizar a comunicação entre GPUs, reduzindo o tempo de sincronização e melhorando a velocidade geral de treinamento. O algoritmo se adapta a diferentes condições de rede, tornando-o altamente eficiente tanto para ambientes locais quanto baseados em nuvem. Na arquitetura SMDDP (conforme mostrado na figura a seguir), o treinamento distribuído também é dimensionado usando um cluster de muitos nós. Isso significa não apenas múltiplas GPUs em uma instância de computação, mas muitas instâncias com múltiplas GPUs, o que acelera ainda mais o treinamento.

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

Para obter mais informações sobre esta arquitetura, consulte Introdução à biblioteca paralela de dados distribuídos do SageMaker.

Com o SMDDP, conseguimos reduzir substancialmente o tempo de treinamento do nosso modelo TTDP, tornando-o oito vezes mais rápido. Tempos de treinamento mais rápidos significam que podemos iterar e melhorar nossos modelos mais rapidamente, levando a melhores recomendações de trabalho para nossos usuários em menos tempo. Este ganho de eficiência é fundamental para manter a competitividade do nosso mecanismo de recomendação de empregos num mercado de trabalho em rápida evolução.

Você pode adaptar seu script de treinamento com o SMDDP com apenas três linhas de código, conforme mostrado no bloco de código a seguir. Usando PyTorch como exemplo, a única coisa que você precisa fazer é importar o cliente PyTorch da biblioteca SMDDP (smdistributed.dataparallel.torch.torch_smddp). O cliente se cadastra smddp como back-end para PyTorch.

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

Depois de ter um script PyTorch funcional adaptado para usar a biblioteca paralela de dados distribuídos, você pode iniciar um trabalho de treinamento distribuído usando o SageMaker Python SDK.

Avaliando o desempenho do modelo

Ao avaliar o desempenho de um sistema de recomendação, é crucial escolher métricas que se alinhem estreitamente com os objetivos de negócio e forneçam uma compreensão clara da eficácia do modelo. No nosso caso, usamos o AUC para avaliar o desempenho da previsão de cliques de emprego do nosso modelo TTDP e o mAP@K para avaliar a qualidade da lista de empregos classificada final.

A AUC refere-se à área sob a curva característica de operação do receptor (ROC). Representa a probabilidade de um exemplo positivo escolhido aleatoriamente ter uma classificação superior a um exemplo negativo escolhido aleatoriamente. Varia de 0 a 1, onde 1 indica um classificador ideal e 0.5 representa uma estimativa aleatória. mAP@K é uma métrica comumente usada para avaliar a qualidade de sistemas de recuperação de informações, como nosso mecanismo de recomendação de empregos. Ele mede a precisão média de recuperação dos K ​​principais itens relevantes para uma determinada consulta ou usuário. Ele varia de 0 a 1, com 1 indicando classificação ideal e 0 indicando a menor precisão possível no valor K fornecido. Avaliamos a AUC, mAP@1 e mAP@3. Coletivamente, estas métricas permitem-nos avaliar a capacidade do modelo para distinguir entre classes positivas e negativas (AUC) e o seu sucesso em classificar os itens mais relevantes no topo (mAP@K).

Com base em nossa avaliação off-line, o modelo TTDP superou o modelo de linha de base – o modelo de produção existente baseado em XGBoost – em 16.65% para AUC, 20% para mAP@1 e 11.82% para mAP@3.

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.

Além disso, projetamos um teste A/B online para avaliar o sistema proposto e executamos o teste em uma porcentagem da população de e-mail dos EUA durante 6 semanas. No total, foram enviados aproximadamente 22 milhões de e-mails utilizando o trabalho recomendado pelo novo sistema. O aumento resultante nos cliques em comparação com o modelo de produção anterior foi de 8.6%. Talent.com está aumentando gradualmente a porcentagem de implementação do novo sistema para toda a sua população e canais.

Conclusão

Criar um sistema de recomendação de empregos é uma tarefa complexa. Cada candidato a emprego tem necessidades, preferências e experiências profissionais únicas que não podem ser inferidas a partir de uma breve consulta de pesquisa. Nesta postagem, Talent.com colaborou com a AWS para desenvolver uma solução completa de recomendação de empregos baseada em aprendizado profundo que classifica listas de empregos a serem recomendados aos usuários. A equipe da Talent.com realmente gostou de colaborar com a equipe da AWS durante todo o processo de solução desse problema. Isto representa um marco significativo na jornada transformadora da Talent.com, à medida que a equipe aproveita o poder do aprendizado profundo para capacitar seus negócios.

Este projeto foi aprimorado usando SBERT para gerar incorporações de texto. No momento em que este artigo foi escrito, a AWS apresentou Incorporações Amazon Titan como parte de seus modelos fundamentais (FMs) oferecidos por meio de Rocha Amazônica, que é um serviço totalmente gerenciado que oferece uma seleção de modelos básicos de alto desempenho das principais empresas de IA. Incentivamos os leitores a explorar as técnicas de aprendizado de máquina apresentadas nesta postagem do blog e a aproveitar os recursos fornecidos pela AWS, como o SMDDP, ao mesmo tempo em que usam os modelos fundamentais do AWS Bedrock para criar suas próprias funcionalidades de pesquisa.

Referências


Sobre os autores

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai. Yi Xiang é Cientista Aplicada II no Amazon Machine Learning Solutions Lab, onde ajuda clientes da AWS em diferentes setores a acelerar sua adoção de IA e nuvem.

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.Tong Wang é cientista sênior aplicado no laboratório de soluções de aprendizado de máquina da Amazon, onde ajuda clientes da AWS em diferentes setores a acelerar a adoção de IA e nuvem.

Dmitry BespalovDmitry Bespalov é cientista sênior aplicado no laboratório de soluções de aprendizado de máquina da Amazon, onde ajuda clientes da AWS em diferentes setores a acelerar a adoção de IA e nuvem.

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.Anatoly Khomenko é engenheiro sênior de aprendizado de máquina na Talent.com e é apaixonado por processamento de linguagem natural, combinando boas pessoas com bons empregos.

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.Abdenour Bezzouh é um executivo com mais de 25 anos de experiência construindo e entregando soluções tecnológicas que atendem milhões de clientes. Abdenour ocupou o cargo de Diretor de Tecnologia (CTO) na talento.com quando a equipe da AWS projetou e executou esta solução específica para talento.com.

Do texto ao emprego dos sonhos: criando um recomendador de empregos baseado em PNL na Talent.com com o Amazon SageMaker | Inteligência de dados PlatoBlockchain da Amazon Web Services. Pesquisa vertical. Ai.Dale Jacques é estrategista sênior de IA no Generative AI Innovation Center, onde ajuda os clientes da AWS a traduzir problemas de negócios em soluções de IA.

Yanjun QiYanjun Qi é gerente sênior de ciência aplicada no laboratório de soluções de aprendizado de máquina da Amazon. Ela inova e aplica aprendizado de máquina para ajudar os clientes da AWS a acelerar a adoção de IA e nuvem.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS