知識グラフのエンティティとリレーションを低次元の連続ベクトル空間に埋め込む(Embedding)手法。グラフの構造的パターンを保存したベクトル表現を学習し、リンク予測・エンティティ分類・推論などの下流タスクに利用する。
Knowledge Graph Embedding(KGE、知識グラフ埋め込み)は、知識グラフ上のエンティティ(ノード)とリレーション(エッジ)を低次元の連続ベクトル空間に写像する手法の総称である。2013年にBordesらが提案したTransEを皮切りに、多数の手法が開発され、知識グラフの機械学習タスクにおける基盤技術となっている。
知識グラフはエンティティIDとリレーションIDの記号的な組み合わせで構成される離散的なデータ構造であり、そのままでは機械学習モデルの入力にできない。埋め込みによってベクトル空間に写像することで、類似度計算・勾配降下法による最適化・他のニューラルネットワークとの結合が可能になる。
大規模知識グラフは本質的にスパース(疎)であり、可能なトリプルの大部分が観測されていない。埋め込みモデルは観測されたトリプルのパターンを学習し、欠落しているトリプルを予測(リンク予測)することで、知識グラフの補完に利用される。
| 手法 | 年 | スコア関数 | 特徴 | 空間 |
|---|---|---|---|---|
| TransE | 2013 | h + r ≈ t | シンプル・高速・1:1関係に強い | 実数 |
| TransR | 2015 | M_r·h + r ≈ M_r·t | 関係ごとの射影行列 | 実数 |
| DistMult | 2015 | <h, r, t> | 双線形・対称関係に強い | 実数 |
| ComplEx | 2016 | Re(<h, r, t̄>) | 複素数空間・非対称関係対応 | 複素数 |
| RotatE | 2019 | h ∘ r ≈ t | 回転操作・複数パターン対応 | 複素数 |
| QuatE | 2019 | h ⊗ r ≈ t | 四元数空間・高表現力 | 四元数 |
トリプル(h, r, t)に対して「head + relation ≈ tail」が成り立つように埋め込みを学習する。ベクトルの加算だけで関係を表現するシンプルな手法で、計算効率が高い。ただし1:N関係(「東京は日本の首都」かつ「京都は日本の古都」など、同じhとrに対して複数のtがある場合)の表現に限界がある。
関係を複素数空間上の回転操作としてモデル化する。対称関係・反対称関係・逆関係・合成関係の4つの主要パターンを統一的に表現でき、TransEの限界を克服した。
知識グラフの欠落トリプルを予測する。例えば「?-首都_of-日本」に対して「東京」を予測する。評価指標はMRR(Mean Reciprocal Rank)やHits@10が標準。
エンティティの埋め込みベクトルを特徴量として、エンティティのタイプやカテゴリを分類する。
ユーザーとアイテムの関係を知識グラフとして構築し、KGEでユーザー嗜好を予測する。Amazon、Netflix等で実用化されている。
KGEで学習したエンティティ埋め込みをLLMの入力に追加注入する手法が研究されている。ERNIE(Baidu)やKnowBERT(Allen AI)は、エンティティ埋め込みをトランスフォーマーの入力層に統合することで、知識集約型タスクの性能を向上させた。
A: Word2Vecは単語の共起パターンからベクトルを学習しますが、KGEはトリプル(主語-述語-目的語)の構造的パターンからベクトルを学習します。Word2Vecは語義の類似性を捉え、KGEはエンティティ間の関係性を捉えます。
A: 一般的にはRotatEが精度とスケーラビリティのバランスが良くおすすめです。シンプルさ重視ならTransE、大規模グラフでの精度重視ならComplExまたはRotatEが定番です。PyKEENライブラリで複数手法を容易に比較できます。
A: FB15k-237(約31万トリプル)程度ならGPU 1枚で数時間。Wikidata規模(数十億トリプル)にはマルチGPU+分散学習が必要ですが、DGL-KEやPyTorch-BigGraphなどの大規模対応フレームワークが利用可能です。