知識表現
出典: フリー百科事典『ウィキペディア(Wikipedia)』
知識表現(ちしきひょうげん)は、図書分類および情報システムでの概念の処理に必要とされる。人工知能において、適切な「知識表現」を用いることで問題解決を単純化することができる。知識をひとつの方法で表現すれば解決策は単純化されるが、不適切な表現を選択すると解決策は難しくなるか不明瞭になる。 人工知能の場の中で、問題解決は「知識表現」の適切な選択によって簡素化されることができる。例えば、長除法をアラビア数字とローマ数字で行った場合、一方はもう一方よりもずっと単純である。また、すべての目的に対応できる表現やあらゆる問題に対応できる表現は存在しない。
目次 |
[編集] 歴史
知識表現(Knowledge Representation、KRと略記される)という用語は、コンピュータでの処理で使用する表現に対して使うのが一般的である。また、明確な事物(例:象というクラスや象の個体クライド)についての表現を意味することもあるし、そういった事物についての表明または主張(例:クライドは象である、すべての象は灰色である)の表現を意味することもある。知識をそのような明確な表現にすることで、コンピュータは既存の知識から結論を導くことができる(例:クライドは灰色である)。
多くの知識表現手法は1970年代から1980年代初頭に試みられたもので、ヒューリスティックによる質疑応答、ニューラルネットワーク、自動定理証明、エキスパートシステムなどがある。これらはある程度の成功を収めてきた。チェスのようなゲームと同様、医療診断も主要な応用分野であった(例えばMycin)。
1980年代に、形式的なコンピュータ知識表現言語とシステムが生まれた。主要なプロジェクトは、一般知識の広い領域を符号化することを試みた。例えば、Cycプロジェクトは巨大な百科辞典を作ろうとするもので、情報自身を符号化するのではなく、読者が百科事典を理解するのに必要であろう情報(単純な物理学、時間の観念、因果律、動機付けなどの常識的な事物とそのクラス)を符号化する。Cycプロジェクトは Cycorp社が管理していて、そのデータの大部分は無料で利用可能となっている。
そのような作業を通して、知識表現の難しさがより高く評価されるようになった。それと並行するように計算機言語学ではさらに大きな言語情報のデータベースが構築されつつあり、コンピュータの性能と容量が増大することでさらに深い知識表現が現実のものとなってきた。
知識表現を指向したいくつかのプログラミング言語が開発されている。1972年にPrologが開発されたが、一般化したのはもっと後のことである。提案と基本のロジックを表していて、終結を既知の前提から引き出すことができる。命題論理と基本的な論理を表現することができ、既知の前提から結論を導くことができる。KL-One (1980年代)は知識表現自体に特に力を入れたものである。
電子文書の世界では、言語は文書の構造を明確に表現するために開発されている。例えば、SGMLや後のXMLなどがある。これらは情報検索とデータマイニングに役立っていて、近年では知識表現とも関連するようになってきた。ウェブ社会ではセマンティックウェブへの関心が高まっている。XMLベースの知識表現言語としてRDF、トピックマップなどがあり、ウェブシステム上で知識表現情報を利用可能とすることができる。
[編集] リンクと構造
ハイパーリンクの利用が広範囲に及ぶようになったが、それに密接に関連するセマンティックリンクはまだ広く使われていない。数表はバビロニア時代以来使われている。最近になると、論理演算の結果を表す表として真理値表が使われるようになった。真理値表はブール論理のモデル化と研究に使われた。スプレッドシートは知識のまた別の表形式の表現である。他の知識表現は木構造で、基本概念同士を接続したり、派生概念を示したりすることができる。
[編集] 格納と操作
知識表現における1つの問題は、与えられた仕事を成し遂げるために機械が使うことができるようにするためには、いかにして知識を情報システムに格納して操作すればよいかという点である。そのような問題をもつアプリケーションの例として、エキスパートシステム、機械翻訳システム、Computer-aided Maintenance システム、情報検索システム(データベースのフロントエンドを含む)がある。
[編集] 言語と表記法
人間の精神の中でなされているのと同じ方法で知識を表現するのが最善であると考える人もいる。というのも、人間の精神だけが既知の唯一の知能であるからである。あるいは、自然言語の形式で知識を表現するのが最善と考える人もいる。残念なことに、人間の精神内で知識がどのように表現されているかは不明であるし、人間の精神が行っているのと同じ方法で自然言語を操る方法も不明である。ひとつの手掛かりはポイントアンドクリック型のユーザーインターフェイスを霊長類が自然に使っている点である。従って、「ジェスチャーによるインターフェイス」は認識機構の一部であり、口頭の言語に縛られないタイプの表現であり、人間以外の動物にも備わっていると思われる。
このため、様々な人工言語と表記法が知識を表現する目的で考案されてきた。それらは一般に論理学や数学に基づいており、機械処理を容易にするために構文解析が簡単な文法を備えている。
[編集] 表記法
知識表現言語の最近の様式は、低レベルの文法としてXMLを使うことが多い。これは、人間の可読性を犠牲にして、機械での構文解析を容易にする傾向がある。
一般に極端な複雑性を避けるために、このようなシステムの数学的基盤として一階述語論理が使われる。しかし、この単純な論理に基づく単純なシステムでさえ、現代のコンピュータシステムでは複雑すぎて手に負えないデータを表現することができる。詳しくは計算可能性理論を参照。
表記法の例:
[編集] 言語
知識表現を意図した人工言語の例:
- CycL
- Loom
- OWL
- KM:知識機械(Knowledge Machine)(知識表現作業に使われるフレームベースの言語)
[編集] 知識表現技法
セマンティックネットワークは、知識を表すために使われるかもしれない。個々のノードは概念を表し、ノード間を結ぶ弧は概念間の関係を定義するために用いられる。
1960年代から、知識フレームまたは単に「フレーム」と呼ばれる表現が使われている。フレームは値を持つスロット群から構成される。例えば、「家」のためのフレームは「色」スロット「階数」スロットなどを含むだろう。
フレームは、「is-a」リンクで表される継承機能によってオブジェクト指向プログラミング言語のような使い方もできる。しかし、「is-a」リンクの使用については、少なからぬ矛盾があった。ロナルド・J・ブラックマンは「IS-Aは何であって、何でないか」と題した論文で、知識表現に関するプロジェクトで29種類の意味で「is-a」リンクが使われていることを示した。他のリンクとして「has-part」リンクなどもある。
フレーム構造は大まかな知識と型にはまった認識パターンの表現に適している。そのような大まかなパターンの要素は、個々に重み付けがなされ、スキーマの要素としてより典型的なものほど重要度が高くなる。パターンはある種の期待値に従って起動される。例えば、大きな鳥を見た者が「陸スキーマ」ではなく「海スキーマ」を起動していたら、その鳥をイヌワシではなくオオワシだと判断するだろう(訳注:イヌワシは山岳に生息し、オオワシは海岸に生息するので、スキーマによって判断が変わってくることを意味している)。
フレーム表現はセマンティックネットワークよりオブジェクト中心の考え方である。ある概念に関するすべての事実と属性は一箇所に置かれ、データベース内を手間をかけて検索する必要がない。
「スクリプト」は、事象を時系列に記述するフレームの一種である。通常、例としてあげられるのはレストランへ行くことの説明である。それには、席に案内されるのを待つとか、メニューを受け取るとか、注文するといったステップが含まれる。
[編集] 関連項目
- 人工知能
- 記述論理
- ダグラス・レナート氏の Cycプロジェクト
- 知識ベース
- ナレッジマネジメント
- メタデータ
- 多層拡張セマンティックネットワーク (MultiNet)
- オントロジー
- 推論エンジン
- セマンティックウェブ
- 科学モデル
- マインドマップ
[編集] 外部リンク
すべて英文
- What is a Knowledge Representation? by Randall Davis and others
- Exhaustive timeline of KR -- much more a timeline of technology and mathematics
- DATR Lexical knowledge representation language
- Loom Project Home Page
- Description Logic in Practice: A CLASSIC Application
- The Rule Markup Initiative
- Schemas