Fuzzy Logic
퍼지 논리는 0과 1 사이의 진릿값을 부여하므로 규칙 기반 시스템이 '따뜻하다' 또는 '가깝다'와 같은 모호한 용어로 추론할 수 있습니다. 제어기와 코드를 다룹니다.
퍼지 논리는 명제가 부분적으로 참일 수 있고 진릿값이 참 또는 거짓으로만 나뉘지 않고 0과 1 사이의 어떤 값이든 될 수 있는 다치 논리의 한 형태입니다. 이 개념은 버클리 소재 캘리포니아 대학교에서 Lotfi Zadeh가 1965년에 발표한 퍼지 집합 논문에서 비롯되었으며, 컴퓨터가 "따뜻한", "가까운", "빠른"과 같은 모호한 사람의 표현을 정밀한 계산에 사용할 수 있게 합니다. 퍼지 시스템은 전문가의 지식을 간단한 if-then 규칙으로 표현하고 부분적으로 적용되는 규칙들을 결합하므로 입력이 바뀌어도 출력이 부드럽게 변합니다. 이러한 특성 덕분에 퍼지 논리는 열차 제동부터 세탁기에 이르기까지 제어 공학의 핵심 기술로 자리 잡았으며, 해석 가능하고 해석 가능한 수동 조정 규칙이 필요한 인공지능(AI) 시스템에서도 계속 사용됩니다.
퍼지 집합 및 소속 함수#
고전 집합론에서는 원소가 집합에 속하거나 속하지 않습니다. 퍼지 집합은 소속 함수를 사용해 각 원소에 0과 1 사이의 소속도를 부여하며, 입력 범위에서 보통 삼각형, 사다리꼴 또는 가우스 곡선을 사용합니다. 인접한 집합은 서로 겹칠 수 있으므로 24 °C의 방은 동시에 "따뜻함"에 0.6, "더움"에 0.2의 소속도를 가질 수 있습니다. 임계값에서 갑자기 바뀌는 대신 레이블이 점진적으로 변합니다. 논리 연산자도 소속도에 맞게 확장됩니다. Zadeh의 초기 정의에서는 AND에 두 소속도의 최솟값, OR에 최댓값, NOT에 1에서 소속도를 뺀 값을 사용합니다. AND에 곱을 사용하는 등 다른 선택지는 t-norm이라는 계열에 속합니다.
퍼지 추론 시스템의 작동 방식#
퍼지 제어기는 센서의 정확한 측정값을 네 단계를 거쳐 명확한 명령으로 변환합니다:
- 퍼지화: 각 입력값이 모든 퍼지 집합에서 가지는 소속도를 매핑합니다. 예를 들어 장애물이 얼마나 "가까운지", "중간인지", "먼지"를 판단합니다.
- 규칙 평가: "거리가 가까우면 강하게 제동한다"와 같은 각 if-then 규칙을 조건이 성립하는 정도만큼 발동합니다.
- 집계: 각 규칙의 출력 집합을 발동 강도로 제한하고, 보통 최댓값을 사용해 제한된 집합을 결합합니다.
- 비퍼지화: 결합된 집합을 하나의 숫자로 축약하며, 가장 흔히 무게중심을 사용합니다.
이 방식은 1975년 Ebrahim Mamdani가 Sedrak Assilian과 함께 실험실 증기 엔진을 제어하는 데 사용한 Mamdani 방법입니다. Takagi-Sugeno 시스템은 출력 집합을 입력의 함수로 대체하고 그 평균을 계산하므로 연산 비용이 낮고 데이터에 맞춰 조정하기 쉽습니다. 다음 예제는 장애물까지의 거리를 바탕으로 제동력을 설정하는 3규칙 Mamdani 제어기를 구현합니다:
import numpy as np
# Output fuzzy sets over braking force (0-100%)
force = np.linspace(0, 100, 501)
gentle = np.interp(force, [0, 40], [1, 0])
firm = np.interp(force, [20, 50, 80], [0, 1, 0])
hard = np.interp(force, [60, 100], [0, 1])
for distance in [8, 15, 22, 35]:
# Fuzzification: how near, medium, and far the obstacle is (meters)
near = np.interp(distance, [5, 20], [1, 0])
medium = np.interp(distance, [10, 20, 30], [0, 1, 0])
far = np.interp(distance, [20, 40], [0, 1])
# Rules: near -> hard, medium -> firm, far -> gentle; clip each set (min), combine (max)
combined = np.maximum.reduce([np.minimum(near, hard), np.minimum(medium, firm), np.minimum(far, gentle)])
# Defuzzification: the centroid of the combined set is the crisp braking command
print(f"{distance:>2} m -> brake {np.sum(force * combined) / np.sum(combined):.0f}%")스크립트는 거리가 8, 15, 22, 35미터일 때 제동력이 각각 86%, 60%, 47%, 14%라고 출력합니다. 15미터에서는 장애물이 "가까움"에 0.33, "중간"에 0.5의 소속도를 가지므로 강한 제동 규칙과 적당한 제동 규칙이 모두 부분적으로 발동해 60%의 제동력이 계산됩니다. 세 가지 규칙은 명령이 급격히 바뀌는 임계값 없이 부드러운 제동 곡선을 만듭니다.
응용 분야#
- 제어 시스템: Hitachi의 퍼지 자동 열차 운전 시스템은 1987년 개통 당시 센다이 지하철 난보쿠선의 가속과 제동을 제어하여 더 부드러운 승차감과 더 정확한 정차를 구현했습니다. 퍼지 제어기는 세탁기, 밥솥, 에어컨 같은 가전제품도 부정확한 센서 측정값을 바탕으로 조정합니다.
- 이미지 분할: k-means 클러스터링을 부드럽게 확장한 퍼지 c-means는 각 픽셀에 모든 클러스터에 대한 소속도를 부여합니다. 의료 영상 분석에서 널리 사용되며, 예를 들어 MRI 스캔에서 뇌 조직 유형을 구분할 때 경계의 픽셀이 두 조직을 모두 포함할 수 있는 상황을 처리합니다.
- 비전 기반 의사 결정: Ultralytics의 속도 추정 솔루션은 YOLO26 모델로 차량을 추적하고 각 차량의 속도를 km/h로 보고합니다. 퍼지 규칙 기반 시스템은 이 명확한 입력을 느림, 보통 또는 빠름으로 평가한 후 경고 수준이나 신호 시간을 설정할 수 있습니다.
- 뉴로-퍼지 시스템: Jyh-Shing Roger Jang이 1993년에 소개한 적응형 뉴로-퍼지 추론 시스템(ANFIS)은 규칙의 가독성을 유지하면서 신경망 학습 방법으로 데이터에서 소속 함수와 규칙 매개변수를 학습합니다.
퍼지 논리와 확률 및 기호 AI 비교#
퍼지 논리와 확률은 모두 0과 1 사이의 숫자를 사용하지만 서로 다른 종류의 불확실성을 표현합니다. 베이즈 네트워크가 추론에 사용하는 확률은 내일 비가 올 확률이 30%인 경우처럼 명확히 정의된 사건이 발생할 가능성을 나타냅니다. 퍼지 소속도는 50 °C의 커피가 "따뜻하다"에 0.7의 소속도를 갖는 경우처럼 모호한 설명이 알려진 상태에 얼마나 잘 들어맞는지를 표현합니다. 고전적인 기호 AI와 비교하면, 퍼지 규칙 기반 시스템은 전문가 시스템의 읽기 쉬운 if-then 형식을 유지하면서 각 규칙의 참/거짓 조건을 정도로 바꿉니다. 따라서 여러 규칙이 하나의 의사 결정에 동시에 기여할 수 있습니다.










