ITエンジニア ノイのブログ

ITエンジニアのノイです。 YouTubeで ITエンジニアのお勉強という学習用の動画を公開しています。チャンネル登録お願いします!https://m.youtube.com/channel/UCBKfJIMVWXd3ReG_FDh31Aw/playlists

Light Graph Convolution(LightGCN)

こんにちは!ノイです!

Light Graph Convolutionとは

LightGCNはユーザとアイテムの埋込みをユーザーアイテムインタラクショングラフに線形に伝搬します。 ユーザとアイテムの埋込みを学習し、最終的な埋込みとしてすべての層で学習された埋込みの加重和を使用します。

概要

LightGCNは、推薦システムにおいてアイテムとユーザーの関係性をモデル化するために使用される、グラフコンボリューションベースのアルゴリズムです。LightGCNは、グラフ上のノードの表現を学習するために、単純な階層型ネットワークを使用します。グラフ上のユーザーとアイテムを表すノードを含む行列を入力として受け取り、階層型ネットワークを使用して、ユーザーとアイテムの潜在的な特徴ベクトルを表す行列を出力します。この特徴ベクトルは、類似度を計算するために使用され、推薦アルゴリズムによって最終的な推薦リストが生成されます。 LightGCNは、単純で軽量でありながら、高速でスケーラブルなアルゴリズムであるため、大規模なデータセットにおいて高いパフォーマンスを発揮することができます。また、より複雑なモデルよりも過学習を起こしにくく、現実の推薦システムにおいて実用的なアルゴリズムであることが報告されています。

LightGCNのアーキテクチャ

非常にシンプルで効率的です。LightGCNでは、グラフ上のノードの特徴ベクトルを更新するために、ノードの近傍の特徴ベクトルを加算したものを使用します。この更新は、単純な線形変換と非線形活性化関数を使用する従来のグラフ畳み込みネットワーク(GCN)とは異なります。また、自己接続も使用しません。このアプローチにより、ネットワークの複雑さが著しく簡素化され、高速な学習が可能になります。 具体的には、LightGCNは、ノードの近傍の特徴ベクトルを加算したものを次のレイヤーに渡すだけで、その他の処理は行いません。この近傍情報は、正規化された接続行列を使用して計算されます。この処理を、複数回繰り返すことで、より良い表現を学習するようになっています。また、最後のレイヤーの特徴ベクトルを加算して、最終的な表現を得ます。 以上のように、LightGCNは、グラフ上のノードの特徴表現を更新するために、非常にシンプルで効率的なアルゴリズムを使用しています。これにより、大規模なデータセットにおいて高速な学習が可能であり、実用的な推薦システムに適しています。

ランキングとスコア

LightGCNは、ノードの特徴表現を学習することで、推薦システムにおいてアイテムのランキングを行います。具体的には、ユーザーのアイテムに対する評価データを入力として、LightGCNは、ユーザーとアイテムの特徴表現の内積を計算し、スコアを算出します。このスコアに基づいて、アイテムのランキングが決定されます。 LightGCNのスコアは、単純な内積計算に基づいています。つまり、ユーザーの特徴ベクトルとアイテムの特徴ベクトルの内積を計算するだけです。このスコアは、ユーザーがアイテムに対して与えた評価データを用いて学習されます。 LightGCNは、ランキングタスクにおいて、他の一般的な推薦システムアルゴリズムと同様に、PrecisionやRecallなどの評価指標を用いて性能を評価することができます。また、LightGCNは、ユーザーがまだ評価していないアイテムに対してもランキングを行うことができます。

計算方法

ユーザーの特徴ベクトルとアイテムの特徴ベクトルの内積を計算しています。

import numpy as np

# ユーザーの特徴ベクトル
u = np.array([1.0, 0.5, -0.2])

# アイテムの特徴ベクトル
i = np.array([-0.1, 0.8, 0.4])

# ランキングのスコアを計算
score = np.dot(u, i)

print("ランキングのスコア:", score)

LightGCNにおいて、ユーザーとアイテムの特徴ベクトルはそれぞれ、ユーザーとアイテムが共通している「埋め込み空間」と呼ばれるd次元の特徴空間上に配置されます。LightGCNでは、ユーザーとアイテムの特徴ベクトルは初期値としてランダムな値で初期化され、学習によって更新されます。通常は、埋め込み空間上でのユーザーとアイテムの位置関係が、推薦の精度に大きな影響を与えます。 ユーザーとアイテムの特徴ベクトルは、LightGCNの学習アルゴリズムにおいて更新されます。具体的には、ユーザーの特徴ベクトルとアイテムの特徴ベクトルは、ネットワークの各層で更新されます。更新は、前述の通り、各ユーザーとアイテムの近傍アイテムやユーザーの特徴ベクトルの線形和を計算することで行われます。このため、LightGCNでは、各ユーザーとアイテムの特徴ベクトルは、学習が進むにつれて、近傍アイテムやユーザーとの類似度に応じて更新されることになります。 LightGCNの学習において、ユーザーとアイテムの特徴ベクトルは、通常、d次元のベクトルとして表現されます。ベクトルの各要素は、埋め込み空間上での特定の意味を持ちますが、それぞれがどのような意味を持つかは、モデルの設計やデータセットによって異なります。

埋め込み空間

LightGCNでは、ユーザーとアイテムを共通のd次元の埋め込み空間(embedding space)上に配置します。埋め込み空間は、推薦対象となるアイテムの特徴を表現するベクトルや、ユーザーの嗜好を表現するベクトルなど、さまざまな情報を含むことができます。埋め込み空間上でのアイテムの距離やユーザーの位置関係は、推薦の精度に大きな影響を与えます。 LightGCNでは、埋め込み空間上のユーザーとアイテムの位置関係は、隠れ層のニューロンが表現する値によって決定されます。ニューロンの値は、入力として与えられるユーザーとアイテムの特徴ベクトルを元に計算され、ニューロンの値が埋め込み空間上でのユーザーとアイテムの位置関係を表現することになります。LightGCNでは、ユーザーとアイテムの特徴ベクトルが埋め込み空間上でどのように表現されるかは、学習によって自動的に決定されます。 埋め込み空間は、LightGCNの学習アルゴリズムにおいて重要な役割を果たします。埋め込み空間は、推薦対象となるアイテムの特徴やユーザーの嗜好を正確に表現することができるように設計する必要があります。また、埋め込み空間上でのアイテムの距離やユーザーの位置関係が推薦の精度に与える影響を理解し、適切な学習アルゴリズムを選択することが重要です。

ユーザーとアイテムの関係性

LightGCNの埋め込み空間には、ユーザーやアイテムの属性や特徴量などの情報が埋め込まれます。具体的には、ユーザーやアイテムのID、カテゴリー、テキスト情報、画像情報、時系列情報、さらにはユーザーの過去の行動履歴などが考えられます。 埋め込み空間に埋め込まれた情報は、推薦システムにおいて、ユーザーとアイテムの間の関係を表現するために使用されます。たとえば、アイテムの特定のカテゴリーに属するかどうか、ユーザーが特定のアイテムを評価したかどうかなどの情報は、ユーザーとアイテムの関係を表現する上で重要な役割を果たします。 LightGCNは、ユーザーとアイテムの特徴量を元に埋め込み空間上での位置関係を学習するため、埋め込み空間にはユーザーとアイテムの間の相互作用が反映されるような表現が求められます。

位置関係を学習するための計算

LightGCNでは、ユーザーとアイテムの特徴量を元に、共通の埋め込み空間上での位置関係を学習します。埋め込みベクトルは、隣接行列の乗算によって計算されます。具体的には、以下のような手順で計算されます。

  1. 初期化:各ノードの特徴量を元に、初期の埋め込みベクトルを計算します。
  2. 隣接行列の正規化:隣接行列を正規化します。正規化された隣接行列は、各要素がその列の合計値で割られた行列となります。この操作によって、各ノードの特徴量に基づいて、隣接ノードの重要度が考慮されます。
  3. 埋め込みベクトルの更新:正規化された隣接行列と現在の埋め込みベクトルを乗算し、各列の合計値を取得して次の層の埋め込みベクトルを計算します。この操作によって、各ノードの埋め込みベクトルは、その隣接ノードの埋め込みベクトルの和によって更新されます。
  4. プーリング:計算された埋め込みベクトルを、各ノードごとに合算して、最終的な埋め込みベクトルを得ます。 以上の手順を繰り返すことによって、埋め込みベクトルが学習されます。

※この記事の一部情報はChatGPTを用いています。