Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Веб-сервіси Amazon

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Веб-сервіси Amazon

Співавторами цієї публікації є Анатолій Хоменко, інженер машинного навчання, та Абденур Беззу, головний технічний директор Talent.com.

Заснована в 2011, Talent.com є одним із найбільших у світі джерел зайнятості. Компанія поєднує оплачувані списки вакансій від своїх клієнтів із загальнодоступними вакансіями в єдину платформу з можливістю пошуку. З понад 30 мільйонами вакансій у більш ніж 75 країнах Talent.com надає вакансії багатьма мовами, галузями та каналами збуту. Результатом є платформа, яка відповідає мільйонам шукачів роботи з наявними вакансіями.

Місія Talent.com полягає в тому, щоб централізувати всі вакансії, доступні в Інтернеті, щоб допомогти шукачам знайти найкращу пару, надаючи їм найкращий досвід пошуку. Основна увага приділяється релевантності, оскільки порядок рекомендованих вакансій життєво важливий, щоб показати вакансії, які найбільше відповідають інтересам користувачів. Ефективність алгоритму зіставлення Talent.com має першорядне значення для успіху бізнесу та ключовий внесок у досвід користувачів. Важко передбачити, яка робота підходить шукачеві, на основі обмеженого обсягу наданої інформації, яка зазвичай містить кілька ключових слів і місцезнаходження.

З огляду на цю місію, Talent.com і AWS об’єднали зусилля, щоб створити систему рекомендацій щодо роботи, використовуючи найсучаснішу технологію обробки природної мови (NLP) і методи навчання моделі глибокого навчання з Amazon SageMaker щоб забезпечити неперевершений досвід для шукачів роботи. Ця публікація демонструє наш спільний підхід до розробки системи рекомендацій щодо роботи, включаючи розробку функцій, розробку архітектури моделі глибокого навчання, оптимізацію гіперпараметрів і оцінку моделі, що забезпечує надійність і ефективність нашого рішення як для шукачів роботи, так і для роботодавців. Система розроблена командою науковців із прикладного машинного навчання (ML), інженерів ML та експертів із предметних питань у співпраці між AWS і Talent.com.

Система рекомендацій забезпечила підвищення рейтингу кліків (CTR) на 8.6% під час онлайн-тестування A/B порівняно з попереднім рішенням на основі XGBoost, що допомогло мільйонам користувачів Talent.com отримати кращу роботу.

Огляд рішення

Огляд системи показано на наступному малюнку. Система приймає пошуковий запит користувача як вхідні дані та виводить ранжований список вакансій у порядку відповідності. Відповідність вакансії вимірюється ймовірністю клацання (ймовірність того, що шукач роботи натисне на вакансію для отримання додаткової інформації).

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Система складається з чотирьох основних компонентів:

  • Архітектура моделі – Ядром цієї системи рекомендацій щодо вакансій є модель Triple Tower Pointwise на основі глибокого навчання, яка включає кодувальник запитів, який кодує пошукові запити користувача, кодер документів, який кодує описи посад, і кодер взаємодії, який обробляє минулі завдання користувача. особливості взаємодії. Вихідні дані трьох веж об’єднуються та пропускаються через головку класифікації для прогнозування ймовірності клацання завдання. Завдяки навчанню цієї моделі на пошукових запитах, специфіці роботи та історичних даних про взаємодію користувачів із Talent.com, ця система надає персоналізовані та дуже релевантні рекомендації щодо роботи шукачам.
  • Особливість інженерії – Ми виконуємо два набори проектування функцій, щоб отримати цінну інформацію з вхідних даних і подати її у відповідні вежі в моделі. Два набори — це стандартна розробка функцій і тонко налаштовані вбудовування Sentence-BERT (SBERT). Ми використовуємо стандартні розроблені функції як вхідні дані для кодувальника взаємодії та подаємо вбудовування, отримане від SBERT, у кодувальник запитів і кодувальник документів.
  • Оптимізація та налаштування моделі – Ми використовуємо передові методики навчання для навчання, тестування та розгортання системи за допомогою SageMaker. Це включає навчання SageMaker Distributed Data Parallel (DDP), автоматичне налаштування моделі SageMaker (AMT), планування швидкості навчання та ранню зупинку для покращення продуктивності моделі та швидкості навчання. Використання інфраструктури навчання DDP допомогло пришвидшити навчання моделі приблизно у вісім разів.
  • Оцінка моделі – Ми проводимо оцінювання як офлайн, так і онлайн. Ми оцінюємо ефективність моделі за площею під кривою (AUC) і середньою середньою точністю при K (mAP@K) в автономному режимі. Під час онлайн-тестування A/B ми оцінюємо покращення CTR.

У наступних розділах ми представляємо деталі цих чотирьох компонентів.

Дизайн архітектури моделі глибокого навчання

Ми розробляємо модель TTDP (Triple Tower Deep Wise) з використанням архітектури глибокого навчання з трьома вежами та підходу поточкового парного моделювання. Архітектура з трьома вежами забезпечує три паралельні глибокі нейронні мережі, кожна з яких обробляє набір функцій незалежно. Цей шаблон проектування дозволяє моделі вивчати різні представлення з різних джерел інформації. Після того, як представлення від усіх трьох веж отримані, вони об’єднуються та пропускаються через головку класифікації, щоб зробити остаточний прогноз (0–1) щодо ймовірності клацання (налаштування поточкового моделювання).

Три вежі називаються на основі інформації, яку вони обробляють: кодувальник запитів обробляє пошуковий запит користувача, кодувальник документів обробляє вміст документації кандидата, включаючи назву посади та назву компанії, а кодувальник взаємодії використовує відповідні функції, отримані з попередніх взаємодій користувача та історія (докладніше в наступному розділі).

Кожна з цих веж відіграє вирішальну роль у навчанні того, як рекомендувати роботу:

  • Кодувальник запитів – Кодувальник запитів приймає вбудовані SBERT, отримані з запиту користувача на пошук роботи. Ми вдосконалюємо вбудовування за допомогою моделі SBERT, яку ми точно налаштували. Цей кодер обробляє та розуміє наміри користувача щодо пошуку роботи, включаючи деталі та нюанси, зафіксовані нашими доменно-спеціальними вбудованими функціями.
  • Кодувальник документів – Кодувальник документів обробляє інформацію кожного списку вакансій. Зокрема, він використовує вбудовування SBERT об’єднаного тексту з назви посади та компанії. Інтуїція полягає в тому, що користувачів більше цікавитимуть вакансії кандидатів, які більше відповідають пошуковому запиту. Зіставляючи вакансії та пошукові запити в один і той самий векторний простір (визначений SBERT), модель може навчитися передбачати ймовірність потенційних вакансій, які шукач роботи вибере.
  • Кодер взаємодії – Кодер взаємодії має справу з попередніми взаємодіями користувача зі списками вакансій. Функції створюються за допомогою стандартного етапу розробки функцій, який включає обчислення показників популярності для робочих місць і компаній, встановлення показників подібності контексту та вилучення параметрів взаємодії з попередніх залучень користувачів. Він також обробляє іменовані сутності, визначені в назві посади та пошукових запитах, за допомогою попередньо навченої моделі розпізнавання іменованих сутностей (NER).

Кожна вежа паралельно генерує незалежний вихід, який потім об’єднується разом. Потім цей комбінований вектор ознак передається для прогнозування ймовірності клацання списку вакансій за запитом користувача. Архітектура з трьома вежами забезпечує гнучкість у відображенні складних зв’язків між різними вхідними даними або функціями, дозволяючи моделі використовувати сильні сторони кожної вежі, вивчаючи більш виразні представлення для поставленого завдання.

Прогнозована ймовірність натискання вакансії кандидатів упорядковується від високого до низького, створюючи персоналізовані рекомендації щодо роботи. Завдяки цьому процесу ми гарантуємо, що кожна частина інформації — чи то наміри користувача щодо пошуку, деталі списку вакансій чи минулі взаємодії — повністю фіксується спеціальною вежею, призначеною для неї. Складні взаємозв’язки між ними також вловлюються через комбінацію виходів вежі.

Особливість інженерії

Ми виконуємо два набори процесів розробки функцій, щоб отримати цінну інформацію з необроблених даних і подати її у відповідні вежі в моделі: стандартну розробку функцій і точно налаштовані вбудовування SBERT.

Розробка стандартних функцій

Наш процес підготовки даних починається з розробки стандартних функцій. Загалом ми визначаємо чотири типи функцій:

  • популярність – Ми обчислюємо показники популярності на рівні окремої посади, професії та компанії. Це забезпечує показник того, наскільки привабливою може бути певна робота чи компанія.
  • Текстова подібність – Щоб зрозуміти контекстний зв’язок між різними текстовими елементами, ми обчислюємо показники подібності, включаючи подібність рядка між пошуковим запитом і назвою посади. Це допомагає нам оцінити відповідність вакансії пошукам шукача роботи чи історії заявок.
  • Взаємодія – Крім того, ми витягуємо функції взаємодії з попередніх взаємодій користувачів зі списками вакансій. Яскравим прикладом цього є вбудовування подібності між назвами вакансій, які ви клацали раніше, і назвами посад кандидатів. Цей показник допомагає нам зрозуміти подібність між попередніми вакансіями, до яких користувач виявляв інтерес, і майбутніми вакансіями. Це підвищує точність нашої системи рекомендацій щодо роботи.
  • профіль – Нарешті, ми витягуємо визначену користувачем інформацію про інтереси до роботи з профілю користувача та порівнюємо її з новими кандидатами на роботу. Це допомагає нам зрозуміти, чи відповідає кандидат на роботу інтересам користувача.

Вирішальним кроком у нашій підготовці даних є застосування попередньо навченої моделі NER. Впроваджуючи модель NER, ми можемо ідентифікувати та позначати іменовані сутності в назвах посад і пошукових запитах. Отже, це дозволяє нам обчислювати показники подібності між цими ідентифікованими об’єктами, забезпечуючи більш цілеспрямований і залежний від контексту показник спорідненості. Ця методологія зменшує шум у наших даних і дає нам більш нюансований, контекстно-залежний метод порівняння вакансій.

Тонко налаштовані вбудовування SBERT

Щоб підвищити релевантність і точність нашої системи рекомендацій щодо роботи, ми використовуємо потужність SBERT, потужну модель на основі трансформатора, яка відома своєю майстерністю вловлювати семантичні значення та контексти з тексту. Однак загальні вбудовування, такі як SBERT, хоча й є ефективними, можуть не повністю охопити унікальні нюанси та термінологію, притаманні певній сфері, такій як наша, яка зосереджена навколо працевлаштування та пошуку роботи. Щоб подолати це, ми точно налаштовуємо вбудовування SBERT, використовуючи наші специфічні для домену дані. Цей процес тонкого налаштування оптимізує модель для кращого розуміння та обробки специфічної для галузі мови, жаргону та контексту, завдяки чому вбудовування краще відображають нашу конкретну область. Як наслідок, удосконалені вбудовування пропонують покращену продуктивність у захопленні як семантичної, так і контекстної інформації в нашій сфері, що призводить до більш точних і значущих рекомендацій щодо роботи для наших користувачів.

На наступному малюнку показано крок тонкого налаштування SBERT.

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Ми налаштовуємо вбудовування SBERT за допомогою TripletLoss з метрикою косинусної відстані, яка вивчає вбудовування тексту, де опорний і позитивний тексти мають вищу косинусну подібність, ніж якірний і негативний тексти. Ми використовуємо пошукові запити користувачів як якірні тексти. Ми поєднуємо назви посад і імена роботодавців як вхідні дані для позитивних і негативних текстів. Позитивні тексти беруться з оголошень про роботу, на які натиснув відповідний користувач, тоді як негативні тексти беруться з оголошень про роботу, на які користувач не натискав. Нижче наведено приклад виконання процедури тонкого налаштування:

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 Distributed Data Parallel

Ми використовуємо SageMaker Distributed Data Parallel (SMDDP), функцію платформи SageMaker ML, яка побудована на основі PyTorch DDP. Він забезпечує оптимізоване середовище для виконання навчальних завдань PyTorch DDP на платформі SageMaker. Він створений для значного прискорення навчання моделі глибокого навчання. Він досягає цього шляхом поділу великого набору даних на менші частини та розподілу їх між кількома графічним процесором. Модель копіюється на кожному GPU. Кожен GPU обробляє призначені йому дані незалежно, а результати зіставляються та синхронізуються між усіма GPU. DDP піклується про градієнтний зв’язок, щоб підтримувати синхронізацію реплік моделей, і накладає їх на градієнтні обчислення для прискорення навчання. SMDDP використовує оптимізований алгоритм AllReduce для мінімізації зв’язку між графічними процесорами, скорочуючи час синхронізації та покращуючи загальну швидкість навчання. Алгоритм адаптується до різних умов мережі, що робить його високоефективним як для локальних, так і для хмарних середовищ. В архітектурі SMDDP (як показано на наступному малюнку) розподілене навчання також масштабується за допомогою кластера з багатьох вузлів. Це означає не лише кілька графічних процесорів в обчислювальному екземплярі, а багато екземплярів із кількома графічним процесором, що ще більше прискорює навчання.

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Додаткову інформацію про цю архітектуру див Знайомство з паралельною бібліотекою розподілених даних SageMaker.

Завдяки SMDDP ми змогли значно скоротити час навчання нашої моделі TTDP, зробивши її у вісім разів швидшою. Швидший час навчання означає, що ми можемо швидше повторювати та вдосконалювати наші моделі, що дасть кращі рекомендації щодо роботи для наших користувачів за коротший проміжок часу. Такий приріст ефективності відіграє важливу роль у збереженні конкурентоспроможності нашої системи рекомендацій щодо роботи на ринку праці, що швидко розвивається.

Ви можете адаптувати свій сценарій навчання за допомогою SMDDP лише за допомогою трьох рядків коду, як показано в наступному блоці коду. Використовуючи PyTorch як приклад, єдине, що вам потрібно зробити, це імпортувати клієнт PyTorch бібліотеки SMDDP (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, адаптований для використання паралельної бібліотеки розподілених даних, ви можете запустіть завдання розподіленого навчання за допомогою SDK SageMaker Python.

Оцінка продуктивності моделі

Оцінюючи продуктивність системи рекомендацій, дуже важливо вибрати показники, які тісно відповідають бізнес-цілям і забезпечують чітке розуміння ефективності моделі. У нашому випадку ми використовуємо 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 перевершила базову модель — існуючу виробничу модель на основі XGBoost — на 16.65% для AUC, 20% для mAP@1 і 11.82% для mAP@3.

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Крім того, ми розробили онлайн-тест A/B, щоб оцінити запропоновану систему, і провели тест на відсотку населення США, які використовують електронні листи протягом 6 тижнів. Загалом було надіслано приблизно 22 мільйони електронних листів із використанням роботи, рекомендованої новою системою. Порівняно з попередньою виробничою моделлю кількість кліків зросла на 8.6%. Talent.com поступово збільшує відсоток, щоб розгорнути нову систему для всього населення та каналів.

Висновок

Створення системи рекомендацій щодо роботи – складна робота. Кожен шукач роботи має унікальні потреби, уподобання та професійний досвід, які неможливо визначити з короткого пошукового запиту. У цьому дописі Talent.com співпрацював з AWS, щоб розробити наскрізне рішення для рекомендацій вакансій на основі глибокого навчання, яке ранжує списки вакансій для рекомендацій користувачам. Команда Talent.com отримала велике задоволення від співпраці з командою AWS протягом усього процесу вирішення цієї проблеми. Це знаменує собою важливу віху на шляху трансформації Talent.com, оскільки команда використовує переваги глибокого навчання для розширення можливостей свого бізнесу.

Цей проект було налаштовано за допомогою SBERT для створення вбудованих текстів. На момент написання статті представлено AWS Amazon Titan Embeddings як частину їхніх базових моделей (FM), які пропонуються через Amazon Bedrock, яка є повністю керованою послугою, що надає вибір високоефективних базових моделей від провідних компаній ШІ. Ми заохочуємо читачів досліджувати методи машинного навчання, представлені в цьому дописі в блозі, і використовувати можливості, надані AWS, як-от SMDDP, одночасно використовуючи базові моделі AWS Bedrock для створення власних функцій пошуку.

посилання


Про авторів

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai. І Сян є Applied Scientist II в Amazon Machine Learning Solutions Lab, де вона допомагає клієнтам AWS у різних галузях прискорити впровадження ШІ та хмарних технологій.

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Тонг Ван є старшим прикладним науковим співробітником Amazon Machine Learning Solutions Lab, де він допомагає клієнтам AWS у різних галузях прискорити впровадження ШІ та хмарних технологій.

Дмитро БеспаловДмитро Беспалов є старшим прикладним науковим співробітником Amazon Machine Learning Solutions Lab, де він допомагає клієнтам AWS у різних галузях прискорити впровадження ШІ та хмарних технологій.

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Анатолій Хоменко є старшим інженером з машинного навчання в Talent.com, який захоплюється обробкою природної мови, підбираючи хороших людей на хорошу роботу.

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Абденур Беззух є керівником із понад 25-річним досвідом створення та надання технологічних рішень, які масштабуються для мільйонів клієнтів. Абденур займав посаду головного технічного директора (CTO) у Talent.com коли команда AWS розробила та виконала це рішення для Talent.com.

Від текстових повідомлень до роботи мрії: створюємо на Talent.com рекомендацію про роботу на основі НЛП за допомогою Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Дейл Жак є старшим стратегом зі штучного інтелекту в Центрі інновацій Generative AI, де він допомагає клієнтам AWS перетворювати бізнес-проблеми на рішення штучного інтелекту.

Яньцзюнь ЦіЯньцзюнь Ці є старшим менеджером із прикладних наук у Amazon Machine Learning Solution Lab. Вона впроваджує інновації та застосовує машинне навчання, щоб допомогти клієнтам AWS прискорити впровадження ШІ та хмари.

Часова мітка:

Більше від AWS Машинне навчання