GANと行列因子分解の合わせ技(GANMF)
3つの要点
✔️ cGANを協調フィルタリングに用いる際の2つの大きな問題点を突き止め、これらを解決することで新しいGANベースのリコメンドシステムGANMFを開発した
✔️ リコメンドシステムの評価を3つのデータセットを用いて行い、全ての従来手法を超える性能を達成した
✔️ 特徴マッチングを用いて生成されるユーザープロファイルのユニークさを向上した。
GAN-based Matrix Factorization for Recommender Systems
written by Ervin Dervishaj, Paolo Cremonesi
(Submitted on 20 Jan 2022)
Comments: Accepted at the 37th ACM/SIGAPP Symposium on Applied Computing (SAC '22)
Subjects: Information Retrieval (cs.IR); Machine Learning (cs.LG)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
リコメンドシステムは顧客が気に入るであるアイテムを過去の顧客の行動や他の顧客のデータに基づいておすすめするシステムの事です。NetflixやAmazonなどで「あなたへのおすすめ」のコーナーがありますよね。
リコメンドシステムは様々な領域でパーソナライズされた経験を提供する上で非常に重要です。中でも、協調フィルタリング(Collaborative Filtering, CF)は高い精度のリコメンドを行う手法の一つです。
協調フィルタリングにおいては行列因子分解(Matrix Factorization, MF)が有名な手法として知られており、ユーザーとアイテムを潜在空間に射影することで相互の関係性からユーザーないしアイテム固有の特徴量を抽出することができます。
現実のデータと見分けがつかないほどのデータを生成する手法の一つとして敵対的生成ネットワーク(Generative Adversarial Networks, GAN)がありますが、GANをリコメンドシステムに応用する研究は少数でした。
今回でご紹介するGANMFはGANを行列因子分解と組み合わせて協調フィルタリングへと組み込む手法を提案したものです。
GANをリコメンドに用いた既存研究
GANをリコメンドへと応用した既存研究の代表例としてIRGANとCFGANがあります。
IRGANはリコメンドに限定せず、情報検索の領域にGANを初めて応用したモデルです。クエリが与えられた際に文書を選択する確率$p(d|q,r)$をモデリングするGeneratorとクエリと文書が関連づいているか判別するDiscriminatorを敵対的に学習させることで、クエリが与えられた際に関連度のある文章をサンプリングできるようにしました。
CFGANはIRGANにおける離散的なサンプリングが生成能力を下げる要因であるとし、生成器がユーザーの過去のプロファイルを生成するように変更したモデルです。アイテムの個数が多い場合には高次元のデータを生成しなければならないという問題点があります。
リコメンドの問題設定
今回扱うリコメンドの問題設定はユーザー$U$とアイテム$I$が与えられた際に、各ユーザーの過去のフィードバックをもとに未だ購入したことのないアイテムの中から気に入りそうなものをN個全員に対しておすすめするというものです。
フィードバック情報はUser Rating Matrix(URM)という行列として与えられ、行列の要素はユーザーがアイテムに興味を示したか否かの二値になっています。
cGANをリコメンドに応用する際の課題
CFGANのように、条件付GAN(Conditional GAN, cGAN)をユーザープロファイルの生成に用いる場合には大きく分けて二つの問題点があると筆者は述べています。
一つ目は正しい勾配がGeneratorに伝わりにくいという問題です。これはDiscriminatorの入力が高次元であるのに対して出力がスカラーであることに起因しており、本物からどの程度離れたプロファイルを生成しているのかを正しく反映した勾配が得にくいという問題です。
二つ目はクラスあたりのサンプル数の問題です。クラスラベルで条件づけたデータの生成においては一つのクラスラベルに属するデータが多く必要ですが、リコメンドの問題設定ではユーザーがクラスラベルとなっているため、クラス当たり一つのサンプルしか確保できません。
筆者らはこれら二つの問題点に対処するGANMFという新しいモデルを開発しました。次のセクションで詳しく見ていきましょう。
GANMFの概要
GANMFの全体像は以下の図の通りです。GeneratorがユーザーのIDを受け取ってプロファイルを生成し、Discriminatorが本物のプロファイルと生成プロファイルを判別します。
Discriminatorには従来のcGANとは異なり自己符号化器を採用しています。本物のプロファイルと生成されたプロファイルを判別する指標として以下の式に示した再構成ロスを用い、この再構成ロスをエネルギー関数と見立てて低い値は本物のプロファイル、高い値は偽物のプロファイルとなるように学習します。
Discriminatorの損失関数には再構成ロスを用いたヒンジ損失を用いています。
一方で、Generatorは従来のcGANとは異なり入力にノイズを受け付けない形となっています。これは一人のユーザーに対して一つのプロファイルを生成するためです。
Generatorは二層の埋め込み層からなるシンプルな構造であり、以下のようにユーザーのプロファイルを生成します。これは行列因子分解を表現した形と言えるでしょう。
式中のyは生成したいユーザーのID、$V$はアイテム行列、$\Sigma$はユーザー行列を表しています。
Generatorの損失関数には生成プロファイルの再構成ロスと単一ユーザーのサンプルを生成し続ける問題を回避するための特徴マッチング損失から成る損失を設定しています。
ここで特徴マッチング損失はMax Mean Discrepancy(MMD)と関係が深く、MMDは確率分布同士の距離としてしばしば用いられるものでありGANの損失関数としても用いられます。
以上からわかるように、GANMFは行列因子分解とGANを組み合わせた非常にシンプルなモデルであることがわかります。
GANMFによるリコメンド実験
実際にGANMFをリコメンドシステムとして利用した際の結果について見ていきます。
今回の実験の問題設定では今までユーザーとの関係性がなかったアイテムに関してランキングを付けます。GANMFであれば各ユーザーのプロファイルを生成し、得られた値をソートすることで上位N個のアイテムを算出します。
データセットとしてはMovieLens 1M、MovieLens HetRec、LastFMの3種類を用いており、レーティングや視聴回数など値の大小によってユーザーの好みが反映されるものは0,1の二値へと変換しています。
モデルの評価にはNormalized Discounted Cumulative Gain(NDCG)とMean Average Precision(MAP)を用いており、おすすめアイテムのトップ5ないしトップ20に対して計算をしています。これらの指標はアイテムの関連度に加えて順位を考慮した指標となっています。
3種類のデータセットにおいて協調フィルタリングの既存手法とGANMFを比較した結果は以下の通りです。GANMFにおけるuはユーザーベース、iはアイテムベースを意味しています。
以上の結果から、GANMFは3つ全てのデータセットにおいて他手法を上回っていることがわかります。特に、CFGANと同じくプロファイルをGANにより生成するという訓練手法を用いているのにも関わらずGANMFはCFGANよりも平均的に24%も上回る性能を記録しています。MFGANはCFGANにおける課題に対する有効な解決策を示したと言えるでしょう。
アイテム間の類似度を利用するItemKNNやSLIM、$P^3\alpha$の間にはあまり性能の違いが見られず、GANMFはこれらのモデルに対して平均的に10%上回る性能を達成しました。これらのモデルは行列因子分解ベースの手法よりも多少劣る傾向があるようです。
GANMFにおける特徴マッチングの重要性
筆者らはGANMFにおけるGeneratorの損失に組み込まれた特徴マッチング由来の項が、どの程度生成されるプロファイルに影響を与えるのか調べています。
下の図はGANMFにおいて特徴マッチングを行った場合と行わなかった場合の二つの場合でユーザープロファイルを生成し、各ユーザー間のコサイン類似度を計算した結果です。
特徴マッチングを行わないといずれのデータセットにおいてもコサイン類似度が限りなく1に近づいています。このことから、各ユーザーごとにユニークなプロファイルの生成には特徴マッチングが必要不可欠であることがわかります。
おわりに
いかがだったでしょうか。GANによってユーザーに条件づけられたプロファイルの生成を行うことで次にどのアイテムをおすすめすればよいか選択するという問題設定が非常に特殊だなと思いました。また、生成するデータはCFGANから変わらずプロファイルであるため、アイテム数が増えて高次元になったり評価値(レーティング)などを含むデータ形式を扱う場合にはまだまだ難しいのではないかと感じました。
レコメンドへのGANの利用は未だ発展段階のようですので、今後の進展に期待です。
この記事に関するカテゴリー