Upgrade to Pro — share decks privately, control downloads, hide ads and more …

人材領域での企業と求職者のマッチング最大化

 人材領域での企業と求職者のマッチング最大化

2025/2/20に開催したRecruit Tech Conference 2025の中間と若月の資料です

Recruit

March 03, 2025
Tweet

More Decks by Recruit

Other Decks in Technology

Transcript

  1. 中間 康文 アニメ・漫画・ゲーム・野球・釣り 経歴 / Career 2021年にリクルートに新卒入社。 DSとして、HR領域の各プロダクトにおける レコメンドシステムの改善に取り組む。 Two-Towerモデルと近似最近傍探索による候補生成

    ロジック導入の案件が、リクルートのナレッジ共有 イベント(FORUM)に選出される。 Kaggle Grandmaster。 趣味 / Hobbies プロダクト開発統括室 データ推進室 HR領域データソリューションユニット HRデータソリューション部 中途データサイエンスグループ
  2. 若月 良平 ゲーム・散歩 経歴 / Career 2018年にリクルートに新卒入社。 内製ワークフローエンジンの開発 / HR領域の各

    プロダクトにおけるレコメンドシステムの改善など に取り組んできた。 Two-Towerモデルと近似最近傍探索による候補生成 ロジック導入の案件が、リクルートのナレッジ共有 イベント(FORUM)に選出される。 Kaggle Grandmaster。 趣味 / Hobbies プロダクト開発統括室 データ推進室 データテクノロジーユニット アジリティテクノロジー部 アジリティエンジニアリング1グループ
  3. ルールベースによる候補生成:精度の維持・改善が困難 A A' A'' A A', A''も残したい • 計算量を削減しながら精度を維持する =>

    困難 • 計算量を一定に保ちながら精度を改善する => 困難 • 例えば、完全一致条件だと属性の意味的な近さが考慮されない
  4. ルールベースによる候補生成:精度の維持・改善が困難 推薦候補 A 求職者が閲覧した求人票 A A A B A B

    B B B • 完全一致条件だと微妙な行動を反映するのが難しい 完全一致条件の問題 Aに興味があるはず Bはたまたまクリックしただけかも
  5. 課題解決案:協調フィルタリング? 協調フィルタリングは類似度を捉えられ、計算量を制御しやすい手法だが、コー ルドスタートの問題がある 求職者\求人票 A B C D E X

    ◯ ◯ - ◯ - Y - - ◯ - ◯ Z ◯ ◯ ? ? ? 新規求職者W ? ? ? ? ? ◯ : 閲覧あり  ? : 推測対象 XとZの類似性 → ?は◯と推測 新規求職者W → 何もわからない
  6. Two-Towerモデルの利点:質的な改善 A' A'' A A A A A B A

    B 丁度良い点に求職者を配置 求職者が閲覧した求人票 • 完全一致の必要はない • 求職者属性と求人票属性に応じた柔軟なフィルターを獲得 • 細かいロジックをアドホックに実装する必要はない
  7. Two-Towerモデルの利点:コールドスタートに対処 属性A 属性B 属性C 求人票ID:123 (0.2, 0.1,...) (0.2, 0.1,...) •

    協調フィルタリングではコールドスタートの問題がある • → 属性特徴量を使うことでコールドスタートに対処できる
  8. Two-Towerモデルと近似最近傍探索による候補生成 • 整理すると、課題については以下のように解決できる • 計算効率の改善 ◦ 求職者と求人票をTwo-Towerモデルでembeddingに変換 ◦ 近似最近傍探索により、各求職者に近い求人票を指定件数だけ取得 ◦

    計算量をコントロールできる • 精度の改善 ◦ 計算効率を維持しながら、候補生成の精度を改善することができる ▪ 特徴量を追加しても全体の計算効率はほとんど変わらない ▪ 機械学習モデルで改善しやすく、質的な改善が見込める ▪ コールドスタート問題にも対処
  9. ネットワーク構造:概観 Numerical FC Layer FC Layer FC Layer FC Layer

    Embedding Categorical Embedding Layer Numerical FC Layer FC Layer FC Layer FC Layer Embedding Categorical Embedding Layer 同カテゴリ は共有 求職者 求人票
  10. 特徴量の例 • 求職者の数値特徴量例 ◦ 求職者の数値属性 ◦ 行動した求人票の数値属性の 集約 ◦ 別の手法で作られた埋め込み

    ベクトル • 求職者のカテゴリ特徴量例 ◦ 求職者のカテゴリ属性 ◦ 行動した求人票のカテゴリ属 性のTopN • 求人票の数値特徴量例 ◦ 求人票の数値属性 ◦ 別の手法で作られた埋め込み ベクトル • 求人票のカテゴリ特徴量例 ◦ 求人票のカテゴリ属性
  11. モデル学習:細かい話 • バッチサイズ ◦ 2048などで学習 ◦ 総当たりで試してみて、一番精度が良いパターンを適用 • 学習環境 ◦

    GPUの方が高速だがモデルが軽ければCPUで十分 • 対照学習のペア ◦ クリックや応募のペアを使用 ◦ 総当たりで試してみて、一番精度が良いパターンを適用
  12. オフライン検証 1st-stageの候補生成の精度はRecallで評価 1. 学習データと評価データを用意 a. 行動が発生した求職者×求人票ペアのリスト b. 学習/評価は時系列の前後で分割 2. 学習データを使ってTwo-Towerモデルを学習

    3. 評価データの全求職者と全求人票に対して埋め込みベクトルを計算 4. 近似最近傍探索で取得した求人票に対するRecallを計算 オフライン検証において、+5%以上の改善を確認
  13. 高速なモデル改善 config.yml • 特徴量の追加 • 特徴量の処理方法指定 • モデルのパラメータ指定 • 学習のパラメータ指定

    根本的な変更以外は なるべくconfig.yml管理 • レコメンド対象の増加に向け短期でオンラインで結果を出したい ◦ 高速な実験サイクルを回しやすいスクリプト群 ◦ オフライン実験50回以上
  14. 近似最近傍探索 • 大まかな手順 ◦ 全求人票の埋め込みベクトルを使ってインデックスを構築 ◦ 各求職者の埋め込みベクトルに近い求人票を取得 • 重要な指標 ◦

    ビルド時間:インデックスを構築する時間 ◦ クエリ時間:1回の探索にかかる時間 ◦ リコール:最近傍探索の精度
  15. 近似最近傍探索アルゴリズムの例:HNSW • 実際にはどんな感じで近似最近傍探索をやっているか? ◦ 色々なアルゴリズムがある • HNSW ◦ グラフベースの近似最近傍探索アルゴリズムの一つ ◦

    Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs ◦ https://arxiv.org/abs/1603.09320 Y. A. Malkov & D. A. Yashunin 2016
  16. 近似最近傍探索アルゴリズムの例:HNSW • 階層的なグラフ • 最下層は全ての点を含むとする • 目的の点に近い点を探索したい 第2階層 第1階層 第0階層

    1. 最上層の点から出発 2. 目的の点にできるだけ近くなるよ うに階層内で移動 3. 下の階層に移動する 4. 2と3を繰り返せば良い