ファジィ理論(ファジー理論)とは、「やや汚れている」「少し速い」といった程度のある言葉を、0から1までの数値で表して計算に載せる数学です。1965年に米カリフォルニア大学バークレー校のロトフィ・ザデーが論文「Fuzzy Sets」(Information and Control 第8巻3号 338〜353頁)で定義しました。
この記事は、その中身を実装の水準まで下ろします。1990年発売の洗濯機「愛妻号Day ファジィ」の推論ルールは何個だったのか。1987年開業の仙台市地下鉄が採用した「予見ファジィ制御」は何を改善したのか。どちらも当時の学会誌と技術誌に、入力変数・ルール数・推論方法まで書き残されています。そのうえで、ブームが去った後にこの技術がどこへ残ったのかを、規格・商用製品・オープンソースで確認します。
まとめ
- ファジィ理論は、集合への所属を0か1かではなく0〜1の度合い(メンバーシップ値)で表す数学です。「いい加減」という意味ではなく、境界が段階的な集合を厳密に扱う枠組みです。
- 部品は、曖昧さを数値化するファジィ集合とメンバーシップ関数、IF〜THEN形式のルールを合成するファジィ推論、結果を1つの数値へ戻す非ファジィ化。この3段で「言葉のルール」から操作量が出ます。ファジィ論理(ファジィロジック)は、真理値を0〜1へ拡張した論理体系を指す狭義の呼び名です。
- 洗濯機「愛妻号Day ファジィ」(NA-F50Y5・1990年2月1日発売)は入力2変数・ルール6個・MIN・MAX法という規模で、推論は後件部実数値の簡略化ファジィ推論。仙台市地下鉄(1987年7月15日開業)の予見ファジィ制御は、日立評論1988年7月号に「世界で最初のものである」と記録されています。
- 産業用制御では現役です。国際規格IEC 61131-7が2000年8月10日発行の第1版のまま有効で、MathWorksのFuzzy Logic ToolboxはSimulink PLC Coderと組み合わせてPLC向けコードを出力できます。一方でデータ分析の主戦場ではありません。PythonのScikit-Fuzzyは0.5.0(2024年8月22日・UTC)を最後に更新が止まっています。
- 向かないのは入力変数が多い対象です。ラベル3種で入力5個ならルールは3の5乗=243通りに膨らみます。
ファジィ理論とは|所属の度合いを0〜1で表す数学
「ファジィ(fuzzy)」という語の意味と、理論用語とのずれ
fuzzyは英語で「毛羽立った」「ぼやけた」を指す形容詞です。日本では1990年前後のファジィ家電ブームを通じて「ファジー」が流行語になり、「曖昧な」「いい加減な」という日常語として定着しました。ビジネスで「ファジーな指示」と言うときの用法がこれです。日本語表記はファジィ・ファジー・ファジイの3通りが混在します。
理論用語としてのファジィは、いい加減の反対に近いものです。ザデーの1965年の論文は、ファジィ集合を「所属の度合いが連続体をなす対象の類」と定義し、各対象に0から1までの値を与えるメンバーシップ関数によって特徴づけられるとしました。曖昧さを放置するのではなく、曖昧さの量を測る道具です。
なお、ソフトウェアテストの「ファジング(fuzzing)」は語源が同じだけの別技術で、ファジィ理論とは関係がありません。異常な入力を大量に送って脆弱性を探す手法のほうはファジングの仕組みとツールの解説で扱っています。
二値論理との違いと、ザデーが1965年に定義したこと
従来の集合論では、ある要素xは集合Aに属する(1)か属さない(0)かのどちらかです。閾値を28℃に置けば、27.9℃は完全に暑くなく28.0℃は完全に暑い、という不連続が生まれます。ファジィ集合なら所属度を0〜1の実数で与えられ、「暑い」に対して25℃なら0.3、30℃なら0.8と連続的に変化させられます。ザデーの論文はこの定義のうえで包含・和・積・補・関係・凸性を拡張し、互いに素であることを要求せずに凸ファジィ集合の分離定理を証明しました。
確率との違い|情報が増えても0.3のままである理由
最も混同されやすいのが確率です。確率は「暑い状態である確率が0.3」=事象が起きるかどうかの不確かさを表し、所属度は「暑いという概念に0.3だけ当てはまる」=概念そのものの境界の曖昧さを表します。違いは情報が増えたときに出ます。確率は温度計を見れば0か1に収束しますが、所属度は25℃だと正確に測っても0.3のまま。曖昧なのは気温の情報量ではなく「暑い」という語の境界だからです。確率のような総和1の制約もなく、「暑い0.3」と「涼しい0.4」は同時に成り立ちます。
ファジィ理論とファジィ論理(ファジィロジック)の違い
ファジィ論理(ファジー論理・ファジィロジック)は、命題の真理値を真か偽かの2値ではなく0〜1の連続値として扱う論理体系を指します。ファジィ集合の所属度を真理値と読み替えたもので、AND・OR・NOTがそれぞれMIN・MAX・1からの引き算に対応します。
ファジィ理論はこれを含むより広い枠組みで、ファジィ集合論・ファジィ論理・ファジィ推論・ファジィ制御をまとめた呼び方です。英語圏ではfuzzy logicが広義に使われ、日本語版Wikipediaの記事名も「ファジィ論理」。実務で厳密には区別されません。
ファジィ集合とメンバーシップ関数|曖昧さを数値にする部品
メンバーシップ関数の形と、誰がそれを決めるのか
メンバーシップ関数は、入力値を所属度へ変換する関数です。形状は三角形・台形・ガウス型などがありますが、組み込み実装では三角形と台形が主流。折れ線なので四則演算だけで計算でき、マイコンの負荷が小さいためです。三角形なら立ち上がりと立ち下がりの一次式2本を場合分けするだけで書けます(後掲コードの tri がその実装です)。
重要なのは、この関数の形をデータが決めるわけではないという点です。設計者が置きます。愛妻号Day ファジィの開発報告は、この作業をこう書いています。「ルールの作成およびパラメータのチューニングは、一般家庭でモニタしたデータおよび洗濯ソフト開発者のノウハウを基に行いました」。実測データは参照しますが、最終的に形を決めるのは人の判断です。ここが機械学習との分岐点になります。
言語変数|「とても長く」を修飾子で組み立てる
ファジィ理論のもう1つの中核が言語変数です。変数の値として数値ではなく「短い」「長い」といった言葉をとらせ、その言葉それぞれにメンバーシップ関数を割り当てます。そのうえで「非常に」「やや」といった修飾子を演算として定義します。代表的な扱いは、非常に=所属度の2乗、やや=平方根。「暑い」の所属度が0.8なら「非常に暑い」は0.64、「やや暑い」は0.89です。愛妻号のルールにある「洗濯時間をとても長くする」が、まさにこの表現にあたります。
和集合・積集合・補集合をMINとMAXで計算する
ザデーは1965年の論文で、ファジィ集合の基本演算を次のように与えました。集合演算が四則演算と大小比較だけで実装できます。
| 演算 | 通常の集合 | ファジィ集合での定義 | μA=0.3, μB=0.8 のとき |
|---|---|---|---|
| 積(AND・共通部分) | A∩B | min(μA, μB) | 0.3 |
| 和(OR・和集合) | A∪B | max(μA, μB) | 0.8 |
| 補(NOT・補集合) | Aの補 | 1 – μA | 0.7 |
ANDにminを使う理由は、複数条件を同時に満たす度合いは最も弱い条件で決まるという考え方です。「飽和時間が長く、かつ透過度が低い」の適合度は、長いの度合いと低いの度合いのうち小さいほうになります。この一行が、後述する推論の中核です。
ファジィ推論とファジィ制御の流れ|ルールから操作量が決まるまで
ファジィ化、ルールの合成、非ファジィ化の3段
センサーの生値から制御量を出すまでは、次の順に進みます。第1段のファジィ化では、実測値をメンバーシップ関数に通して各ラベルへの所属度に変換します。25℃という数値が「涼しい0.4/暑い0.3」といった度合いの組になるわけです。第2段で、IF〜THEN形式のルールを一斉に評価します。前件部の適合度をMINで求め、複数ルールの結果をMAXで重ね合わせると、まだ形の定まらない出力の分布が得られます。第3段の非ファジィ化で、その分布を1つの実数に潰します。手法は重心法、最大値法(中央最大値法を含む)、面積等分法、後件部が実数値のときの重み付き平均など。実装で多いのは重心法と重み付き平均です。この実数がモーターへの指令値や洗濯時間になります。
マムダニ型と高木・菅野型の違い
推論方式は大きく2系統です。マムダニ型は、E. H. Mamdani と S. Assilian が1975年の論文(International Journal of Man-Machine Studies 第7巻1号 1〜13頁)で、模型の蒸気機関を人の口述ルールで制御して示した方式。後件部もファジィ集合なので人の言葉との対応が保たれ、ルールを読んで意味が分かります。反面、重心を求める計算が重くなるのが難点です。
高木・菅野型は、高木友博と菅野道夫が1985年の論文(IEEE Transactions on Systems, Man, and Cybernetics 第SMC-15巻1号 116〜132頁)で提示した方式です。原論文は、前件部が入力のファジィ部分空間を表し、後件部はその空間での線形な入出力関係であるとしています(後に、定数だけを置く0次型を含めて整理されました)。出力側が重み付き平均で済むため軽く、制御用途で広く使われます。
愛妻号が採った「後件部実数値の簡略化ファジィ推論」は、出力の計算式としては後件部を定数に置いた0次型と同じものです(開発報告が引く参考文献に高木・菅野論文は無いため、系譜としての同一視はできません)。採用理由も明記されています。「推論演算の簡単化、メモリーの小容量化ができパラメータチューニングが容易であるという利点から」。1990年の家電マイコンに載る容量が、方式選択をそのまま決めていたわけです。
洗濯機「愛妻号Day ファジィ」のルールは6個だった
ファジー家電の代表として必ず挙がる製品ですが、中身が書かれた資料はほとんど参照されません。日本ファジィ学会誌 第2巻3号(1990年8月)に、松下電器産業の近藤信二(電化研究所)・木内光幸(洗濯機事業部)による製品紹介が収録されています。以下はその記述に基づきます。
| 項目 | 内容 |
|---|---|
| 型番・価格 | NA-F50Y5・83,000円 |
| 発売日 | 1990年(平成2年)2月1日 |
| 検出量 | 洗濯水の光の透過度 |
| 入力変数 | 2つ(定常状態になるまでの時間T、そのときの出力レベルV) |
| 出力 | その後の洗濯時間t |
| ルール数 | 6個 |
| 推論方法 | MIN・MAX法/後件部実数値の簡略化ファジィ推論 |
センサーは、排水弁の近傍に配水管をはさんで発光ダイオードとフォトトランジスタを対面させ、光の強度を電圧に変換して洗濯水の透過度を読み取ります(発光強度は給水直後の清水状態で所定レベルになるよう初期設定)。この1本の電圧波形から2つの情報を取り出しているのが要点です。洗濯を始めると汚れが溶け出して濁度が上がり電圧が下がりますが、その低下速度は泥汚れなら速く脂汚れなら遅い=汚れの質を示します。電圧は濁度の飽和とともに定常状態になり、そのレベルは汚れの量が多いほど低くなります。速度が質を、レベルが量を教える構造です。
ルールの例として報告に挙がっているのは「飽和時間が長く、かつ透過度が低ければ洗濯時間をとても長くする」という形です(報告本文は入力Tを「定常状態になるまでの時間」と呼び、ルール例では「飽和時間」と表現)。外乱への対処もあります。給水前に布量センサーで衣類の量を検出して水位を決めるため、衣類量が推論の外乱になりません。粉末洗剤と液体洗剤で透過度への影響が違う点は、入力変数のスケーリングファクタの補正で吸収しています。
この構成をコードにすると規模感がつかめます。次は報告の入力2変数・ルール6個・MIN合成・後件部実数値という骨格を再現したものです。メンバーシップ関数の数値と洗濯時間の値は報告に記載がないため、本記事で仮に置いています。
def tri(x, a, b, c):
"""三角形メンバーシップ関数(a で 0、b で 1、c で 0)"""
if x <= a or x >= c:
return 0.0
return (x - a) / (b - a) if x <= b else (c - x) / (c - b)
# 前件部のラベル。T = 濁度が定常になるまでの時間(秒)、V = そのときの透過度(%)
T_short = lambda t: tri(t, -60, 0, 120)
T_long = lambda t: tri(t, 30, 150, 270)
V_low = lambda v: tri(v, -20, 10, 45)
V_mid = lambda v: tri(v, 15, 45, 75)
V_high = lambda v: tri(v, 45, 80, 120)
# 6個のルール。後件部は集合ではなく実数値(洗濯時間・分)=簡略化ファジィ推論
RULES = [
(T_long, V_low, 18.0), # 飽和が遅く透過度が低い = とても長く
(T_long, V_mid, 13.0),
(T_long, V_high, 9.0),
(T_short, V_low, 11.0),
(T_short, V_mid, 8.0),
(T_short, V_high, 5.0), # 早く飽和し透過度が高い = 短く
]
def wash_time(t, v):
w = [(min(ft(t), fv(v)), y) for ft, fv, y in RULES] # 前件部は MIN で合成
s = sum(x for x, _ in w)
return None if s == 0 else sum(x * y for x, y in w) / s # 重み付き平均で確定値へ
for t, v in [(200, 20), (150, 45), (60, 55), (20, 90)]:
print("T=%3ds V=%2d%% -> %5.2f 分" % (t, v, wash_time(t, v)))
実行結果は次のとおりです。
T=200s V=20% -> 16.89 分
T=150s V=45% -> 13.00 分
T= 60s V=55% -> 8.50 分
T= 20s V=90% -> 5.00 分
飽和が遅く透過度も低い(T=200秒・V=20%)ときは16.89分、早く飽和して水が澄んでいる(T=20秒・V=90%)ときは5.00分。しきい値で場合分けしたのでは、この滑らかさは出ません。
「ファジー家電はマーケティング用語にすぎなかった」という総括は、少なくともこの製品には当たりません。推論方法まで学会誌に書かれています。同時に、入力2変数・ルール6個という規模は今日の基準では極めて小さいものです。この製品の勘所は理論の規模ではなく、電圧波形を「汚れの質」と「汚れの量」という人が理解できる2軸へ翻訳した設計のほうにあります。
仙台市地下鉄の予見ファジィ制御は世界初と記録されている
もう1つの代表例が鉄道です。日立評論 1988年7月号「仙台市地下鉄の鉄道トータルシステム」は、昭和62年(1987年)7月15日に開業した地下鉄について日立製作所が納入したシステムを解説し、執筆時点の状況として路線長13.59km・16駅・19編成で1日約20万人の利用客があると記しています。そして冒頭の要旨にこうあります。「予見ファジィ制御と光ビームによる対列車画像伝送は世界で最初のものである」。
予見ファジィ制御が何であるかも、同記事が定義しています。「IF〜THEN〜形式で表現されたAI(知識工学)ルールと、人間の熟練性を置き換えたシミュレーション手法と、複数の評価項目を0〜1の満足度で表現し、それらの合成から解を得るファジィ理論とを組み合わせた新しい制御手法である」。つまり純粋なファジィ制御ではなく、先読みのシミュレーションで操作の結果を予測し、それを複数の評価軸で0〜1に採点して合成し、最良の指令を選ぶ構造です。
改善されたと書かれている車両性能は3つです。乗り心地、停止精度、省エネルギー性。列車自動運転機能はATC(自動列車制御装置)のバックアップのもとに駅出発から次駅停止までを制御しており、安全の担保はATCが持ち、ファジィは快適性と精度を担当します。ただし同号に「何秒短縮した」「停止精度が何cmになった」といった定量値は載っていません。改善されたという記述までが一次資料から取れる範囲です。
ファジィ理論とAI・機械学習の違い
どちらも「人間らしい判断」を機械にさせる技術ですが、知識がどこから来るかが正反対です。
| 観点 | ファジィ理論 | 機械学習・深層学習 |
|---|---|---|
| 知識の出所 | 人が書くIF〜THENルール | データからの学習 |
| 必要データ量 | 少ない(設計者の知見で代替) | 多い |
| 出力の説明 | 発火したルールを追える | 原則として追えない |
| 更新方法 | ルールとパラメータを人が書き換える | 再学習 |
| 得意な対象 | 数式モデルが立たず熟練者がいる制御 | 大量データがあるパターン認識 |
系譜としては、ファジィ理論は知識をルールで書き下す第2次AIブームの流れに属し、AI・機械学習・深層学習の関係で言えば深層学習とは別の枝です。深層学習が規則をデータから抽出するのに対し、ファジィ推論は規則を先に人が与えます。
両者は排他ではありません。ANFIS(適応ニューロファジィ推論システム)は、ファジィ推論の構造を保ったままメンバーシップ関数のパラメータをニューラルネットの学習で調整します。ルールの読みやすさを残しつつ、チューニングをデータに任せる折衷案です。関連する用語はAI用語集にまとめています。
ファジィ理論は今も使われているのか
結論から言えば、ブームとしては終わり、産業用制御の実装技術としては規格の形で残りました。データ分析の主流からは外れています。3つの証拠で確認します。
1つ目は国際規格です。IEC 61131-7「Programmable controllers – Part 7: Fuzzy control programming」が2000年8月10日に第1版(Edition 1.0)として発行され、PLC向けのファジィ制御言語を定義しています。第2版は出ておらず、状態はValid(有効)のまま。欧州規格版SS-EN 61131-7も2001年9月28日承認で、スウェーデン規格協会(SIS)の製品ページに現在もValidと表示されます。
2つ目は商用製品です。MathWorksのFuzzy Logic Toolboxは現行製品で、マムダニ型・高木・菅野型の実装、区間タイプ2ファジィ推論、ANFISを備えます。注目したいのは出力形式です。製品ページは、スタンドアロン実行ファイル、MATLAB CoderまたはSimulink Coderを使ったC/C++コード、そしてSimulink PLC Coderを使ったIEC 61131-3 Structured Textを生成できると記しています。Structured Textには別製品のSimulink PLC Coderが要りますが、裏を返せば出口としてPLCが正式に用意されているということです。
3つ目はオープンソースです。PythonのファジィロジックライブラリであるScikit-Fuzzyは、最新版0.5.0の公開が2024年8月22日(UTC)。1つ前の0.4.2は2019年11月14日で、約4年9か月の空白を挟んだ1リリースでした。リポジトリはアーカイブされていないものの、既定ブランチの最終コミットは2024年8月25日で以降の更新がありません。同じ2026年、PyTorchは2月から7月までに2.10.0・2.11.0・2.12.0・2.13.0と4回更新しています。
この3つを並べると、「ファジー制御は現在も使われていますか」という問いへの答えが割れる理由が分かります。設備制御の現場では規格と商用ツールが生きているので現役、新しい研究やデータ分析の主戦場ではありません。どちらの世界を指しているかを決めないと、この問いには答えられないのです。
ファジィ制御の使いどころと向かない場面
ファジィ制御とPID制御の使い分け
PID制御は、目標値との偏差の比例・積分・微分を線形に足し合わせて操作量を作る方式で、対象の数式モデルが立つなら応答特性を設計指標から詰められます。ファジィ制御は逆に、モデルが立たない対象に対して熟練者の操作をIF〜THENで写し取ります。
日立製作所は前掲の日立評論1988年7月号で両者をこう比較しています。「長年にわたり改良発展してきた従来のPID(比例・積分・微分)制御手法に比べても飛躍的に柔軟性の高い良好な制御結果が期待できる」。ただしこれは自社技術を紹介する当事者の1988年時点の評価で、同条件で比較した実験値ではありません。本記事の見解としては、モデル化できる部分をPIDが持ち、人の判断が要る部分をファジィが持つ分担が現実的です。
避けるべき4つの条件
第1に、入力変数が多い対象です。ルール数は入力の個数に対して指数的に増えます。各入力に3種のラベルを置くなら入力2個で9通り、3個で27通り、5個なら3の5乗=243通りを人が書き、整合を保って保守しなければなりません。愛妻号の入力が2つに収まっていることは、この制約と整合します。入力が5個を超えるならファジィ推論以外を先に検討すべきです。
第2に、安定性や整定時間を保証したい対象。PIDや現代制御には極配置や周波数応答から設計指標を詰める道具がありますが、IF〜THENルールの集合からそうした保証は直接出てきません。安全に関わるループをファジィ単独で組むのは筋が悪く、仙台市地下鉄がATCのバックアップ下に予見ファジィ制御を置いた構成は妥当です。
第3に、十分な学習データがある対象。メンバーシップ関数とルールの根拠は最終的に設計者の主観なので、入出力の実測が大量にあるなら学習で直接推定するほうが精度で勝ちます。第4に、設計者が入れ替わる長期運用です。なぜメンバーシップ関数の頂点をその位置に置いたのかはルール表から読み取れず、設計意図が文書に残らないまま担当が代わると誰も触れないブラックボックスになります。学習モデルなら再学習という手がありますが、手書きルールにはそれがありません。
逆に、数式モデルが立たない・熟練者の操作知識か口述ルールがある・入力が2〜3個に収まる・出力の根拠を後から説明する必要がある、が揃うならファジィ制御は今でも有力です。仙台市地下鉄も愛妻号も、この4条件をすべて満たしていました。
よくある質問
ファジー理論とは簡単に言うと何ですか?
「暑い」「汚れている」のように境界がはっきりしない概念について、当てはまる度合いを0から1までの数値で表し、その数値で計算する数学です。0か1かの二択しかない従来の集合論を拡張したもので、1965年にロトフィ・ザデーが定義しました。
「ファジー」とはどういう意味ですか?
英語のfuzzyは「毛羽立った」「ぼやけた」を指す形容詞です。日本では1990年前後のファジィ家電ブームから「曖昧な」という日常語として広まり、ビジネスでも「ファジーな指示」のように使われます。ただし理論用語としてのファジィは「いい加減」ではなく、曖昧さを度合いとして厳密に扱う枠組みを指します。
メンバーシップ関数とは何ですか?
ある値がファジィ集合にどれだけ当てはまるかを、0から1までの所属度に変換する関数です。「暑い」という集合に対して25℃を0.3、30℃を0.8に対応させる、といった具合。形状は三角形・台形・ガウス型が使われ、組み込み用途では計算の軽い三角形と台形が主流です。形を決めるのはデータではなく設計者です。
家電の「ファジー機能」とは何ですか?
センサーの値を閾値で場合分けするのではなく、ファジィ推論で連続的に運転条件を決める機能を指します。洗濯機「愛妻号Day ファジィ」(NA-F50Y5)は、洗濯水の透過度が定常になるまでの時間とそのときのレベルという2入力から、6個のルールで洗濯時間を決めていました。当時はエアコン、炊飯器、カメラのオートフォーカスなどにも同種の制御が広がりましたが、製品ごとに入力もルールも異なるため、名称だけでは中身は特定できません。
ファジー制御は現在も使われていますか?
産業用制御では使われています。PLC向けのファジィ制御プログラミングを定めたIEC 61131-7は2000年8月10日発行の第1版のまま有効で、欧州規格版SS-EN 61131-7もSISの表示でValidです。MathWorksのFuzzy Logic Toolboxも現行製品で、別売のSimulink PLC Coderと組み合わせればIEC 61131-3 Structured Textを生成できます。一方でPythonのScikit-Fuzzyは0.5.0(2024年8月22日・UTC)で更新が止まり、データ分析の分野では主流ではありません。
ファジー理論とAIの関係は?
ファジィ理論は、知識を人がルールとして書き下す系譜のAI技術です。データから規則を学ぶ機械学習とは知識の出所が逆で、そのぶん少ないデータで動き、出力の根拠を発火したルールで説明できます。両者を組み合わせたANFISのように、ファジィ推論の構造を保ったままパラメータを学習で調整する手法もあります。