【論文紹介】DGCN: Diversified Recommendation with Graph Convolutional Networks

文献情報

タイトル:DGCN: Diversified Recommendation with Graph Convolutional Networks
著者:Yu Zheng, Chen Gao, Liang Chen, Depeng Jin, Yong Li
会議:TheWebConf 2021

概要

Graph Convolutional Networks(GCN)を用いることで、end-to-endな推薦結果の多様化推薦手法DGCNを提案。多様化の対象はアイテムのカテゴリ。

従来研究との差異

あるユーザに対する推薦結果の多様化を目的とした従来の手法では、以下の2ステップから構成されるのが一般的である。

  1. ユーザに対する推薦スコアが高い順に、多様化されていない推薦リストLを(例えば)100位まで生成する。

  2. 生成された推薦リストL内のアイテムを貪欲法などにより並び変えることで、(例えば)10位まで見たときの多様性を最大化する。

このアプローチでは、ステップ1で生成される推薦リストLの多様性が考慮されていないため、Lに含まれるアイテムの多様性が低ければ、ステップ2でLのアイテムを並び替えても多様性を高めるには限界がある。
本論文では、適合度ベースの推薦結果を生成してから並び替えるのではなく、最初からアイテムが多様化された推薦結果を生成するend-to-endな手法を提案している。

提案手法

GCNを適用するため、ユーザとその消費アイテムがエッジで結ばれたグラフを構築。あるノードvのベクトルを求める際は、隣接ノードの平均ベクトルを求める処理をvのkホップ先のノードまで繰り返す、オーソドックスな手法。
提案手法の肝は、推薦結果の多様化のために導入した以下の3つのコンポーネント。

1. 隣接ノードのサンプリング

GCNでは、ユーザの全隣接ノード(ユーザが消費した全アイテム)を使ってベクトルを更新すると計算時間がかかりすぎるため、隣接ノードをサンプリングするのが一般的である。通常はランダムサンプリングをするが、それではユーザにとって消費数の多いアイテムが属するカテゴリから多くのアイテムが選ばれる。その結果、ユーザのベクトルもそうしたメジャーなカテゴリに影響され、推薦結果に偏りが生じる。
提案手法では、ユーザにとってマイナーなカテゴリ(ユーザの消費アイテムが少ないカテゴリ)のアイテムほど高い確率でサンプリングすることでこの問題を解決。

2. 負例のサンプリング

本論文ではimplicit feedbackなデータを対象としているので、ユーザが消費したアイテム(正例)と消費していないアイテム(負例)を使いながらユーザとアイテムのベクトルを学習する。通常は正例1件に対して負例1件をランダムにサンプリングするが、提案手法では一定の確率で、正例のアイテムと同カテゴリから負例を選ぶ。これにより、「このカテゴリから選んでおけばOK」のような雑な判断ではなく、カテゴリ内の細かい好みも学習できるようになり、結果的に様々なカテゴリから推薦アイテムが選ばれるようになる。

3. 敵対的学習

GCNだけでベクトルを学習すると、同じカテゴリのアイテムはベクトル空間内の同じような場所に収束し、カテゴリごとにクラスタが形成されるようになる。あるユーザにとって推薦スコアの高いアイテムはベクトル空間内の似たような場所に位置するため、この学習方法では推薦されるアイテムのカテゴリが偏る問題が生じる。
提案手法では、アイテムベクトルからカテゴリを予測するというタスクを敵対的学習として導入している。敵対的学習により、カテゴリの予測精度を下げる、つまり同一クラスタに属するアイテムのベクトルが空間内でバラバラになるようにアイテムのベクトルが学習され、上記の問題を解決している。

実験

EコマースのTaobaoとBeibei、音楽配信サービスのMSD、の3種類のデータセットを使用。推薦結果上位300件の推薦精度と多様性を、提案手法とベースライン手法で比較。
ベースライン手法に比べて提案手法は推薦精度が高いまま多様性も高められていた(多様性だけを見れば、提案手法より多様性の高いベースライン手法はあったが、推薦精度は提案手法よりもずっと低かった)。
3つのコンポーネント単位での評価も行い、いずれのコンポーネントも、単体で用いるだけでも推薦結果の多様性を高められていることを示した。

コード

著者によるPyTorchでの実装。
https://github.com/tsinghua-fib-lab/DGCN


この記事が気に入ったらサポートをしてみませんか?