GNN 推奨アルゴリズム (2) - マルチ GCCF: すべてを最大限に活用する

マルチ GCCF: すべてを最大限に活用する

画像の説明を追加してください

1 少しずつ紹介

マルチグラフ畳み込み協調フィルタリング (Multi-GCCF) は、グラフ ニューラル ネットワークに基づく協調フィルタリング アルゴリズムに属します。

協調フィルタリング アルゴリズムは、通常、同様のユーザーは同じアイテムを好む傾向があり同様の顧客を持つアイテムは同様の評価を受ける傾向があるという前提に基づいていますしたがって、ほとんどの協調フィルタリング アルゴリズムは、ユーザー - アイテムの 2 部ネットワークに基づいて推奨を行いますが、実際のシナリオでは各ユーザーに対応するアイテムの数が限られているため、構築されるユーザー - アイテムの 2 部ネットワークは非常に疎になります。現時点では、グラフ畳み込みなどの深層学習アルゴリズムを用いて、限られた特徴情報から表現力の高い埋め込みを生成することは困難です。

Mutil-GCCFの作成者は、ユーザー間のインタラクション情報とアイテム間のインタラクション情報を考慮することで、この問題を軽減しています。二部ネットワークでは、ノードのタイプにはアイテムとユーザーが含まれます。各ノードの 1 次隣接ノードは異なるタイプのノードですが、2 次隣接ノードは同じ種類のノードです。2 次近傍を考慮すると、user-useritem-itemの間の相互作用関係を考慮に入れることができますが、著者らはそれを明示的に考慮したいと考えています。したがって、ユーザー間ネットワークおよびアイテム間ネットワークを構築することにより、アルゴリズムが改善されます。

また、ユーザノードとアイテムノードの種類は異なり、情報集約段階で種類の異なる2種類のノード情報を同じパラメータを用いて集約することは合理的ではない。マルチ GCCF は、ユーザー ノードとアイテム ノード間の固有の違いを考慮して、ノードの埋め込みを更新するときに、2 つのパラメーター セットを使用してこれら 2 種類のノードを集約し、特徴変換します。

PS 友達の皆さん、読んで何か得したことがあれば、「いいね!」をして、モチベーションを与えていただけませんか^_^!

2 マルチ GCCF の概要

マルチ GCCF は主に次の 3 つの部分に分かれています。

  1. ユーザーアイテムの二部ネットワークに基づいてノード埋め込みを生成します。
  2. ユーザー間のネットワークおよびアイテム間のネットワークに基づいてエンベディングを生成します。
  3. スキップ接続を使用して最初のノード フィーチャを最終ノード エンベディングに接続し、レイヤーごとの情報転送による情報損失を回避します。

全体的な枠組みは次のとおりです。
画像の説明を追加してください

2.1 二部グラフ畳み込みニューラル ネットワーク

Bipar-GCNレイヤーには、前方サンプリング後方集約が含まれます。このうち、フォワードサンプリングの役割は、ノード次数のべき乗分布の影響を防ぐことです。モデル1からKKまでのサンプリング後K層の隣接ノードの後で、GCN を使用して隣接情報を集約します。

各ノードに対して学習された初期埋め込みがeu e_uであると仮定します。eあなた e v e_v ev(初期ノード入力に特徴情報がある場合、この初期埋め込みは MLP を使用して学習できます)。

kth_ _k层目标user的embedding更新机制如下:
h u k = σ ( W u k [ h u k − 1 ; h N ( u ) k − 1 ] ) , h u 0 = e u {\bf h}_u^k=\sigma({\bf W}_u^k[{\bf h}_u^{k-1};{\bf h}^{k-1}_{N(u)}]), {\bf h}_u^0=e_u hあなた=s ( Wあなた[ hあなたk 1;hN ( u )k 1] ) hあなた0=eあなた
其中, W u k {\bf W}_u^k Wあなた学習可能なパラメータσ \sigmaσは Tanh 活性化関数[ ; ] [;][ ;]はスプライシング操作です。h N ( u ) k − 1 {\bf h}^{k-1}_{N(u)}hN ( u )k 1の更新ルールは次のとおりです。
h N ( u ) k − 1 = AGGREGATOR u ( hvk − 1 , v ∈ N ( u ) ) h^{k-1}_{N(u)}={\bf AGGREGATOR }_u( {\bf h}_v^{k-1},v \in N(u))hN ( u )k 1=アグリゲーター_ _ _ _ _ _ _ _ _あなた( hvk 1vN ( u ) )

AGGREGATOR u = σ ( MEAN ( { hvk − 1 Q uk } ) , v ∈ N ( u ) ) ) {\bf AGGREGATOR}_u=\sigma({\bf MEAN(\{h}_v^{k-1} {\bf Q}_u^k\}),v \in N(u)))アグリゲーター_ _ _ _ _ _ _ _ _あなた=σ (平均( { h _ _ _ vk 1Qあなた} ) vN ( u ) ) _

Q uk {\bf Q}_u^kQあなたkthのためにKレベルのユーザー集約重み行列。

同様に、kk番目kレベルのターゲット項目の埋め込み更新メカニズムは次のとおりです:
hvk = σ ( W vk [ hvk − 1 ; h N ( v ) k − 1 ] ) , hv 0 = ev {\bf h}_v^k= \sigma({\ bf W}_v^k[{\bf h}_v^{k-1};{\bf h}^{k-1}_{N(v)}]), {\bf h }_v^0= e_vhv=s ( Wv[ hvk 1;hN ( v )k 1] ) hv0=ev

h N ( v ) k − 1 = アグリゲーター v ( huk − 1 , v ∈ N ( v ) ) h^{k-1}_{N(v)}={\bf アグリゲーター}_v({\bf h} _u^{k-1},v \in N(v))hN ( v )k 1=アグリゲーター_ _ _ _ _ _ _ _ _v( hあなたk 1vN ( v ) _

AGGREGATOR v = σ ( MEAN ( { huk − 1 Q vk } ) , u ∈ N ( v ) ) ) {\bf AGGREGATOR}_v=\sigma({\bf MEAN(\{h}_u^{k-1} {\bf Q}_v^k\}),u \in N(v)))アグリゲーター_ _ _ _ _ _ _ _ _v=σ (平均( { h _ _ _ あなたk 1Qv} ) あなたN ( v ) ) _

全体の概略図は次のとおりです。
画像の説明を追加してください

上記の式と概略図からわかるように、Multi-GCCF は2 つの異なる重みセットを使用して、ユーザーとアイテムの埋め込み生成を分離します。この操作については、ユーザー ノードとアイテム ノードの固有の違いを考慮して、この記事でも説明しています。

ここでは、初期埋め込みの生成について詳しく説明します。たとえば、ユーザーとアイテムの特徴が取得できない場合、エンコードとして one-hot を使用することは可能ですか? LightGCNの実験によれば、非線形活性化と線形特徴変換は除去できるのでしょうか?それとも、LightGCNによって作成された埋め込みの最初の層をMulti-GCCFの最初の埋め込みとして使用できますか? それは効果的ですか? 興味のある友達同士でコミュニケーションできますよ~

LightGCN を知らない友人は、見てみるとよいでしょう: LightGCN は非線形アクティベーションと特徴変換を信じていません

2.2 マルチグラフエンコーディング

ユーザー間ネットワークおよびアイテム間ネットワークを構築する目的は、ほとんどのユーザーに対応するアイテムの数が限られており、データが相対的に少ないため、ユーザー間ネットワークの情報不足を軽減することです。詳細については、sparse.network を参照してください。

ユーザー間ネットワークおよびアイテム間ネットワークの具体的な構築方法は次のとおりです。評価/クリック行列の行または列のコサイン類似度を計算し、類似度に従ってノード間の接続を確立し、類似度のしきい値を決定します。ネットワークの平均次数を 10 にすることです。

ネットワークが確立された後、ノード埋め込み生成規則は次のとおりです:
zu = σ ( ∑ i ∈ N ' ( u ) ei M u ) ; zv = σ ( ∑ j ∈ N ' ( v ) ej Mu ) z_u= \sigma( \sum_{i \in N'(u)}e_i{\bf M}_u);z_v=\sigma(\sum_{j \in N'(v)}e_j{\bf M}_u)zあなた=s (i N)」e私はMあなた) ;zv=s (j N( v )_ejMあなた)
其中, M u {\bf M}_u Mあなた M v {\bf M}_v Mv学習可能なパラメータN ' ( u ) N'(u)N(u) N ′ ( v ) N'(v) N' (v)はノードuuuとノードvvvの 1 次隣接ノード

MGE層の出力を取得した後、 Bipar-GCN層の埋め込みと接続されます

2.3 スキップ接続

ノードの初期特徴は、多層非線形活性化と特徴変換後の埋め込みで失われるため、ノード内のノードの初期特徴を保存するために、著者は全結合層を使用してノードの初期特徴を変換します。指定された次元の埋め込みが取得され、 Bipar-GCN層とMGE層の埋め込みに接続されます。

2.4 ステッチ方法について

前述したように、Multi-GCCF は3 種類の埋め込みを生成します。

  1. Bipar-GCN層によって生成された埋め込み。
  2. MGEレイヤーによって生成された埋め込み。
  3. スキップ接続部分は、完全接続によって生成された埋め込みに基づいています。

では、これら 3 つの埋め込みをどのように接合するのでしょうか? この記事の著者は、次のように要素ごとの sumconcatenation、およびAttendationを試しました。

ここに画像の説明を挿入

2.5 損失関数

Multi-GCCFで使用される損失関数はBPR損失です。基本的な考え方は、ポジティブ サンプルとネガティブ サンプルの間のギャップを最大化すること、つまり、ユーザーが購入する製品とユーザーが購入しない製品の間の確率のギャップが大きくなるようにすることです。具体的な式は以下の通り:
LBPR = ∑ u , i , j ∈ O − log σ ( eu ∗ ei ∗ − eu ∗ ej ∗ ) + λ ∣ ∣ Θ ∣ ∣ 2 2 + β ( ∣ ∣ eu ∗ ∣ ∣ 2 2 + ∣ ∣ ei ∗ ∣ ∣ 2 2 + ∣ ∣ ej ∗ ∣ ∣ 2 2 ) L_{BPR}=\sum_{u,i,j \in O} -log\sigma(e^*_ue^ *_i - e^*_ue^ *_j)+\lambda||\Theta||_2^2+\beta(||e^*_u||_2^2+||e^*_i||_2^2 +||e^*_j| |_2^2)LBPR _ _=u i j Ol o g σ ( eあなたeeあなたej+λ Θ 22+b ( eあなた22+e22+ej22)
ただし、O = { ( u , i , j ) ∣ ( u , i ) ∈ R + , ( u , j ) ∈ R − } O=\{(u,i,j)|(u,i) \ in {\bf R}^+, (u,j)\in {\bf R}^-\}={ (あなたj ) ( u ,R+(あなたj )R }R + {\bf R}^+R+ R − {\bf R}^- R−はサンプリングによって得られた正のサンプルと負のサンプル、Θ \ThetaΘはモデルのパラメータです。

3 効果は何ですか

まず、Recal l とNDCGをベースラインと比較します。以下の表を参照してください。
ここに画像の説明を挿入

表から、ほぼすべてのデータ セットにおいて、 Multi-GCCFのパフォーマンスが最高であることがわかります。

次に、 Multi-GCCFコンポーネントの寄与がテストされました。結果は次のとおりです。

ここに画像の説明を挿入

上の表からわかるように、3 つのコンポーネントはすべてパフォーマンスの向上をもたらします。

最後に、上記のさまざまな埋め込みスプライシング方法によってもたらされるパフォーマンスがテストされました。
ここに画像の説明を挿入
表からわかるように、要素ごとの合計がより適切な選択です。

4 まとめ

Multi-GCCFが私に個人的にもたらしたインスピレーションは次のとおりです。

  1. 二部ネットワークが比較的希薄な場合、ネットワークを構築することが実現可能な方法です。さらに、スキップ接続は、元の機能を維持するのに役立ちます。Multi-GCCF のパフォーマンスが良かったのは、3 種類のエンベディングを作成し、最終的なエンベディングの表現力が高かったからではないかと個人的には考えています。ただし、実際には、ユーザー ノードとアイテム ノードの違いを考慮して別の方法を使用するなど、エンベディングの各部分をどのように生成するかについて最適化の余地があります。
  2. Multi-GCCF の効率については記事では触れられていませんが、これは考慮すべき点だと思います。その効率をどのように向上させるかということも、より興味深い問題となるはずです。

参考文献

  1. マルチグラフ畳み込み協調フィルタリング

おすすめ

転載: blog.csdn.net/weixin_44027006/article/details/124860554