合同会社小村ソフト
第 2 章

メンバーシップ関数 — 「少し暑い」を数にする

境界を 1 本で切る代わりに、ラベルとの相性を 0〜1 の所属度として表す。

温度のメンバーシップ関数

温度ラベルは互いに少し重なります。26℃ なら「快適 0.50、暑い 0.25」のように、複数ラベルへ同時に所属できます。

用語の整理 — メンバーシップ関数と所属度

本章では 2 つの言葉を使い分けます。

  • メンバーシップ関数 (membership function):入力値 x を受け取って、ラベルとの相性を 0〜1 で返す関数そのもの。三角形・台形などの形状を持ちます。
  • 所属度 (membership degree):その関数が x に対して返した出力値。たとえば「快適(26)=0.50」の右辺 0.50 が所属度です。

つまり「メンバーシップ関数は所属度を返す関数」「所属度はその関数の出力」という関係です。以降の本文ではこの定義に従います。

関数形の選び方 — なぜ三角形・台形なのか

メンバーシップ関数の形状にはガウス型 (滑らかな釣鐘曲線)、シグモイド型 (片側だけ立ち上がる S 字)、三角形、台形などがあります。本講座で三角形と台形だけを使うのは、次の 3 点が初学者向けに有利なためです。

  • パラメータが少ない:三角形は 3 点、台形は 4 点で決まり、設計が容易です。
  • 手計算しやすい:直線の式で書けるので、所属度を電卓なしでも追えます。
  • 区間の意味が読みやすい:頂点・肩の位置がそのまま「もっとも合うところ」「飽和域」を表します。

連続的な微分が必要なとき (適応制御や最適化に組み込むとき) はガウス型を選ぶこともあります。本講座の範囲では精度差はわずかなので、扱いの簡単な三角形・台形で進めます。

温度ラベルを 3 本だけ用意する

この講座では温度を 寒い / 快適 / 暑い の 3 ラベルで扱います。関数は次の 3 本だけです。

ラベル関数意味
寒いtrapmf(x, 16, 16, 19, 23)16〜19℃ はしっかり寒い。23℃ に向かって徐々に弱まる。
快適trimf(x, 20, 24, 28)24℃ がいちばん快適で、その前後へ行くほど弱まる。
暑いtrapmf(x, 25, 29, 34, 34)25℃ を超えると徐々に暑くなり、29℃ 以上はしっかり暑い。

たとえば 26℃ では、快適は右の斜面、暑いは左の斜面にいます。

快適(26) = (28 - 26) / (28 - 24) = 0.50
暑い(26) = (26 - 25) / (29 - 25) = 0.25

つまり 26℃ は「快適でもあるし、少し暑くもある」と表現できます。ここが 0/1 のしきい値と本質的に異なる点です。

小問 2-1 — 温度の所属度を計算する

温度ラベルは 寒い=trap(16,16,19,23)、快適=tri(20,24,28)、暑い=trap(25,29,34,34) です。

Q1. 快適の三角形 tri(20,24,28) で、22℃ の所属度はいくつですか。

Q2. 暑いの台形 trap(25,29,34,34) で、26℃ の所属度はいくつですか。

Q3. 快適の三角形 tri(20,24,28) で、27℃ の所属度はいくつですか。

湿度ラベルも同じように重ねる

湿度も 乾燥 / ふつう / 蒸し暑い の 3 ラベルで持ちます。

ラベル関数
乾燥trapmf(x, 20, 20, 30, 45)40% なら (45-40)/(45-30)=0.33
ふつうtrimf(x, 35, 55, 75)68% なら (75-68)/(75-55)=0.35
蒸し暑いtrapmf(x, 60, 75, 90, 90)68% なら (68-60)/(75-60)=0.53

68% は「ふつう 0.35、蒸し暑い 0.53」です。1 本だけに決め打ちせず、両方を少しずつ持つことで、次章のルールが複数同時に効けるようになります。

小問 2-2 — 湿度の所属度を計算する

湿度ラベルは 乾燥=trap(20,20,30,45)、ふつう=tri(35,55,75)、蒸し暑い=trap(60,75,90,90) です。

Q1. 蒸し暑いの台形 trap(60,75,90,90) で、68% の所属度はいくつですか。

Q2. 乾燥の台形 trap(20,20,30,45) で、40% の所属度はいくつですか。

所属度は確率ではない

ここでの 0.53 は「68% である確率 53%」ではありません。意味はただ 1 つ、68% が『蒸し暑い』というラベルにどれくらい合うかです。だから快適と暑い、ふつうと蒸し暑いが同時に少しずつ成り立っても問題ありません。

ファジィ制御では、曖昧さを消すのではなく、曖昧さを数のまま次の計算へ渡します。

所属度だけでは制御にならない — 次章への橋渡し

所属度は「入力ラベルにどれくらい合うか」を表すだけで、まだ出力 (ファン何 %?) を決める仕組みがありません。たとえば 26℃・68% で「快適 0.50・暑い 0.25・ふつう 0.35・蒸し暑い 0.53」が出ても、これだけではファンを弱風で回すか強風で回すかは決まりません。

そこで第 3 章では、入力ラベルの所属度から出力ラベル (弱風 / 中風 / 強風) を導くIF-THEN ルールを導入します。所属度はルールに渡す素材であり、ルールがその素材を組み合わせて主張を作る、という分業になります。