エキスパートシステムとCLIPSについて

ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 IOT セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 本ブログのナビ チャットボットと質疑応答技術 Prologと知識情報処理 本ブログのナビ
エキスパートシステムとCLIPSについて

エキスパートシステムとはwikiによると「人工知能研究から生まれたコンピュータシステムで、人間の専門家(エキスパート)の意思決定能力をエミュレートするものである[1]。専門家のように知識についての推論によって複雑な問題を解くよう設計されており、通常のプログラミングのようにソフトウェア開発者が設定した手続きに従うわけではない」とある。

基本的にな動作をシンプルに言うと、システムが入力に沿って定義(宣言)されたルールを選択していきすべてのルールを適用したものが最終的な出力となるようなものとなる。エキスパートシステムが登場した当時は、機械学習技術もそれほど発達しておらず、このルールはほぼ手動で作られていた。そのため複雑なルールを構築することが困難で、大規模なAIシステムではなく、限定されたドメインのビジネスルールを記述したアプリケーションで活用されてきた。

それらに対して、近年大規模なルールを学習するツールとそれらを検証する「説明できる機械学習」ツールが提案され、大規模なエキスパートシステム構築への道が開かれつつある。

本ブログではこのエキスパートシステムに関して以下の項目を述べている。

前述の前向き推論に用いるツールとして有名なものに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で実装して活用した例を別途述べる

モバイルバージョンを終了
タイトルとURLをコピーしました