プロダクションシステム

実用エキスパートシステムでもっとも多く使われている知識表現が、「プロダクションシステム」と「フレームシステム」である。今回はプロダクションシステムついて説明する。

Key Word
・プロダクションシステム
・プロダクションルール
・ワーキングメモリエレメント(WME)
・プロダクションメモリ
・ワーキングメモリ
・認識・行動サイクル
・リートアルゴリズム

プロダクションシステムとは人間の思考と行動をモデル化した情報処理システムである。人は外界からの情報やデータを知識と照合させ、情報やデータを書き換えて行動する。

行動型プロダクションシステムの構成

行動型プロダクションシステムは「知識ベース」と「推論エンジン」から構成され、さらに、知識ベースはプロダクションルールを格納する「プロダクションメモリ」とワーキングメモリエレメントを格納する「ワーキングメモリ」から構成される。

プロダクションルール
知識の表現方法であり、知識を用いた推論操作も規定する。
(例:〜であるとき、〜せよ)
宣言的知識と手続き的知識の両側面を持つ。
プロダクションルールはプロダックションメモリに格納される。

ワーキングメモリエレメント(WME)
事実知識や推論で得た仮説で、「(推論を行う)対象」、「(対象の)属性」、「(属性の)値」によって表現される。
例:(犬 犬種:チワワ 名前:モカ 好物:ドックフード)
*対象にはクラス(一般名詞)を記述する。

知識ベース

知識ベースはプロダクションルールを格納する「プロダクションメモリ」とワーキングメモリエレメントを格納する「ワーキングメモリ」から構成される。*P1、W1、W2、W3、W4はそれぞれのタイムスタンプである。

プロダクションメモリ
P1:If(犬 犬種:チワワ)Then(Modify 1 好物:ドッグフード)
1つ目の条件(犬種がチワワ)を満たすWMEの好物をドックフードに修正する
ワーキングメモリ
W1:(犬 犬種:マルチーズ 名前:ジョン 好物:骨)
W2:(犬 犬種:チワワ 名前:モカ)
W3:(えさ 種類:骨)
W4:(えさ 種類:ドッグフード)

結論部の実行
知識ベースを読み込み、プロダクションルールとWMEの照合を行う。
マッチしたプロダクションルールとWMEの組み合わせを「インスタンシエーション」という。

   P1:If(犬 犬種:チワワ)Then(Modify 1 好物:ドッグフード)
   W2:(犬 犬種:チワワ 名前:モカ)
                 ⬇︎
   W5:(犬 犬種:チワワ 名前:モカ 好物:ドッグフード
                    *タイムスタンプも更新される

認識・行動サイクル

行動型プロダクションシステムの推論エンジンは、次のサイクルによって推論を実行する。これを認識・行動サイクルという。

  認識→照合→競合解消→行動→(認識へ戻る)

(1) 認識  
ワーキングメモリへのデータ格納

(2) 照合
プロダクションルールとWMEの照合

(3) 競合解消
照合した結果、組み合わせが複数存在した場合、実行するものを選択

(4) 行動
(3)で選択されたものを実行

競合解消戦略

(1) 最近のWMEを優先 
最も新しいタイムスタンプを持つWMEを持つインスタンシエーションを選択する。深さ優先探索になる。

(2) 複雑さ優先
プロダクションルールの条件部がより多くの条件を持つルールを選択する。

(3) ルールの優先順位に従う
あらかじめルールに優先順位をつけておき、それに従う。

(4) ファーストマッチ
照合時に最初に発見したインスタンシエーションを選択する。

(5) 最近のルールを優先
最も最近使われたルールを含むインスタンシエーションを選択する。

(6) ランダム
ランダムに選択する。

リートアルゴリズム

認識・行動サイクル型のプロダクションシステムにおいて照合を効率的に行うアルゴリズムがリートアルゴリズムである。複数のプロダクションルールから同一のWMEを参照する場合や前のステップで照合したインスタンシエーションを再び照合するような無駄を解消することができる。
Step1の知識ベースが以下の構成の時、リートアルゴリズムについて考える。

プロダクションメモリ
P1:W1 and W2 → W4
P2:W1 and W3 → W5
P3:W3 and W4 → W6
P4:W2 and W5 → W7
ワーキングメモリ
W1,W2,W3

Step0:
プロダクションルールからリートネットワークを構成する。

画像1

ワーキングメモリ:W1,W2,W3

Step1:
Step0のWMEにトークンを流し込む。トークンは次のノードで止まる。
P1とW1,W2、P2とW1,W3とがインスタンシエーションであることがわかる。

画像2

ワーキングメモリ:W1,W2,W3

Step2−1:
何らかの方法で競合解消を行なった結果P1が実行されるとする。

画像3

ワーキングメモリ:W1,W2,W3,W4

Step2−2:
実行されたP1の結論部であるW4からトークンを流し込む。トークンは次のノードで止まる。
この時点で、P1とW1,W2、P2とW1,W3、P3とW3,W4とがインスタンシエーションであることがわかる。
この時、P1とW1,W2、P2とW1とがインスタンシエーションであることを再び求める必要はなく、無駄な処理を削減していることがわかる。

画像4

ワーキングメモリ:W1,W2,W3,W4



この記事が気に入ったらサポートをしてみませんか?