知識グラフ
最近、AI業界では知識の表現に「知識グラフ(Knowledge Graph)」を用いた研究が流行っていて、うちの研究室でも使っています。
知識グラフは、知識を「主語ー述語ー目的語」の3つ組の集合で表現したものです。例えば、「リンゴの色は赤い」という知識は、(リンゴ, 色, 赤)という3つ組で表されます。もう少し正確にいうと知識グラフはグラフ であって、は概念を表すノードの集合、は関係の集合、は辺の集合で、、です。
知識グラフは、1960年代後半に A. M. CollinsとM. R. Quillianによって考案された、古典的な知識表現手法である意味ネットワークと本質的な違いはありません。そういう意味で知識グラフは新しい知識表現法ではありません。どちらかというと、意味ネットワークが、基本関係として持っているis_aやhas_a (part_of)を規定していないことから、知識表現方法としては後退しているといっても良いでしょう。最近、知識グラフ上での(ハードな)構造マッチングにより推論をするといった研究を見受けますが、この類の研究は50年以上前から活発に研究されており、過去の研究をサーベイしてから研究をした方がいいでしょう。近年は、知識表現手法として意味ネットワークの後継技術であるオントロジーを用います。オントロジー上ので検索や推論は、RDFトリプルをベースにしたSPARQLやSWRL規則による推論で高度に実現されています。また、人工知能に詳しい方ほど、オントロジー自体も既に古い技術で誰も使ってないと認識されているようですが、実際に生物、医学、物質関係の専門知識を表現するのに現在も積極的に使われています。
では、なぜ意味ネットワークと言わずに知識グラフと呼ぶかというと、知識グラフと呼ぶときには、グラフ表現学習がセットになっているからです。つまり、グラフ構造の表現学習の研究をする文脈で説明のしやすさのために、意味ネットワークを知識グラフと呼んでいるだけです。つまり、知識は、各関係についてのノード間の隣接行列で表されることを前提にできるので、隣接行列をベースにグラフ表現学習を行うことでリンク予測により未知の関係を発見することができます。簡単にまとめると、グラフ構造を隣接行列で表現して、表現学習をするための知識構造を指すときに、意味ネットワークを知識グラフと呼んでおいた方が便利なのでそう呼んでいるということです。本質的に知識グラフと意味ネットワークは同じものですので、意味ネットワークに対して同じ表現学習をすることができます。その技術的な違いはありません。