
※この記事は、2025年8月に開催されたイベントでの発表内容をレポートしたものです。
- 「doda」転職求人倍率レポート
- 推薦モデルの改善の「これまで」と「これから」
- 推薦モデルの「これまで」
- サービスと推薦システム
- 推薦モデルの例
- 開発プロセスの定義や改善
- 機械学習モデル開発:推奨ツール
- 大規模言語モデルのパラダイムシフト
- パラダイムシフト後のトレンド
- 大規模言語モデルの特徴
登壇者はこの方

浦山 昌生 (Masao Urayama)
パーソルキャリア株式会社
シニアデータアナリスト
AI ベンダーでデータサイエンティスト兼PL(プロジェクトリーダー)として機械学習モデルの開発やデータ分析の受託業務に従事。それまでは、ネットワークエンジニア、情報セキュリティエンジニアとして顧客の課題解決に対応。2021年10月にパーソルキャリアに入社し、推薦モデルの開発、情報検索システムの開発等、先進的なデータの活用を実践。
浦山:私たちは「はたらく」ことに関するさまざまなサービスを提供しています。
その中で本日ご紹介したいのは、推薦システムについてです。このシステムは機械学習を全面的に活用しており、その開発背景から現状、そして今後の展望についてお話しできればと考えております。
「doda」転職求人倍率レポート

出典)https://doda.jp/guide/kyujin_bairitsu/
我々のサービスでは、「転職求人倍率レポート」を定期的に公開しております。全体的なレポートの他に、職種別のレポートもあり非常に興味深い内容です。今回は、そのデータからいくつか抜粋しました。まず求人数の傾向を見ると、コロナ禍直前に一度減少し、その後急激に増加して以来、高い水準で推移しています。一方で、転職希望者の数はほぼ横ばいで推移しており、両者の間には大きな乖離が生まれています。この状況が、転職求人倍率に反映されているわけです。
つまり、求人数は増加し続けているのに対し、転職希望者様の数は大きく変動していない、という背景をご理解ください。
このような背景の中で、我々のサービスが抱えるニーズについてご説明します。
弊社のサービスには累計で1,000万人以上(アクティブユーザーはこれより少ないですが)の会員様が登録されており、公開されている求人数は約25万件に上ります。この数は時期によって変動しますが、おおよそこの規模です。私たちの役割は、膨大な数の方々と求人の中から、転職希望者様のご意向に沿った最適な求人をご紹介することです。
では、具体的にどうすれば最適な求人に出会えるのでしょうか。
一つは、転職希望者様ご自身がモバイルアプリやウェブサイトの検索UIを使い、キーワードや条件で検索する方法です。もう一つは、弊社のキャリアアドバイザーが基幹システムを使って手動で検索し、求人をご紹介する方法です。そしてもう一つが、機械学習モデルを用いたアプローチです。このモデルは、毎日何十億という膨大な組み合わせをバッチ処理で計算し、最適な求人を抽出します。
これらの状況から、私たちに求められるニーズは、「膨大な求人と転職希望者の組み合わせの中から、最適なマッチングをタイムリーかつ迅速に提供すること」であると言えます。
この課題に対し、私たちは機械学習モデルの開発だけでなく、UXの改善、新規サービスの提供、サービス品質の向上など、多角的なアプローチで取り組んでいます。UX改善の例としては、専門部署によるUXの全体的な見直しや、ツール・サービスの継続的な改善が挙げられます。新しい取り組みとしては、生成AIを活用しています。
例えば、作成が大変な職務経歴書を最短1分で自動生成する機能をリリースしました。これはバックエンドで生成AIを利用しています。もちろん、サービス品質の向上や業務効率化といった基本的な取り組みも継続しており、社内向けAIチャットボットの導入やプロセス改善、基幹システムの刷新などを進めています。
そして、重要なのが自動化です。推薦システムを継続的に改善していくことで、より良いサービスを提供することを目指しています。
推薦モデルの改善の「これまで」と「これから」

ここで、本日の結論とも言える推薦モデルの改善について、これまでの取り組みと今後の展望を先にお話しします。結論として、大規模言語モデルを推薦モデルに応用することが有効であると考えています。これまでの推薦モデルは、比較的単純な教師あり学習を用いた機械学習モデルが主流でした。しかし、日々進化し「最強」とも言えるモデルが次々とリリースされる大規模言語モデルをファインチューニングして活用することが、今後は必要になると考えています。そして、それをうまく運用するための具体的な方法論については、後ほど詳しくご紹介します。
推薦モデルの「これまで」
それでは次に、これまでどのような取り組みをしてきたのか、もう少し詳しく見ていきたいと思います。推薦システムについてお話しする前に、いくつか言葉の定義を確認させてください。

出典) Hidden Technical Debt in Machine Learning Systems (2015年)
まず「マッチング」という言葉です。これは、転職希望者様が持つご希望、ご要望、ご経験、スキルセットと、企業様が求人情報で提示する求める条件とを突き合わせ、双方の条件や希望が一致する組み合わせを見つけ出し、採用や就職といった合意に至っていただくことを指します。また、このゴールに至るまでのプロセス自体も「マッチング」と呼んでいます。文脈によって意味合いが変わりますが、このような使い方をしています。
次に「推薦」です。これは、転職希望者様のご希望やご経験、スキルセットなどに基づき、我々がお預かりしている多数の求人の中から最適なものを選び出し、ご紹介する行為を指します。そして「推薦システム」とは、この推薦を自動または半自動で行う仕組みのことです。このシステムは、大きくバッチ系とオンライン系(リアルタイム系)に大別されます。バッチ系は、1日に数回メールを配信するなど、大量の組み合わせを一括で計算するものです。一方、オンライン系は、ウェブサイトやアプリの閲覧時に、閲覧履歴や検索履歴、属性情報などから「このような求人はいかがですか?」とその場で提示する仕組みです。
これらのシステムの内部には、機械学習モデルが組み込まれています。この推薦モデルが様々な形で表に出てくるのが推薦システムです。ここで「推薦システム」と「推薦モデル」という言葉を使い分けていますが、その関係性について、2015年にGoogleが発表した論文で示された図が参考になります。この論文では、機械学習システム全体が非常に大きなものであるのに対し、その中核である機械学習モデル(この文脈では推薦モデル)が占める範囲はごく一部であることが示されています。モデルの周囲には、データ収集、特徴量抽出、インフラ管理など、多数の周辺コンポーネントが存在し、それらが一体となってサービスが機能しています。特に推薦モデルは、システム全体のパフォーマンスや周辺要素からの影響を大きく受けるため、モデル開発者はシステム全体がどう動くかを意識して開発する必要があります。その意味で、非常に総合格闘技的な面白さがある分野だと個人的には感じています。
以上が推薦システムの概要です。機械学習システムという大きな枠組みの中に機械学習モデルがあるように、推薦システムという枠組みの中に推薦モデルが存在します。
では、これがビジネスの現場でどのように活用されているかをご説明します。
サービスと推薦システム

出典)https://www.saiyo-doda.jp/service
私たちのサービスを例に取ると、左側に転職希望者様、右側に企業様がいます。そして中央に、私たちのサービス「doda」(ここでは人材紹介サービスを例とします)が存在します。企業様からは「こういう人材が欲しい」という求人情報をいただき、転職希望者様からは「良い仕事を探したい」とサービスに登録していただきます。そうすると、両者から膨大なデータが私たちのシステムに蓄積されます。そのデータを用いて必要な計算を行い、最適な推薦の組み合わせを見つけ出します。そして、「このような求人はいかがですか?」とご提案します。これは人(キャリアアドバイザー)が行う場合も、システムが自動で行う場合もありますが、システムが行う場合、その提案に転職希望者様が興味を示されると、企業様にご連絡がいく、という流れになります。このように、膨大なデータに対してアプローチするのが推薦システムの役割です。

ここからは、私が実際に担当した推薦システムの開発事例をいくつかご紹介します。
まず、アーキテクチャと推薦モデルの内部構造、そして性能評価の観点についてお話しします。
アーキテクチャとしては、まず基幹システムがあります。ここには、先ほど述べた転職希望者様や企業様の情報、求人案件などが格納されており、社内向けのUIやデータ管理機能、メール配信機能などを備えています。これとは別に、推薦システム専用のコンピューティング環境があり、基幹システムとのデータ連携、データ加工処理、特徴量生成、推薦モデルの実行(推論)などを行います。
私たちデータサイエンティストは、この中の推薦モデル開発に大きく関わります。
教師データとして、転職希望者様の属性情報や求人の属性情報(これらが特徴量の元となります)、そして応募や書類選考通過といった実績をラベルとして使用し、教師あり学習によって推薦モデルを構築します。扱うデータ量が膨大で、毎日数十億単位の組み合わせを、過去数ヶ月から1年分にわたって処理するため、クラスター環境が不可欠です。私が担当した際は、Apach Spark環境を用い、合計メモリが2TBにもなる大規模な環境で計算を行いました。
使用したアルゴリズムは、ランダムフォレスト、主成分分析、ロジスティック回帰など、比較的「枯れた」技術です。新しい高性能なアルゴリズムも存在しますが、Apach Sparkはスケールする一方で新しいライブラリの導入が遅れるという特性がありました。しかし、巨大なデータをそのまま扱えるという利点は非常に大きく、この2TBの環境を活用していました。面白いことに、この規模に慣れてしまうと「このメモリでは足りない」と感じることもあり、感覚というものは不思議なものだと感じます。
性能評価については、精度や処理速度はもちろんのこと、モデルの特性評価も多角的に行います。
実際に作成したモデルの一例をお見せします。
推薦モデルの例

これは推薦度合いを推定するためのパイプラインで、データソースから入力されたデータが複数のプロセスを経て、最終的にスコアが出力される仕組みです。各プロセスでデータが処理され、アンサンブル学習(ここではロジスティック回帰を使用)によって各モデルのスコアが統合され、最終的な推薦スコアが算出されます。

その結果として、ROC AUCなどの指標で性能を評価します。様々な特徴量やハイパーパラメータの組み合わせで実験を行い、現行モデルと比較してどれだけ改善したか、処理速度はどう変化したかなどを検証します。
例えば、予測精度と処理速度はトレードオフの関係にあり、ある程度まで性能を追求すると、計算時間が急激に増加することがあります。その中で、どこを落としどころとするかを判断する必要があります。

また、単純な結果だけでは見えない部分もあります。ハイパーパラメータの探索では、より性能が高い領域が存在するにもかかわらず、計算リソースの限界や時間的制約によって探索を打ち切らざるを得ない場合があります。このように、計算できない、あるいはエラーになるといった制約も、モデル開発における重要な要素です。
開発プロセスの定義や改善
さらに、こうしたモデル開発を効率的に進めるため、開発プロセスの定義や改善も行っています。

プロジェクトの工程を定め、モデル開発者が担う役割を明確にしたり、評価軸を多角的に設定したりしています。
モデル開発では精度や汎化性能に目が行きがちですが、再現性の確保、バグの少なさ、システム実装時の負荷など、品質やコストに関する観点も非常に重要です。
そのために、様々なツールの導入も進めています。
機械学習モデル開発:推奨ツール

特におすすめなのが、データのバージョン管理ツールであるDVCです。コードのバージョン管理にGitを使うように、DVCでデータのハッシュ値を管理し、パイプラインと組み合わせることで、実験の再現性を飛躍的に高めることができます。
大規模言語モデルのパラダイムシフト

出典)Attention Is All You Need (2017)
現在、大規模言語モデルや生成AIに関するイベントが数多く開催されていますが、私もこのテーマに注目しています。大規模言語モデルがなぜこれほどまでに進化したのか、その起源を遡ると、2017年に発表された「Attention Is All You Need」に行き着きます。Transformerの画期的な点は、従来は順番にしか処理できなかった系列データを、並列で分散学習できるようになったことです。これにより、より大規模な計算リソースを投入できるようになり、結果として、より巨大な学習データとパラメータを持つモデルの構築が可能になりました。
パラダイムシフト後のトレンド

出典)Scaling Laws for Neural Language Models (2020)
この変化は、2020年頃の論文で示されているように、「計算リソースを増やせば増やすほど、データセットが大きければ大きいほど、パラメータが多ければ多いほど、モデルの性能が向上する」という、いわゆるスケーリング則をもたらしました。

出典)Language Models are Few-Shot Learners (2020)
出典)NVIDIA A100 TENSOR CORE GPU
この傾向はさらに加速し、例えばGPT-3の開発では、5億円もの予算を使い切ってもなお性能向上の余地があったとされています。このように、計算リソース、つまり「お金」が性能に直結する世界が現実のものとなっています。
大規模言語モデルのリリース状況は皆様もご存知の通り、日進月歩です。かつてのBERTやT5といったモデルから、ChatGPT、Llama、そして最新のモデルへと、進化は止まりません。
大規模言語モデルの特徴
これらのモデルは、公開されている膨大なデジタル情報から、言語、一般知識、さらには文化や社会の常識といった事柄を学習しています。特に、社会の状況(例えば、東京と千葉の地理的な近さなど)を「知っている」という点は、推薦モデルに応用する上で非常に重要です。一方で、学習データに含まれないことは当然ながら知りません。
このような大規模言語モデルを推薦システムに応用する研究は様々な形で行われており、サーベイ論文などでは主に3つのパターンが紹介されています。
特に広く使われているのが、LLMをテキストの埋め込みモデルとして利用する方法です。これはRAGの文脈でもよく見られますが、生成された埋め込みベクトルを使って分類などを行うアプローチです。その他、LLMに特定のトークン列(言葉)を生成させ、その内容から推薦すべきか判断させる方法や、LLMそのものを直接推薦モデルとして利用する方法もあります。
これらのアプローチは、従来の機械学習モデルを圧倒するほどの高性能を発揮する可能性を秘めていますが、同時に計算量が爆発的に増加するという課題も抱えています。開発には試行錯誤が必須であり、デリバリーの遅延やアップデート頻度の低下を招きかねません。そのため、計算量の削減とモデル開発の効率化が重要な課題となります。

出典)A Survey on Knowledge Distillation of Large Language Models (2024)
計算量削減の一つの解が、マルチステージ推薦システムです。これはYouTubeの推薦システムなどでも用いられているアプローチで、まず候補を大まかに絞り込み(リトリーバー)、その後に精密なランキングを行う(リランカー)という二段階の構成を取ります。我々もこのようなツータワーモデルなどを活用しています。
また、多くのLLMで採用されている「知識蒸留(Knowledge Distillation)」も有効な手法です。これは、高性能なオリジナルモデルをまず構築し、その知識を、より軽量で高速なモデルに転移させることで、性能と速度のバランスを取る技術です。
今後の推薦モデルは、従来の教師あり学習から、大規模言語モデルをファインチューニングしたモデルへと移行していくでしょう。日々登場する「最強」の事前学習済みオープンモデルをベースとし、それがオリジナルモデルのコアとなると思います。
私の発表は以上です。
▼▼ ぜひ他登壇者の発表レポートもご覧ください



