소속 함수 — '조금 덥다'를 숫자로 바꾸기
경계를 한 줄로 끊는 대신, 어떤 값이 레이블에 얼마나 잘 맞는지를 0에서 1 사이의 소속도로 표현한다.
온도 레이블은 서로 조금씩 겹쳐 있습니다. 예컨대 26°C에서는 "쾌적 0.50, 더움 0.25"처럼 하나의 값이 여러 레이블에 동시에 속할 수 있습니다.
용어 정리 — 소속 함수와 소속도
본 장에서는 다음 두 용어를 구분해서 사용합니다.
- 소속 함수 (membership function): 입력값
x를 받아 레이블과의 적합도를 0에서 1 사이로 반환하는 함수 자체. 삼각형이나 사다리꼴 같은 형태를 가집니다. - 소속도 (membership degree): 그 함수가 어떤
x에 대해 반환한 출력값. 예를 들어 "쾌적(26) = 0.50"의 우변 0.50이 소속도입니다.
요컨대 「소속 함수는 소속도를 반환하는 함수」, 「소속도는 그 함수의 출력」이라는 관계입니다. 이후 본문에서는 이 정의에 따릅니다.
함수 형태 선택 — 왜 삼각형과 사다리꼴인가
소속 함수에는 가우스형 (부드러운 종 모양 곡선), 시그모이드형 (한쪽만 솟아오르는 S자), 삼각형, 사다리꼴 등이 있습니다. 본 코스에서 삼각형과 사다리꼴만 사용하는 것은 입문자에게 다음 세 가지 점에서 유리하기 때문입니다.
- 매개변수가 적음: 삼각형은 3점, 사다리꼴은 4점으로 결정되어 설계가 쉽습니다.
- 손 계산이 쉬움: 직선 식으로 쓸 수 있어 계산기 없이도 소속도를 따라갈 수 있습니다.
- 구간 의미를 읽기 쉬움: 정점과 어깨 위치가 그대로 「가장 잘 맞는 곳」, 「포화 영역」을 나타냅니다.
연속적인 미분이 필요한 경우(적응 제어나 최적화에 결합할 때) 가우스형을 선택하기도 합니다. 본 코스의 범위 안에서는 정확도 차이가 미미하므로, 다루기 쉬운 삼각형과 사다리꼴로 진행합니다.
우선 온도 레이블은 세 개만 준비한다
이 코스 전체에서 온도는 추움 / 쾌적 / 더움 세 레이블로 다룹니다. 함수는 이 세 개가 전부입니다.
| 레이블 | 함수 | 의미 |
|---|---|---|
| 추움 | trapmf(x, 16, 16, 19, 23) | 16~19°C에서는 확실히 추움, 23°C를 향해 점차 약해집니다. |
| 쾌적 | trimf(x, 20, 24, 28) | 24°C에서 가장 쾌적, 양쪽으로 멀어질수록 약해집니다. |
| 더움 | trapmf(x, 25, 29, 34, 34) | 25°C를 넘으면 점점 더워지고, 29°C 이상에서는 확실히 덥습니다. |
예를 들어 26°C에서는 쾌적이 오른쪽 기울기 위에, 더움이 왼쪽 기울기 위에 놓입니다.
comfortable(26) = (28 - 26) / (28 - 24) = 0.50
hot(26) = (26 - 25) / (29 - 25) = 0.25
즉 26°C는 "쾌적하기도 하면서 약간 덥기도 하다"로 표현할 수 있습니다. 이것이 0/1 임계값과의 본질적인 차이입니다.
연습문제 2-1 — 온도 소속도 계산하기
온도 레이블: 추움 = trap(16,16,19,23), 쾌적 = tri(20,24,28), 더움 = trap(25,29,34,34).
Q1. 쾌적 삼각형 tri(20,24,28)에서 22°C의 소속도는 얼마입니까?
22°C는 왼쪽 기울기 위에 있으므로 (22-20)/(24-20) = 0.50입니다.
Q2. 더움 사다리꼴 trap(25,29,34,34)에서 26°C의 소속도는 얼마입니까?
26°C는 상승 구간 위에 있으므로 (26-25)/(29-25) = 0.25입니다.
Q3. 쾌적 삼각형 tri(20,24,28)에서 27°C의 소속도는 얼마입니까?
27°C는 오른쪽 기울기 위에 있으므로 (28-27)/(28-24) = 0.25입니다.
습도 레이블도 같은 방식으로 겹친다
습도도 건조 / 보통 / 습함 세 레이블을 유지합니다.
| 레이블 | 함수 | 예시 |
|---|---|---|
| 건조 | 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"이 됩니다. 하나의 레이블에 단정 짓는 대신, 이 값이 양쪽을 조금씩 보유하므로 다음 장의 규칙이 동시에 발화할 수 있습니다.
연습문제 2-2 — 습도 소속도 계산하기
습도 레이블: 건조 = trap(20,20,30,45), 보통 = tri(35,55,75), 습함 = trap(60,75,90,90).
Q1. 습함 사다리꼴 trap(60,75,90,90)에서 68%의 소속도는 얼마입니까?
68%는 상승 구간 위에 있으므로 (68-60)/(75-60) = 8/15 ≈ 0.53입니다.
Q2. 건조 사다리꼴 trap(20,20,30,45)에서 40%의 소속도는 얼마입니까?
40%는 오른쪽 기울기 위에 있으므로 (45-40)/(45-30) = 5/15 ≈ 0.33입니다.
소속도는 확률이 아니다
여기서의 0.53은 "68%일 확률이 53%"라는 의미가 아닙니다. 오직 한 가지 의미, 즉 68%라는 값이 '습함'이라는 레이블에 얼마나 잘 들어맞는가를 나타냅니다. 그래서 쾌적과 더움, 혹은 보통과 습함이 모순 없이 동시에 부분적으로 성립할 수 있는 것입니다.
퍼지 제어에서는 애매함을 없애는 것이 아니라, 애매함을 숫자로 이어서 다음 단계로 넘겨줍니다.
소속도만으로는 제어가 되지 않는다 — 다음 장으로의 다리
소속도는 「입력 레이블에 얼마나 잘 맞는가」를 나타낼 뿐, 아직 출력(팬을 몇 %로 돌릴지)을 결정하는 메커니즘이 없습니다. 예를 들어 26°C, 68%에서 "쾌적 0.50・더움 0.25・보통 0.35・습함 0.53"이 나와도 이것만으로는 팬을 약풍으로 돌릴지 강풍으로 돌릴지 결정되지 않습니다.
그래서 제3장에서는 입력 레이블의 소속도로부터 출력 레이블(약풍 / 중풍 / 강풍)을 도출하는 IF-THEN 규칙을 도입합니다. 소속도는 규칙에 전달되는 재료이고, 규칙이 그 재료를 조합해 주장을 만들어 내는 분업 구조가 됩니다.