More Related Content
PPTX
PPTX
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜 PDF
PDF
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling PDF
PDF
Generating Diverse High-Fidelity Images with VQ-VAE-2 PPTX
深層学習の数理:カーネル法, スパース推定との接点 PPTX
【論文紹介】How Powerful are Graph Neural Networks? What's hot
PPTX
PDF
【メタサーベイ】Vision and Language のトップ研究室/研究者 PDF
PDF
2018年01月27日 TensorBoardによる学習の可視化 PDF
Neural networks for Graph Data NeurIPS2018読み会@PFN PDF
PDF
Attentionの基礎からTransformerの入門まで PDF
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜 PDF
PPTX
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料 PPTX
【DL輪読会】時系列予測 Transfomers の精度向上手法 PPTX
[DL輪読会]Neural Ordinary Differential Equations PPTX
【DL輪読会】Towards Understanding Ensemble, Knowledge Distillation and Self-Distil... PPTX
PDF
PPTX
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial) PDF
PPTX
Tensor コアを使った PyTorch の高速化 PPTX
PDF
Similar to Deep walk について
PPTX
SakataMoriLab GNN勉強会第一回資料 PDF
東大大学院 電子情報学特論講義資料「深層学習概論と理論解析の課題」大野健太 PDF
[DL輪読会]Relational inductive biases, deep learning, and graph networks PDF
これから始める人のためのディープラーニング基礎講座 PPTX
Oracle Labs 発! Parallel Graph AnalytiX(PGX) PDF
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015) PDF
Jubatusにおける大規模分散オンライン機械学習 PPTX
PDF
PDF
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 PDF
TensorFlow White Paperを読む PDF
20180824 DLLab推論ナイト_深層学習モデル推論ライブラリ「Menoh」の紹介/Python以外でDeepLearning PDF
BigDLでScala × DeepLearning に入門した話 PPTX
PDF
Let's stady Machine Learning with OCSJ PDF
PDF
PDF
PPTX
Pgx user meeting_20170602 PPTX
Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」 PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研) PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版 PDF
PMBOK 7th Edition Project Management Process Scrum PDF
PMBOK 7th Edition_Project Management Context Diagram PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望 PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S... PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信 PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis PDF
PMBOK 7th Edition_Project Management Process_WF Type Development PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector Deep walk について
- 1.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. |
2019年05月16日
日本オラクル株式会社
クラウド・テクノロジーコンサルティング
玉越 敬典
1
PGX ユーザー勉強会 #12
Deep Walk について
- 2.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 2
Agenda
1. Deep Walk とは
2. Deep Walk by PGX
3. Demo
- 3.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 3
1. Deep Walk とは
- 4.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 4
Graph データ構造
• Graph の最も基本的なデータ構造(行列表現)は以下の2つ
隣接行列 隣接リスト
B
C
A F
D
E
B
C
A F
D
E
0 1 1 0 0 0
1 0 0 0 1 1
1 0 0 1 0 1
0 0 1 0 1 0
0 1 1 1 0 0
0 1 1 0 0 0
A B C D E F
A
B
C
D
E
F
A
B
C
D
E
F
B C
F
E F
C E
グラフの頂点と頂点の
隣接関係を表す正方行列
各頂点から接続している頂点を
数珠つなぎに保持するリスト構造
- 5.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 5
Graph データ構造の統計手法への適用
• Graph を一般的な統計アルゴリズムで処理しようとすると、
スパース性からうまくいかないことが多い…
クラスタリング異常検知
ノードの数が増えれば増えるほど
0 が増えてスパースになる
0 1 … 0
0 0 … 0
.. .. … …
0 0 … 0
グラフ 隣接行列
B
C
A F
D
E
- 6.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 6
潜在表現 (latent representation)
• そこで、Graph データの特徴 (ノードとノードのつながりの情報)をある程度保持したまま、
Graph 構造に関する潜在的な情報を抽出したデータ表現を使う
グラフ 隣接行列
B
C
A F
D
E
クラスタリング異常検知
潜在表現
0 1 … 0
0 0 … 0
.. .. … …
0 0 … 0
- 7.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 7
Deep Walk
• Deep Walk は 潜在表現を獲得するためのアルゴリズム
– Deep Learning を使って Graph の潜在的な情報を学習する
0 1 1 0
1 0 0 0
1 0 0 1
0 0 1 0
グラフ 隣接行列
B
C
A F
D
E
Deep Walk!!
Random Walk
Word2vec
(Skip-gram)
潜在表現
2つのステップ
A のベクトル
B のベクトル
….
各ノードごとに
同次元のベクトル表現が得られる
- 8.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 8
Deep Walk 詳細の前に – NLPとの関連①
• 自然言語処理 (NLP) 界隈でも Graph と同様の問題があった
– 文章、パラグラフ、単語といった情報を ①コンテキスト情報を踏まえた、②密なデータを表す表現の
方法がなかった
A. One-Hot ベクトル B. TF-IDF によるベクトル化
これ
は
ペン
です
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
これ
は
ペン
です
単語の出現頻度等を
重み付けして計算
0.2333
0.7685
0.2311
0.4562
語彙が増えれば増えるほど
スパースになる
コンテキスト情報を
考慮できていない
古典的な 単語ベクトル表現獲得手法
- 9.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 9
Deep Walk 詳細の前に – NLPとの関連②
• そこで word2vec という手法が生み出された
– 「各単語はその周辺の単語と何らかの関係性がある」と仮定して、ある単語が与えられたときの周辺の単語
を予測するというタスクから、単語の潜在表現ベクトルを獲得する方法
潜在表現
引用: Xin Rong. word2vec Parameter Learning Explained
https://arxiv.org/pdf/1411.2738.pdf
- 10.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 10
Deep Walk の発想とアルゴリズム
• 「ノードを適当に(ランダムに)たどっていけば、ノードの順序をもった集合ができる」
これは “文” とみなして、word2vec を適用できるのではないか?
B
C
A F
D
E
G
H
I J
2. word2vec
Random Walk
Word2vec
(Skip-gram)
Start
適当な ノードを出発起点として
ランダムにノードをたどる
辿ったノードの集合を順に
リストする
1. Random Walk
H I E B F[ ]
潜在表現
これを文とみなす
- 11.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 11
Deep Walk で何ができるか
• Graph の潜在表現 = 「各ノードのベクトル集合」なため、ノード間の関係を計算できる
Aさん 商品1
Bさん
Cさん
商品2
商品3
リコメンドエンジン
比較対象 類似度
Bさん 0.987665
Cさん 0.87721
Aさんとの類似度が高いユーザ
• Aさんと類似度が高い
ユーザを導出
• そのユーザが買っている商品
をリコメンド
クラスタリング
DeepWalk によって計算された各ノードの
ベクトルを Kmeans 等のクラスタリング
アルゴリズムにくわせて、Graph のクラスタを
算出
- 12.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 12
[参考] Deep Walk パフォーマンス
• 論文によると他の手法よりもパフォーマンスは高く、特にラベル付きデータがまばらである場合、
Deep Walk は競合する方法よりも最大10%高いF 1スコアになっている
(出典) Bryan Perozzi, Rami Al-Rfou, Steven Skiena. DeepWalk: Online Learning of Social
Representations
- 13.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 13
2. Deep Walk by PGX
- 14.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 14
PGX での Deep Walk の利用
• PGX 3.2 から Deep Walk が利用可能に
– https://docs.oracle.com/cd/E56133_01/latest/tutorials/mllib/deepwalk.html
• 以下のようなフローで Deep Walk を利用する
Graph データ準備 モデル構築 モデル学習 モデル利用
- 15.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 15
PGX Deep Walk – 1. データの準備
• 通常の PGX の使用通りにまずは Graph データをロードして PgxGraph オブジェクトを
生成する
• そのあと、PgxGraph#undirect() で無向グラフ化する
PGX> G = session.readGraphWithProperties(“test.json”)
==> PgxGraph[name=sub-graph_13,N=4483,E=10000,
created=1557815262110]
# Deep Walk を適用するグラフは無向グラフである必要がある
PGX> uG = G.undirect()
- 16.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 16
PGX Deep Walk – 2. モデルの構築
• ハイパーパラメータを設定して DeepWalk モデルを構築
– 各種ハイパーパラメータの意味は 以下の JavaDoc で確認
PGX> model = analyst.deepWalkModelBuilder()
.setWindowSize(3)
.setWalksPerVertex(6)
.setWalkLength(4)
.build()
==> oracle.pgx.api.beta.mllib.DeepWalkModel@50027e64
https://docs.oracle.com/cd/E56133_01/latest/javadocs/oracle/pgx/api/beta/mllib/DeepWalkModelBuilder.html
- 17.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 17
PGX Deep Walk – 3. モデルの学習
• DeepWalkMode#fit(PgxGraph) で DeepWalk のモデルを学習させる
PGX> model.fit(uG)
# 学習後の損失を算出する (現在は 学習過程の損失は取得できない)
PGX> model.getLoss()
==> -1.1363721109080635E-6
# 学習後の 各ノードのベクトルは以下のように取得する
PGX> model.getTrainedVertexVectors()
==> oracle.pgx.api.beta.frames.internal.PgxFrameImpl@b2954e
- 18.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 18
PGX Deep Walk – 4. モデル使用
• 学習さ (せたモデルで特定ノードの類似性を測定できる
– DeepWalkMode#computeSimilars を使用
– 現在はノードIDを元にした類似性の算出 API しか用意されていない
# 第一引数で比較元のノードIDを指定
# 第二引数で上位何件を取得するかを指定
PGX> sim = model.computeSimilars(111, 3)
PGX> sim.print()
+--------------------------------+
| dstVertex | similarity |
+--------------------------------+
| 111 | 1.0000001192092896 |
| 112 | 0.9316596984863281 |
| 113 | 0.9065075516700745 |
+--------------------------------+
- 19.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 19
PGX Deep Walk – その他
• もちろんモデルの再利用を可能にするための API も備えている
– モデルの保存/モデルのロード
# モデルの保存
PGX> model.store("/tmp/dw.model")
==> null
# モデルのロード
PGX> model2 = analyst.loadDeepWalkModel("/tmp/dw.model")
==> oracle.pgx.api.beta.mllib.DeepWalkModel@ac91282
- 20.
- 21.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 21
Demo 内容
• DBpedia の人物情報を使用して、各人物ノードの類似性をみる
- 22.
Copyright © 2019,Oracle and/or its affiliates. All rights reserved. | 22
まとめ
• DeepWalk は Graph データ構造を汎用的な統計手法に適用させるための潜在表現を
得るための手法
– Graph をランダムウォークして、得られたノード列を文章とみなして、word2vec モデルに適用させる
• PGX 3.2 から DeepWalk が使え、一連のフローを実行するための API が提供されている