知識表現、KR(Knowledge Representation)は、推論を導けるような知識の表現、およびその方法を開発する人工知能研究の領域である。

思考を形式的に分析し、議論領域を記述する。一般に、議論領域の記述から推論するための形式意味論を与え、解釈可能な意味を各文が生じるように演算子を与える。それによって自動推論が可能となる。

知識表現は、表現力が高いほど、事柄が簡潔に記述されるが、一貫性が保障されず、自動推論が困難となる。例として、命題論理は自己認識的時相論理よりも表現力が低い。用途・必要性・資源との適合性がKR推論システムの開発において大切となる。

200x年代にXMLの応用として宣伝されたためにブームとなった知識表現の利用に、セマンティック・ウェブがある。知識表現としての新規性は表層の記法にXMLを利用するという点で、グラフである知識を、本質的に木であるXMLでどう扱うかは難点も考えられるが、「ウェブ」の語が付いているようにWWWと親和性があるなどとされてブームとなった。

## 概要

知識は知的行動を達成するのに使われるものなので、推論を容易にする知識表現は知的行動を助成する。そのような表現が知識表現の基本目標となる。

適切な知識表現を選ぶことで問題解決が単純になる。例えば割り算の問題解決は、知識表現における数の記号としてローマ数字よりもアラビア数字を用いることで容易となる。

人間の行う情報処理を説明する際、フレーム、規則、タグ、意味ネットワークなどが利用される。これは知識表現の技法にも取り入れられている。

知識表現の研究では以下のような課題が生じる。

- 知識を個別化するのは何か?
- 知識は人間脳においてどう表現されているか?
- 図式化すべきなのは特殊項目か一般法則か?
- 図式は宣言型と手続型のどちらが良いか?

- 活性化拡散(ネットワークのノード群を誘導する際の問題。)
- 包摂(選択的継承に関する問題。例えば、ATVは自動車を特殊化したものと考えられるが、特定の属性しか継承していない。)
- 分類(例えば、トマトは野菜にも果物にも分類される可能性がある。)

知識表現に関してトップダウンが議論されることはほとんどない。設計戦略は個々の議論領域について研究される。

## 歴史

計算機科学、特に人工知能においては、情報の構造を表現する方法がいくつも考案されてきた。

知識表現(Knowledge Representation、KRと略記される)という用語は、コンピュータでの処理で使用する表現に対して使うのが一般的である。また、明確な事物(例:象というクラスや象の個体クライド)についての表現を意味することもあるし、そういった事物についての表明または主張(例:クライドは象である、すべての象は灰色である)の表現を意味することもある。知識をそのような明確な表現にすることで、コンピュータは既存の知識から結論を導くことができる(例:クライドは灰色である)。

多くの知識表現手法は1970年代から1980年代初頭に試みられたもので、ヒューリスティックによる質疑応答、ニューラルネットワーク、自動定理証明、エキスパートシステムなどがある。これらはある程度の成功を収めてきた。チェスのようなゲームと同様、医療診断も主要な応用分野であった(例えばMycin)。

1980年代に、形式的なコンピュータ知識表現言語とシステムが生まれた。主要なプロジェクトは、一般知識の広い領域を符号化することを試みた。例えば、Cycプロジェクトは巨大な百科辞典を作ろうとするもので、情報自身を符号化するのではなく、読者が百科事典を理解するのに必要であろう情報(単純な物理学、時間の観念、因果律、動機付けなどの常識的な事物とそのクラス)を符号化する。Cycプロジェクトは Cycorp社が管理していて、そのデータの大部分は無料で利用可能となっている。

そのような作業を通して、知識表現の難しさがより高く評価されるようになった。それと並行するように計算言語学ではさらに大きな言語情報のデータベースが構築されつつあり、コンピュータの性能と容量が増大することでさらに深い知識表現が現実のものとなってきた。

知識表現を指向したいくつかのプログラミング言語が開発されている。1972年にPrologが開発されたが、一般化したのはもっと後のことである。命題論理と基本的な論理を表現することができ、既知の前提から結論を導くことができる。KL-One (1980年代)は知識表現自体に特に力を入れたものである。1995年、Dublin Core はメタデータの標準として考案された。

電子文書の世界では、言語は文書の構造を明確に表現するために開発されている。例えば、HTMLの元になったSGMLや後のXMLなどがある。これらは情報検索とデータマイニングに役立っていて、近年では知識表現とも関連するようになってきた。ウェブ社会ではセマンティック・ウェブへの関心が高まっている。XMLベースの知識表現言語としてRDF、RDF Schema、トピックマップ、DARPA Agent Markup Language (DAML)、Ontology Inference Layer (OIL)、Web Ontology Language (OWL) などがある。

## 各論

### 言語

人間の精神の中でなされているのと同じ方法で知識を表現するか、自然言語の形で知識を表現するのが最善であると考える人もいる。

心理言語学は人間の精神が言語を格納し操作する方法を研究している。認知科学の他の分野では、人間が音や臭いや感情や手続きや概念を記憶する方法を研究している。科学はまだ脳の内部機構を完全に解明できていないため、それをそのままコンピュータ上のプログラムで再現するには至っていない。

知識表現のための人工言語や記法がこれまでも多数提案されてきた。それらは一般に論理学や数学に基づくもので、解析が容易な文法を持ち、機械処理に適している。それらは一般にオントロジーという広い領域に分類される。

### オントロジー言語

CycLを初めとして、様々なオントロジー言語が開発されてきた。多くは宣言型言語であり、フレーム言語に分類されるものと一階述語論理に基づくものがある。そのような言語の多くは上位のオントロジーを一般概念を使って定義するだけであり、領域固有の概念は言語定義の一部には含まれない。英語の全ての工学的語彙を含むオントロジー言語の例として Gellish English がある。

### リンクと構造

ハイパーリンクの利用が広範囲に及ぶようになったが、それに密接に関連するセマンティックリンクはまだ広く使われていない。数表はバビロニア時代以来使われている。最近になると、論理演算の結果を表す表として真理値表が使われるようになった。真理値表はブール論理のモデル化と研究に使われた。スプレッドシートは知識のまた別の表形式の表現である。他の知識表現は木構造で、基本概念同士を接続したり、派生概念を示したりすることができる。

視覚的表現はナレッジマネジメントの中でも比較的新しい分野だが、ある考えと別の考えとのつながりを視覚化でき、ある考えから別の考えに移行するのに必要な情報を突き止めることを可能にする。視覚表現にもいくつか競合する手法がある。

### 表記法

知識表現言語の最近の様式は、低レベルの文法としてXMLを使うことが多い。これは、人間の可読性や空間効率を犠牲にして、機械での構文解析を容易にする出力をする傾向がある。

一般に極端な複雑性を避けるために、このようなシステムの数学的基盤として一階述語論理が使われる。しかし、この単純な論理に基づく単純なシステムでさえ、現代のコンピュータシステムでは複雑すぎて手に負えないデータを表現することができる。詳しくは計算可能性理論を参照。

表記法の例:

- DATRは、語彙知識を表現する例である
- RDF は、オブジェクト間の関係を表現するための単純な表記法である

### 知識の格納と操作

知識表現においては、与えられた仕事を成し遂げるために機械が使うことができるようにするために、いかにして知識を情報システムに格納して操作すればよいかという問題がある。そのような問題をもつアプリケーションの例として、エキスパートシステム、機械翻訳システム、Computer-aided Maintenance システム、情報検索システム(データベースのフロントエンドを含む)がある。

意味ネットワークは、知識表現に使われることがある。個々のノードは概念を表し、ノード間を結ぶ弧は概念間の関係を定義するのに用いられる。概念グラフは中でも最も古くからあるモデルである。意味ネットワークの系統で最も表現力が豊かで包括的な知識表現パラダイムとしてMultiNet(Multilayered Extended Semantic Networks、多層拡張意味ネットワーク)がある。

1960年代から、知識フレームまたは単に「フレーム」と呼ばれる表現が使われている。フレームは値を持つスロット群から構成される。例えば、「家」のためのフレームは「色」スロット「階数」スロットなどを含むだろう。

フレームは、「is-a」リンクで表される継承機能によってオブジェクト指向プログラミング言語のような使い方もでき、これを「フレーム」を使ったエキスパートシステムでよく使っていた。しかし、「is-a」リンクの使用については、少なからぬ矛盾があった。ロナルド・J・ブラックマンは「IS-Aは何であって、何でないか」と題した論文で、知識表現に関するプロジェクトで29種類の意味で「is-a」リンクが使われていることを示した。他のリンクとして「has-part」リンクなどもある。

フレーム構造は大まかな知識と型にはまった認識パターンの表現に適している。そのような大まかなパターンの要素は、個々に重み付けがなされ、スキーマの要素としてより典型的なものほど重要度が高くなる。パターンはある種の期待値に従って起動される。例えば、大きな鳥を見た者が「陸スキーマ」ではなく「海スキーマ」を起動していたら、その鳥をイヌワシではなくオオワシだと判断するだろう。

フレーム表現は意味ネットワークと同様にオブジェクト中心の考え方である。ある概念に関するすべての事実と属性が一箇所に置かれていたら、データベース内を手間をかけて検索する必要がない。

「行動スクリプト」は、事象を時系列に記述するフレームの一種である。通常、例としてあげられるのはレストランへ行くことの説明である。それには、席に案内されるのを待つとか、メニューを受け取るとか、注文するといったステップが含まれる。他にも意味表現力という観点では semantic spectrum と呼ばれる手法もある。