コンピュータ科学において、ルールベースシステムとは、ドメイン固有の知識がルールの形で表現され、汎用的な推論を用いてそのドメイン内の問題を解決するコンピュータシステムのことである。
1970年代の人工知能の分野では、2種類の異なるルールベースシステムが登場した。
これら2種類のルールベースシステムの違いと関係性は、誤解と混乱の大きな原因となってきた。
ルールベースシステムはどちらも、命令型プログラムとは異なり、順方向または逆方向の連鎖処理を用いる。命令型プログラムは、列挙されたコマンドを順次実行する。ただし、論理プログラミングシステムは論理的な解釈を持つが、プロダクションシステムには持たない。
生産ルールに基づくシステムの典型的な例は、ルールを使用して推論や選択を行うドメイン固有のエキスパートシステムです。 [ 1 ] 例えば、エキスパートシステムは、症状の集合に基づいて医師が正しい診断を選択したり、ゲームをプレイするための戦術的な動きを選択したりするのに役立つかもしれません。
ルールベースシステムは、コンピュータプログラムのコンパイルや解釈のための語彙分析、または自然言語処理に使用できます。[ 2 ]
ルールベースプログラミングは、一連のデータとルールから実行命令を導き出そうとする手法です。これは、実行手順を順番に列挙する命令型プログラミング言語よりも間接的な方法です。
典型的なルールベースシステムには、4つの基本的な構成要素があります。[ 3 ]
推論エンジンのマッチングフェーズには論理的な解釈があるのに対し、競合解決フェーズとアクションフェーズには論理的な解釈がありません。代わりに、「それらの意味論は通常、さまざまな状態変更演算子の一連の適用として記述され、多くの場合、かなり複雑になります(どの ECA ルールをいつ発火させるかなどを決定する際の選択によって異なります)。そのため、宣言的であるとはほとんど考えられません。」[ 5 ]
論理プログラミングのコンピュータシステム群には、プログラミング言語Prolog、データベース言語Datalog、知識表現および問題解決言語Answer Set Programming (ASP)が含まれる。これらの言語すべてにおいて、ルールは節の形式で記述される。
A :- B1, ..., Bn.そして、論理形式の平叙文として読まれる。
A if B1 and ... and Bn.一階述語論理のサブセットであるホーン節(または「確定」節)の最も単純なケースでは、A、B 1、...、B nはすべて原子式です。
ホーン節論理プログラムはチューリング完全であるが、[ 6 ] [ 7 ]多くの実用的なアプリケーションでは、失敗として否定によって実装される否定条件を許可することでホーン節プログラムを拡張することが有用である。このような拡張された論理プログラムは、非単調論理の知識表現能力を持つ。
これら2種類のシステムの最も明白な違いは、プロダクションルールは通常「AならばB」という順方向で記述され、論理プログラミングルールは通常「AならばB」という逆方向で記述される点です。論理プログラミングルールの場合、この違いは表面的なものであり、純粋に構文上のものです。ルールの意味論には影響しません。また、ルールがPrologスタイルで逆方向に推論して目標Bをサブ目標Aに還元するために使用されるか、DatalogスタイルでAからBを導出するために使用されるかにも影響しません。
生成規則の場合、構文の順方向は、ほとんどの生成規則の刺激-応答特性を反映しており、刺激Aが応答Bの前に来ます。さらに、応答が仮定Aから結論Bを導き出すだけの単純な場合(例えば、モーダス・ポネンスの場合)でも、一致-解決-実行のサイクルはAからBへの順方向推論に限定されます。生成システムで逆方向推論を行うには、全く異なる種類の推論エンジンが必要になります。
ポール・サガードは、認知科学入門[ 8 ] の中で、人間の思考をモデル化する代替アプローチとして論理とルールを挙げている。彼は論理プログラム全般については言及していないが、Prologについてはルールベースのシステムではなく、「論理表現と演繹的手法を用いるプログラミング言語」であると考えている(40ページ)。
彼は、条件が満たされればアクションとなる形式のルールは、論理条件文と「非常によく似ている」が、より単純で、心理的に妥当性が高いと主張する(51ページ)。論理とルールのその他の違いとして、論理は演繹を用いるが、ルールは探索を用いる(45ページ)こと、そして順方向または逆方向の推論に使用できること(47ページ)を挙げている。論理の文は「普遍的に真であると解釈されなければならない」が、ルールは例外を許容するデフォルトになり得る(44ページ)。彼は、ルールのこれらの特徴すべてが論理プログラミングシステムに当てはまるわけではないと指摘している。