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

집약과 역퍼지화 — 하나의 출력으로 되돌리기

발화도로 출력 피크를 클립하고, 서로 겹쳐 쌓은 뒤, 마지막에 하나의 연속값으로 읽어낸다.

집약된 출력과 무게중심법

26°C / 68%의 예에서는 중풍 주장이 0.50, 강풍 주장이 0.25입니다. 무게중심법으로 읽으면 출력은 약 62.05%가 됩니다.

발화도는 "출력 피크를 어느 높이로 위에서 제한할지"를 나타낸다

앞 장의 결과를 다시 정리하면, 26°C / 68%에서 집약된 주장은 다음 두 가지였습니다.

약풍 0.00 중풍 0.50 강풍 0.25

이는 "중풍 피크를 높이 0.50에서 클립하고, 강풍 피크를 높이 0.25에서 클립한다"로 읽을 수 있습니다. 클립(clipping)이란 원래의 삼각형이나 사다리꼴 소속 함수가 발화도보다 높은 곳까지는 절대 뻗지 않도록 「천장을 설정하는」 조작입니다. 발화도가 0.50인 규칙은 그 출력 레이블이 최대 0.50까지만 효과를 낸다는 의미이므로, 피크의 정점을 0.50에서 수평으로 잘라낸 사다리꼴이 됩니다. 여러 규칙이 같은 레이블에 대응하더라도 결국 출력 측에는 레이블당 하나의 클립된 피크만 남습니다.

왜 클립인가: 발화도는 그 규칙의 「효과 상한」으로 해석합니다. 피크의 어느 부분도 발화도를 초과해서 효과를 내지 않으므로, 피크의 위쪽을 수평으로 눌러 내리는 것이 자연스럽습니다. 대신 피크 전체를 발화도로 곱하는 스케일링(Larsen 법)도 가능하지만, Mamdani 방식에서는 클립(min에 의한 절단)이 표준입니다.

연습문제 4-1 — 절단과 집약 확인

먼저 '각 피크를 어느 높이에서 자를지'만 확인합니다.

Q1. 두 규칙에 의해 중풍 피크가 0.35와 0.50의 높이에서 절단될 때, 집약된 중풍의 높이는 얼마입니까?

Q2. 두 규칙에 의해 강풍 피크가 0.25와 0.25의 높이에서 절단될 때, 집약된 강풍의 높이는 얼마입니까?

정확한 무게중심법 — 연속판 정의

클립한 두 피크를 겹쳐 쌓은 결과를 출력축 x 위의 함수 μ_agg(x)로 적습니다. 무게중심법(centre of gravity, COG)은 이 함수의 무게중심을 하나의 연속값으로 읽어내는 방법으로, 정의는 다음과 같습니다.

u = ∫ x · μ_agg(x) dx / ∫ μ_agg(x) dx

구현에서는 x0, 1, 2, …, 100으로 이산화해 합으로 치환합니다.

u = Σ ( x · μ_agg(x) ) / Σ μ_agg(x)

정확한 무게중심법을 단계별로 따라가기 — 26°C / 68% 사례

본 코스의 시뮬레이터는 출력축 x = 0..100을 1 간격으로 스캔하면서 각 x에 대해 다음과 같이 μ_agg(x)를 구합니다.

  1. 각 출력 레이블(약풍 / 중풍 / 강풍)의 소속 함수를 x에서 평가하여 소속도 μ_low(x), μ_med(x), μ_high(x)를 얻는다.
  2. 각각의 집약 높이(low = 0.00, medium = 0.50, high = 0.25)를 상한으로 클립한다:
    μ_low_clipped(x) = min(μ_low(x), 0.00) = 0
    μ_med_clipped(x) = min(μ_med(x), 0.50)
    μ_high_clipped(x) = min(μ_high(x), 0.25)
  3. 세 값의 최댓값을 취한다: μ_agg(x) = max(μ_low_clipped, μ_med_clipped, μ_high_clipped).
  4. x를 0에서 100까지 이동시키며 x · μ_agg(x)μ_agg(x)를 각각 누적한다.

본 코스의 출력 레이블은 약풍 = trimf(x, 0, 20, 40), 중풍 = trimf(x, 30, 50, 70), 강풍 = trimf(x, 65, 85, 100)입니다. 이를 1 간격으로 집계하면 근사 계산이지만 다음과 같은 수치가 나옵니다.

Σ μ_agg(x)        ≈ 27.45      (면적)
Σ x · μ_agg(x)    ≈ 1703.00    (1차 모멘트)
u = 1703.00 / 27.45 ≈ 62.05    (무게중심)

시뮬레이터가 표시하는 「62.05%」가 바로 이 값입니다. 출력축 위에서 「중풍 사다리꼴(높이 0.50・x = 30~70)」과 「강풍 사다리꼴(높이 0.25・x = 65~100)」의 겹치는 부분을 포함해 하나의 도형으로 보고, 그 무게중심의 x 좌표를 읽어내는 것뿐입니다.

수계산에서는 레이블 중심 근사법으로 충분

정확판은 적분(또는 100점의 합)이므로 종이 위에서는 부담스럽습니다. 그래서 레이블 중심 근사법을 도입합니다. 이는 각 출력 레이블의 「가장 잘 맞는 점」(삼각형의 정점)만 대표점으로 삼아 무게중심을 가중평균으로 근사하는 방법입니다.

약풍 = 20, 중풍 = 50, 강풍 = 85   (각 레이블의 중심점)
u ≈ (20×low + 50×medium + 85×high) / (low + medium + high)

이번 경우 높이는 low = 0.00, medium = 0.50, high = 0.25이므로,

u ≈ (20×0 + 50×0.50 + 85×0.25) / (0 + 0.50 + 0.25)
  = 46.25 / 0.75
  = 61.67

정확한 무게중심 62.05에 대해 61.67로, 오차는 0.4 포인트 이내입니다. 레이블이 대칭 삼각형으로 거의 등간격으로 배치되어 있을 때, 레이블 중심 근사법은 정확한 무게중심법의 좋은 근사가 됩니다. 본 코스의 연습문제에서는 특별한 언급이 없는 한 레이블 중심 근사법으로 답하기로 합니다.

연습문제 4-2 — 레이블 중심 근사법으로 출력 구하기

수계산에서는 대표점으로 약풍 = 20, 중풍 = 50, 강풍 = 85를 사용합니다. 높이는 약풍 = 0.00, 중풍 = 0.50, 강풍 = 0.25입니다.

Q1. 분자 20×low + 50×medium + 85×high의 값은 얼마입니까?

Q2. 분모 low + medium + high의 값은 얼마입니까?

Q3. 레이블 중심 근사법에 의한 최종 출력은 얼마입니까?

%

무게중심법이 유용한 이유

약한 주장도 완전히 사라지지 않는다
발화도가 0.10이나 0.20인 규칙도 완전히 버려지지 않고 무게중심을 조금 움직입니다.
입력의 작은 변화가 출력의 작은 변화를 만든다
경계 근처에서도 한 규칙이 갑자기 완전히 이기지 않고, 무게중심이 부드럽게 이동합니다.