GNN 推奨アルゴリズム (4) - LESSR: セッションベースの推奨のためのグラフ ニューラル ネットワークの情報損失の処理

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

1 少しずつ紹介

LESSR (Lossless Edge-order preserving aggregation and Shortcut chart attention for Session-based Recommendation)アルゴリズムは、前述のLR-GCNLightGCN、およびMulti-GCCFアルゴリズムとは異なります。後の 3 つのアルゴリズムは、ユーザー項目の 2 部グラフの構造に基づいてユーザーに推奨事項を作成します。一方、 LESSR は、ユーザーの過去の行動の時間的パターンをマイニングすることで、次の瞬間のユーザーの行動を予測することを目的としています。
言い換えると、一定期間内のユーザーの消費習慣に応じて、次回どのような商品を購入するかを決定します。

データ レベルから見ると、より明確になるかもしれません。LESSR
画像の説明を追加してください
時系列データを指向しています。下の図に示すように、ユーザーは項目を順番にタッチしますが、 LR-GCNLightGCN、およびMulti-GCCFなどの協調フィルタリング アルゴリズムは時系列データを指向しています。 user-item バイナリ ネットワーク時間要素は考慮されません。
画像の説明を追加してください
さらに、時系列データに基づく推奨は、ユーザーの行動を複数の独立したセッションに分割し、アクティブなセッションの履歴行動のみを使用して予測を行うセッションベースのレコメンダーに細分化できます。ここで言及されているセッションは、実際には時間的に類似した一連の項目です

セッションベースのレコメンダーの理論的基礎は、セッション間の依存関係と比較して、セッション内の依存関係の方が次の瞬間の動作に大きな影響を与えるということです。言い換えれば、ユーザーは通常、同じセッション内で同様の目標を持っています。たとえば、携帯電話を購入した後、次の購入は携帯電話のアクセサリを購入することになるかもしれませんし、別のセッションでは携帯電話と関係のない衣服やその他の製品を購入することになるかもしれません。

以下に示すように、各セッションはグラフに変換できるため、セッション ベースのレコメンデーションは基本的にグラフ分類問題として抽象化できます
画像の説明を追加してください
。 最終的な目標は、セッションのグローバルな動作設定を保持する埋め込みを各セッションに対して生成することです。セッションの埋め込みにより推奨事項が作成されます。I = { v 1 , v 2 , . . . , v ∣ I ∣ } I=\{v_1,v_2,...,v_{|I|}\} とします={ v1v2v}は項目集合、si = [ si , 1 , si , 2 , . 、シ、リ] s_i=[s_{i,1},s_{i,2},...,s_{i,l_i}]s私は=[ s 1s 2s私は]为第 i i iセッション、ここでsi 、 t s_{i,t}sttを表しますt時刻si s_is私は項目、モデルの目標はsi , li + 1 s_{i,l_i+1}を予測することですs私は+1 _、つまり、ユーザーが次の瞬間にどの項目をクリックする可能性があるかということです。通常、モデルは確率分布p ( si , li + 1 ∣ si ) p(s_{i,l_i+1}|s_i) を出力します。p ( s私は+1 _s私は)、元のKK最も高い確率を持つK個の候補セットが推奨として使用されます。

具体的には、セッションの埋め込みが取得された後、最初にIIを使用して次の項目の確率分布を計算できます。アイテムの埋め込みとセッションの埋め込みは内積を計算します(アイテムがこのセッションの嗜好を満たすかどうかを判断すると理解できると思います)
zi = sh T vi z_i=s_h^Tv_iz私は=shTv私は
次に、ソフトマックスを使用して確率を出力します。
y ^ i = exp ( zi ) ∑ j ∈ I exp ( zj ) \hat{y}_i=\frac{exp(z_i)}{\sum_{j\in I}exp( z_j) }y^私は=j Ie x p ( zje x p ( z私は)
最後に、確率に応じて、高いものから低いものの順におすすめします。

モデルのトレーニングのプロセスでは、グラフ分類問題であるため、使用される損失関数はクロスエントロピー損失です。
L ( y , y ^ ) = − y T logy ^ L(y,\hat{y})=- y^tlog \hat{y}L ( y ,y^=yログ___y^
準備はできていますか。LESSR がどのように実行するかを見てみましょう。

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

2 LESSR の概要

GNN ベースのタイミング推奨モデルのノード埋め込み更新メカニズムは次のとおりです。xi (
l + 1 ) = fupd ( l ) ( xi ( l ) , aggi ( l ) ) x_i^{(l+1)}=f_{ upd}^{ (l)}(x_i^{(l)},agg_i^{(l)})バツ( l + 1 )=f更新_ _( l )( ×( l )ああ_( l )

aggi ( l ) = fagg ( l ) ( { fmsg ( l ) ( xi ( l ) , xj ( l ) ) : ( j , i ) ∈ E in ( i ) } ) agg_i^{(l)}=f_{ agg}^{(l)}(\{f_{msg}^{(l)}(x_i^{(l)},x_j^{(l)}):(j,i)\in E_{in} (私)\})ああ_( l )=fああ_( l )( { fms g _( l )( ×( l )バツj( l ):( j ,E( i ) } )

其中, x i ( l ) x_i^{(l)} バツ( l )ノードiiの場合私はLLにいるl层的embedding, E i n ( i ) E_{in}(i) E( i )はノードiiiの入力エッジのセットfmsg f_{msg}fms g _近隣ノードからターゲット ノードに渡される情報、fagg f_{agg}を計算するために使用されます。fあ、情報集約関数fupd f_{upd}f更新_ _埋め込み用の更新機能。

各ノードでLLを通過しますL層の埋め込みが更新された後読み出し読み出しをr e a d o u t関数を使用して、グラフの埋め込み表現を取得します。
h G = fout ( { xi ( L ) : i ∈ V } ) h_{G}=f_{out}(\{x_i^{(L )} :i\in V\})hG=fあなた_( { x( L ):V } )
LESSR は主にセッションに基づいてグラフを生成する方法に革新をもたらし、2 つの合成方法を提案しました. 簡単に理解しましょう:
、通常の合成方法には情報損失という 2 つの主な問題:

  1. 非可逆セッション エンコーディングでは、セッションをネットワークに変換するときにシーケンス情報が失われます ( [ v 1 、 v 2 、 v 3 、 v 3 、 v 2 、 v 2 、 v 4 ] [v_1,v_2,v_3,v_3,v_2 ,v_2, v_4][ v1v2v3v3v2v2v4][ v 1 , v 2 , v 2 , v 3 , v 3 , v 2 , v 4 ] [v_1,v_2,v_2,v_3,v_3,v_2,v_4][ v1v2v2v3v3v2v4]は次の図に変換できます。
    画像の説明を追加してください
    ただし、上の図によると、元のセッションに復元することはできません。2 つのセッションで次に指示される項目が異なる場合、この合成方法に基づくアルゴリズムでは正確な予測を行うことが困難です。

  2. 非効率的な長距離依存関係のキャプチャ: GNN 層は 1 次近傍をキャプチャできます。GNN の層の数は可能な限り深くないため、GNN ベースのアルゴリズムが長いシーケンスの依存関係を捕捉することは困難です。

オリジナル:

2 番目の情報損失の問題は、これらの GNN ベースのメソッドがすべての長距離依存関係を効果的にキャプチャできない、非効率的な 長距離依存関係キャプチャ問題と呼ばれます。GNN モデルの各層では、ノードによって運ばれる情報が 1 ステップのエッジに沿って伝播されるため 1 、各層は 1 ホップの関係のみをキャプチャできます。複数の層を積み重ねることにより、GNN モデルは最大 -ホップ関係を捉えることができますはレイヤーの数と同じです。過剰適合や過剰平滑化の問題により、より多くの層を積み重ねても必ずしもパフォーマンスが向上するとは限らないため、これらの GNN モデルの最適な層数は通常 3 を超えません。したがって、モデルは最大 3 ホップの関係しか捕捉できません。ただし、実際のアプリケーションでは、セッションの長さは簡単に 3 より大きくなる可能性があります。したがって、3 より長い重要な連続パターンがいくつか存在する可能性が非常に高くなります。それにもかかわらず、ネットワーク構造の制限により、これらの GNN-ベースのモデルではそのような情報を取得できません。

2番目の制限については疑問がありますが、GCNの場合、第1層は1次近傍の情報しか集約できませんが、2層目のGCNにはすでに3次近傍も含めることができます。 not レイヤーは高次の情報のみを集約できます。

上記 2 つの問題を解決するために、著者はLESSRを提案します。モデルで使用される属性情報はアイテムの ID です。全体的な枠組みは次のとおりです。画像の説明を追加してください

2.1 セッションはネットワークを変更します

ネットワークへのセッションを変更するプロセスでのタイミング情報の損失を避けるために、作成者は次のように **S2MG (Session to EOP Multigraph)** を使用してネットワークを構築します。

エッジに連続したラベルを追加することで、ネットワークをセッションに再構築できるようにします。[v 1 , v 2 , v 3 , v 3 , v 2 , v 2 , v 4 ] [v_1,v_2,v_3,v_3,v_2,v_2,v_4] の場合[ v1v2v3v3v2v2v4]例として、次のように変換できます。
画像の説明を追加してください
再構成プロセスは次のとおりです: ノードv 4 v_4v4は最後のノードであり、その前のノードはv 2 v_2ですv2したがって、 ( v 2 , v 4 ) (v_2,v_4)を取得できます。( v2v4)、この時点ではv 2 v_2v2最後のノードになり、入力エッジのラベルに従って、( v 2 、 v 2 、 v 4 ) (v_2,v_2,v_4) を取得できます。( v2v2v4)、リファクタリングできます。

無効な長距離依存関係の問題を解決するために、著者はセッションからショートカット グラフへの手法を使用してネットワークを構築します。基本的な考え方はショートカットという言葉に反映されています。つまり、もともと切断されていたいくつかのノード間にエッジを直接追加します。そのため、情報伝達の過程で、これらのノード間の情報はショートカットを通じてより速く伝達されます。詳細は次のとおりです。

si , t 1 = u , si , t 2 = v s_{i,t_1}=u,s_{i,t_2}=vst1=あなたst2=またvt 1 < t 2 t_1<t_2t1<t2、各ノードのペア( u , v ) (u,v)(あなたv )各ノードにエッジと自己ループを追加します[ v 1 , v 2 , v 3 , v 3 , v 2 , v 2 , v 4 ] [v_1,v_2,v_3,v_3,v_2,v_2, v_4][ v1v2v3v3v2v2v4]以下に示すように
画像の説明を追加してください

2.2 Edge-Order Perserving Aggregation(EOPA)層

エッジの相対順序を無視した、順列不変集計の考え方を使用するGNN ベースのメソッドが多数あります。そこで著者は、GRUを利用して隣接ノードの情報を集約するEOPA層を提案する。具体的には、OE in ( i ) = [ ( j 1 , i ) , ( j 2 , i ) , . . , ( jdi , i ) ] OE_{in}(i)=[(j_1,i), ( j_2,i),...,(j_{d_i},i)]O E()=[ ( j1( j2( jd私はi ) ] は、接続されたエッジの順序付きセットです。ここで、di d_id私はノードiiの場合iの次数値
、集計式は次のとおりです。 xi ( l + 1 ) = W upd ( l ) ( xi ( l ) ∣ ∣ hdi ( l ) ) x_i^{(l+1)}=W_{upd }^{( l)}(x_i^{(l)}||h_{d_i}^{(l)})バツ( l + 1 )=W更新_ _( l )( ×( l )hd私は( l )

hk ( l ) = GRU ( l ) ( W msg ( l ) xjk ( l ) , hk − 1 ( l ) ) h_k^{(l)}=GRU^{(l)}(W_{msg}^{( l)}x_{jk}^{(l)},h_{k-1}^{(l)})hk( l )=グルー_ _( l ) (Wms g _( l )バツjk _( l )hk 1( l )

ただし、{ hk ( l ) : 0 < = k < = di } \{h_{k}^{(l)}:0 <=k<=d_i\}{ hk( l ):0<=k<=d私は} G R U GRU G R Uの隠れ層状態、ho ( l ) h_o^{(l)}hああ( l )はゼロベクトル、W msg W_{msg}Wms g _は重み行列です。著者がGRUを選択した理由は、 GRU がセッションベースの推奨事項でLSTMよりも優れたパフォーマンスを発揮するためです。

2.3 ショートカット グラフ アテンション(SGAT)层

著者は、電子商取引 Web サイトではセッションの長さは通常 3 を超え、GNN があまりにも深く (3 層を超えて) 積み重ねられると、効果がさらに悪化する可能性があると考えています。それでは、現時点では通常の GNN を使用してこれほど長期間の情報を集約することは困難です。そこで著者は、直接接続されていないいくつかのノード間の接続を増やし情報をより速く送信できるようにするSGAT層を提案します。
∈ E in ( i ) aij ( l ) W val ( l ) xj ( l ) x_i^{(l+1)}=\sum_{(j,i)\in E_{in}(i)}a_{ij } ^{(l)}W_{val}^{(l)}x_j^{(l)}バツ( l + 1 )=( j , i ) E()ある( l )Wv a l( l )バツj( l )

ai ( l ) = ソフトマックス ( ei ( l ) ) a_i^{(l)}=ソフトマックス(e_i^{(l)})ある( l )=ソフトマックス( e _ _ _ _ _( l )

eij ( l ) = ( p ( l ) ) T σ ( W key ( l ) xi ( l ) + W qry ( l ) xj ( l ) + b ( l ) ) e^{(l)}_{ij} =(p^{(l)})^T\sigma(W_{key}^{(l)}x_i^{(l)}+W_{qry}^{(l)}x_j^{(l)} +b^{(l)})e( l )=( p( l ) )T σ(Wキー_ _( l )バツ( l )+Wq r y( l )バツj( l )+b( l ) )

ここで、p ( l ) p^{(l)}p( l )b ( l ) ∈ R db^{(l)}\in {\bf R}^db( l )Rd

2.4 全体構造

モデルの全体構造を設計する際には、EOPA層とSGAT層をどのように配置するかが考慮されます。著者は、次の理由からEOPA の層とSGATインタラクションの層を使用します。

  1. SGAT層は情報損失を引き起こしますが、複数のSGAT層が連続して積層されると、情報損失はより深刻になります。
  2. 2 対 2 のインタラクションは、異なるレイヤーによって生成された埋め込みに対して相互に使用できます。

さらに、作成者は完全接続操作をキャンセルし、各レイヤーの入力は、以前のすべてのレイヤーの出力を結合したものになります。

2.5 生成Session embedding

各ノードの表現を取得した後、アテンション メカニズムを使用してノードの表現を集約し、ネットワークの表現を取得します。式は次のとおりです。
h G = ∑ i ∈ V β ixi ( L ) h_G=\sum_{i \in V}\beta_ix_i ^{(L)}hG=i Vb私はバツ( L )

β = ソフトマックス ( ϵ ) \beta=softmax(\epsilon) 。b=s of t max ( ϵ ) _ _ _

ϵ i = q T σ ( W 1 xi ( L ) + W 2 xlast ( L ) + r ) \epsilon_i={\bf q}^T\sigma(W_1x_i^{(L)}+W_2x_{last}^{ (L)}+r)ϵ私は=qT σ(W1バツ( L )+W2バツ最後_ _( L )+r )

ただし、q , r ∈ R dq,r \in {\bf R}^dq rRd

ネットワークの表現は、セッション全体の好みを捕捉します。既存の研究では、ユーザーの最近の興味を明示的に考慮する方が推奨に良い影響を与えることが示されているため、著者はローカルの好みベクトル sl = xlast ( L ) s_l=x_{ last を定義します。 }^{(L)}s=バツ最後_ _( L )
sh = W h ( h G ∣ ∣ sl ) s_h=W_h(h_G||s_l)s=W( hGs

3 効果は何ですか

著者はまずベースライン モデルと比較しました。
画像の説明を追加してください
上記の表からわかるように、平均指標としてHR@20MRR@20を使用すると、 LESSRが最適です。次に、著者は EOPA レイヤーの有効性を比較しました。EOPA
画像の説明を追加してください
を追加するとモデルのパフォーマンスが向上したことがわかります。

次に、著者は EOPA 層と SGAT 層を配置する方法をテストしました。このことから、 ESESが最適な組み合わせである
画像の説明を追加してください
ことがわかります。

最後に、モデルのパフォーマンスに対するさまざまな埋め込みサイズとモデル層の影響が 3 つのデータ セットでテストされました。
画像の説明を追加してください
図からわかるように、さまざまなデータ埋め込みサイズと層が精度に与える影響は非常に明白です。

4 まとめ

記事「セッションベースのレコメンデーションのためのグラフ ニューラル ネットワークの情報損失の処理」を読んだ後、次の領収書を入手しました。

  1. GNN をより深くするための主な目的の 1 つは、高次近傍に関する情報を集約することです。この記事は新しいアイデアです。ショートカットを追加することで同じ効果を得ることができます。ため息をつかずに、素晴らしいですね~
  2. セッションベースのレコメンダーの基本的な考え方は、各セッションをグラフにマッピングし、グラフの埋め込みを学習し、セッション全体の好みを保持し、各項目と各セッションの類似性を比較し、それに基づいて推奨を行うことです。この類似性について。
  3. GNN が長期的な情報を集約できないという制限については、まだ疑問が残っていますが、個人的には、シナリオごとにセッションの平均長は異なるはずだと考えています。たとえば、商品を購入したり音楽を聴いたりする場合、1 日に 10 個または 20 個以上の商品を購入することは一般的に比較的まれですが、1 日に 10 曲または 20 曲以上の音楽を聴くのは通常のことです。セッションが比較的短いシーンで言及されているテキスト SGAT は確実に効果を向上させますか?

参考文献

  1. セッションベースのレコメンデーションのためのグラフ ニューラル ネットワークの情報損失の処理

おすすめ

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