エキスパートシステムとCLIPSについて
エキスパートシステムとはwikiによると「人工知能研究から生まれたコンピュータシステムで、人間の専門家(エキスパート)の意思決定能力をエミュレートするものである[1]。専門家のように知識についての推論によって複雑な問題を解くよう設計されており、通常のプログラミングのようにソフトウェア開発者が設定した手続きに従うわけではない」とある。
基本的にな動作をシンプルに言うと、システムが入力に沿って定義(宣言)されたルールを選択していきすべてのルールを適用したものが最終的な出力となるようなものとなる。エキスパートシステムが登場した当時は、機械学習技術もそれほど発達しておらず、このルールはほぼ手動で作られていた。そのため複雑なルールを構築することが困難で、大規模なAIシステムではなく、限定されたドメインのビジネスルールを記述したアプリケーションで活用されてきた。
それらに対して、近年大規模なルールを学習するツールとそれらを検証する「説明できる機械学習」ツールが提案され、大規模なエキスパートシステム構築への道が開かれつつある。
本ブログではこのエキスパートシステムに関して以下の項目を述べている。
- 後ろ向き推論と前向き推論
- Clojureでのエキスパートシステム Clara RuleとRete4Frame
- Clara Ruleによるエキスパートシステム(1) 基本的な使い方
- Clara Ruleによるエキスパートシステム(2) 応用
前述の前向き推論に用いるツールとして有名なものにCLIPSがある。CLIPSとはwikiによると「CLIPSとは、ソフトウェアの名称でありエキスパートシステムの一種である。C Language Integrated Production System(C言語統合型プロダクションシステム)の略。..CLIPSの最初のバージョンは1984年にNASAのジョンソン宇宙センターで(既存のシステム ART*Inference の後継として)開発された。…CLIPSは高速で効率がよく無料であるため、最も広く使われているエキスパートシステム・ツールと言えるだろう。現在はパブリックドメインだが、それでもオリジナルの作者ゲーリー・ライリーがアップデートとサポートを続けている。」とある。先述のprologでも構成可能なエキスパートシステムの専用ツールとなる。
CLIPSは公式HPよりダウンロードできる。macの場合はアプリをダウンロードして起動するとターミナルからの操作に、windowsの場合はもう少しリッチな多画面のIDEとなるようである。(未確認)
コードとしては、以下のようなLISPライクなものとなる。
CLIPS>(+ 3 4)
7
CLIPS>(exit)
エキスパートシステムとしての利用はまず以下のような形でFACTを導入し
CLIPS>
(deftemplate person
(slot name)
(slot age)
(slot eye-color)
(slot hair-color)
CLIPS>
(asset (person (name "John Q.Public))
(age 21)
(eye-color blue)
(hair-color black))
(person (name "Jane Q. Public"))
(age 36)
(eye-color green)
(hair-color red)))
<Fact-1>
CLIPS>
更にFACTデータはmodify関数やduplicate関数等で操作できる。またfactの設定ではdeffact関数を利用することもできる。次に、以下のようにしてruleを設定する。
CLIPS>(deftemplate emergency (slot type))
CLIPS>(deftemplate response (slot action))
CLIPS>(defrule fire-emergency "An example rule"
(emergency (type fire))
=>
(assert (response (action activate-sprinkler-system))))
これは、「IF the emergency is a fire then the response is activate the sprinkler system」を表している。これらを宣言した後(run)コマンドを使うことで実行できる。
詳細の利用に関してはリファレンスマニュアルを参照のこと。
これらをClojureで実装して活用した例を別途述べる
コメント
[…] expart systemのClojureでの導入を考えた場合、まず基本の前向き推論の動作を理解し、次にそれらの実装形態としてのCLIPSの動作を理解し、更にそれらを基本的に再現したClojureライブラリであるrete4framesの動作を理解した上で、よりフレキシビリティのあるClara ruleに進むのが妥当であると考える。 […]
[…] エキスパートシステムの実装例としてはJavaによるCLIPSがある。またそれらをベースとしたClojureでの実装と活用に関しても別途述べる。 […]
[…] 情報工学でのオントロジーの適用先は多岐に渡り、知識表現として人工知能に導入され各種推論(エキスパートシステム等)に用いられたり、SemanticWeb技術の根底にあるデータとして各種データのリンク付けを行ったり、システム工学やソフトウェア工学においてSysML等のツールと共に要件定義のツールとして用いられたり、バイオインフォマティクス、図書館情報学、エンタープライズインフォーメーションマネジメント等の領域で情報を整理し、アクセス性を改善するツールとして用いられている。 […]
[…] CLIPSについて 概要 […]
[…] 1970年代初頭に開発された論理型プログラミング言語Prologは、述語論理に基づく宣言的記述と定理証明に基づく計算手続きを併せ持つ新しい人工知能言語として注目され、1980年代にはエキスパートシステム、自然言語処理、演算データベースなどに幅広く有用されている。 […]
[…] 1970年代初頭に開発された論理型プログラミング言語Prologは、述語論理に基づく宣言的記述と定理証明に基づく計算手続きを併せ持つ新しい人工知能言語として注目され、1980年代にはエキスパートシステム、自然言語処理、演算データベースなどに幅広く有用されている。 […]
[…] エキスパートシステムとCLIPS […]
[…] エキスパートシステムとCLIPS […]
[…] このKBMCは、エキスパートシステムの確率的な応用として捉えられるが、エキスパートシステムが持っていた課題をそのまま引き継いでいた為、フレーム問題という課題を持っていた。 […]
[…] 間が比較的短く、シンプルな問題に適している。推論系のアルゴリズムに関しては”エキスパートシステムとCLIPSについて“や”後ろ向き推論と前向き推論“等を参照のこと。 […]