<私たちの考え方をマネたAI#1>
今まで、ニューラルネットワークモデル、
遺伝的アルゴリズム、
と教科書通りの順に説明してまいりました。
今回ご紹介する人工知能は、それら2つとともに、
AI御三家とも言われる
(って、ぼくが勝手にそう言っているだけなんですが)
「エキスパートシステム」です。
これはわかりやすいですよ。
なぜって、普段私たちが会議とかで使っている
「考え方」そのまんまだからです。
こういう我々の理論的な?考え方を、
逆に数字や数式で表すことはできるのか?というと、
これがまた、非常に数学というか、
工学というか、コンピュータというか、
そういうあたりと非常に相性がよろしいのでした。
っていうことで、今でも盛んに研究されているし、
ずいぶんと実用も進んでいる
「エキスパートシステム」の紹介です。
以下、「マッチ箱の脳」の「ニューラルネットワーク」より抜粋
■エキスパートシステム
AI御三家の最後が、
エキスパートシステムと呼ばれるAIです。
NN(ニューラルネットワーク)が、
「脳」をモデルにしたAI、
GA(遺伝的アルゴリズム)が
「進化」をモデルにしたAIとするならば、
このエキスパートシステムは
我々の「考え方」をモデルにした
AIという言い方ができるかもしれません。
まずは、エキスパートシステムの仕組みをお話しします。
<実用に向いたAIとは>
●IF THENというプログラム用語
「IF THEN ELSE」
いきなり耳慣れないプログラム用語で恐縮です。
これはプログラムでよく使われる命令文です。
例えば、
「IF<信号が青>
THEN<進みなさい>
ELSE<止まりなさい>」
という感じで使います。
これは
「もし<信号が青>
ならば<進みなさい>
そうでなければ<止まりなさい>」
という意味です。
我々の判断や予測は、
結構こうした形で書けることが多いようです。
エキスパートシステムの考え方は、この構文を利用して、
「もし、状況がこうなら、こうしなさい。
そうじゃなければこうしなさい」など、
予想される問題について対処法を
あらかじめたくさん用意しておくというものです。
専門分野の知識を利用することが多いことから、
エキスパート=専門家のシステムと呼ばれています。
●鼻水が出るなら、それは風邪です
「もし、状況がこうなら、こうしなさい。
そうじゃなければ、こうしなさい」
というルールはたくさんあれば、
あるほど、判断が正確になります。
逆に、1つでもこぼれてしまうと、
肝心なときに答えをくれないということが
起こってしまいます。
ですから、エキスパートシステムを作るときは、
考え得る限りのルールを用意します。
実際にエキスパートシステムを利用する場合は、
こんなイメージになります。
なんだか、身体の調子が悪いあなたが、
「病気かなあ」と思ったとします。
でも、大した病気でもないのに
病院へは行きたくありません。
そんなとき、
まずは、エキスパートシステムに自分の症状を入力して、
この症状だとどんな病気が考えられるか、
診断してもらうことにしました。
診断はこんな感じになります。
まず、エキスパートシステムから、
「主な症状は次のどれですか?」
1:熱がある 2:鼻水が出る 3:咳が出る
というような質問が出され、あなたがそれに答えます。
そして、あなたの答えは、
データベースのどのルールに当てはまるか参照されます。
データベースは、例えば、こんな感じで用意されています。
▲質問:主な症状は次のどれですか?
1:熱がある 2:鼻水が出る 3:咳が出る
◆ルール1:もし熱があるなら、食中毒だと診断する
◆ルール2:もし鼻水が出るなら、風邪だと診断する
◆ルール3:もし咳が出るなら、結核だと診断する
もし、あなたが、「2:鼻水が出る」を選択したら、
ルール2が該当するので
「ただの風邪です」という診断を下します。
ざっと、こんな感じです。
これは、あくまでも例ですよ。
こんないいかげんな診断はありませんからね。
どうですか?
非常にわかりやすい簡単な仕組みですね。
エキスパートシステムは、実際に多くの現場、
特に病気診断などに利用されています。
●エキスパートシステムの学習方法
他のAIと異なり、
エキスパートシステムは
自分で学習するというシステムはありません。
あらかじめ専門家たちが、
考え得るだけの「場合」とそれに対する「対処方法」や
「判断」「予測」を用意しておきます。
エキスパートシステムは、
ユーザーの求めがその「場合」に
当てはまるかだけを判断し、
それに該当する判断や予想をするのみです。
●熱があるのは風邪なのか?
さて、エキスパートシステムが
その場合に相当するかどうか判断する方法を、
もう少し詳しく見てみることにしましょう。
例えば、ユーザーの「熱がある」という訴えに対し、
「それならば、xxxである」と
断言できないこともありますね。
該当する病名が一つであるとは限りませんから。
熱があるとしても、それは食中毒のせいかもしれないし、
ただの風邪かもしれない、
未知の熱病かもしれないなど複数の原因が
候補として挙がってきます。
このため、どの原因を採用すべきか判断するために、
それぞれのルールに「確信度」という属性を与えます。
例えば、
「もし、熱がある なら 風邪である 確信度0.7」
というように設定します。
確信度は、絶対に確信がある場合は1、
絶対当てはまらない場合は−1となります。
それ以外は、確信度を−1〜1の間の値として表します。
これが絶対の基準というわけではありませんが、
一般的な解釈と確信度の値を書いておきます。
◆確信度−1.0 絶対xxxでない
◆確信度−0.8 ほぼ確実にxxxでない
◆確信度−0.6 たぶんxxxでない
◆確信度−0.4 xxxでないかもしれない
◆確信度−0.2〜0.2 わからない
◆確信度 0.4 xxxかもしれない
◆確信度 0.6 たぶんxxx
◆確信度 0.8 ほぼ確実にxxx
◆確信度 1.0 絶対xxx
(『エキスパートシステムの設計と開発』
「情報系教科書シリーズ」 第21巻 より抜粋)
この確信度の設定にはこれといったルールはありません。
その問題ごとに、設計者が適当に、
いや、適宜設定することになります。
こうして、すべてのルールに確信度が付けられます。
例えば、
◆ルール1:もし、熱がある なら 食中毒である 確信度0.5
◆ルール2:もし、熱がある なら 風邪である 確信度0.7
◆ルール3:もし、熱がある なら 未知の熱病である 確信度0.3
といった具合です。
そして、ユーザーが、熱があると訴えた場合は、
この確信度の高さを頼りに、
ルール2の「風邪である」を選択する
というような使い方をします。
また、
◆ルール1:もし、鼻水が出る なら 風邪である 確信度0.3
◆ルール2:もし、熱がある なら 風邪である 確信度0.5
であるとき、ユーザーが、
鼻水も出るし熱もあると答えたとすると、
確信度は0.3+0.5=0.8となり、
ますます風邪である疑いが強くなる、確信度を足し算、
引き算して判断するようなこともあります。
さらに、ただ「熱がある」だけだと、
該当するルールがとんでもなく
多くなってしまうような場合、
確信度が0.2以下のルールは
切り捨てるなどといった方法を取ることによって、
該当するルールを絞り込むということもできます。
実際の現場では、
もっときめ細かな方法が取られていますから、
単純に確信度だけで
ルールが選択されるということはありません。
|