SlideShare a Scribd company logo
1 of 23
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
2019年05月16日
日本オラクル株式会社
クラウド・テクノロジーコンサルティング
玉越 敬典
1
PGX ユーザー勉強会 #12
Deep Walk について
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 2
Agenda
1. Deep Walk とは
2. Deep Walk by PGX
3. Demo
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 3
1. Deep Walk とは
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
グラフの頂点と頂点の
隣接関係を表す正方行列
各頂点から接続している頂点を
数珠つなぎに保持するリスト構造
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
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
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 のベクトル
….
各ノードごとに
同次元のベクトル表現が得られる
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
語彙が増えれば増えるほど
スパースになる
コンテキスト情報を
考慮できていない
古典的な 単語ベクトル表現獲得手法
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
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[ ]
潜在表現
これを文とみなす
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 のクラスタを
算出
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
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 13
2. Deep Walk by PGX
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 データ準備 モデル構築 モデル学習 モデル利用
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()
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
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
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 |
+--------------------------------+
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
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 20
3. Demo
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 21
Demo 内容
• DBpedia の人物情報を使用して、各人物ノードの類似性をみる
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 22
まとめ
• DeepWalk は Graph データ構造を汎用的な統計手法に適用させるための潜在表現を
得るための手法
– Graph をランダムウォークして、得られたノード列を文章とみなして、word2vec モデルに適用させる
• PGX 3.2 から DeepWalk が使え、一連のフローを実行するための API が提供されている
Deep walk について

More Related Content

What's hot

猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編順也 山口
 
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendationssuser3e398d
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?hoxo_m
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep LearningSeiya Tokui
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2Preferred Networks
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列Kenjiro Sugimoto
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
 
単語・句の分散表現の学習
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習Naoaki Okazaki
 
強化学習その3
強化学習その3強化学習その3
強化学習その3nishio
 
[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?Deep Learning JP
 
失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用Hiroyuki Masuda
 
[DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜
[DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜 [DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜
[DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜 Deep Learning JP
 
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsLearning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsTakuya Akiba
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)yukihiro domae
 

What's hot (20)

猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編
 
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
[論文解説]KGAT:Knowledge Graph Attention Network for Recommendation
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
論文の書き方入門 2017
論文の書き方入門 2017論文の書き方入門 2017
論文の書き方入門 2017
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
BERT入門
BERT入門BERT入門
BERT入門
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep Learning
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
単語・句の分散表現の学習
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習
 
強化学習その3
強化学習その3強化学習その3
強化学習その3
 
[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?[DL輪読会]When Does Label Smoothing Help?
[DL輪読会]When Does Label Smoothing Help?
 
失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用
 
[DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜
[DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜 [DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜
[DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜
 
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsLearning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for Graphs
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)
 

Similar to Deep walk について

#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーションYasushi Hara
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?Insight Technology, Inc.
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019MKT-INTHEFOREST
 
Deep Learning on Rescale - Oct/11/2016 at Rescale night
Deep Learning on Rescale - Oct/11/2016 at Rescale nightDeep Learning on Rescale - Oct/11/2016 at Rescale night
Deep Learning on Rescale - Oct/11/2016 at Rescale nightRescale Japan株式会社
 
アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜MicroAd, Inc.(Engineer)
 
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...NTT DATA Technology & Innovation
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合うDaiyu Hatakeyama
 
2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤aitc_jp
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!guestc06e54
 
Graph Attention Network
Graph Attention NetworkGraph Attention Network
Graph Attention NetworkTakahiro Kubo
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Sotaro Kimura
 
WWW2017論文読み会 Information Cascades と Graph Algorithms
WWW2017論文読み会 Information Cascades と Graph AlgorithmsWWW2017論文読み会 Information Cascades と Graph Algorithms
WWW2017論文読み会 Information Cascades と Graph Algorithmscyberagent
 
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...オラクルエンジニア通信
 
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)NTT DATA OSS Professional Services
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料Recruit Technologies
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)OSgeo Japan
 
[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data PlatformNaoki (Neo) SATO
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムRecruit Technologies
 

Similar to Deep walk について (20)

#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション#経済学のための実践的データ分析 11. データのビジュアライゼーション
#経済学のための実践的データ分析 11. データのビジュアライゼーション
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?グラフデータベースは如何に自然言語を理解するか?
グラフデータベースは如何に自然言語を理解するか?
 
Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019Participation report of data stax accelerate 2019
Participation report of data stax accelerate 2019
 
Deep Learning on Rescale - Oct/11/2016 at Rescale night
Deep Learning on Rescale - Oct/11/2016 at Rescale nightDeep Learning on Rescale - Oct/11/2016 at Rescale night
Deep Learning on Rescale - Oct/11/2016 at Rescale night
 
アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜アドテクを支える技術 〜1日40億リクエストを捌くには〜
アドテクを支える技術 〜1日40億リクエストを捌くには〜
 
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
Spark 3.0が目指す、よりインテリジェントなUnified Analytics Platform(db tech showcase 2019 Tok...
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う佐賀大学 - データ分析と向き合う
佐賀大学 - データ分析と向き合う
 
2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤
 
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
 
Graph Attention Network
Graph Attention NetworkGraph Attention Network
Graph Attention Network
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
 
WWW2017論文読み会 Information Cascades と Graph Algorithms
WWW2017論文読み会 Information Cascades と Graph AlgorithmsWWW2017論文読み会 Information Cascades と Graph Algorithms
WWW2017論文読み会 Information Cascades と Graph Algorithms
 
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
とっておきの方法! Oracle Databaseの自動アップグレードのお勧め手法 省力・最新化 概要編 (Oracle Cloudウェビナーシリーズ: ...
 
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
Hadoop上の多種多様な処理でPigの活きる道 (Hadoop Conferecne Japan 2013 Winter)
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
 
[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

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. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 20 3. Demo
  • 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 が提供されている