エキスパートシステム Ⅰ【前半】目次 歴史 アーキテクチャ…
推論エンジン
推論エンジンは、規則群を使って推論を行うプログラムである。推論を行うため、論理に基づいている。推論エンジンが使う論理としては、命題論理、一階または高階の述語論理、認識論理、様相論理、時相論理、ファジィ論理などがある。命題論理以外の論理は複雑であり、数学者や論理学者や計算機科学者でないと扱いが難しい。命題論理は基本的な論理であり、三段論法を定式化したものと言える。推論エンジンは論理を使って、規則やデータを処理し、新たな情報を生成する。
推論エンジンには、バッチ式と対話式の2つの動作方式がある。バッチ式では、当初から処理すべきデータが揃っている。利用者から見れば通常のプログラムと同じように動作し、データを入力すると即座に結果が得られ、推論過程は見えない。対話式は、問題があまりにも複雑など、運用開始時点で開発者が利用者から必要な全ての知識を集められなかった場合に必要となった。ソフトウェアは問題を解く方法を「考案」しなければならないので、利用者に欠けているデータを要求し、徐々にかつ可能な限り素早くゴールに到達する。結果は、専門家が誘導した会話の影響を受ける。対話を誘導するため、エンジンには「前向き連鎖」、「後向き連鎖」、あるいはそれらの混合といったいくつかの技法が備わっている。前向き連鎖は、解法を全く知らない専門家が行う質問であり、次第に解法をつきとめていく(例えば、障害診断)。後向き連鎖は、エンジンが結論の候補を持っている場合である(例えば、これは大丈夫か?、何らかの危険がありそうだが、そのレベルは? など)。可能な限り素早く解法を見つけられそうな結論から開始する。混合型の連鎖では、エンジンには結論の候補があるが、それだけでは十分ではない。その場合、直前の利用者の応答から前向き連鎖で推論して可能性のある候補を洗い出す。したがって、次の質問に利用者が答える前にその答えを推論済みであることが多い。
論理を使った場合の非常に興味深い点は、この種のソフトウェアが利用者に対して明確に「何をしているか」(Why)と「どう推論したのか」(How)を説明できる点である。さらに論理を使ったエキスパートシステムは、利用者の提供する情報や知識ベースにおける矛盾を検出できることが多く[25]、明確にそれを指摘できる。
利点
エキスパートシステムは通常のプログラムと比較したとき、以下のような利点がある。
- 規則を自然言語的に表現できるため、専門家や利用者が直接エキスパートシステムに知識を入力でき、開発期間が短縮できる。
- 知識を規則の形で知識ベースに蓄えるため、知識がどれだけ多くても推論エンジンのプログラミングには影響しない。
- データベースと同程度の信頼性を有する。
- 規則の追加・修正・削除が容易である。
- 推論の根拠を説明できるので、利用者はエキスパートシステムに詰め込まれた専門家の知識を学習することができる。
- 専門家の知識は、その人物の死や引退と共に消えてしまうが、エキスパートシステムに蓄えることで半永久的に記録することができる。
- 情報システムにおける組合せ爆発問題も、エキスパートシステムで解決できることがある。障害診断システム、複雑な問題の意思決定支援、教育ソフトなど。
欠点
エキスパートシステムは、その原理(知識工学)が70年前からあったにも関わらず、成功は限定的だった。専門家の知識は定式化できないことが多く、定式化してみると規則間で矛盾していたりする。推論エンジンの能力も低いことが多く、結果としてエキスパートシステムを実動させてみると満足な結果が得られず、プロジェクトが中止になることも多かった[26]。正しい開発方法論でこの問題を緩和できる。専門家にインタビューして、ひとつずつ規則を追加していき、同時にその専門家にエキスパートシステムの実行結果を示すことで規則群の一貫性を保つソフトウェアが存在する[27][28][29]。それにより、専門家と利用者がソフトウェアの品質を完成前にチェックできる。
エキスパートシステムが解決する問題のタイプ
一般に、エキスパートシステムが解決する問題は、人間のエキスパート(専門家)が行うことをなぞって解決できるものである。それは、たとえば医学や他の専門家などである。そのような問題領域(一般に非常に狭い領域、たとえば「十代の皮膚病の診断」など)の実際の専門家から問題領域に関する経験則を聞き出す。その手法はシステム開発者が直接聞き取り調査する場合もあるし、評価システムを専門家に使ってもらい、ルールを専門家自身に追加してもらう場合もある。一般にエキスパートシステムは、従来のアルゴリズムで符号化することができるような唯一の「正しい」解決策がない問題のために使われる。データをソートするとか、グラフの最短経路を見つけるといった問題にはもっと簡単な解法があるので、エキスパートシステムを使ってそれらを解決しようとする人はいないだろう。
単純なシステムはデータを評価するのに単純な二値論理を使うが、より洗練されたシステムはファジィ論理のような方法を使って、実世界の不確定要素をある程度考慮した評価を実行する場合がある。そのような精巧化は発展しづらく、まだ不完全である。
エキスパートシステムは、組み合わせが膨大となるような領域でうまく機能する。
- 高度な対話・会話型アプリケーション。自動音声応答装置、音声サーバ、人工無脳
- 障害診断、医療診断
- 複雑系、プロセス制御、対話型マニュアルなどでの意思決定支援
- 教育ソフトウェア
- 機械やシステムの論理シミュレーション
- ナレッジマネジメント
- 常に変化し続けるソフトウェア
エキスパートシステムと伝統的な問題解決プログラムの間の重大な違いは、問題に関する専門知識がコード化される方法である。伝統的なアプリケーションの中では、問題に関する専門知識はプログラムとデータ構造の両方で符号化される。エキスパートシステム的手法では、関連した専門知識は全てデータ構造だけに符号化され、プログラムの中にはない。いくつかの利点はこのような構成手法によるものである。
応用例
会計、医療、プロセス制御、金融サービス、製造業、人事などの領域向けのエキスパートシステムが設計されている。一般にその領域はかなり複雑で、より単純で伝統的なアルゴリズムでは適切な解決策を提供できない。成功を収めるエキスパートシステムは、一連の技術的手続きと開発に開発者と問題領域の専門家が関わることに依存している。エキスパートシステムは決定的な答えを提供しないが、確率的な推奨される解決策を提供する。
金融業におけるエキスパートシステムの応用例として、住宅ローンのエキスパートシステムがある。住宅ローンについては従業員のコストが問題となっていて、比較的小額のローンで利益を出すことが難しかった。住宅ローンには他のローンにはない法律や規則があり、エキスパートシステムを導入することで住宅ローンの処理を最適化・標準化できるのではないかと期待された。また、様々な市場での推奨取引を提示するエキスパートシステムもある。市場は様々な変動要素や個人の感情が絡み合って成り立っており、決定論的に見ることは不可能なため、経験則とシミュレーション・データに基づくエキスパートシステムが使われている。
エキスパートシステムの他の実用例は、1970年代と1980年代のコンピュータゲームに見られる。これは今日、単にAIと呼ばれているものである。例えば、コンピュータ野球ゲームである Earl Weaver Baseball と Tony La Russa Baseball(訳注:いずれもメジャーリーグの監督の名を冠した野球ゲーム)は、それら二人の野球監督の試合戦略の非常に詳細なシミュレーションを行っていた。人間がコンピュータと対戦したときに、コンピュータはアール・ウィーバーやトニー・ラルーサのエキスパートシステムに質問して次にとるべき戦略を決定していた。ゲームとしての偶発性(いつ牽制球を投げるかなど)も彼らが提供した確率に基づいて決められた。今ではエキスパートシステムなどとは呼ばず、単に「そのゲームのAIは対戦相手の監督の戦略を提供した」と紹介するだろう。
2008年、バンダイから発売中の携帯玩具『未来予測機 ミライスコープ』は、アメリカの心理学者J.M.デュセイが開発したエゴグラムという性格分析法に基づいた50の質問に答えることでプレイヤーを236タイプの性格に分類し、将来の生活や行動を予測する。ある種の簡単なエキスパートシステムといえよう。
新たな用途として、コンピュータプログラムの自動生成がある。アメリカ空軍の支援で開発されたエキスパートシステムに基づくアプリケーション hprcARCHITECT があり、様々なプロセッサ技術(FPGA、GPU、マルチコア)のシステム向けのプログラムを専門知識がなくても自動生成してくれる[30]。
知識工学
詳細は「知識工学」を参照
エキスパートシステムの開発・構築・保守を扱う工学分野を「知識工学」と呼ぶ[31]。知識工学は「知識をコンピュータシステムに組み込むことで、高度な専門家の知識を必要とするような複雑な問題を解くことを目的とした学問分野」である[32]。
エキスパートシステムに関わる人々は3者に分類される。まず、問題解決の支援を得るためにシステムを利用するエンドユーザーである。システムの構築と保守の局面では、知識ベースに格納すべき知識を提供する問題領域の専門家と、その知識の表現の決定を補助するナレッジエンジニアが関わる。ナレッジエンジニアはまた、問題解決に使用する推論技法を決定する。