agatan / paper-reading-notes

読んだ論文の管理とメモ置き場
5 stars 0 forks source link

Pytorch-BigGraph: A Large Scale Graph Embedding System #1

Open agatan opened 5 years ago

agatan commented 5 years ago

billion scale なグラフだと、 float32 x 128 次元の embedding を作ったらそれだけで 100 GB 単位のメモリが必要なのでやばいが、この論文ではそういうものも disk に書き出しつつ学習する方法を提案している。

グラフ使ってなんかするの、夢あるんだけどスケールさせるの大変だからなーと思ってた人いっぱいいると思う。 実際にはこの論文中で扱ってるグラフは1.2億ノードとかだし、心配するのはまだ早いのだけど、手元の貧弱な Mac Book Pro でも People のグラフ全体を簡単に扱えるとかはふつうに嬉しそう。

やっていること/えらいところ

Link Prediction で DeepWalk より良い精度を保ちつつ、billion scale なグラフでも学習できるようにした。

agatan commented 5 years ago

背景の簡単なまとめ

Graph Embedding ?

Applications

DeepWalk

Graph Embedding 自体はめちゃくちゃいろんな手法が提案されている。 わかりやすくて簡単な DeepWalk について簡単にまとめると、

  1. Graph 上をたくさんランダムウォークする
    • [node1, node3, node8, node2, node9, ... ] をたくさん得る
  2. それぞれのランダムウォークを使って、word2vec と同じ要領で embedding を学習する
    • それぞれのノードを単語とみなして word2vec にかける

というもの。 実装もめちゃくちゃ簡単だし、そこそこスケールする。 variant がたくさんある。

Knowledge Graph Embedding

(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。

参考文献、他に読んだら面白いとおもうもの