Fuzzy Logic
ファジィ論理は0から1までの真理値を割り当て、ルールベースのシステムが「暖かい」「近い」などの曖昧な表現を使って推論できるようにします。制御器とコードについて解説します。
ファジィ論理は多値論理の一形態であり、命題を真か偽の二択に限定せず、0から1までの任意の真理度で部分的に真と表現できます。これは、カリフォルニア大学バークレー校におけるロトフィ・ザデーの1965年のファジィ集合に関する論文から発展し、「暖かい」「近い」「速い」などの曖昧な人間の用語を、コンピューターが正確な計算に利用する方法を提供します。ファジィシステムは、専門知識を平易なif-thenルールとして符号化し、一部が適用されるルールを組み合わせるため、入力の変化に応じて出力も滑らかに変化します。この特性により、列車のブレーキ制御から洗濯機まで、ファジィ論理は制御工学の定番となり、人工知能 (AI)システムのうち、解釈可能で手動調整可能なルールを必要とするものにも、今なお組み込まれています。
ファジィ集合とメンバーシップ関数#
古典的な集合論では、要素は集合に属するか、属さないかのどちらかです。ファジィ集合では、入力範囲上に通常は三角形、台形、またはガウス曲線として定義されるメンバーシップ関数を使い、各要素に0から1までのメンバーシップ度を割り当てます。隣接する集合は重なり合うため、室温が24 °Cの場合、「暖かい」に0.6、「暑い」に0.2の度合いで同時に当てはまることがあります。しきい値で突然切り替わるのではなく、ラベルが徐々に変化します。論理演算子も度合いに拡張されます。Zadehの当初の定義では、ANDは2つの度合いの最小値、ORは最大値、NOTは1からその度合いを引いた値です。ANDに積を使うなど、ほかの選択肢はtノルムと呼ばれる一群の演算に属します。
ファジィ推論システムの仕組み#
ファジィコントローラーは、4つのステップでセンサーの連続値を明確な指令に変換します。
- ファジィ化: 各入力値が各ファジィ集合にどの程度属するかを対応付けます。たとえば、障害物が「近い」「中程度」「遠い」のどれに当たるかを算出します。
- ルール評価: 「距離が近い場合は、強くブレーキをかける」といった各if-thenルールを、条件が当てはまる度合いに応じて適用します。
- 集約: 各ルールの出力集合を発火強度で切り詰め、通常は最大値を使って切り詰めた集合を統合します。
- 非ファジィ化: 統合された集合を1つの数値に変換します。多くの場合、重心を使います。
この方式は、Ebrahim MamdaniにちなんだMamdani法です。Mamdaniは1975年にSedrak Assilianとともに、研究室の蒸気エンジンの制御にこの方式を使用しました。Takagi-Sugenoシステムでは、出力集合を入力の式に置き換えて平均するため、計算コストが低く、データを使った調整も容易です。この例では、障害物までの距離に応じて制動力を設定する、3つのルールを持つMamdaniコントローラーを実装します。
import numpy as np
# Output fuzzy sets over braking force (0-100%)
force = np.linspace(0, 100, 501)
gentle = np.interp(force, [0, 40], [1, 0])
firm = np.interp(force, [20, 50, 80], [0, 1, 0])
hard = np.interp(force, [60, 100], [0, 1])
for distance in [8, 15, 22, 35]:
# Fuzzification: how near, medium, and far the obstacle is (meters)
near = np.interp(distance, [5, 20], [1, 0])
medium = np.interp(distance, [10, 20, 30], [0, 1, 0])
far = np.interp(distance, [20, 40], [0, 1])
# Rules: near -> hard, medium -> firm, far -> gentle; clip each set (min), combine (max)
combined = np.maximum.reduce([np.minimum(near, hard), np.minimum(medium, firm), np.minimum(far, gentle)])
# Defuzzification: the centroid of the combined set is the crisp braking command
print(f"{distance:>2} m -> brake {np.sum(force * combined) / np.sum(combined):.0f}%")このスクリプトは、距離が8、15、22、35メートルの場合の制動力として、それぞれ86%、60%、47%、14%を出力します。15メートルでは障害物が「近い」に0.33、「中程度」に0.5当てはまるため、強いブレーキと適度なブレーキのルールがどちらも部分的に発火し、組み合わせた結果は60%になります。3つのルールによって、指令が急変するしきい値のない滑らかな制動曲線が得られます。
用途#
- 制御システム: 日立のファジィ自動列車運転システムは、1987年の開業時に仙台市地下鉄南北線で加速と制動を制御し、より滑らかな乗り心地と正確な停車を実現しました。ファジィコントローラーは、精度の曖昧なセンサー値に基づいて、洗濯機、炊飯器、エアコンなどの家電製品を調整する用途でも使われます。
- 画像セグメンテーション: k-meansクラスタリングをソフト化したファジィc-meansでは、各ピクセルに各クラスターへのメンバーシップ度を割り当てます。医用画像解析で広く利用されており、たとえばMRIスキャンで脳組織の種類を分離できます。境界上のピクセルに複数の組織が含まれる場合にも適しています。
- ビジョンに基づく判断: Ultralyticsの速度推定ソリューションは、YOLO26モデルで車両を追跡し、それぞれの速度をkm/hで報告します。この明確な入力をファジィルールベースで「遅い」「中程度」「速い」と評価し、警告レベルや信号のタイミングを設定できます。
- ニューロファジィシステム: Jyh-Shing Roger Jangが1993年に提案した適応型ニューロファジィ推論システム (ANFIS) は、ルールの読みやすさを保ちながら、ニューラルネットワークの学習手法でデータからメンバーシップ関数とルールのパラメーターを学習します。
ファジィ論理と確率、記号AIの比較#
ファジィ論理と確率はいずれも0から1までの数値を使いますが、異なる種類の不確実性を表します。ベイジアンネットワークが扱う確率は、「明日雨が降る確率が30%」のように、明確に定義された事象がどの程度起こりそうかを表します。ファジィメンバーシップは、「50 °Cのコーヒーが0.7の度合いで『暖かい』」のように、曖昧な表現が既知の状態にどの程度当てはまるかを表します。古典的な記号AIと比べると、ファジィルールベースはエキスパートシステムの読みやすいif-then形式を保ちながら、各ルールの二値条件を度合いに置き換えます。そのため、複数のルールを1つの判断に同時に反映できます。










