『Talent.com』において
「『Talent.com』で輝く」というタイトルを改善します
この記事は、機械学習エンジニアのアナトリー・ホメンコとTalent.comの最高技術責任者であるアブデノール・ベズーエによって共同執筆されました。
2011年に設立されたTalent.comは、世界最大の就職情報ソースの1つです。同社はクライアントからの有料求人広告と公開求人リストを組み合わせて、検索可能な単一のプラットフォームにまとめています。75以上の国で3,000万件以上の求人がリストされており、多言語、多業種、多チャネルにわたる求人を提供しています。その結果、数百万人の求職者と適切な求人をマッチングさせるプラットフォームが実現しています。
Talent.comの使命は、求職者が最適な求人を見つけるためにウェブ上で利用可能なすべての求人を一元化することであり、最高の検索体験を提供することです。その重点は関連性にあり、推奨求人の順序はユーザーの興味に最も関連する求人を表示するために非常に重要です。Talent.comのマッチングアルゴリズムのパフォーマンスは、ビジネスの成功とユーザーの体験において重要な要素です。通常、限られた情報(いくつかのキーワードと場所)に基づいて求職者に関連する求人を予測することは困難です。
この使命を遂行すべく、Talent.comとAWSは最先端の自然言語処理(NLP)および深層学習モデルトレーニング技術を使用した求人おすすめエンジンを作成するために協力しました。この記事では、求人の推奨システムの設計における共同アプローチ、特徴エンジニアリング、深層学習モデルのアーキテクチャ設計、ハイパーパラメータの最適化、およびモデルの評価について紹介します。このシステムは、AWSとTalent.comの協力によって専門の応用機械学習(ML)科学者、MLエンジニア、および専門家チームによって開発されました。
- PyTorchEdgeはExecuTorchを発表しました:モバイルおよびエッジデバイス向けのオンデバイスでの推論をエンパワーメント
- 『BOSSと出会ってください:新しい環境で新しい課題を解決するためにエージェントをトレーニングする強化学習(RL)フレームワーク、LLMガイダンス』
- 「ニューラルネットワークにおける記憶の解読イメージ分類のベンチマークにおけるモデルサイズ、記憶、および一般化への深い探求」
この推奨システムにより、オンラインのA/Bテストにおいて、以前のXGBoostベースのソリューションと比較してクリック率(CTR)が8.6%向上し、数百万人のTalent.comのユーザーをより良い求人につなげることができました。
ソリューションの概要
次の図にシステムの概要が示されています。このシステムは、ユーザーの検索クエリを入力とし、関連性の高い求人のランク付けリストを出力します。求人の関連性は、求職者が求人をクリックして詳細情報を確認する確率で測定されます。
このシステムには、以下の4つの主要なコンポーネントがあります。
- モデルアーキテクチャ – この求人おすすめエンジンのコアは、クエリエンコーダ(ユーザーの検索クエリをエンコードする)、ドキュメントエンコーダ(求人の説明をエンコードする)、およびインタラクションエンコーダ(過去のユーザーと求人のインタラクション特徴を処理する)からなる深層学習ベースのトリプルタワーポイントワイズモデルです。3つのタワーの出力は連結され、クラス分類ヘッドを通じて求人のクリック確率を予測します。このモデルをTalent.comの検索クエリ、求人の詳細、および過去のユーザーとの相互作用データでトレーニングすることで、求職者に対してパーソナライズされた高度に関連性の高い求人の推奨を提供します。
- 特徴エンジニアリング – 入力データから価値のある情報を抽出し、モデルの対応するタワーにフィードするために、2つのセットの特徴エンジニアリングを実施します。2つのセットは、標準的な特徴エンジニアリングとFine-tuned Sentence-BERT(SBERT)埋め込みです。標準的なエンジニアリングされた特徴は、インタラクションエンコーダへの入力として使用し、SBERTから派生した埋め込みをクエリエンコーダとドキュメントエンコーダにフィードします。
- モデルの最適化と調整 – SageMakerを使用してシステムのトレーニング、テスト、および展開を行うために、高度なトレーニング手法を利用します。SageMaker Distributed Data Parallel(DDP)トレーニング、SageMaker Automatic Model Tuning(AMT)、学習率スケジューリング、および早期停止を使用して、モデルのパフォーマンスとトレーニング速度を向上させます。DDPトレーニングフレームワークの使用により、モデルトレーニングを約8倍高速化できました。
- モデルの評価 – オフラインおよびオンラインの評価を行います。オフライン評価では、AUC(曲線下面積)およびKでの平均適合率(mAP@K)でモデルのパフォーマンスを評価します。オンラインのA/Bテストでは、CTRの改善を評価します。
以下のセクションでは、これら4つのコンポーネントの詳細を説明します。
ディープラーニングモデルのアーキテクチャ設計
トリプルタワーディープポイントワイズ(TTDP)モデルを設計します。このモデルは、トリプルタワーディープラーニングアーキテクチャとポイントワイズペアモデリングアプローチを使用しています。トリプルタワーアーキテクチャは、3つの並行したディープニューラルネットワークを提供します。各タワーは独立して一連の特徴を処理します。このデザインパターンにより、モデルは異なる情報源から独自の表現を学ぶことができます。すべてのタワーからの表現が取得された後、それらは連結され、最終的な予測(0-1)であるクリック確率(ポイントワイズモデリングセットアップ)に基づいて分類ヘッドを通過します。
3つのタワーは、それらが処理する情報に基づいて名前が付けられます。クエリーエンコーダはユーザーの検索クエリを処理し、ドキュメントエンコーダは求職者の職業名および会社名を含む候補の求人情報の内容を処理し、インタラクションエンコーダは過去のユーザーのインタラクションと履歴から抽出された関連する特徴を使用します(次のセクションで詳しく説明します)。
これらのタワーのそれぞれが求人の推奨方法を学ぶ上で重要な役割を果たしています:
- クエリーエンコーダ – クエリーエンコーダはユーザーの求人検索クエリから導き出されたSBERTエンベディングを受け取ります。私たちはSBERTモデルを微調整してエンベディングを向上させます。このエンコーダは、ドメイン特定のエンベディングによって捉えられる詳細やニュアンスを含む、ユーザーの求人検索意図を処理し理解します。
- ドキュメントエンコーダ – ドキュメントエンコーダは各求人リストの情報を処理します。具体的には、求人タイトルと会社名の連結テキストのSBERTエンベディングを使用します。ユーザーは求人検索クエリに関連性の高い候補の求人により興味を持つでしょう。求人と検索クエリをSBERTによって定義される同じベクトル空間にマッピングすることで、モデルは求職者がクリックする可能性のある求人の確率を予測することができるようになります。
- インタラクションエンコーダ – インタラクションエンコーダはユーザーの過去の求人リストへの対話を扱います。特徴は標準的な特徴エンジニアリング手順を使用して生成されます。これには、求人役割および会社の人気指標の計算、コンテキストの類似スコアの確立、および前回のユーザーエンゲージメントからのインタラクションパラメータの抽出が含まれます。また、求人タイトルと検索クエリで事前学習された固有表現認識(NER)モデルを使用して特定された名前のエンティティを処理します。
各タワーは独立した出力を並行して生成し、それら全てが連結されます。この結合された特徴ベクトルは、ユーザーのクエリに対する求人リストのクリック確率を予測するために渡されます。トリプルタワーアーキテクチャは、異なる入力や特徴間の複雑な関係を捉える柔軟性を提供し、各タワーの強みを活用しながら、与えられたタスクに対してより表現豊かな表現を学ぶことができます。
候補の求人のクリック確率は高から低の順にランク付けされ、パーソナライズされた求人の推奨が生成されます。このプロセスにより、ユーザーの検索意図、求人の詳細、過去のインタラクションなど、各情報の全てがそれに専用のタワーによって完全に捉えられます。それらの間の複雑な関係もタワーの出力の組み合わせによって捉えられます。
特徴エンジニアリング
モデルの対応するタワーに価値のある情報を抽出し、生データからそれを供給するために、2つのフィーチャエンジニアリングプロセスを実行します: 標準的な特徴エンジニアリングと微調整されたSBERTエンベディング。
標準的な特徴エンジニアリング
データの準備プロセスは、標準的な特徴エンジニアリングから始まります。全体的に、4つの種類の特徴を定義します:
- 人気 – 個々の求人、職業、および会社のレベルで人気スコアを計算します。これにより、特定の求人や会社の魅力を評価する指標が提供されます。
- テキストの類似度 – 異なるテキスト要素間の文脈的な関係を理解するために、検索クエリと求人タイトル間の文字列の類似度などの類似度スコアを計算します。これにより、求職者の検索やアプリケーション履歴に求人オープニングの関連性を把握することができます。
- インタラクション – さらに、過去のユーザーが求人リストに対して行った対話からインタラクション特徴を抽出します。過去にクリックした求人タイトルと候補の求人タイトル間のエンベディング類似度は典型的な例です。この測定は、ユーザーが興味を持った以前の求人と今後の求人機会との類似性を理解するのに役立ちます。これにより、求人の推奨エンジンの精度が向上します。
- プロファイル – 最後に、ユーザープロフィールからユーザーが定義した求人関心の情報を抽出し、新しい求人候補と比較します。これにより、求人候補がユーザーの関心に一致するかどうかを把握することができます。
データ準備の重要なステップは、事前学習済みのNERモデルの適用です。NERモデルを実装することで、求人タイトルと検索クエリ内の固有表現を識別およびラベル付けすることができます。したがって、特定のエンティティ間の類似スコアを計算することができます。これにより、より焦点を絞った文脈に敏感な求人の関連性の測定が可能となります。この方法論により、データ中のノイズが削減され、求人の比較により洞察力を持った文脈に敏感な方法が得られます。
ファインチューニングされたSBERTの埋め込み
求人推薦システムの関連性と精度を向上させるために、私たちはSBERTのパワーを活用しています。SBERTは、テキストから意味と文脈を捉えることに優れたトランスフォーマーベースのモデルで知られています。ただし、SBERTのような汎用の埋め込みは効果的ですが、私たちのような特定のドメイン(雇用と求人検索を中心としたもの)に固有のニュアンスや専門用語を十分に捉えることができない場合があります。そこで、私たちはドメイン固有のデータを使用してSBERTの埋め込みをファインチューニングしています。このファインチューニングプロセスにより、モデルは業界特有の言語、専門用語、文脈をより理解し、処理するよう最適化され、埋め込みは私たちの特定のドメインを反映したものとなります。その結果、洗練された埋め込みは、私たちの領域内の意味や文脈情報をより正確かつ有意義に捉えることができ、ユーザーへの求人推薦もより正確かつ有意義なものとなります。
以下の図は、SBERTのファインチューニングステップを示しています。
私たちはCosine距離を使用したTripletLossを用いてSBERTの埋め込みをファインチューニングしています。このTripletLossでは、アンカーテキストとポジティブテキストのコサイン類似度がアンカーテキストとネガティブテキストよりも高くなるように、テキスト埋め込みを学習します。アンカーテキストにはユーザーの検索クエリを使用し、ポジティブテキストとネガティブテキストには求人のタイトルと雇用主名を組み合わせて入力します。ポジティブテキストは、対応するユーザーがクリックした求人からサンプリングされ、ネガティブテキストはユーザーがクリックしなかった求人からサンプリングされます。以下は、ファインチューニング手順のサンプル実装です:
import mathfrom datetime import datetimefrom torch.utils.data import DataLoaderfrom sentence_transformers import (SentenceTransformer, SentencesDataset, LoggingHandler, losses)from sentence_transformers.readers import InputExamplemodel_name = 'all-mpnet-base-v2'train_batch_size = 16num_epochs = 1model_save_path = (f'output/{model_name}_'+ datetime.now().strftime("%Y-%m-%d_%H-%M-%S"))### 事前学習されたSBERTモデルをロードmodel = SentenceTransformer(model_name, device="cuda")### Triplet textsのトレーニングデータセットを構築### (アンカー、ポジティブ、ネガティブの3つのリストに格納)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)### コサイン距離とマージン0.5を使用したTripletLossdistance_metric=losses.TripletDistanceMetric.COSINEtrain_loss = losses.TripletLoss(model=model, distance_metric=distance_metric, triplet_margin=0.5)### トレーニングデータの10%をウォームアップに利用warmup_steps = math.ceil(len(train_dataloader) * num_epochs * 0.1)# モデルのトレーニングmodel.fit(train_objectives=[(train_dataloader, train_loss)], epochs=num_epochs, warmup_steps=warmup_steps, output_path=model_save_path)
SageMakerの分散データパラレルによるモデルトレーニング
私たちはSageMakerの分散データパラレル(SMDDP)を使用しています。SMDDPは、SageMaker MLプラットフォームの機能であり、PyTorch DDPの上に構築されています。これにより、SageMakerプラットフォーム上でのPyTorch DDPトレーニングジョブを最適化した環境で実行することができます。これにより、ディープラーニングモデルのトレーニングが大幅に高速化されます。大規模なデータセットは小さなチャンクに分割され、複数のGPUに分散されます。モデルは各GPUに複製されます。各GPUは割り当てられたデータを独自に処理し、その結果はすべてのGPU間で連携して同期されます。モデルのレプリカを同期させるための勾配通信をDDPが処理し、トレーニングを高速化するために勾配計算と重ね合わせます。SMDDPでは、最適化されたAllReduceアルゴリズムを使用してGPU間の通信を最小限に抑え、同期時間を短縮し、全体のトレーニング速度を向上させます。このアルゴリズムは、オンプレミスとクラウド環境の両方において高い効率を発揮するため、非常に効率的です。以下の図は、SMDDPアーキテクチャを示しています。分散トレーニングは複数のノードのクラスタを使用してスケールされます。これは、計算インスタンス内の複数のGPUだけでなく、複数のGPUを持つ多くのインスタンスを意味し、トレーニングをさらに高速化します。
このアーキテクチャに関する詳細は、SageMakerの分散データパラレルライブラリの紹介を参照してください。
SMDDPを使用することで、私たちはTTDPモデルのトレーニング時間を大幅に短縮することができ、8倍速くなりました。高速なトレーニング時間は、モデルの改善とイテレーションを迅速に行うことを意味し、短時間でより良い求人推薦をユーザーに提供することができます。この効率の向上は、急速に変化する求人市場で求人推薦エンジンの競争力を維持するために重要です。
SMDDPを使用してトレーニングスクリプトを簡単に適応することができます。以下のコードブロックに示すように、PyTorchを例に取り上げると、必要なのはSMDDPライブラリのPyTorchクライアント(smdistributed.dataparallel.torch.torch_smddp
)をインポートすることだけです。クライアントはPyTorchに対してsmddp
をバックエンドとして登録します。
import smdistributed.dataparallel.torch.torch_smddpimport torch.distributed as distdist.init_process_group(backend='smddp')
分散データパラレルライブラリを使用するように適応された動作するPyTorchスクリプトがある場合、SageMaker Python SDKを使用して分散トレーニングジョブを起動することができます。
モデルのパフォーマンス評価
推薦システムのパフォーマンスを評価する際には、ビジネスの目標に密接に関連し、モデルの効果的な性能を明確に理解するための指標を選択することが重要です。私たちの場合、TTDPモデルの求人クリック予測パフォーマンスを評価するためにAUCを使用し、最終的なランキングされた求人リストの品質を評価するために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@1で20%、mAP@3で11.82%優れています。
さらに、提案されたシステムを評価するためにオンラインのA/Bテストを設計し、米国のメールポピュレーションの一部を6週間にわたってテストしました。合計で約2200万通のメールが新システムによって推奨される求人を使用して送信されました。前の本番モデルと比較してクリック数の向上率は8.6%でした。Talent.comは割合を徐々に増やし、新システムを完全なポピュレーションとチャネルに展開しています。
結論
求人推薦システムの構築は複雑な取り組みです。各求職者は、短い検索クエリから推測できない独自のニーズ、好み、および専門的経験を持っています。Talent.comはこの課題の解決のために、AWSと協力してエンドツーエンドのディープラーニングベースの求人推薦ソリューションを開発しました。Talent.comチームはこの問題の解決のプロセス全体でAWSチームとの協力を大いに楽しんでいます。これは、Talent.comがビジネスを強化するためにディープラーニングの力を活用する大きな節目です。
このプロジェクトでは、SBERTを使用してテキスト埋め込みを生成するために微調整が行われました。執筆時点では、AWSは基本モデル(FMs)を提供するためのAmazon Bedrockの一環としてAmazon Titan Embeddingsを導入しました。これは、主要なAI企業から高性能な基本モデルの選択肢を提供する完全に管理されたサービスです。読者には、このブログ投稿で紹介された機械学習技術を探求し、AWSが提供する機能(SMDDPなど)を活用して、独自の検索機能を作成することをお勧めします。
参考文献
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles