ブログではないです

読んだ論文と実験・研究のメモ書き

Modeling Relational Data with Graph Convolutional Networks [Schlichtkrull+, arXiv'17]

https://arxiv.org/pdf/1703.06103.pdf

概要

Graph Convolutional Network(GCN) を関係ラベル付き有向グラフも扱えるように拡張して、ノードのタイプの推定や欠けたエッジの補完を行う話。 Quitaの解説記事 がとてもわかりやすいのであまり自分で書くことがない・・・。

思ったこと

R-GCNの式(1)での重みについて,

{ \displaystyle W_{r}^{(l)} = \sum_{b=1}^{B} a_{rb}^{(l)} V_{b}^{(l)} }
のように基底変換を重み付け和するやり方と

{ \displaystyle W_{r}^{(l)} = \bigoplus_{b=1}^{B} Q_{br}^{(l)} }
のように小さな基底変換のdirect sumを取る、つまり{ \displaystyle W_{r}^{(l)}}をブロック対角行列の形で表す方法の二種類を取っている。これはrelationが多くて全部について行列を学習するのが大変だからということだと思うんだけど一方でLink Predictionの方では{ \displaystyle R_r} として別個に学習してるように見えるがそこは良いのか??

DistMult単体で用いた場合との違いはentityのベクトルをR-GCNを使って作るか,それともembeddingとして同時最適化しているかの違い? グラフ系のNN,もしくはそれ以外の既存手法あまり知らないので関連研究辿る。

テストでは同様にtriple (subject, relation, object) が与えられ、 subject/object のどちらかを抜いた状態(両方やる)で全entityについてそのtripleに入るかどうかのスコアを算出する。正解のentityのMRR (平均逆順位)と Hit@k (上位k位に正解がいる割合) で評価。

メモ

ここ にDistmult含め既存研究のグラフKBに関する研究をまとめたスライドがあった。