[su_button url=”https://deus-ex-machina-ism.com/?p=6407″ target=”blank”]ウェブ技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?page_id=3551″ target=”blank”]デジタルトランスフォーメーション技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?page_id=3707″ target=”blank”]人工知能技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=283″ target=”blank”]自然言語処理技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=11277″ target=”blank”]IOT[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=10″ target=”blank”]セマンティックウェブ技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=10488″ target=”blank”]深層学習技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=17082″ target=”blank”]オンライン学習&強化学習技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=17486″ target=”blank”]ユーザーインターフェース技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=15919″ target=”blank”]知識情報処理技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=6852″ target=”blank”]推論技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?page_id=12232″ target=”blank”]本ブログのナビ[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=20639″ target=”blank”]チャットボットと質疑応答技術[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?p=1516″ target=”blank”]Prologと知識情報処理[/su_button] [su_button url=”https://deus-ex-machina-ism.com/?page_id=12232″ target=”blank”]本ブログのナビ[/su_button]
エキスパートシステムと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で実装して活用した例を別途述べる
AIシステム設計・意思決定構造の設計を専門としています。
Ontology・DSL・Behavior Treeによる判断の外部化、マルチエージェント構築に取り組んでいます。
Specialized in AI system design and decision-making architecture.
Focused on externalizing decision logic using Ontology, DSL, and Behavior Trees, and building multi-agent systems.
