深層学習が変えたレコメンデーション技術:主要モデルの潮流とは

執筆者
公開日
2025.11.27
更新日
2025.11.27

ブレインパッド アナリティクスコンサルティングユニットの梅田です。この記事では、ここ5~6年で登場した比較的新しいレコメンデーション技術のトレンドを分かりやすくご紹介します。

私たちブレインパッドのデータサイエンティストは、お客様の多様なビジネス課題を解決するため、日々新しい技術の探求と検証を重ねています。中でもレコメンデーション技術は、顧客体験の向上や売上拡大に直結する重要な分野であり、その進化スピードは非常に勢いがあります。

そこで今回は、レコメンデーション領域における知見を深め、より良いご提案に繋げることを目指し、近年の主要な手法を調査・整理しました。レコメンデーション技術の現状を掴む一助となれば幸いです。

本記事の執筆者
  • データサイエンティスト
    梅田 義章
    Umeda Yoshiaki
    会社
    株式会社ブレインパッド
    所属
    アナリティクスコンサルティングユニット
    役職
    シニアマネジャー
    北海道大学理学研究科修了、素粒子理論を専攻。ハンブルグ大学、アーヘン工科大学、台湾交通大学でのポスドク、前職データ分析会社を経て2013年にブレインパッド入社。社内ではレビュアーとして幅広い分析案件に対する提案、進行、納品の品質管理や技術支援を担当。また自然言語処理についての研究・開発を担当。

最新レコメンデーションモデルの潮流

古典的な協調フィルタリングも依然として有効ですが、近年のレコメンデーション技術は深層学習の登場により、その精度を飛躍的に向上させました。

この精度の向上を支えているのが、ユーザーとアイテム(商品、映画、音楽など)の情報を「ベクトル」として表現するアプローチです。それぞれの情報をベクトル化し、その内積などを計算することで、ユーザーがアイテムを購入・クリックする確率を予測します。このような設計は、特に深層学習モデルで非常に扱いやすいという利点があります。

レコメンデーションモデルにはいくつか種類がありますが、その違いは主に「ユーザーやアイテムの情報をどのようにベクトル化するか」という点にあります。

本記事では、以下の代表的な4つのモデルを取り上げます。

  • 行列分解モデル (Matrix Factorization)
  • VAEベースモデル (Variational Auto-Encoder)
  • GNNベースモデル (Graph Neural Network)
  • 自己教師あり学習(SSL)ベースモデル (Self-Supervised Learning)

この中で行列分解は、深層学習が普及する以前から存在するモデルですが、現在でも深層学習モデルに匹敵する高い性能を誇ります。他の3つは、深層学習の発展と共に進化してきたモデルです。特に自己教師あり学習モデルは、GNNをベースに対照学習などを取り入れた比較的新しいアプローチで、性能も一段高くなっています。

今回ご紹介するモデルは、いずれも「一般化協調フィルタリング」に分類されます。ユーザーとアイテム情報のみを利用するモデルという意味です。付加情報を活用したモデルについては、「付加情報を活用したモデル」のパートで紹介します。


行列分解モデル

行列分解は、古くからある協調フィルタリングの一手法ですが、その最適化された実装は、パーソナライズドレコメンデーションの分野で唯一、最新の深層学習モデルと互角に渡り合えるポテンシャルを秘めています。ここではその代表格となるiALS※1を紹介します。

※1 iALS++ https://arxiv.org/abs/2110.14044

iALS概要

まずはオリジナルのiALSについて説明します。

  1. ユーザーアイテム行列の作成
    縦:ユーザー数×横:アイテム数の行列 N_ijを作成します。要素は、例えば購入1 非購入0とします。購入の代わりにクリックなどでも構いません。
    アルゴリズム的には、1/0データに限らず、1~5の5段階レーティングや売上金額にしても大丈夫です。ただし売上金額にする場合は、二乗誤差を最小化するため、売上の小さな商品に対する精度が低いモデルになりがちです。
  2. ユーザーベクトル、アイテムベクトルの作成
    d次元ベクトルのユーザーベクトルu_i とアイテムベクトルv_j を作成します。N_ijをu_iとv_jの内積で再現するように学習を進めます。
    表1
    はN_ijのサンプル、表2はiALSを実行して出力したユーザーベクトルとアイテムベクトルです。表2のベクトルu_i, v_jは、表1のN_ijをおおよそ再現します。

表1:N_ijの例

N_ijj=1j=2j=3j=4
i=10100
i=21010
i=30011

表2:u_i、v_jの例。表1のN_ijが近似的に再現されます。

 要素1要素2要素3
u_1-0.540.600.32
u_20.78-0.060.41
u_30.020.82-0.38
v_10.780.280.66
v_2-0.490.490.89
v_31.161.040.04
v_40.380.76-0.62

学習時の要点

  1. N_ij=1の時に、(u_i ・v_j – 1)2が小さくなるように、N_ij=0 の時に (u_i・v_j – 0)2が小さくなるように学習します。
  2. 買ったものは興味があるのに対して、買わなかったものは知らなかったなどの理由があります。重み付けにより補正することで適切なレコメンデーションとなります。
    •(1 + α0)(u_i ・v_j – 1)2 + α0 (u_i・v_j – 0)2 の様に、α0の重みを付けます。
  3. 正則化項(u_iおよびv_jのノルムの二乗)を入れます。係数にλ(ハイパーパラメータ)を付けます。
    • 正則化項を入れない場合、u_iやv_jの各要素が大きくなりえます。例えばN_ijが0か1の時、u_iやv_jの各要素は0~1程度の数であることが望ましいのですが、正則化項無しでは大きな数(例えば10以上)になることがあります。
    • 正則化項により局所的なノイズを学習することが難しくなり、安定した結果となります。
  4. 正確に行列分解をするのではなく、u_iとv_jの内積でN_ijを近似します。
    • 実際のu_iとv_jの内積が0なのに、1に近いものは、購入実績無しの推薦アイテムとなります。

上記の最適化の際、交互最適化(ALS)を用います。これは、Uステップ(すべてのv_jを止めてu_iを最適化する)とVステップ(すべてのu_iを止めてv_jを最適化する)を繰り返します。iALSが現在でも使われるのは、下記により処理速度・性能共に大幅な改善が出来たからです。

処理速度・性能の改善

  1. 複数のCPUコアを使った並列処理(iALS++モデル)
    Uステップ(ユーザー u_i 最適化)の際に、全ユーザーを対象とするのではなく、ごく一部のユーザー(例えば4ユーザー)のみに絞る。これを繰り返すことで全ユーザーをカバーする。
    Vステップ(アイテム v_j 最適化)も同様。
  2. 正則化項の修正※2
    ハイパーパラメータのチューニング(d=2048、α0=0.1、λ=0.003)

iALSは線形モデルですが、シンプルさと高いスケーラビリティから、今でも多くの場面で強力なベースラインとなります。論文※2の修正を行ったモデルの精度は表3-4の様になります。このモデルでは、ユーザーの属性(年齢・性別など)やアイテムカテゴリ等、豊富なサイド情報をモデルに組み込むのは難しくなっています。コールドスタート問題もありますが、ユーザー側は過去の行動ログから擬似的に特徴ベクトルを作成するなどの対策が可能です。新規アイテムへの推薦は、どのモデルでも困難であり、特にiALSだけの問題とは言えません。対処方法としては、類似アイテムやカテゴリ別の予測を行い、これらの結果を参考に一定確率(割合)で新規アイテムのレコメンドを行うなどがあると思います。

※2  iALS正則化項の改善 https://arxiv.org/abs/2110.14037

表3:iALSの精度その1

表4: iALSの精度その2


VAEベースモデル

行列分解が線形的な関係性のモデル化を得意とするのに対し、より複雑で非線形なユーザーの好みを捉えるために登場したのが、VAE(変分オートエンコーダ)をベースとしたアプローチです。このモデルを単純化(非線形関数無し)した場合、行列分解を深層学習の考え方で発展させたモデルと捉えることができます。

VAEベースモデルの基本戦略

このアプローチでは、まずユーザーごとにアイテムの購入履歴をベクトル(購入したアイテムは1、それ以外は0)で表現します。このベクトルをオートエンコーダに入力します。エンコーダでは、入力ベクトルを低次元(例えば200次元)の正規分布(平均ベクトルと分散ベクトル)として表現します。このベクトルをデコーダが受取り、元のアイテム選択の確率を復元するように学習を進めます。このプロセスを通じて、モデルはユーザーの潜在的な好みを学習し、最終的にはユーザーが次に購入する可能性が高いアイテムの確率を出力できるようになります。ユーザーが購入した商品以外で購入確率の高いアイテムが推薦候補となります。一部の購入アイテムを隠して、それを再現する形での学習もあります。

損失関数は、2つの部分から構成されます。

  1. 再構築誤差(Reconstruction Loss)
    入力と出力が似ているほど値が小さくなる。例えば、バイナリクロスエントロピーでも良い。
  2. KLダイバージェンス
    エンコーダの出力(潜在表現)が正規分布であると仮定して、分布のずれが小さいほど良い指標。
    ※この条件は正確でなくて良いので、軽めの重み(β=0.2)を掛けておく。この手法をβ-VAEと呼ぶ。

この一連の学習を通じて、モデルはユーザーがまだ購入していないアイテムの中から、次に購入する可能性が高いアイテムを予測できるようになります。

Mult-VAE (2018) ※3

代表的なモデルの一つはMult-VAEです。再構築誤差の損失関数に多項分布(Multinomial distribution)を用いることからこの名で呼ばれています。ユーザーの嗜好を確率的に捉える生成モデルとして高い性能を示しました。

※3 Mult-VAE https://arxiv.org/abs/1802.05814

RecVAE (2020) ※4:Mult-VAEの改良版モデル

RecVAEは、2020年に発表されたMult-VAEの改良版モデルです。実験ではMult-VAEや、それと同程度の性能である行列分解系モデル iALS++を上回る精度を達成しました。

※4 Rec VAE https://arxiv.org/abs/1912.11160

主な改良点

RecVAEでは、主に以下の点が改良されています。

  1. 活性化関数の変更:
    ニューラルネットワークの各層で使われる活性化関数に、より高性能なswishを採用しました。
  2. Layer Normalizationの導入:
    学習を安定させ、効率化するためのLayer Normalizationという技術を組み込みました。
  3. β値の調整方法の改善:
    損失関数におけるKLダイバージェンスの重みβの決め方を、入力パラメータではなく、計算により算出する方法に変更しました。

GNNベースのモデル

ここでは、ユーザーとアイテムの複雑な関係性をグラフとして捉え、深層学習で分析するGNN(グラフニューラルネットワーク)ベースの推薦モデルを紹介します。

GNN推薦モデルの基本的な考え方

このモデルでは、まず「ユーザー」と「アイテム」を、それぞれグラフの「頂点(ノード)」と見なします。そして、ユーザーによる購入やクリックといった行動はノード間を結ぶ「辺(エッジ)」として表現します。これにより、「誰が」「何に」興味を持っているかという関係性のネットワークが、一つの巨大なグラフとして可視化されます。

GNNの最大の特徴は、各頂点が自身の情報を更新する際に、辺で繋がっている隣の頂点の情報を集約する点にあります。これを層状に繰り返すことで、例えばあるユーザーの頂点には、その人が買ったアイテムの情報や、「同じアイテムを買った別のユーザー」の情報が段階的に組み込まれていきます。このプロセスを通じて、単なる個別の行動履歴だけでは見えなかった、より複雑な関係性を捉えることができます。

この学習プロセスを通じて、最終的にすべてのユーザーとアイテムは、それぞれの特徴を凝縮した「埋め込みベクトル」と呼ばれる数値のリストに変換されます。このベクトルがあれば、特定のユーザーとアイテムのベクトルの近さ(類似度)を内積などの簡単な計算で求めるだけで、そのユーザーがそのアイテムをどれだけ好みそうかを予測し、推薦スコアとして利用できます。

GNNモデルのもう一つの強みは、その柔軟性です。ユーザーやアイテムだけでなく、例えば「スポーツ」や「ファッション」といったカテゴリ情報なども新たなノードとして定義し、関係性をエッジで結ぶことで、多様なデータを比較的簡単にモデルへ組み込むことができます。

学習の仕組み

埋め込みベクトルの更新

ある層におけるユーザーの埋め込みベクトルは、一つ前の層での、自分自身のベクトルと、リンクするノードの関数として更新されます。この計算を層の数だけ繰り返すことで、ユーザーのベクトルには、その人の好みを反映したアイテムの情報が効果的に集約されます。

トレーニング(ペアワイズ学習)

学習の目標は、あるユーザーのベクトルを、「その人が実際に購入したアイテム」のベクトルに近づけ、同時に「購入していないアイテム(学習のためにランダムに選んだもの)」のベクトルからは遠ざけることです。具体的には、(ユーザーと購入済みアイテムの距離)が、(ユーザーと未購入アイテムの距離)よりも一定の差(マージン)だけ近くなるようにモデルを訓練します。この手法は「ペアワイズ学習」と呼ばれ、代表的な損失関数にBPR Lossなどがあります。

ハイパーパラメータの調整

モデルの性能を最大限に引き出すには、下記のような設定値(ハイパーパラメータ)の調整が不可欠です。

  1. ネットワークの層数
    通常3〜5層程度で良好な性能が得られることが多いです。
  2. 損失関数のマージン
    マージンの値が小さすぎると学習が不十分に、大きすぎると逆に学習が進まなくなってしまうため、適切な値を見つける必要があります。
  3. 埋め込み次元数
    ベクトルの次元数(例:LightGCNでは64次元、AutoCLでは32次元)は、低すぎると表現力が足りず精度が悪化します。一方、多すぎても精度向上に繋がらないばかりか、学習速度が低下する原因となります。精度と計算コストのバランスを取ることが重要です。

LightGCN (2020) ※5:シンプルさを極めた高性能な推薦モデル

LightGCNは、2020年にGoogleから提案された、推薦システムに特化したグラフニューラルネットワーク(GCN)モデルです。その名の通り、従来のGCNから複雑な要素を削ぎ落とし、軽量(Lightweight)な構造にした点が最大の特徴です。

※5 lightGCN https://arxiv.org/abs/2002.02126

このモデルの設計思想はシンプルイズベストです。まず、グラフ構造として「ユーザー」と「アイテム」の2つのグループのみで構成される「二部グラフ」を採用します。そして、ユーザーがアイテムを購入・クリックしたといった関係性のみをグラフの「辺(エッジ)」として結びます。

多くの推薦モデルが活用するユーザーの年齢・性別や、商品のカテゴリといった付加的な特徴量を一切使用しません。この大胆な単純化が、LightGCNの核心の一つです。

さらに、従来のGCNモデルにおける中核的な処理であった、以下のような複雑な計算をすべて排除しました。

  1. 特徴変換の重み行列不使用
    情報を変換・加工するための計算を省略します。
  2. 非線形活性化関数の不使用
    表現を複雑にするための非線形関数も使いません。

これらの要素を取り払ったことで、LightGCNは非常にシンプルで効率的な「線形モデル」となり、高い性能を保ちながらも計算コストを大幅に削減することに成功しました。

学習の仕組み

LightGCNの学習プロセスは、そのシンプルさを反映しています。

図1:LightGCNの概要(https://arxiv.org/abs/2002.02126

図1はLightGCNの構造をまとめたものです。次のステップ1の様に初期化し、2、3により予測が合うように学習を進め、4の様に使います。

  1. 初期化: 学習の開始時点では、すべてのユーザーとアイテムの埋め込みベクトル(それぞれの特徴を表す数値リスト)を、ランダムな値で初期化します。
  2. 埋め込みの伝播(Propagation): 次に、グラフの層を重ねながら、各ノードの埋め込みベクトルを更新していきます。この更新ルールが非常にシンプルで、ある層(k+1層目)の埋め込みベクトルは、前の層(k層目)の自分自身ノードとリンクするノードのベクトルを平均化(ユーザーにとっては購入したアイテムを平均化、アイテムにとってはそれを購入したユーザーを平均化)するだけで計算されます。この単純な処理を複数回(複数層)繰り返すことで、最初は届かなかった遠くのノードの情報(例えば、自分と好みが似ているユーザーが好きな、別のアイテムの情報など)も、徐々に自分のベクトルに反映されていきます。
  3. 最終的な埋め込みの生成: すべての層での伝播が終わった後、各層で生成された埋め込みベクトルをすべて足し合わせて単純に平均化し、それを最終的なユーザーとアイテムの埋め込みベクトルとします。これにより、1層目で得られるような「直接的な好み」から、層を重ねることで得られる「間接的で、より広い範囲の好み」までをバランス良く捉えることができます。
  4. 推薦スコアの算出: こうして得られたユーザーの埋め込みベクトルと、アイテムの埋め込みベクトルの「内積」を計算します。この単純な計算結果が、ユーザーに対する推薦スコアとなります。

性能

LightGCNは、その極めてシンプルな構造にもかかわらず、非常に高い推薦精度を発揮します。実験では、より複雑な構造を持つ他のGCNベースのモデルを上回り、Mult-VAEよりも優れた性能を示すことが報告されています。その精度は、高性能なモデルとして知られるRecVAEに匹敵しています。効率性と推薦効果の両立を実現した、強力なモデルの一つと言えます。

自己教師あり学習ベースのモデル

近年、レコメンドモデルでは自己教師あり学習(SSL、Self-Supervised Learning)というアプローチが大きな注目を集めています。

自己教師あり学習は、これまでレコメンデーションモデルの精度向上を妨げてきたスパース性とノイズという2つの課題を解決する力を持っています。

  • スパース性(データのまばらさ)
    全アイテムの中で、ユーザーが評価したりクリックしたりするものはごく僅かです。そのため、ほとんどの「ユーザーとアイテムの組み合わせ」に対する評価データが存在せず、モデルの学習が困難になるという問題がありました。
  • ノイズ
    ユーザーのクリックが必ずしも真の興味を反映しているとは限りません(例:誤クリック)。このようなノイズの多いデータは、モデルの性能を低下させる原因となります。

SSLは、データ拡張によって学習に有益な疑似データを自ら生成することで、スパースな元データを補強します。さらに、一貫したパターンを持つ関係性を重視して学習するアルゴリズムとすることで、誤クリックのような偶発的なノイズの影響を受けにくくなり、より本質的なユーザーの好みを捉えることが可能になります。

ここでは、このSSLを用いた代表的なモデルの一つであるAutoCFを紹介します。

AutoCF※6:データ拡張を自動的に行う手法

AutoCFの手順

  1. Infomax-based semantic relatedness(図2左図)
    データ拡張では、ノード(ユーザー、アイテム)やエッジ(ユーザーとアイテムのつながり)をランダムで消したり、ランダムな値を加えて少しだけ値を変化させたりします。しかし、どの情報が重要か、もしくはノイズなのかは分かりません。AutoCF以前のモデルではこの辺りを経験則に基づいて実行し、精度を高めていました。
    AutoCFでは、Infomax-based semantic relatednessという指標により、情報の中心となる重要な部分を見つけられるようになりました。この指標は、あるノードと、周辺ノードの平均ベクトルのコサイン類似度を算出し、シグモイド関数により0~1の値にしたものです。この値が高いほど、周囲と一貫した関係があり、ノイズが少ないこと判断します。また、ガンベルノイズを与えることで、頑健性を高めています。ガンベルノイズは、正規分布よりも片側の裾が長い分布となっています。これにより、多様なノードが選ばれる機会が増えます。また対数で表現できる関数なので微分可能であり学習の時に便利です。

※6 AutoCF https://arxiv.org/abs/2303.07797

図2:AutoCF概要(画像出典:https://arxiv.org/abs/2303.07797
  1. エンコーダとデコーダ(図2中図)
    GCNで回りの情報を集約します。次に、このベクトルに対してアテンションメカニズムを適用します。ベクトル長は32次元で、アテンションヘッドは4なので、異なる特徴を持った次元8のベクトルが4つ作られます。これをつないで32次元のベクトルを作ります。
  2. 学習に使う損失関数
    自己教師あり学習の損失関数は3つのパートで構成されます。
    1) 対照学習の損失関数部分。自分自身の拡張データとは類似しており、他のノードとは似ていない(下式第1, 2, 3項)、2) 中心ノードと周りのノードが似ているか(下式第4項)、3) ユーザーアイテム間で、マスクしたエッジがうまく再構成できるか(下式第5項)。

上記の自己教師あり学習の損失関数と、レコメンデーションの損失関数を連結させて、AutoCFモデルの損失関数とします。3項目は正則化項です。

このようなモデル構造により、AutoCFは2023年時点では最高レベルの精度を達成しました。下の表5が代表的なモデル間での精度比較です。右側5列が自己教師あり学習ベースのモデルとなっています。

表5:AutoCFの精度

付加情報を活用したモデル

ここまででユーザーとアイテム情報のみを利用する「一般化協調フィルタリング」モデルを紹介しました。ここでは、付加情報を活用したモデルを紹介します。

  1. シーケンシャルレコメンデーション (Sequential Recommendation)
    過去の履歴を元にユーザーの行動履歴から好みや興味を明らかにして、パーソナライズしたレコメンドを行うモデル。セッション単位(例えば買い物単位)での予測に使います。
  2. ソーシャルレコメンデーション(Social Recommendation)
    友人関係などユーザー間の社会的関係を活用してレコメンデーションの精度を高める手法。ユーザーとアイテム間の相互作用と比べて、社会関係にはノイズが多く含まれることが知られています。
  3. ナレッジグラフ強化レコメンデーション(KG-enhanced Recommendation)
    ナレッジグラフ内の構造化情報を活⽤して推薦精度を向上させるモデル。過剰な知識はノイズをもたらすため、アイテム固有の情報を抽出することで精度を向上させます。
  4. マルチ行動レコメンデーション(Multi-behavior Recommendation)
    ユーザーの様々なインタラクションを考慮して精度を上げるモデル。例えばECサイトでの商品閲覧、カート追加、購入といった行動を考慮します。その内、もっとも重要な購入行動を最適化するようにモデルを作成します。ユーザーの複雑な行動の中での購入確率を高めるパターンを発見することが重要となります。

この章では4つの付加情報を使うモデルを紹介しました。これらのモデルについても、自己教師あり学習モデルによる精度向上が可能です。

まとめ

ここ5~6年でレコメンドモデルの精度は大幅に向上しています。MFベースのモデルでも、改良を加えたモデルであれば、最新の深層学習モデルに大きく劣らない精度となっています。また、利用も容易です。

近年精度の高いモデルは、自己教師あり学習ベースのモデルとなっています。AutoCFについては、データ拡張も自動であり、またソースコードも公開されています。今後は、自己教師あり学習を用いたレコメンドモデルの活用も進んでいくのではないかと思います。


このページをシェアする

あなたにオススメの記事

株式会社ブレインパッドについて

2004年の創業以来、「データ活用の促進を通じて持続可能な未来をつくる」をミッションに掲げ、データの可能性をまっすぐに信じてきたブレインパッドは、データ活用を核としたDX実践経験により、あらゆる社会課題や業界、企業の課題解決に貢献してきました。 そのため、「DXの核心はデータ活用」にあり、日々蓄積されるデータをうまく活用し、データドリブン経営に舵を切ることであると私達は考えています。

メールマガジン

Mail Magazine