テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する | アマゾン ウェブ サービス

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する | アマゾン ウェブ サービス

この投稿は、機械学習エンジニアの Anatoly Khomenko と Talent.com の最高技術責任者 Abdenour Bezzouh の共著です。

2011年に設立され、 タレント.com は世界最大の雇用源の一つです。 同社は、クライアントからの有料求人情報と公開求人情報を単一の検索可能なプラットフォームに統合しています。 Talent.com では、30 か国以上で 75 万件以上の求人情報が掲載されており、さまざまな言語、業界、流通チャネルにわたる求人情報を提供しています。 その結果、何百万人もの求職者と利用可能な仕事をマッチングするプラットフォームが誕生しました。

Talent.com の使命は、Web 上で入手可能なすべての求人を一元管理して、求職者が最適な条件を見つけられるようにするとともに、最高の検索エクスペリエンスを提供することです。 ユーザーの興味に最も関連した仕事を表示するには、推奨される仕事の順序が非常に重要であるため、関連性が重視されています。 Talent.com のマッチング アルゴリズムのパフォーマンスは、ビジネスの成功にとって最も重要であり、ユーザー エクスペリエンスに大きく貢献します。 提供される限られた量の情報 (通常はいくつかのキーワードと場所に含まれる) に基づいて、どの求人が求職者に関連するかを予測することは困難です。

この使命を踏まえ、Talent.com と AWS は協力して、最先端の自然言語処理 (NLP) と深層学習モデルのトレーニング技術を使用した求人推奨エンジンを作成しました。 アマゾンセージメーカー 求職者に比類のない体験を提供します。 この投稿では、求職者と雇用主の両方にとって当社のソリューションの信頼性と有効性を保証する、特徴量エンジニアリング、深層学習モデル アーキテクチャ設計、ハイパーパラメータの最適化、モデル評価など、求人推薦システムを設計するための共同アプローチを示します。 このシステムは、AWS と Talent.com の協力のもと、専任の応用機械学習 (ML) 科学者、ML エンジニア、および対象分野の専門家からなるチームによって開発されています。

このレコメンデーション システムにより、以前の XGBoost ベースのソリューションと比較して、オンライン A/B テストのクリックスルー率 (CTR) が 8.6% 向上し、数百万の Talent.com ユーザーをより良い仕事に結びつけることができました。

ソリューションの概要

システムの概要を次の図に示します。 システムはユーザーの検索クエリを入力として受け取り、関連性の高い順にランク付けされたジョブのリストを出力します。 求人の適切性は、クリック確率 (求職者が詳しい情報を求めて求人をクリックする確率) によって測定されます。

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

このシステムには、次の XNUMX つの主要コンポーネントが含まれています。

  • モデルのアーキテクチャ – このジョブ推奨エンジンの中核は、ディープ ラーニング ベースの Triple Tower Pointwise モデルです。これには、ユーザーの検索クエリをエンコードするクエリ エンコーダー、ジョブの説明をエンコードするドキュメント エンコーダー、および過去のユーザー ジョブを処理するインタラクション エンコーダーが含まれます。インタラクション機能。 XNUMX つのタワーの出力は連結され、分類ヘッドを通過して、ジョブのクリック確率が予測されます。 Talent.com からの検索クエリ、仕事の詳細、ユーザー インタラクションの履歴データに基づいてこのモデルをトレーニングすることにより、このシステムは、パーソナライズされた関連性の高い求人情報を求職者に提供します。
  • 機能エンジニアリング – XNUMX セットの特徴量エンジニアリングを実行して、入力データから貴重な情報を抽出し、それをモデル内の対応するタワーにフィードします。 XNUMX つのセットは、標準の特徴量エンジニアリングと微調整された Sentence-BERT (SBERT) 埋め込みです。 標準のエンジニアリング機能をインタラクション エンコーダーへの入力として使用し、SBERT 派生の埋め込みをクエリ エンコーダーとドキュメント エンコーダーにフィードします。
  • モデルの最適化とチューニング – 高度なトレーニング手法を利用して、SageMaker でシステムをトレーニング、テスト、デプロイします。 これには、SageMaker 分散データ並列 (DDP) トレーニング、SageMaker 自動モデル チューニング (AMT)、学習率のスケジューリング、モデルのパフォーマンスとトレーニング速度を向上させるための早期停止が含まれます。 DDP トレーニング フレームワークを使用すると、モデルのトレーニングが約 XNUMX 倍高速化されました。
  • モデル評価 – オフラインとオンラインの両方で評価を実施します。 オフライン評価では、曲線下面積 (AUC) と K での平均平均精度 (mAP@K) を使用してモデルのパフォーマンスを評価します。 オンライン A/B テスト中に、CTR の改善を評価します。

次のセクションでは、これら XNUMX つのコンポーネントの詳細を説明します。

深層学習モデルのアーキテクチャ設計

トリプルタワーディープラーニングアーキテクチャとポイントワイズペアモデリングアプローチを使用して、トリプルタワーディープポイントワイズ(TTDP)モデルを設計します。 トリプルタワー アーキテクチャは 0 つの並列ディープ ニューラル ネットワークを提供し、各タワーが一連の機能を個別に処理します。 この設計パターンにより、モデルはさまざまな情報源から個別の表現を学習できるようになります。 1 つのタワーすべてからの表現が取得された後、それらは連結され、分類ヘッドを通過して、クリック確率の最終予測 (XNUMX ~ XNUMX) が行われます (点単位のモデリング設定)。

XNUMX つのタワーは、処理する情報に基づいて名前が付けられています。クエリ エンコーダーはユーザーの検索クエリを処理し、ドキュメント エンコーダーは役職名や会社名を含む候補者の職務の文書コンテンツを処理し、インタラクション エンコーダーは過去のユーザー インタラクションから抽出された関連機能を使用します。そして歴史(次のセクションで詳しく説明します)。

これらの各タワーは、ジョブを推奨する方法を学習する上で重要な役割を果たします。

  • クエリエンコーダ – クエリ エンコーダは、ユーザーの求人検索クエリから派生した SBERT 埋め込みを受け取ります。 微調整した SBERT モデルを通じて埋め込みを強化します。 このエンコーダーは、ドメイン固有の埋め込みによってキャプチャされた詳細やニュアンスなど、ユーザーの求職活動の意図を処理して理解します。
  • ドキュメントエンコーダ – ドキュメント エンコーダーは、各求人情報の情報を処理します。 具体的には、役職と会社から連結されたテキストの SBERT 埋め込みを取得します。 直感的には、ユーザーは検索クエリとの関連性がより高い候補求人により多くの関心を持つことになります。 求人と検索クエリを同じベクトル空間 (SBERT で定義) にマッピングすることで、モデルは求職者がクリックする可能性のある求人の確率を予測する方法を学習できます。
  • インタラクションエンコーダ – インタラクション エンコーダは、求人情報に対するユーザーの過去のインタラクションを処理します。 特徴は、標準的な特徴エンジニアリング ステップを介して生成されます。これには、職務および企業の人気指標の計算、コンテキスト類似性スコアの確立、および以前のユーザー エンゲージメントからのインタラクション パラメーターの抽出が含まれます。 また、役職で識別された固有表現や、事前トレーニングされた固有表現認識 (NER) モデルを使用した検索クエリも処理します。

各タワーは独立した出力を並列に生成し、すべてが連結されます。 この結合された特徴ベクトルは、ユーザー クエリに対する求人リストのクリック確率を予測するために渡されます。 トリプルタワー アーキテクチャは、さまざまな入力または特徴間の複雑な関係を柔軟に把握できるため、モデルが各タワーの強みを活用しながら、特定のタスクに対するより表現力豊かな表現を学習できるようになります。

候補求人の予測クリック確率が高から低までランク付けされ、パーソナライズされた求人の推奨が生成されます。 このプロセスを通じて、ユーザーの検索意図、求人情報の詳細、過去のやり取りなど、各情報がその情報専用の特定のタワーによって完全にキャプチャされるようにします。 それらの間の複雑な関係も、タワー出力の組み合わせを通じて捕捉されます。

機能エンジニアリング

当社は、生データから貴重な情報を抽出し、それをモデル内の対応するタワーにフィードするために、標準の特徴エンジニアリングと微調整された SBERT 埋め込みという XNUMX セットの特徴エンジニアリング プロセスを実行します。

標準特徴量エンジニアリング

当社のデータ準備プロセスは、標準的な特徴エンジニアリングから始まります。 全体として、次の XNUMX 種類の機能を定義します。

  • 人気 – 個人の職務レベル、職業レベル、企業レベルで人気スコアを計算します。 これは、特定の仕事や会社がどれほど魅力的であるかを示す指標を提供します。
  • テキストの類似性 – 異なるテキスト要素間の文脈上の関係を理解するために、検索クエリと役職間の文字列の類似性を含む類似性スコアを計算します。 これは、求人情報と求職者の検索履歴または応募履歴との関連性を評価するのに役立ちます。
  • 相互作用 – さらに、求人情報に対する過去のユーザー エンゲージメントからインタラクション機能を抽出します。 この代表的な例は、過去にクリックされた役職と候補の役職の間に埋め込まれた類似性です。 この尺度は、ユーザーが興味を示した以前の仕事と今後の仕事の機会との類似性を理解するのに役立ちます。 これにより、求人推薦エンジンの精度が向上します。
  • プロフィール – 最後に、ユーザー定義の求職情報をユーザー プロファイルから抽出し、新しい求職者と比較します。 これは、求職者がユーザーの興味と一致するかどうかを理解するのに役立ちます。

データ準備における重要なステップは、事前トレーニングされた NER モデルの適用です。 NER モデルを実装することにより、役職や検索クエリ内の名前付きエンティティを識別してラベルを付けることができます。 その結果、これにより、これらの識別されたエンティティ間の類似性スコアを計算できるようになり、より焦点を絞ったコンテキストを認識した関連性の尺度が提供されます。 この方法論により、データ内のノイズが軽減され、より微妙な状況に応じたジョブの比較方法が得られます。

微調整された SBERT エンベディング

求人推奨システムの関連性と正確性を高めるために、テキストから意味論的な意味とコンテキストを捕捉する能力に優れていることで知られる、強力なトランスフォーマー ベースのモデルである SBERT の力を利用しています。 ただし、SBERT のような一般的な埋め込みは効果的ではありますが、雇用と求職活動を中心とする当社のような特定のドメインに固有の独特のニュアンスや用語を完全には捉えていない可能性があります。 これを克服するために、ドメイン固有のデータを使用して SBERT 埋め込みを微調整します。 この微調整プロセスによりモデルが最適化され、業界固有の言語、専門用語、コンテキストをよりよく理解して処理できるようになり、埋め込みが特定のドメインをより反映するようになります。 その結果、洗練された埋め込みにより、領域内のセマンティック情報とコンテキスト情報の両方を取得するパフォーマンスが向上し、ユーザーにとってより正確で意味のある仕事の推奨につながります。

次の図は、SBERT の微調整ステップを示しています。

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

以下を使用して 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 Distributed Data Parallel を使用したモデル トレーニング

私たちは、PyTorch DDP 上に構築された SageMaker ML プラットフォームの機能である SageMaker Distributed Data Parallel (SMDDP) を使用します。 SageMaker プラットフォーム上で PyTorch DDP トレーニング ジョブを実行するための最適化された環境を提供します。 深層学習モデルのトレーニングを大幅に高速化するように設計されています。 これは、大規模なデータセットを小さなチャンクに分割し、それらを複数の GPU に分散することによって実現されます。 モデルはすべての GPU でレプリケートされます。 各 GPU は割り当てられたデータを個別に処理し、結果はすべての GPU で照合および同期されます。 DDP は勾配通信を処理してモデルのレプリカの同期を維持し、それらを勾配計算とオーバーラップしてトレーニングを高速化します。 SMDDP は、最適化された AllReduce アルゴリズムを利用して GPU 間の通信を最小限に抑え、同期時間を短縮し、全体的なトレーニング速度を向上させます。 このアルゴリズムはさまざまなネットワーク条件に適応するため、オンプレミス環境とクラウドベース環境の両方で非常に効率的になります。 SMDDP アーキテクチャ (次の図に示すように) では、分散トレーニングも多くのノードのクラスターを使用してスケーリングされます。 これは、コンピューティング インスタンス内の複数の GPU だけでなく、複数の GPU を備えた多数のインスタンスを意味し、トレーニングをさらに高速化します。

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

このアーキテクチャの詳細については、以下を参照してください。 SageMaker の分散データ並列ライブラリの概要.

SMDDP を使用することで、TTDP モデルのトレーニング時間を大幅に短縮し、XNUMX 倍高速化することができました。 トレーニング時間が短縮されるということは、モデルをより迅速に繰り返して改善できることを意味し、より短い時間でユーザーにより良い仕事を推奨できるようになります。 この効率の向上は、急速に進化する求人市場において当社の求人推薦エンジンの競争力を維持するのに役立ちます。

次のコード ブロックに示すように、わずか XNUMX 行のコードを使用して、トレーニング スクリプトを 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 モデルはベースライン モデル (既存の XGBoost ベースの実稼働モデル) よりも、AUC で 16.65%、mAP@20 で 1%、mAP@11.82 で 3% 優れています。

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。

さらに、提案されたシステムを評価するためにオンライン A/B テストを設計し、米国の電子メール人口の一部に対してテストを 6 週間実行しました。 新しいシステムが推奨したジョブを使用して、合計約 22 万件の電子メールが送信されました。 その結果、前製品モデルと比較してクリック数が 8.6% 向上しました。 Talent.com は、新しいシステムを全ユーザーとチャネルに展開する割合を徐々に増やしています。

まとめ

求人推薦システムの構築は複雑な作業です。 求職者はそれぞれ、短い検索クエリからは推測できない、独自のニーズ、好み、職業上の経験を持っています。 この投稿では、Talent.com が AWS と協力して、ユーザーに推奨する仕事のリストをランク付けする、エンドツーエンドの深層学習ベースの仕事レコメンダー ソリューションを開発しました。 Talent.com チームは、この問題を解決するプロセス全体を通じて、AWS チームとの協力を本当に楽しみました。 これは、Talent.com チームがディープラーニングの力を活用してビジネスを強化するため、Talent.com の変革の旅における重要なマイルストーンとなります。

このプロジェクトは、SBERT を使用して微調整され、テキスト埋め込みが生成されました。 この記事の執筆時点では、AWS は Amazon Titan の埋め込み を通じて提供される基本モデル (FM) の一部として アマゾンの岩盤は、大手 AI 企業からの厳選された高性能の基本モデルを提供するフルマネージド サービスです。 読者の皆様には、このブログ投稿で紹介されている機械学習手法を検討し、AWS Bedrock の基本モデルを利用して独自の検索機能を作成しながら、SMDDP などの AWS が提供する機能を活用することをお勧めします。

参考文献


著者について

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。 李翔 Amazon Machine Learning Solutions Lab の応用科学者 II として、さまざまな業界の AWS の顧客が AI とクラウドの導入を加速できるよう支援しています。

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。ワン・トン Amazon Machine Learning Solutions Lab の上級応用科学者であり、さまざまな業界の AWS のお客様が AI とクラウドの採用を加速するのを支援しています。

ドミトリー・ベスパロフドミトリー・ベスパロフ Amazon Machine Learning Solutions Lab の上級応用科学者であり、さまざまな業界の AWS のお客様が AI とクラウドの採用を加速するのを支援しています。

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。アナトリー・ホメンコ Talent.com のシニア機械学習エンジニアであり、優れた人材と優れた仕事をマッチングする自然言語処理に情熱を持っています。

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。アブデノール・ベズー は、数百万の顧客に規模を拡大するテクノロジー ソリューションを構築および提供する 25 年以上の経験を持つ幹部です。 アブデノール氏は、最高技術責任者 (CTO) の役職を歴任しました。 タレント.com AWS チームがこの特定のソリューションを設計および実行したとき タレント.com.

テキストから夢の仕事へ: Amazon SageMaker を使用して Talent.com で NLP ベースの仕事推薦機能を構築する |アマゾン ウェブ サービス PlatoBlockchain データ インテリジェンス。垂直検索。あい。デール・ジャックス 彼は、Generative AI イノベーション センターのシニア AI ストラテジストであり、AWS の顧客がビジネス上の問題を AI ソリューションに変換するのを支援しています。

ヤンジュン・チーヤンジュン・チー Amazon Machine Learning Solution Lab の上級応用科学マネージャーです。 彼女は機械学習を革新して適用し、AWS のお客様が AI とクラウドの採用を加速できるように支援しています。

タイムスタンプ:

より多くの AWS機械学習