합동회사 코무라소프트
2장

소속 함수 — '조금 덥다'를 숫자로 바꾸기

경계를 한 줄로 끊는 대신, 어떤 값이 레이블에 얼마나 잘 맞는지를 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의 소속도는 얼마입니까?

Q2. 더움 사다리꼴 trap(25,29,34,34)에서 26°C의 소속도는 얼마입니까?

Q3. 쾌적 삼각형 tri(20,24,28)에서 27°C의 소속도는 얼마입니까?

습도 레이블도 같은 방식으로 겹친다

습도도 건조 / 보통 / 습함 세 레이블을 유지합니다.

레이블함수예시
건조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%의 소속도는 얼마입니까?

Q2. 건조 사다리꼴 trap(20,20,30,45)에서 40%의 소속도는 얼마입니까?

소속도는 확률이 아니다

여기서의 0.53은 "68%일 확률이 53%"라는 의미가 아닙니다. 오직 한 가지 의미, 즉 68%라는 값이 '습함'이라는 레이블에 얼마나 잘 들어맞는가를 나타냅니다. 그래서 쾌적과 더움, 혹은 보통과 습함이 모순 없이 동시에 부분적으로 성립할 수 있는 것입니다.

퍼지 제어에서는 애매함을 없애는 것이 아니라, 애매함을 숫자로 이어서 다음 단계로 넘겨줍니다.

소속도만으로는 제어가 되지 않는다 — 다음 장으로의 다리

소속도는 「입력 레이블에 얼마나 잘 맞는가」를 나타낼 뿐, 아직 출력(팬을 몇 %로 돌릴지)을 결정하는 메커니즘이 없습니다. 예를 들어 26°C, 68%에서 "쾌적 0.50・더움 0.25・보통 0.35・습함 0.53"이 나와도 이것만으로는 팬을 약풍으로 돌릴지 강풍으로 돌릴지 결정되지 않습니다.

그래서 제3장에서는 입력 레이블의 소속도로부터 출력 레이블(약풍 / 중풍 / 강풍)을 도출하는 IF-THEN 규칙을 도입합니다. 소속도는 규칙에 전달되는 재료이고, 규칙이 그 재료를 조합해 주장을 만들어 내는 분업 구조가 됩니다.