LightGCNを用いた推薦候補集合の生成 | Wantedly Engineer Blog
こんにちは。ウォンテッドリーでデータサイエンティストをしている角川(@nogawanogawa)です。この記事では、Graph Neural Network(GNN)のアルゴリズムの1つであるL...
https://www.wantedly.com/companies/wantedly/post_articles/1029285
Photo by Bhautik Patel on Unsplash
こんにちは。ウォンテッドリーでデータサイエンティストをしている角川(@nogawanogawa)です。
以前のブログにて、LightGCNを用いた推薦候補集合生成を試してみました。
この記事では、今回はLightGCNを拡張してナレッジグラフを組み込んだLightKGを試してみた事例についてご紹介しようと思います。
ナレッジグラフと推薦
Knowledge Graph based Recommendation System (KGRS)
LightKG
実装
実データを用いた評価
まとめ
ナレッジグラフとは、グラフ構造のデータモデルまたはトポロジーを用いてデータを表現したものです。データの関係をEntityとRelationで表現することで、データ間の関係性も含めて情報を表現することができます。
ナレッジグラフの例として、下記のようなものをご想像いただくと理解が早いかもしれません。
例として上記では企業とユーザーの採用現場におけるデータの関係性を表現しています。 User や Job がEntity、 read や view / apply がRelationを表しています。このようにデータとその関係性をグラフ構造を用いて管理することで、つながりを辿って関連する情報へアクセス・利用することができるようになります。
ナレッジグラフを用いることで関係性を含めたデータを表現することができますが、近年ではこのナレッジグラフを推薦に適用させるKnowledge Graph based Recommendation System (KGRS) が研究が進められています。
基本的な推薦では、user と item のコンバージョン(クリック・購入・応募など)のみを中心にモデル化するかと思います。しかし実際のサービスでは、item 同士の関係性や、item が持つ属性、あるいは user と直接は結びついていない周辺情報が数多く存在します。
たとえば求人推薦であれば、「企業」「職種」「スキル」「業界」などが複雑に関係し合っており、user–item の二部グラフだけではこれらの情報を十分に活用できません。こうした背景から、Entity 間の多様な関係を明示的に表現できるナレッジグラフを推薦に組み込むアプローチが注目されています。
このように豊富な補助情報を提供するナレッジグラフを組み込むことで、直接的な行動履歴が少ない user や item であっても補助情報を通じた推薦が可能になり、データのスパース性やコールドスタート問題を緩和しつつuser–item の二部グラフを超えた表現学習が期待できます。
ナレッジグラフを推薦へ組み込む方法にはいくつかの手法が考えられますが、その一つにGraph Neural Network (GNN) を用いるものが挙げられます。
以前の記事でご紹介したLightGCNはuserとitemの二部グラフを前提に推薦を作成していましたが、KDD' 25でLightGCNにナレッジグラフを組み込むように拡張したようなモデルであるLightKGが発表されています。
LightKGには下記のような特徴があります。
"LightKG: Efficient Knowledge-Aware Recommendations with Simplified GNN Architecture" より引用
概要としては、LightGCNをベースにしつつ拡張しているように思われます。LightKGではLightGCNをベースとして下記の式で表されるGNN層を有しています。
LightKGではRelationはスカラーで表現され、上記の式におけるαでRelationのスカラーが重みとして働くようになっています。
Lossについては、BPR Lossと userとitemそれぞれの0層目の埋め込みを用いた対照学習のLoss、正則化項を組み合わせた下記のようなLossを利用しています。
上記のようにLightGCNを拡張することでナレッジグラフを利用しており、論文中ではこのモデルを用いることで、先行研究より高い性能を達成したと報告されています。
LightKGは論文の著者による実装が公開されています。公式実装の中身については下記のリポジトリを参照ください。
私が今回検証するうえでは、PyTorch Geometricを用いて簡略化して実装されていたほうが都合が良かったので、実装し直してみました。今回試しに実装したnotebookについては公開しているので、ご興味あれば御覧ください。
今回も社内のデータセットを使用して、実際に利用できそうか確認してみます。今回は前回とりあげたLightGCNと性能比較を実施してみようと思います。
ユーザーと募集間のインタラクションの発生確率を予測することを目的とし、ユーザー・募集に紐づく属性をナレッジグラフとして構築し、それらを用いてLightKGを学習しました。
評価については前回同様Recallで性能比較しており、その結果が下記の表の通りになりました。
今回の実験結果ではLightKGを用いることでLightGCNに比べて性能向上する傾向が確認できました。今回のタスクでは、LightGCNで使用していた二部グラフに加えて、ナレッジグラフを活用することでさらに性能向上できる可能性があることがわかりました。
今回はLightKGを用いた推薦へナレッジグラフを組み込む方法についてご紹介しました。前回のLightGCNではシンプルな二部グラフを想定していましたが、今回はナレッジグラフを組み込んで利用することで、より豊富な情報を踏まえた推薦ができているようでした。
ウォンテッドリーでは、ユーザーにとってより良い推薦を届けるために日々開発を行っています。ユーザーファーストの推薦システムを作ることに興味があるという方は、下の募集の「話を聞きに行きたい」ボタンから気軽に話を聞きに来ていただけるとうれしいです!