Knowledge Graph Convolutional Networks(KGCN)を調査するよー

またしても久しぶりに更新するんだけど、アクセス履歴を見るとtotal PVが3500超えていて、未だに毎日何らかのアクセスがあるのが嬉しい。
最近はレコメンドとかが周りでニーズが多いので、そっち系の話で。

書いてる理由

Graphを使ったニューラルネットに興味があったけど、これまでやってこなかったから勉強 + コード動かしてみたい。

参考

Knowledge Graph Convolutional Networks for Recommender Systems
github(KGCN-pytorch)

概要

  • やりたいことの概要
  • KGCNの論文の紹介
  • Abstruct
  • Introduction
  • Related Work

詳細

やりたいことの概要

まずは、KGCNの論文を読んでみる。次にコードを読みつつ、動かして理解を深める。今回は論文読み。

Abstruct

レコメンドにおけるよく利用される強調フィルタリングのでの課題であるコールドスタートやスパース性を回避するため、ユーザーやアイテムの属性情報の利用がよく検討される。
一般的にこれらの属性情報は独立ではなく、ユーザーやアイテム間で何らかの関係性で接続されており、この関係性はKnowledge Graph(KG)を形成している状態であると言える。
本論では、KG上でのアイテム間の関係性を考慮したend to endで学習可能なKnowledge Graph Convolutional Network(KGCN)を提案する。
KGのアイテム間の構造的な関係と意味的な関係の両方を捉えるために、KGの隣接するノードの情報を取得し、それをreceptive fieldとして扱い(特徴変換し)、計算したデータにバイアスを加えてアイテムの表現とする。(隣接ノードをサンプリングして、convolutionで畳み込んで行き、ベクトルに変換する。これによりKGでの関係性を組み込んだベクトルでの表現が可能ってこと)
receptive fieldは、近接するノードを伝うこともできて、ユーザーの無意識化の行動のポテンシャルを推論することができる。
更に、学習をミニバッチで実行可能な形で設計することで、全部のデータをメモリに載せずとも逐次的に学習が可能なようにした。
提案したモデルで、映画・書籍・音楽のレコメンドデータに適応し良い成果が上がることを確認した。

1. INTRODUCTION

データが世の中に溢れているので、適切なデータに辿り着けないことが課題となり、その解決策としとユーザーの興味にマッチするレコメンドは重要である。
よく利用されるレコメンドは強調フィルタリングで、ユーザーとアイテムの関係を内積ニューラルネットを用いて表現する方法である。
しかし強調フィルタリングはデータがスパースになりうまく機能しない問題や、コールドスタート問題に直面する。
これを解決するために、スパースではないタスクで利用するようにしたり、属性情報を取り入れたりする。

最近は単純に属性情報を利用するだけでなく、属性での結合をKGとして利用するケースもある。
KGでは、各ユーザーやアイテムが有方向で多様な結合をするグラフとして利用され、ユーザーやアイテムをノード、それを繋ぐ関係性をリレーションとして扱う。
KGを利用することで、以下のメリットが見込める。
1. 意味的なノードの結合は、未知のリレーションの推測を可能にし、レコメンドの精度の向上が期待できる。
2. 様々なリレーションで繋がっていることは、ユーザーの興味を多角的に把握することに繋がり、レコメンドの多様性を確保することが期待できる。
3. ユーザーとアイテムは興味の度合いで繋がり、その理由をリレーションから確認することができる。

このような利点がある一方、レコメンドにKGを用いるのは高い次元数と多様性から難易度が高い。
この多次元性/多様性を持つという課題に対し、Knowledge Graph Embedding(KGE)を用いて低次元のベクトルに変換して扱う方法がある。
一般的にKGEはリレーションの厳密な定義を重視しており(head + relation = tailという関係性になる厳密なリレーションの探索が目的)、レコメンドの目的からすると、リレーションの厳密な定義よりも、未知のユーザーとアイテムのリレーションに興味が強い。
レコメンドにKGを利用することを考えると、リレーションの定義に主目的を置くのではなく、グラフ構造をそのままデータとして利用することの方が自然である。
例えば、PERやFMGはKGを多様なネットワークとみなし、そこからmata-pathやmeta-graphを抽出することでユーザーとアイテム間のパスの予測に利用している。
しかし、これらの方法は、meta-pathやmeta-graphの手動での定義に非常に依存し、実際に最適化することは困難である。
RippleNetは、メモリーネットワークのようなモデルでユーザーの潜在的な好みをKGに埋め込んで階層的な好みを探索する。
しかしこれは、関係性を二次形式で扱うだけとなっており、リレーションを最大限に利用できているとは言い難い。
また、KGのデータ数が多いとメモリが溢れてしまうところが難点として存在する。

本論では、KGのレコメンド応用における課題を明らかにし、自動で構造的/意味的なリレーションを利用可能なように設計することを目的とする。
RippleNetのようなこれまでのGraph Convolutional Networks(GCN)とは異なるKnowledge Graph Convolutional Networks(KGCN)を提案する。
KGCNの重要な点は、KGのノード間のリレーションを使って近傍のノードの情報をバイアスと共に集約して組み込むことにある。
これをするメリットは以下で、
1. 近傍の情報を集約することで、局所的に重要な構造を捉えることができる。
2. ノードがリレーションを持つ近傍やユーザーの特性を考慮して重み付けされるため、構造的/意味的なリレーションで表現ができる。

しかし、各ノードが繋がるノード数は可変であるため、計算量が膨大となってしまうことが懸念される。
そこで一定数のノードを取得するように設計して、計算を可能なようにする。
近傍の集約により、ノードを伝った計算も可能となり、潜在的な興味を辿っていくこともできる。

提案するモデルをMovieLens-20M/Book-Crossing/Last.FMのデータを使って実験し、AUCがそれぞれ4.4%, 8.1%, 6.2%既存の手法よりも増加した。
本論の貢献ポイントは、以下である。
1. ユーザーの興味とKGを同時に扱うKGCNを提案し、ユーザーの興味を予測可能なモデルを作成した。
2. 実際のデータに適応し、良い結果を得ることができた。
3. コードを作成し、githubに上げている。

2. RELATED WORK

本提案モデルはGCNのコンセプトを取り入れている。
一般的にGCNはスペクトル法をとそうでない物にカテゴライズできる。
スペルトル法はグラフ表現をスペクトル空間(各次元の成分を独立に扱うイメージ)でConvolutionを実行する。
Brunaらはグラフから得られるデータを、フーリエ領域におけるConvolutionを、グラフラプラシアン固有値分解することと定義して利用し、DefferrardらはConvolutionのフィルターをチェビシェフの多項式で近似させている。
Keifらは最近傍のスペクトルグラフコンボリューションをかましてConcolutionの入力として利用している。

一方スペクトル法を利用しない場合は、グラフをそのままconvolutionに利用する。
リレーションが多数あるグラフデータの近傍データに対し、CNNのパラメータを共有して利用するために、各ノードで固定サイズの重みの行列を用いて計算するため、局所的なデータをランダムにサンプルする方法を採用してきた。
本論での方法はスペクトル法を用いないやり方を採用する。(KGをそのまま利用する。)

本手法はPinSageやGATと似ているが、同一のグラフの形式だけを利用することを想定するこれらの方法とは異なる。
本手法は、多様なグラフ構造を扱うことができる手法となっているのがこれらの先行研究と異なる点である。

一旦今日はここまで。。