Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon webbtjänster

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon webbtjänster

Det här inlägget är medförfattare av Anatoly Khomenko, Machine Learning Engineer, och Abdenour Bezzouh, Chief Technology Officer på Talent.com.

Grundades 2011, Talent.com är en av världens största sysselsättningskällor. Företaget kombinerar betalda jobbannonser från sina kunder med offentliga jobbannonser till en enda sökbar plattform. Med över 30 miljoner jobb listade i mer än 75 länder, betjänar Talent.com jobb över många språk, branscher och distributionskanaler. Resultatet är en plattform som matchar miljontals arbetssökande med lediga jobb.

Talent.coms uppdrag är att centralisera alla jobb som finns tillgängliga på webben för att hjälpa arbetssökande att hitta sin bästa matchning samtidigt som de får den bästa sökupplevelsen. Dess fokus ligger på relevans, eftersom ordningen på de rekommenderade jobben är mycket viktig för att visa de jobb som är mest relevanta för användarnas intressen. Prestandan hos Talent.coms matchningsalgoritm är avgörande för företagets framgång och en viktig bidragande faktor till deras användares upplevelse. Det är utmanande att förutsäga vilka jobb som är relevanta för en arbetssökande baserat på den begränsade mängden information som tillhandahålls, vanligtvis inkluderad i ett fåtal nyckelord och en plats.

Med tanke på detta uppdrag gick Talent.com och AWS samman för att skapa en motor för jobbrekommendationer med hjälp av den senaste NLP-tekniken (natural language processing) och djupinlärningsmodeller med Amazon SageMaker att ge en oöverträffad upplevelse för arbetssökande. Det här inlägget visar vårt gemensamma tillvägagångssätt för att designa ett jobbrekommendationssystem, inklusive funktionsteknik, design för djupinlärning av modellarkitektur, hyperparameteroptimering och modellutvärdering som säkerställer tillförlitligheten och effektiviteten hos vår lösning för både arbetssökande och arbetsgivare. Systemet är utvecklat av ett team av dedikerade forskare inom tillämpad maskininlärning (ML), ML-ingenjörer och ämnesexperter i samarbete mellan AWS och Talent.com.

Rekommendationssystemet har drivit på en 8.6 % ökning av klickfrekvensen (CTR) i online A/B-tester mot en tidigare XGBoost-baserad lösning, vilket hjälper till att koppla miljontals Talent.coms användare till bättre jobb.

Översikt över lösningen

En översikt över systemet illustreras i följande figur. Systemet tar en användares sökfråga som indata och matar ut en rankad lista över jobb i relevant ordning. Jobbrelevans mäts med klicksannolikheten (sannolikheten för att en arbetssökande klickar på ett jobb för mer information).

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Systemet innehåller fyra huvudkomponenter:

  • Modellarkitektur – Kärnan i denna jobbrekommendationsmotor är en djupinlärningsbaserad Triple Tower Pointwise-modell, som inkluderar en frågekodare som kodar användarens sökfrågor, en dokumentkodare som kodar jobbbeskrivningarna och en interaktionskodare som bearbetar det tidigare användarjobbet interaktionsfunktioner. Utgångarna från de tre tornen är sammanlänkade och skickas genom ett klassificeringshuvud för att förutsäga jobbets klicksannolikheter. Genom att träna denna modell på sökfrågor, jobbspecifikationer och historiska användarinteraktionsdata från Talent.com, ger detta system personliga och mycket relevanta jobbrekommendationer till arbetssökande.
  • Funktionsteknik – Vi utför två uppsättningar funktionsteknik för att extrahera värdefull information från indata och mata in den i motsvarande torn i modellen. De två uppsättningarna är standardfunktionsteknik och finjusterade Sentence-BERT (SBERT) inbäddningar. Vi använder de konstruerade standardfunktionerna som indata i interaktionskodaren och matar in den SBERT-härledda inbäddningen i frågekodaren och dokumentkodaren.
  • Modelloptimering och trimning – Vi använder avancerade utbildningsmetoder för att träna, testa och distribuera systemet med SageMaker. Detta inkluderar SageMaker Distributed Data Parallel (DDP)-träning, SageMaker Automatic Model Tuning (AMT), inlärningshastighetsschemaläggning och tidigt stopp för att förbättra modellens prestanda och träningshastighet. Att använda DDP-utbildningsramverket hjälpte till att påskynda vår modellträning till ungefär åtta gånger snabbare.
  • Modellutvärdering – Vi gör både offline- och onlineutvärderingar. Vi utvärderar modellens prestanda med Area Under the Curve (AUC) och Mean Average Precision vid K ​​(mAP@K) i offline-utvärdering. Under online A/B-testning utvärderar vi CTR-förbättringarna.

I följande avsnitt presenterar vi detaljerna för dessa fyra komponenter.

Deep learning modellarkitekturdesign

Vi designar en Triple Tower Deep Pointwise (TTDP) modell med hjälp av en triple-tower djupinlärningsarkitektur och punktvis parmodelleringsmetod. Trippeltornsarkitekturen tillhandahåller tre parallella djupa neurala nätverk, där varje torn bearbetar en uppsättning funktioner oberoende. Detta designmönster gör att modellen kan lära sig distinkta representationer från olika informationskällor. Efter att representationerna från alla tre tornen har erhållits sammanfogas de och passeras genom ett klassificeringshuvud för att göra den slutliga förutsägelsen (0–1) om klicksannolikheten (en punktvis modelleringsuppsättning).

De tre tornen är namngivna baserat på informationen de bearbetar: frågekodaren bearbetar användarens sökfråga, dokumentkodaren bearbetar kandidatjobbets dokumentationsinnehåll inklusive jobbtitel och företagsnamn, och interaktionskodaren använder relevanta funktioner som extraherats från tidigare användarinteraktioner och historia (diskuteras mer i nästa avsnitt).

Vart och ett av dessa torn spelar en avgörande roll för att lära sig hur man rekommenderar jobb:

  • Fråga kodare – Frågekodaren tar in de SBERT-inbäddningar som härrör från användarens jobbsökningsfråga. Vi förbättrar inbäddningarna genom en SBERT-modell som vi finjusterat. Denna kodare bearbetar och förstår användarens avsikt att söka jobb, inklusive detaljer och nyanser som fångas av våra domänspecifika inbäddningar.
  • Dokumentkodare – Dokumentkodaren bearbetar informationen för varje jobbannons. Specifikt tar det SBERT-inbäddningarna av den sammanlänkade texten från jobbtiteln och företaget. Intuitionen är att användare kommer att vara mer intresserade av kandidatjobb som är mer relevanta för sökfrågan. Genom att kartlägga jobben och sökfrågorna till samma vektorutrymme (definierad av SBERT) kan modellen lära sig att förutsäga sannolikheten för de potentiella jobb en arbetssökande kommer att klicka på.
  • Interaktionskodare – Interaktionskodaren hanterar användarens tidigare interaktioner med jobbannonser. Funktionerna produceras via ett standardsteg för funktionsteknik, som inkluderar beräkning av popularitetsmått för jobbroller och företag, fastställande av kontextlikhetspoäng och extrahera interaktionsparametrar från tidigare användarengagemang. Den bearbetar också de namngivna enheterna som identifieras i jobbtiteln och sökfrågor med en förutbildad modell för namngiven enhetsigenkänning (NER).

Varje torn genererar en oberoende utsignal parallellt, som alla sedan sammanlänkas. Denna kombinerade funktionsvektor skickas sedan för att förutsäga klicksannolikheten för en jobbannons för en användarfråga. Trippeltornsarkitekturen ger flexibilitet när det gäller att fånga komplexa relationer mellan olika ingångar eller funktioner, vilket gör att modellen kan dra fördel av styrkorna i varje torn samtidigt som den lär sig mer uttrycksfulla representationer för den givna uppgiften.

Kandidatjobbens förväntade klicksannolikheter rankas från högt till lågt, vilket genererar personliga jobbrekommendationer. Genom denna process säkerställer vi att varje del av information – oavsett om det är användarens sökavsikt, uppgifter om jobbannonser eller tidigare interaktioner – fångas helt av ett specifikt torn som är dedikerat till den. De komplexa relationerna mellan dem fångas också genom kombinationen av tornets utgångar.

Funktionsteknik

Vi utför två uppsättningar funktionsteknikprocesser för att extrahera värdefull information från rådata och mata in den i motsvarande torn i modellen: standardfunktionsteknik och finjusterade SBERT-inbäddningar.

Standardfunktionsteknik

Vår dataförberedelseprocess börjar med standardfunktionsteknik. Sammantaget definierar vi fyra typer av funktioner:

  • Popularitet – Vi beräknar popularitetspoäng på individnivå, yrkesnivå och företagsnivå. Detta ger ett mått på hur attraktivt ett visst jobb eller företag kan vara.
  • Textmässig likhet – För att förstå det kontextuella förhållandet mellan olika textelement, beräknar vi likhetspoäng, inklusive stränglikhet mellan sökfrågan och jobbtiteln. Detta hjälper oss att bedöma relevansen av ett ledigt jobb för en arbetssökandes sök- eller ansökningshistorik.
  • Interaktion – Dessutom extraherar vi interaktionsfunktioner från tidigare användarengagemang med jobbannonser. Ett utmärkt exempel på detta är den inbäddade likheten mellan tidigare klickade jobbtitlar och kandidatjobbtitlar. Detta mått hjälper oss att förstå likheten mellan tidigare jobb som en användare har visat intresse för och kommande jobbmöjligheter. Detta förbättrar precisionen i vår jobbrekommendationsmotor.
  • Profil – Slutligen extraherar vi användardefinierad jobbintresseinformation från användarprofilen och jämför den med nya jobbkandidater. Detta hjälper oss att förstå om en jobbkandidat matchar en användares intresse.

Ett avgörande steg i vår dataförberedelse är tillämpningen av en förutbildad NER-modell. Genom att implementera en NER-modell kan vi identifiera och märka namngivna enheter inom jobbtitlar och sökfrågor. Följaktligen tillåter detta oss att beräkna likhetspoäng mellan dessa identifierade enheter, vilket ger ett mer fokuserat och sammanhangsmedvetet mått på släktskap. Denna metod minskar bruset i vår data och ger oss en mer nyanserad, kontextkänslig metod för att jämföra jobb.

Finjusterade SBERT-inbäddningar

För att förbättra relevansen och noggrannheten i vårt jobbrekommendationssystem använder vi kraften hos SBERT, en kraftfull transformatorbaserad modell, känd för sin skicklighet i att fånga semantiska betydelser och sammanhang från text. Men, generiska inbäddningar som SBERT, även om de är effektiva, kanske inte helt fångar de unika nyanserna och terminologierna som finns i en specifik domän som vår, som kretsar kring anställning och jobbsökning. För att övervinna detta finjusterar vi SBERT-inbäddningarna med vår domänspecifika data. Denna finjusteringsprocess optimerar modellen för att bättre förstå och bearbeta det branschspecifika språket, jargongen och sammanhanget, vilket gör att inbäddningarna mer reflekterar vår specifika domän. Som ett resultat erbjuder de förfinade inbäddningarna förbättrad prestanda när det gäller att fånga både semantisk och kontextuell information inom vår sfär, vilket leder till mer exakta och meningsfulla jobbrekommendationer för våra användare.

Följande figur illustrerar SBERT-finjusteringssteget.

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Vi finjusterar SBERT-inbäddningar med hjälp av TripletLoss med en cosinusavståndsmetrik som lär sig textinbäddning där ankar- och positiva texter har högre cosinuslikhet än ankar- och negativa texter. Vi använder användarnas sökfrågor som ankartexter. Vi kombinerar befattningar och arbetsgivarnamn som input till de positiva och negativa texterna. De positiva texterna är samplade från jobbannonser som motsvarande användare klickade på, medan de negativa texterna är samplingar från jobbannonser som användaren inte klickade på. Följande är exempel på implementering av finjusteringsproceduren:

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)

Modellträning med SageMaker Distributed Data Parallel

Vi använder SageMaker Distributed Data Parallel (SMDDP), en funktion i SageMaker ML-plattformen som är byggd ovanpå PyTorch DDP. Det ger en optimerad miljö för att köra PyTorch DDP-utbildningsjobb på SageMaker-plattformen. Den är utformad för att avsevärt påskynda modellträning för djupinlärning. Det åstadkommer detta genom att dela upp en stor datauppsättning i mindre bitar och distribuera dem över flera GPU:er. Modellen replikeras på varje GPU. Varje GPU bearbetar sin tilldelade data oberoende, och resultaten sammanställs och synkroniseras över alla GPU:er. DDP tar hand om gradientkommunikation för att hålla modellrepliker synkroniserade och överlappar dem med gradientberäkningar för att påskynda träningen. SMDDP använder en optimerad AllReduce-algoritm för att minimera kommunikationen mellan GPU:er, minska synkroniseringstiden och förbättra den totala träningshastigheten. Algoritmen anpassar sig till olika nätverksförhållanden, vilket gör den mycket effektiv för både lokala och molnbaserade miljöer. I SMDDP-arkitekturen (som visas i följande figur) skalas distribuerad träning också med hjälp av ett kluster av många noder. Detta innebär inte bara flera GPU:er i en datorinstans, utan många instanser med flera GPU:er, vilket ytterligare snabbar upp träningen.

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

För mer information om denna arkitektur, se Introduktion till SageMakers Distributed Data Parallel Library.

Med SMDDP har vi kunnat minska träningstiden avsevärt för vår TTDP-modell, vilket gör den åtta gånger snabbare. Snabbare utbildningstider innebär att vi kan upprepa och förbättra våra modeller snabbare, vilket leder till bättre jobbrekommendationer för våra användare på kortare tid. Denna effektivitetsvinst är avgörande för att upprätthålla konkurrenskraften hos vår motor för jobbrekommendationer på en arbetsmarknad i snabb utveckling.

Du kan anpassa ditt träningsskript med SMDDP med endast tre rader kod, som visas i följande kodblock. Med PyTorch som exempel är det enda du behöver göra att importera SMDDP-bibliotekets PyTorch-klient (smdistributed.dataparallel.torch.torch_smddp). Kunden registrerar sig smddp som en backend för PyTorch.

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

Efter att du har ett fungerande PyTorch-skript som är anpassat för att använda det distribuerade dataparallellbiblioteket kan du starta ett distribuerat träningsjobb med SageMaker Python SDK.

Utvärdera modellens prestanda

När man utvärderar prestandan för ett rekommendationssystem är det avgörande att välja mått som ligger nära affärsmålen och ger en tydlig förståelse av modellens effektivitet. I vårt fall använder vi AUC för att utvärdera vår TTDP-modells prediktionsprestanda för jobbklick och mAP@K för att bedöma kvaliteten på den slutliga rankade jobblistan.

AUC hänvisar till området under mottagarens operationskarakteristik (ROC) kurva. Det representerar sannolikheten att ett slumpmässigt valt positivt exempel kommer att rankas högre än ett slumpmässigt valt negativt exempel. Det sträcker sig från 0–1, där 1 anger en idealisk klassificerare och 0.5 representerar en slumpmässig gissning. mAP@K är ett mått som vanligtvis används för att bedöma kvaliteten på system för informationshämtning, såsom vår motor för jobbrekommendationer. Den mäter den genomsnittliga precisionen för att hämta de bästa K relevanta objekten för en given fråga eller användare. Den sträcker sig från 0–1, där 1 indikerar optimal rankning och 0 indikerar lägsta möjliga precision vid det givna K-värdet. Vi utvärderar AUC, mAP@1 och mAP@3. Tillsammans tillåter dessa mått oss att mäta modellens förmåga att skilja mellan positiva och negativa klasser (AUC) och dess framgång med att ranka de mest relevanta objekten högst upp (mAP@K).

Baserat på vår offline-utvärdering överträffade TTDP-modellen baslinjemodellen – den befintliga XGBoost-baserade produktionsmodellen – med 16.65 % för AUC, 20 % för mAP@1 och 11.82 % för mAP@3.

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Dessutom utformade vi ett online A/B-test för att utvärdera det föreslagna systemet och körde testet på en procentandel av USA:s e-postbefolkning i 6 veckor. Totalt skickades cirka 22 miljoner e-postmeddelanden med det jobb som rekommenderas av det nya systemet. Den resulterande ökningen av klick jämfört med den tidigare produktionsmodellen var 8.6 %. Talent.com ökar gradvis andelen för att rulla ut det nya systemet till hela befolkningen och kanalerna.

Slutsats

Att skapa ett jobbrekommendationssystem är en komplex strävan. Varje arbetssökande har unika behov, preferenser och yrkeserfarenheter som inte går att sluta sig till från en kort sökfråga. I det här inlägget samarbetade Talent.com med AWS för att utveckla en heltäckande djupinlärningsbaserad jobbrekommendationslösning som rankar listor över jobb att rekommendera till användare. Talent.com-teamet njöt verkligen av att samarbeta med AWS-teamet under hela processen för att lösa detta problem. Detta markerar en betydande milstolpe i Talent.coms transformativa resa, eftersom teamet drar fördel av kraften i djupinlärning för att stärka sin verksamhet.

Detta projekt finjusterades med hjälp av SBERT för att skapa textinbäddningar. I skrivande stund introducerade AWS Amazon Titan-inbäddningar som en del av deras grundläggande modeller (FM) som erbjuds genom Amazonas berggrund, som är en helt hanterad tjänst som tillhandahåller ett urval av högpresterande grundmodeller från ledande AI-företag. Vi uppmuntrar läsarna att utforska maskininlärningsteknikerna som presenteras i det här blogginlägget och utnyttja funktionerna som tillhandahålls av AWS, såsom SMDDP, samtidigt som de använder AWS Bedrocks grundläggande modeller för att skapa sina egna sökfunktioner.

Referensprojekt


Om författarna

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai. Yi Xiang är en Applied Scientist II på Amazon Machine Learning Solutions Lab, där hon hjälper AWS-kunder inom olika branscher att påskynda deras AI och molninförande.

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Tong Wang är Senior Applied Scientist vid Amazon Machine Learning Solutions Lab, där han hjälper AWS-kunder inom olika branscher att påskynda deras AI och molninförande.

Dmitrij BespalovDmitrij Bespalov är Senior Applied Scientist vid Amazon Machine Learning Solutions Lab, där han hjälper AWS-kunder inom olika branscher att påskynda deras AI och molninförande.

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Anatolij Khomenko är senior maskininlärningsingenjör på Talent.com med en passion för bearbetning av naturligt språk som matchar bra människor med bra jobb.

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Abdenour Bezzouh är en chef med mer än 25 års erfarenhet av att bygga och leverera tekniska lösningar som skalas till miljontals kunder. Abdenour hade befattningen som Chief Technology Officer (CTO) vid Talent.com när AWS-teamet designade och utförde just denna lösning för Talent.com.

Från text till drömjobb: Bygga en NLP-baserad jobbrekommendator på Talent.com med Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Dale Jacques är senior AI-strateg inom Generative AI Innovation Center där han hjälper AWS-kunder att översätta affärsproblem till AI-lösningar.

Yanjun QiYanjun Qi är Senior Applied Science Manager på Amazon Machine Learning Solution Lab. Hon förnyar och tillämpar maskininlärning för att hjälpa AWS-kunder att påskynda deras AI- och molnintroduktion.

Tidsstämpel:

Mer från AWS maskininlärning