Open agatan opened 5 years ago
背景の簡単なまとめ
Graph Embedding 自体はめちゃくちゃいろんな手法が提案されている。 わかりやすくて簡単な DeepWalk について簡単にまとめると、
[node1, node3, node8, node2, node9, ... ]
をたくさん得るというもの。 実装もめちゃくちゃ簡単だし、そこそこスケールする。 variant がたくさんある。
(s, relation, d)
の triple からなるエッジで構成されるグラフを扱いたい。
例: (モナリザ, was created by, ダ・ヴィンチ)
DeepWalk のような方法では relation を扱えない。
これもたくさんの手法が提案されているけど、一番わかりやすい方法は relation 自体にも embedding を定義した上で s + relation = d
となるように学習する、という方法。
DKN: Deep Knowledge-Aware Network for News Recommendation は Knowledge Graph の情報を活用してニュースの推薦をしたいというストーリーで、Knowledge Graph Embedding を利用している。 Knowledge Graph はだいたい大規模なので、スケールする方法で埋め込みたい。 FB15K の場合は 14,951 entitiies, 1345 relations, 592,213 edges。
billion scale なグラフだと、 float32 x 128 次元の embedding を作ったらそれだけで 100 GB 単位のメモリが必要なのでやばいが、この論文ではそういうものも disk に書き出しつつ学習する方法を提案している。
グラフ使ってなんかするの、夢あるんだけどスケールさせるの大変だからなーと思ってた人いっぱいいると思う。 実際にはこの論文中で扱ってるグラフは1.2億ノードとかだし、心配するのはまだ早いのだけど、手元の貧弱な Mac Book Pro でも People のグラフ全体を簡単に扱えるとかはふつうに嬉しそう。
やっていること/えらいところ
sim(f(src, rel), f(dst, rel))
を計算する感じf(src, rel) = src
Link Prediction で DeepWalk より良い精度を保ちつつ、billion scale なグラフでも学習できるようにした。