퍼지 이론 이란?

퍼지 논리(Fuzzy logic) 혹은 퍼지 이론(Fuzzy theory) 이라 불리는 것으로 행동 또는 현상이 확실하지 않은 상태, 즉, 불확실한 상태를 표현하는 방법을 말한다. 이는 1965년 미국 버클리 대학의 L.A. Zadeh 교수가 Fuzzy Set이라는 논문에서 발표한 방법이다[1].

기존 논리에서는 확실한 것들은 즉, 참 또는 거짓 두 가지로만 구분 할 수 있었는데, 퍼지 이론에서는 불확실한 상태들을 참과 거짓(0과 1)의 이진 논리에서 벗어나 경계가 명확하지 않은 것을 표현할 수 있다. 퍼지 이론은 애매한 집합을 퍼지 집합을 이용하여 추상화하고, 수학적으로 정리할 수 있다.

애매한 값

퍼지 이론은 참 또는 거짓 뿐인 기존 명제 논리와는 다르다. 인간이 생각하는 논리는 참 또는 거짓으로만 구분되지 않기 때문에 기존 명제 논리만으로는 인공지능을 구현하기가 어렵다. 인간이 생각하는 애매한 표현을 구현할 수 있는 방법이 바로 퍼지 이론인 것이다.

그럼 퍼지 이론이 필요한 경우를 한번 생각해보자. 만약 ‘작은 숫자들을 골라 주세요’라는 명령을 처리하는 시스템이 있다고 생각해보자. 여기서 ‘작은’ 이라는 범위는 사람마다 다르고 매우 주관적일 것이다. 어떤 사람은 10보다 작은 수를 생각할 것이고 어떤 사람은 100보다 작은 수를 생각할 수도 있다. 이처럼 명확하게 정의하기 어려운 애매한 값들은 범위가 명확하지 않기에 기존 논리 구조로 나타낼 수 없다.

퍼지 이론

퍼지 이론에서는 이러한 불분명한 기준들을 여러 단계별로 설정 하여 설명 할 수 있는 방법을 제시한다. 더 구체적으로는 ‘작은 숫자’의 경우 해당하는 수가 0.5 만큼 작은 수 인지, 0.7 만큼 작은 수 인지 등 애매한 수의 범위를 분류하는 방법을 제시한다는 것이다. 같은 논리로 물의 온도에 대해서도 ‘뜨거운 물’, ‘매우 뜨거운’, ‘조금 뜨거운’, ‘약간 차가운’ 등도 분류할 수 있게 된다.

또 다른 예로 방 온도를 제어하는 시스템이 있다고 가정해보자. 사람이 느끼는 온도는 35°C를 넘을 때 갑자기 더워지거나 34°C보다 낮아질 때 갑자기 시원해지지는 않는다. 다만 온도에 따라 어느 서서히 더워지거나 서서히 시원해질 뿐이다. 만약 에어컨이 기존 명제 논리로 온도가 35°C보다 높을 때 에어컨을 켜도록 프로그래밍 되었다면, 현재 온도 34.5°C는 과연 시원한 상태인가? 이 시스템은 잘 동작하는 시스템인가?

즉 실제 생활에서는 시원한 구간과 더운 구간 사이에 변형점 생기기 마련이고 각 구간이 서로 중첩되어 표현될 수 밖에 없다는 것이다. 이것은 단순히 기존 명제 논리처럼 구간을 나누어 true 또는 false로 표현할 수는 없는 문제이다. 이러한 문제를 해결하기 위해서는 새로운 논리인 퍼지 이론이 필요하다.

그림1. 방의 온도를 제어하는 시스템 예시.

그림1. 에서 선으로 그어진 구간을 퍼지 이론으로 설명하면 70% 시원하고 30% 따뜻하다고 표현할 수 있다. 이때 잘 동작하는 시스템이라면 현재 온도가 30°C 이상이면 이면 30% 출력으로 에어컨을 켜고 현재 온도가 35°C 이상이면 최대 출력으로 켜게 될 것이다.

이처럼 퍼지 이론은 ABS 혹은 순항 통제, 에어컨의 인공지능 온도 조절 기능, 반지의 제왕 영화의 CG를 담당한 MASSIVE 엔진의 기본 알고리즘, 카메라, 디지털 이미지 프로세싱. 이미지의 경계를 찾아내는 것 같은 일, 전기 밥솥, 식기 세척기, 엘리베이터, 컴퓨터 게임의 인공지능, 엘리베이터 교통 흐름 분석 등에 포함되어 활용되고 있다.

확률과의 차이점

주의할 점은 퍼지 이론은 확률 이론과 근본적으로 다르다는 점이다. 어떤 사람이 거실과 침실 사이에 서 있다고 할 때, “그 사람은 50% 거실, 50% 침실에 서 있다” 라고 말하는 것과 “그 사람은 50%의 확률로 거실에 있거나 50% 확률로 침실에 있다”라고 말하는 것은 다르다는 것이다. 퍼지 이론은 “회색 이론”이라는 별명으로도 불리기도 하는데 퍼지 이론은 흑백 사이의 수많은 회색을 상정하기 때문이다. 퍼지 이론의 개념을 이야기 할때 “조금”, “약간”, “매우” 등 형용사를 많이 사용하는 것을 볼 수 있는데 이때문에 수학적이지 않다고 생각하는 사람 도 있다고 한다[2].

퍼지 집합

일반 집합론에서 생각해보면, 어느 집합에 들어가 있느냐에 따라 True 또는 False로 나눈다. 하지만 퍼지 집합은 조금 다르게 그래프로 표시된다. 아래 두 집합의 그래프를 살펴보자.

그림2. 키가 대략 170인 사람의 집합, 키가 제법 큰 사람의 집합

그림2. 에서 키가 대략 170cm인 사람의 집합을 보면 168cm인 사람은 키가 대략 170cm인 사람의 집합에 거의 포함된다. 이때 0~1 사이의 값으로 0.7쯤 포함된다 라고 퍼지 집합에서 표현할 수 있다. 키가 제법 큰 사람의 집합도 마찬가지이다. 퍼지 집합도 연산이 가능한데 and, or, not 의 연산의 예를 보면 아래 그림3 과 같다.

그림3. 퍼지 집합의 연산자 [4]

집합 연산의 결과를 간단히 계산하는 방법으로 and 연산은 두 그래프 중에 작은 값의 그래프를 취하면 되고, or는 둘 중에 큰 값을 취하면 된다. not은 1에서 해당 값을 빼면 쉽게 연상이 가능하다.

그림4. 키가 대략 170인 사람의 집합, 키가 제법 큰 사람의 집합, and 연산

그림4에서 키가 대략 170cm이고 제법 큰 사람의 집합(and 연산)을 구하면 붉은색 화살표 영역이 될 것이다.

소속 함수

퍼지집합을 사용하기 위해서는 가장 먼저 퍼지집합을 정의해야 한다. 퍼지 집합의 값들은 0부터 1사이 소속도(degree of membership)로 나타낼 수 있다. 예를 들어 X를 실수 전체 집합이라 하고, A를 “0보다 훨씬 큰 실수”의 퍼지집합이라 할 때, 원소 x가 A의 집합에 소속될 정도를 식으로 나타내면 다음과 같다[6].

\[\mu_A(x) = \begin{cases} 0 &\text{if } x\le0 \\ \dfrac{1}{1+\dfrac{100}{x^2}} &\text{if } x>0 \end{cases}\]

비 퍼지화

그럼 소속 함수로 구해진 값들을 어떻게 출력값으로 사용하면 될까? 현재 온도가 30% 덥고 40% 시원한 것을 어떻게 에어컨 출력에 대입 시킬 것인가? 정확한 값으로 대응하는 방법이 바로 비 퍼지화(defuzzification) 이다. 무게 중심법이 정확하다고 하며 많이 쓰는 방법이다. (defuzzification는 비 퍼지화 또는 역 퍼지화로 번역된 곳이 있는데 본 글에서는 비 퍼지화로 표현했음을 밝힌다)

그림5. 비 퍼지화 무게중심 법[3]

무게 중심법은 그림5처럼 and 또는 or 연산의 결과에서 무게 중심을 구하면 되는데, 구하고자 하는 소속 집합의 출력에 대한 등가의 값을 구하기 위해 출력 소속 집합의 최대 단일 값과 각 출력 변수에 대한 소속 값을 곱하여 구한다. 이러한 각 집합의 등가의 값들은 서로 더해지고 출력 소속 값의 합으로 평균화됨으로써 정의할 수 있다.

퍼지 전문가 시스템

전문가 시스템이 지향하는 것은 기존 이론으로는 잘 되지 않는 사항들, 즉 기계화할 수 없는 일들을 인간들은 잘 하고 있기 때문에 그 지식과 경험을 살리자는 것이다. 그러므로 전문가 시스템으로는 애매한 사항에 대한 처리는 필요 불가결하기 때문에 퍼지 이론과 잘 맞는다.

전문가 시스템

전문가란 특정 분야에서 대부분의 사람들에게 알려지지 않은 특별한 지식이나 기술을 가진 사람을 말하며, 이러한 전문가는 일반적인 사람들이 해결하지 못하는 특정 분야의 문제를 쉽게 해결할 수 있다. 특히, 인공지능 기술 분야에서 활발하게 응용되고 있는데 인간이 가지고 있는 특정 전문분야의 지식을 정리해서 컴퓨터로 하여금 이 전문지식을 활용할 수 있는 시스템을 말한다. 일반적인 전문가 시스템이라고 말하는 것은 전문 적인 지식을 저장해 둔 지식 베이스와 이를 기반으로 추론할 수 있는 추론 엔진 두 가지를 합쳐서 말한다.

퍼지 제어시스템

퍼지 제어는 인간이 가진 지식과 경험을 포함하는 제어 알고리즘을 실현하는 지적 제어방식으로 기존 수학적인 함수에 의한 제어 방식과 다르게 인간의 제어방식을 모사한 제어 방식이다. 가전제품, 전동차의 자동운전, 헬리콥터의 제어 등 여러 분야에 퍼지 이론이 적용되었다. 현재, 여러 분야에서 퍼지 제어가 활발히 이용되고 있는 이유는 전문가의 경험과 직관 등에 의해 제어규칙을 변수로 표현하여 구현함으로써 제어대상 시스템의 수학적인 모델링을 요구하지 않기 때문이다[5].

퍼지 전문가 시스템

현재 전문가 시스템의 구축 방향은 애매한 정보의 처리, 추론능력에 있다고 할 수 있다. 이런 애매한 정보를 퍼지화 함으로써 정확한 전문가 시스템의 구축이 필수적이다. 따라서 퍼지전문가 시스템의 구축은 급격히 증가하고 있으며 성공사례도 다양하다. 전문가 시스템의 모호한 지식으로 표현되는 것으로 비결정론(non-determinism), 복합의미(multiple meanings), 불완전성(incompleteness), 불확실성(uncertainty), 퍼지성(fuzziness) 등이다. 이중 불확실성과 퍼지성은 전문가 시스템에서 퍼지이론을 응용하여 좋은 결과를 얻을 수 있는 분야이다.

성공한 예로는 버스 노선의 전문가가 고객 수요, 교통 사정등을 고려한 버스 다이어그램 편성 전문가시스템, 달 착륙에 대한 시나리오 작성 후 거리와 속도에 대하여 퍼지화한 달착륙전문가 시스템, 건물 안에 사람의 인원을 자동으로 탐지하는 감지 장치를 이용한 인원 탐지 전문가 시스템, 건물의 손상편가를 위한 SPERIL 시스템, 퍼지추론을 이용한 의료집단전문가 시스템은 Sanche(1982)를 비롯한 Adlassing(1986), Tazaki(1988)등 연구가 상당히 진행 중이다. 이러한 예는 전문가 시스템에 애매한 정보를 퍼지화 함으로서 성공한 퍼지 전문가 시스템들이다.

퍼지 이론을 활용한 주유소 추천 방법

이제 퍼지 이론을 활용해서 주유소를 추천을 설계해 보고자 한다. 주유소를 추천 받고자 할때 실제 사용자가 고민하는 것은 거리 와 가격이다. 사용자들이 원하는 사항을 문장으로 표현하면 다음과 같을 것이다.

적당한 시기에 좋은 가격의 주유소를 추천해줘

문장으로 풀어 써 보니 애매한 표현들이 보였다. “적당한 시기”에 “좋은 가격”이 그것들이다. 기준도 애매하지만 과연 사용자들이 생각하는 “적당한”과 “좋은”이라는 단어는 단순히 최적의(optimal) 해를 찾는 문제로 접근하기에는 애매한 부분이 많아보였다. 따라서 나는 이미 알고 있던 퍼지 이론이 애매한것을 잘 다룰 수 있다는 점에서 아이디어를 얻어 이 문제를 해결해 보기로 했다.

시나리오

문제의 시나리오는 자율 주행이 보편화된 2030년 미래, A 씨는 집에서부터 완전 자율 주행 자동차로 직장인 논현역 부근에 도착했다. 자율 주행 자동차는 A 씨를 직장에 내려두고 스스로 주유를 해야 할지 판단하는 시스템이라고 가정한다. (2030년이 되면 주유하는 방식도 달라질 수도 있고 휘발유를 사용하지 않는 시대가 될 수도 있지만, 전기든 화석 연료든 자동차는 지속적으로 주유소를 찾아 충전해줘야 하는 상황으로 가정해 보자.)

목표 설정

퍼지 이론을 적용하여 자동차를 제어하기 위해서는 상황에 맞는 목표 설정이 필요하다. 다음 두 가지를 목표를 설정하였다. 이 시스템은 설정한 아래 두 목표를 달성하기 위해 동작하게 될 것이다.

  • 목적지 부근에서 최적(가격+거리)의 주유소를 찾는다.
  • 자동차에 연료가 떨어지지 않게 한다.

규칙

목적지 부근에서 남아있는 연료가 이동 거리보다 적다면, 남아있는 연료 한도 내에서 이동할 수 있는 가장 싼 주유소에서 주유를 한다.

  • 집까지 이동할 수 있는 만큼의 연료가 없으면 → (남은 연료로 이동 가능한 범위에서) 가장 싼 주유소에서 주유

연비를 고려한 가격 공식

주유소를 선택할 때 단순히 거리와 가격만 가지고 선택할 수는 없다고 생각했다. 주유소까지의 이동 거리와 현재 내 차의 연비를 고려해야 정확한 가격을 계산할 수 있을 것이다. \(p\)를 리터당 가격, \(l\)을 자동차가 1리터당 주행할 수 있는 거리(km), k를 현재 위치와 해당 주유소까지의 거리라고 정의한다면 현재 위치에서 해당 주유소까지 거리를 고려한 새로운 가격 공식은 아래 식과 같다. (여기서는 이동 경로에 따라 주유소별로 차이가 있을 수 있지만, 계산의 간소화를 위해 주유소 도착 후 회사로의 거리만 가격에 반영하기로 한다. 연비는 \(10km/l\) 로 계산하였다.)

\[\dfrac{p(k+l)}{l}\]
주유소 명 가격 거리(m) 연비를 고려한 가격
(주)동하힐탑셀프주유소 1657 590 1754.763
반포그린주유소 1615 1600 1873.4
sk서광주유소 1625 1500 1868.75
GS타워주유소 1660 880 1806.08
직영개나리주유소 1635 1400 1863.9
역삼주유소 1635 1500 1880.25
남서울주유소 1647 1400 1877.58
삼방주유소 1697 560 1792.032
선진도고주유소 1635 1900 1945.65
진달래주유소 1635 2000 1962

논리제어 형식으로 변경

가격 퍼지 집합 정의

연비를 고려한 가격으로 계산한다. 그리고 기본 검색 범위는 2km로 하고 만약 주유소가 없다면 2km씩 범위를 넓혀가며 재검색하기로 한다. 여기부터 전문가 시스템이 필요한 변수가 등장하는데 최저가에 해당하는 검색 반경을 어느 정도로 할지와 각 가격의 범위의 수준을 어느 정도로 할지 설정해야 한다. 아래는 임의로 설정하여 진행하였으며 이 값들은 지역에 따라 사용자 가격 민감도 정도에 따라 다르게 적용할 필요가 있다.

가격 퍼지 집합
최저가 검색반경*5 이내 주유소 중 가격 10% 이하
싸다 검색 범위 내 가격 범위 30% 이하
보통 검색 범위 내 가격 범위 20~70%
비쌈 검색 범위 내 가격 70% 이상

연료 퍼지 집합 정의

연료가 다음 목적지까지 이동하기에 얼마나 충분한지로 계산한다.

연료 퍼지집합
연료 부족 5% 미만 or 다음 목적지까지 이동 부족 or 다음 목적지 까지 이동 후 연료 2% 미만
연료 보통 20~50% 미만 and 다음 목적지까지 이동 가능
연료 충분 40% 이상 and 다음 목적지까지 이동 가능

행동 퍼지집합 정의

주유 시나리오에서 나타나는 행동 퍼지집합은 단순하게 두가지 경우만 나타난다. 하지만 온도제어 시스템이나 세탁기등의 행동 퍼지집합의 경우에는 더 복잡하게 정의 될 수 있다.

주유 퍼지집합
주유 최적의 주유소를 찾아 주유함
유지 아무것도 하지 않음

행동 규칙 정의

    연료    
    부족 보통 충분
가격 최저가 주유 주유 유지
  싸다 주유 유지 유지
  보통 주유 유지 유지
  비쌈 주유 유지 유지

퍼지 제어 시스템

가격 25%에 대한 퍼지 해석은 다음과 같다.

그림6. 가격 25%에 대한 퍼지 해석

연료 25% 집합에 대한 퍼지 해석은 다음과 같다. 다음 목적지를 고려한 특수한 상황으로 부족과 보통이 겹치는 상황의 예시를 나타낸다.

그림7. 연료 25% 집합에 대한 퍼지 해석

행동 결과 산출

  • 최저가 and 연료 보통이면 주유
  • 연료 부족이면 거리 감안한 가장 싼 주유소에서 주유 (주유소 weight 에 따라 선택함)
  • 나머지 경우 유지

이제 위에서 살펴본 가격 25% 집합과 연료 25% 집합에 대한 weight를 계산해본다.

  • (가격 싸다 0.5 or 연료 부족 0.45) and 연료 > 0.4 = 주유 0.5
  • (가격 싸다 0.5 or 연료 보통 0.1) and 연료 > 0.4 = 주유 0.5
  • (가격 보통 0.2 and 연료 부족 0.45) and 연료 > 0.4 = 주유 0.45
  • (가격 보통 0.2 and 연료 부족 0.1) and 연료 > 0.4 = 유지 0.1

무게중심 계산

주유 0.5 와 유지 0.1의을 그래프로 그려서 무게 중심을 계산한다.

그림8. 무게중심 계산

무게중심 계산 법

퍼지집합 \(C'\)를 대표하는 값 \(c\), 즉 무게중심을 구하는 방법은 아래 식 1 과 같다. 여기서 \(c\)는 무게중심 확정치를 말하며 \(c_i\)는 \(i\)번째 규칙에 대한 출력 정도 값을 나타내는 소속함수의 중심값이다.

\[c = \dfrac{\sum c_i*\mu_{c'}(z)}{\sum \mu_{c'}(z)}\]

예를 들어 오래 그림과 같은 값에 주어졌을 때 중심값을 구하는 방법은 다음과 같다.

그림8. 무게중심 계산 예시
\[c = \dfrac{(0+10+20)*0.1+(30+40+50+60)*0.2+(70+80+90+100)*0.5}{0.1+0.1+0.1+0.2+0.2+0.2+0.2+0.5+0.5+0.5+0.5}\]

이렇게 계산된 무게 중심의 값을 이용해 현재 상황에서 주유해야 하는 것인지, 유지를 해야 하는 것인지 퍼지 논리로 판단할 수 있다.

결론

퍼지 논리는 일상적인 시스템의 부정확한 개념과 온도, 습도와 같은 정의, 고통, 뜨거움, 차가움 등의 감정, 많고, 적은 등과 같은 형용사를 표현할 수 있는 아주 유용한 방법이다. 본 글에서는 퍼지논리를 설명하고 퍼지논리를 활용한 주유소 추천 방법을 설명하였다.

주유소 추천 방법은 최적의 해를 구하는 방법으로만 다뤄지고 있고 대부분의 서비스가 이런 방법으로 접근하고 있다. 하지만 운전자에 따라 좀 더 나은 추천방법이 존재한다고 생각하였고 이것을 해결하는 방법을 퍼지 이론을 적용해 제시하였다.

실험 결과 퍼지 이론을 적용해 더욱 다양한 상황에서 운전자에게 주유소를 추천할 방법이 있다는 것을 확인하였다. 그뿐만 아니라 주유소에 대한 사용자 평점과 주유소 간 도로 상황을 고려한 실시간 이동시간도 반영한다면 보다 정교한 추천 결과를 확인할 수 있을 것이다. 본 글은 아이디어를 제시하는 수준으로 진행하여 기존 주유소 추천 방식보다 퍼지 이론을 적용한 추천이 얼마나 더 효과적인지 정량적으로 비교하지는 못하였다. 이와 관련된 작업은 추후 연구로 남겨둔다.

참고문헌