概要
人間が推論するときの考え方をまねるトップダウンのアプローチ。知識をコンピュータが扱える形で表し(知識表現)、それを使って結論を導く(推論)。20 世紀半ばから AI の主流で、エキスパートシステムの成功を生んだが、専門家から知識を取り出して保守するコストがスケールせず AI の冬を招いた。
主役はニューラルネットワークに移ったが、どの結論がどのルールから出たかを説明できる性質と、定義を変えれば振る舞いを制御しながら変えられる性質はニューラルネットワークにはなく、説明や制御が要る場面で今も使われる。Wikidata のような知識グラフとしても生きている。
詳細
知識はデータとは別物(DIKW)
| 段階 | 意味 |
|---|---|
| データ | 物理的な媒体に記録されたもの。人とは独立に存在し受け渡せる |
| 情報 | データを頭の中で解釈したもの |
| 知識 | 情報が世界モデルに統合された、関連する概念のネットワーク |
| 知恵 | 知識をいつ、どう使うかというメタ知識 |
知識表現は、左端のアルゴリズム(そのまま実行できるが柔軟性がない)と右端の自然言語(表現力は最大だが自動推論に使えない)の間で形式を選ぶ問題になる。
知識表現の 4 分類
- ネットワーク表現 — 概念のグラフを「オブジェクト・属性・値(OAV)」のトリプレットの並びで持つ。この形がエキスパートシステムにもセマンティックウェブにもそのまま出てくる
- 階層表現(フレーム) — スロットに値・デフォルト値・範囲を持ち、上位概念の性質を下位が継承する。OOP のクラス階層に近い
- 手続き的表現(プロダクションルール) — 「IF 高熱 OR CRP が高い THEN 炎症がある」のような if-then ルール。導いた結論が次の推論の材料になる
- 論理 — 述語論理は計算できないほど表現力が高いので、Prolog のホーン節や記述論理(Description Logic)などの部分集合を使う
エキスパートシステムの構成
- 知識ベース — 専門家から取り出した長期的なルール。状態を先へ進める知識なので「動的知識」とも呼ぶ
- 作業メモリ(問題メモリ) — いま解いている問題の事実。状態のスナップショットなので「静的知識」とも呼ぶ
- 推論エンジン — 各状態で適用するルールを探し、必要ならユーザーに質問する
知識と推論を分けておくことで、専門家は推論の仕組みを知らなくてもルールを書ける。知識の引き出しには AND-OR ツリーが便利で、それをルールに直して載せる。
順方向推論と逆方向推論
| 順方向(データ駆動) | 逆方向(ゴール駆動) | |
|---|---|---|
| 出発点 | 作業メモリの初期データ | 求めたい属性(ゴール) |
| 進め方 | 条件を満たすルール(競合集合)から競合解決で 1 つ選んで適用、を繰り返す | ゴールを結論に持つルールを仮説として選び、条件をサブゴールとして再帰的に証明。導くルールがない属性だけユーザーに聞く |
| 向く場面 | データが最初から揃っている | 質問(検査)を最小限にしたい。医療診断型 |
競合解決の戦略には「最初に見つかったルール」「ランダム」「条件をいちばん多く満たす具体的なルール」などがある。Python では CLIPS を模した Experta(Rete アルゴリズム)で順方向推論を書ける。教材は「ルールが 200 程度を超えるまでは知的な振る舞いには見えない」と注意している。
オントロジーとセマンティックウェブ
同じ発想をウェブ規模に広げたもの。記述論理に基づく知識表現、世界で一意な URI による概念の識別、RDF / RDFS / OWL(Web Ontology Language)の 3 つに支えられ、すべてを主語・述語・目的語のトリプレットで表す。
- Wikidata は SPARQL で今も引ける —
?human wdt:P31 wd:Q5(人間のインスタンス)のように述語もクラスも ID で指定する - OWL の推論は少ない定義から大量の関係を導く — 「おば=親の姉妹」を
owl:propertyChainAxiomで書くと、家系図の 669 トリプレットがowlrlの閉包で 4,246 に増え、おじ・おば・祖父の関係が自動で導かれた - 推論は入力の正しさを超えられない — 変換コードが同じ両親を持つ子どもにしか兄弟関係を付けないと、異母兄弟を経由する「おじ」は出てこない。推論ではなく元の事実に抜けがある
- テキストから自動マイニングしたオントロジーの例が Microsoft Concept Graph(
is-a関係を確率付きで返す)だが、API は既に停止している
教材で間違えやすい用語
- 「Descriptive Logic」ではなく Description Logic(記述論理)
- OWL は「Ontology Web Language」ではなく Web Ontology Language
- Python は「型のない言語」ではなく動的型付け
example.comの URI は例示用。作成日の標準語彙は Dublin Core のhttp://purl.org/dc/terms/createdなど
関連ページ
- AI-For-Beginners(Microsoft) — このページの出典カリキュラム
- ニューラルネットワークの基礎 — 反対側のボトムアップ・アプローチ
- RAG — 外部知識を LLM に持ち込む現代の手法
- AI レディデータ — 知識を機械が使える形に整える実務の論点
ソース記事
- 知識表現とエキスパートシステムをやさしく解説 — Microsoft AI-For-Beginners レッスン 02 — 2026-09-30
- AI の歴史と基本をやさしく解説 — Microsoft AI-For-Beginners レッスン 01 — 2026-09-29(トップダウンとボトムアップの 2 分類)