Triple2Vec の変更点
Top > Triple2Vec
- 追加された行はこの色です。
- 削除された行はこの色です。
- Triple2Vec へ行く。
#CONTENTS **提案論文 [#Papers] -[[Learning Triple Embeddings from Knowledge Graphs&BR;Fionda, V., & Pirrò, G. (2020). Learning Triple Embeddings from Knowledge Graphs. Proceedings of the AAAI Conference on Artificial Intelligence, 34(04), 3874-3881. https://doi.org/10.1609/aaai.v34i04.5800:https://ojs.aaai.org//index.php/AAAI/article/view/5800]] **定義等 [#b5ac588f] -知識グラフ:&Mathjax{G=(V_G,E_G,T_G)}; --&mathjax{V_G};:エンティティ(頂点)の集合 --&mathjax{E_G};:述語の集合 --&mathjax{T_G};:トリプルの集合 -&Mathjax{G=(V_G,E_G)};:無向グラフ (undirected graph)または有向グラフ (directed graph) -&Mathjax{\mathcal{G}_L=(V_L,E_L)};:線グラフ (line graph) --&Mathjax{G};のエッジを&Mathjax{\mathcal{G}_L};のノードにする --&Mathjax{G};のエッジが共通のノードを持つとき、&Mathjax{\mathcal{G}_L};の2頂点は隣接する --&Mathjax{G};が有向のとき&Mathjax{\mathcal{G}_L};も有向。 **既存Line Graph の問題点 [#f8c0cb4a] 知識グラフからの線グラフ構築の問題点 +意味が抜け落ちる --主語と述語を共有するトリプルについて、述語が違っても全く同じようなノードができることがある。 +孤立ノードができる --エンティティが主語と述語両方にならないと、(つまり、主語のみ、述語のみの状態だと)孤立グラフになる。 **Triple2Vecの手法 [#cd1b030e] +Triple Line Graph の作成 +エッジの重みを計算する +重み付き Triple Line Graph のランダムウォーク + Skip-gram を利用したエンベッディングを行う ** Triple Line Graph [#je5555ed] - Triple Line Graph の動機 --KB上で距離2で接続されているノード同士ならば、そのエッジの方向性・意味に関わらず、変換後のグラフでも接続されるべきだ。 --トリプル間の関係を、述語に基づいて何かの形で保持することが望ましい。 -Triple Line Graphの定義 --&Mathjax{\mathcal{G}_L=(V_L,R_L,w)}; ++ノードは&Mathjax{G};のトリプルに対応 ++&Mathjax{\mathcal{G}_L};の2つのノード&Mathjax{s_1,p_1,o_1};と&Mathjax{s_2,p_2,o_2};は、&Mathjax{\{s_1,o_1\}\cap\{s_2,o_2\}\neq\emptyset};のとき接続 ---つまり、主語同士・目的語同士もしくは主語・目的語間に同じものがあれば接続。 ++関数&Mathjax{w};は値域&Mathjax{[0,1]};で、全てのエッジに重みづけをする。 -Triple Line Graphの特徴 --メリット ---知識グラフ上で連結していれば、 Triple Line Graph 上でも連結している。 --デメリット ---エッジ数が多くランダムウォークの計算に影響を与える *** Triple Line Graph の重みづけ [#scb312f1] -TF-ITF計算 --トリプル頻度(TF) ---&mathjax{TF(p_i,p_j)=\log(1+C_{i,j})}; ただし&mathjax{C_{i,j}};は、述語&mathjax{p_i,p_j};が同じ主語・目的語で接続される回数 --逆トリプル頻度 (ITF) ---&mathjax{ITF(p_j,E)=\log\frac{|E|}{|{p_i:C_{i,j}>0}|}}; --(symmetric) matrix ---&mathjax{C_M(i,j) = TF(p_i,p_j)\times ITF(p_j,E)}; --述語関連行列 ---&mathjax{M_R(p_i,p_j)=Cosine(W_i,W_j)}; ただし&mathjax{W_i};は&mathjax{C_M};の&mathjax{p_i};の行 --トリプル間に関連する述語が多いほど重みが高い --メリット ---トリプル間の関連性と意味の近さの両方をとらえることができる。 ***ベクトル化の方法 [#tfe99274] -&mathjax{p((e_{v_{i},e_{v_{i+1}}}) \in \mathcal{W})=\sigma(e^T_{v_i},e_{v_{}i+1})}; --&mathjax{\sigma};はソフトマックス関数 -- -ネガティブサンプリング --&mathjax{p((e_{v_{i},e_{v_{i+1}}}) \notin \mathcal{W})=\sigma(-e^T_{v_i},e_{v_{i+1}})}; -&mathjax{\mathcal{O}(\theta)=\log(e^T_{v_i},e_{v_{i+1}})+\sum_{j=1}^k \mathbb{E}_{v_j}[\log\sigma(-e^T_{v_i},e_{v_{i+1}})]}; --&mathjax{\theta};全パラメータ --&mathjax{k};ネガティブサンプリングの数 --並列非同期確率的勾配降下法を利用 **実験 [#ta629786] ***比較手法 [#v75afe26] :[[metapath2vec]], [[node2vec]], [[DeepWalk]]の利用|エンティティをベクトルにする手法。 トリプル中の2つのエンティティベクトルの平均を利用。 :[[ConvE]], [[RotatE]]|[[pykg2vec]]の実装を利用 トリプル中の2つのエンティティベクトルと述語ベクトルの結合 ***利用したKB [#za716c50] -[[DBLP]] -[[Foursquare]] -[[Yago]] ***適用された問題 [#d1fb759a] :トリプル分類| :推薦機能|