White Paper: Knowledge Builderでのファジィ論理
従来、クラス分類、評価、診断、および計画の作業における人間の経験知を取り込むためには、ルール・ベースのロジックが使われてきました。不確実な状況での意思決定を獲得するには、伝統的に確率が使われてきました。たとえば、次ののようなルールを考えてみましょう。
IF Symptom-A is present THEN diagnosis is illness-X
もし症状-Aが見られるなら、診断は病気-Xである。
症状-Aの存在が不確かな状況というのもあるでしょう。そのような場合、我々は病気-Xの診断での確信度(confidence
factor)をもたらすような、症状-Aが存在する確率を入力することができます。ルール・ベース推論の際に確率を伝播する方法にはいくつかあります。これらの手法の多くは、Mycin や Prospectorで用いられた確率推論技法に基づいています。このような技法の弱点は、不確実性のもとでお人間の専門家の推論を反映させる方法を持っていないことです。 XpertRule
Knowledge Builder は、確率推論アプローチに代替の方法論を可能にします。これは、likely(それらしい)、unsure(わからない)、unlikely(それらしくない)という値を持つ論理属性として、症状-Aや病気-Xを定義することを含みます。これは、数学的な確率伝播に頼る代わりに、症状と病気の間の関係性を専門家が指定することを可能にします。
多くの人が、上記の不確かな推論とファジィ推論とを混同いています。確率推論というのは、症状-Aと病気-Xのようなよく定義されたイベント(出来事)またはコンセプト(概念)について、不確かな推論を取り扱うものです。一方、ファジィ論理は、’ファジィ’なイベントまたはコンセプトについての推論を取り扱うものです。ファジィなコンセプトとは、’温度’が’高い’とか、’人’が'高い’というようなことです。人が高いという場合、それは170cmでしょうか、180cmでしょうか、それとも190cmでしょうか?もし180cmで高さのしきい値を定義するなら、その含意は179.9cmの人は高くないということです。人が'高い’というような言葉で推論する場合、普通は固定されたしきい値なんて考慮してはおらず、滑らかでファジィな定義を持っています。人間はそのようなファジィな定義で効率よく推論が行えます。したがって、人間のファジィな推論を取り込むために、ファジィ論理が必要なのです。ファジィな条件とファジィな結果を含むファジィ・ルールの例には次のようなものがあります。
IF salary is high THEN credit risk is low
もし給料が高いなら、クレジット・リスクが低い
ファジィ推論は、つぎの3つのステップからなります。
- ルールの条件に出てくる述語をファジィ化する。
- ファジィ・ルールから推論する。
- ルールの結果に出てくるファジィな述語を脱ファジィ化する。
ファジィ化
Lotfi Zadehは、ファジィ集合を用いて人間の不明確な推論をモデリングする方法を開拓しました。
この技法を用いて、’高い’の概念は、記述しようとしている潜在的な目的の述語(客観性)、すなわちセンチメートルでの高さに関係づけられています。客観性をファジィな概念に変換することをファジィ化と呼びます。たとえば、述語'高い’は、このようなグラフで表現できます。

これは、ある人がカテゴリ(集合)'高い’に属するメンバーシップの度合いを示します。クラス'高い’のすべてのメンバーシップは1の値で表現され、一方、非メンバーシップは0の値でで表現されます。150
cm 以下の人は、クラス’高い’には属しません。210cm以上の人は、完全にクラス’高い’に属します。150cm
から 210cm の間は、 0 から 1の間で線形的にメンバーシップが増加します。集合’高い’に属する度合いは、確信度(confidence
factor)またはメンバーシップ値(membership value)と呼びます。メンバーシップ関数の形は、非線形でも可能です。
ファジィ化プロセスの目的は、解釈されるべきルールでファジィな条件を可能にすることです。たとえば、ルール内の条件
'person = tall'は、'height(高さ)'のすべての値について真であり得ますが、この条件の確信度またはメンバーシップ値は、上記のグラフから導かれます。
180 cmの高さの人は、0.5の確信度(クラブ'tall'のメンバーシップ値)で'tall'であります。条件’tall’のメンバーシップ値が高さで穏やかに変化することが、ファジィ論理にその強みを与えています。
通常、ファジィな概念は、それらが記述する客観(対象)の値の範囲を記述するために、複数の値を持ちます。たとえば、ファジィな概念” 'tallness(高さ)' は、値'Tall(高い)'、'Medium height(中間の高さ)' および 'Short(低い)'を持つことができます。通常、これらの値のメンバーシップ関数は、下図のようになります。

通常、ファジィな概念は、奇数個の値(3,5または7)を持ちます。上記の値は、’とても低い’と’とても高い’で拡張することができます。 ファジィ論理システムの実力は、クリスプな論理システムと比べて、わずかの数のファジィ値を用いて概念を表現できる能力に依拠します。したがって、これは、その概念に関係するナレッジを取り込むために要求されるルールの数を削減します。クリスプな論理と同等な精度を実現するためには、結果として、たくさんの論理値が、大規模なルール・ベースでは要求されます。
ファジィ推論
ファジィ・ルールの集合からの推論とは、ルールの条件をファジィ化して、そして条件の確信度(メンバーシップ値)をルールの結論(結果)に伝播することです。次のルールを考えてみましょう。
IF (applicant is young) AND (income is low) THEN credit limit is low
もし(応募者が若く)かつ(収入が低い)ならクレジット枠は低い
上記のルールからの推論は、応募者の年齢を与える条件'applicant is young'のメンバーシップ値(MV)と、応募者の給料を与える'income is low'のMVを(ファジィ化を用いて)参照することを含みます。Lotfi Zadehによって提案されたこの手法は、すべての条件の最小MVをとり、結果 'credit limit is low' にそれをを割り当てるものです。この手法の拡張は、割り当てられたMVをルールの結果に乗算する各ルールの重みが0から1の間の値を持つことを含みます。この重みは、Pattern rules view上で編集して、実行時に割り当てることができます。デフォルトでは、各ルールの重みは1.0に設定されています。
ファジィ・ルール・ベースでは、結果'credit limit is low' を持つ複数のルールが発火します。推論エンジンは、発火したすべてのルールの最大MVを結果'credit
limit is low' に割り当てます。
要約するとファジィ推論は、次のことからなります。:
- 各ルールの条件をファジィ化して、ルールの重みを掛けたその条件の最小MVを各ルールの結果に割り当てる。
- 各結果にその発火したルールの最大MVを割り当てる。
- ファジィ推論は、ルール・ベース内の各結果に割り当てられた確信度(MV)を産出する。
脱ファジィ化
もしファジィ・ルール集合の結論がファジィな概念を含むなら、これらの概念は、それらが実用的に使用される前に、目的の述語に翻訳し戻されなければなりません。前のセクションで記述されたクレジットのルールを含むルール集合について、ファジィ推論は、述語
'credit limit is low'、'credit limit is medium' および 'credit limit is
high' に割り当てられているメンバーシップ値を産出します。ただし、実用では、このようなルール・ベースからの結論を使用するために、我々はその結論をクリスプなクレジット枠の数字に脱ファジィ化する必要があります。これを行うために、このダイアグラムに示すように、クレジット枠の結果についてのメンバーシップ関数を定義する必要があります。
 脱ファジィ化の1つの方法は、メンバーシップ関数が最も高い値を持つところに、それぞれのファジィな結果についての推論によって生成される確信度(MV)を置くことです。要求された脱ファジィ化値は、したがって、3つのMVベクトルの重心として計算できます。これは、ファジィ推論が、low、medium
および high のクレジット枠の結果について、それぞれ 0.3、0.5 および 0.7のMVを産出するとして、下記の例で説明されます。  クレジット枠の脱ファジィ化値は、500、 1000 および 1500に置かれた重みとして(見られる)3つのMVの重心として計算されます。
(HV_low * MV_low + HV_med * MV_med + HV_high * MV_high) / (MV_low
+ MV_med + MV_high)
HV_low, HV_med , HV_high は、low, medium および highのクレジットについての最も高いメンバーシップ値を与えるクレジット枠(credit limit)の値です。
MV_low, MV_med , MV_high は、low, medium および high のクレジット結果についてのファジィ推論によって生成されたMV値です。
上の事例にこの数式を適用すると、脱ファジィ化されたクレジット枠値は、英国ポンド
£1133.33となります。
もし結果が 'diagnosis is a faulty printer('診断は欠陥プリンタ)’のようなクリスプな概念であれば、脱ファジィ化の段階が必要ないことに注意してください。これらのケースでは、ファジィ推論は、複数の結果に確信度(または確率)を割り当てて結果を出します。
ファジイ論理の主要な原理は広く指示されていますが、ファジィ推論や脱ファジィ化の方法にはいく通りもあります。上記の方法は、もっとも広く使われていて、XpertRule Knowledge Builder.に実装されているものです。
XpertRule Knowledge Builderにおけるファジィ論理の実装
デザイン・コンセプト
Knowledge Builderでのファジィ論理の実装は、3つの目的を考慮して開発されました。包括的な機能を提供すること、簡単な保守、そしてKnowledge
Builder内で非ファジィ(クリスプ)なルールとシームレスに統合できることです。
.
ファジィ・オブジェクト
- オブジェクトのタイプ・リストで、ファジィ・プロパティを'真'に設定するとファジィ・オブジェクトとして定義されます。
- ファジィ・オブジェクトは、ファジィなナレッジ(ルール)を表現するため、あるいは、それらのルールの定義で使われているファジィ属性を表現するために使用できます。
ファジィ属性
- ファジィ・オブジェクトのfuzzyValueプロパティは、その数値的な実行時の入力値を保持します。これは手続き的コマンドを用いて割り当てることができます(たとえば、
@Assign Pressure.fuzzyValue = 50)。
- fuzzyValue プロパティの数値範囲は、ファジィメンバーシップ関数を用いてオブジェクト値にマップされます。これらのグラフィカルな関数は、与えられたあらゆるfuzzyValue入力について離散値(インスタンス)のそれぞれのファジィ・メンバーシップ値(fuzzyMV)を導きます。
ファジィ・ルール
- fuzzyValueプロパティは、各値(インスタンス)のfuzzyMVとFyzzyメンバーシップ関数から導かれるルール・オブジェクトについての"脱ファジィ化"された数値的出力値を保持します。
- 各値(インスタンス)のfuzzyMVの派生は、実行時のルールの発火とそれらのルールを用いた各ファジィ属性の値のfuzzyMVに基づきます。
- 最も高いfuzzyMVを持つ値を選択します。
- ファジィ・ルール・オブジェクトは、ファジィと非ファジィの属性を持ちます(ただし、fuzzyMVは選択された値が1.0で、その他の値が0.0であると仮定します)。
- オブジェクトについてのファジィ・ルール推論は、(ナレッジ・モード・プロパティの設定によって)ケース/ルールまたは決定木のいずれかで構成されます。
- 1つ以上のルール/ツリー・パスが発火
- ルールの条件が'真'であると考えられるなら、その値のfuzzyMVは0よりも大きい。
- multiSelectプロパティが’真’に設定されているオブジェクトには、 "脱ファジィ化された"
fuzzyValueは必要ありません(したがって、非ファジィのメンバーシップ関数が定義されます)。まだ各値のfuzzyMVに保持されているこのようなオブジェクトからの出力は、可能のルール結果のそれぞれについての確信度を表現します。ここで fuzzyMV
> 0 のすべてのオブジェクト値が選択されます。
- ファジィ・ルール・オブジェクトは、他のファジィ(または非ファジィ)ルール・オブジェクト内の属性として使用できます。
XpertRule Knowledge Builderでのファジィ・オブジェクトの定義
- Object Wizardタブ上のKnowledge Representationウィザードを用いて、Fuzzy
Optionを選択します。または、Object Control Propertiesタブ上で、 isFuzzyプロパティを直接設定することもできます。
- Listオブジェクトの"Values”が、Instance Propertiesタブ上で定義されていることを確認してください。
- Fuzzy Membership Functionsタブ上で(そのオブジェクトの multiSelectプロパティがTrue(真)に設定されていたら、これは不要です)、
- (x軸上の) fuzzyValueの最小と最大の範囲を定義します
- 各値のメンバーシップ関数を選択(ハイライトして、右クリック)します。
- 各関数の屈曲点を入力(SとZに2、Lamdaに3、Piに4)します。
XpertRule Knowledge Builderがファジィ論理で推論
ファジィ・ルールの集合からの推論は、ルールの条件のファジィ化を含み、そして、条件の確信度(メンバーシップ値)をルールの結論(結果)に伝播します。次のルールを考えてみましょう。
IF (applicant is young) AND (income is low) THEN credit limit
is low
もしもし(応募者が若い)かつ(収入が低い)ならクレジット枠は低い
上記のルールからの推論は、(ファジィ化を用いて)応募者の年齢を与える条件'applicant
is young'のメンバーシップ値(mv)と、応募者の給料を与える'income is low'のMVを参照します。Lotfi
Zadehが提案した手法は、すべての条件の最小MVをとって、結果 'credit limit
is low'に割り当てることです。 ファジィ・ルール・ベースでは、結果'credit limit is low' を持つ複数のルールが発火します。推論エンジンは、結果'credit limit is low' に発火したすべてのルールでの最大MVを割り当てます。 要約すると、ファジィ推論は、次のことからなります。
- 各ルールの条件をファジィ化して、ルールの重みをかけたその条件の最小MVを各ルールの結果に割り当てます。
- その発火したいくつかのルールでの最大MVを各結果に割り当てます。
- ファジィ推論は、ルールベース内の各結果に割り当てられた確信度(MV)で結果を出します。
|