Fuzzy Logic
Fuzzy Logic
_
@ U 기말고사 출제: Fuzzy Loggic이 무엇인지 설명하고, 왜 편리한지 설명하시오.
실세계 시스템(Real-World Systems)과 소프트웨어 표현(Software Representations) 사이의 불일치를 극복하기 위해 로트피 자데(Lofti Zadeh)가 정의한 논리 시스템(Logic Sytstem)
이다.
소프트웨어에서 참과 거짓의 부울 논리 값은 Two-Valued System
에서 고유한 요소를 표현합니다. 실세계는 이런 방식으로 작동하는 경우가 거의 없는데, 많은 조건들이 부분적으로 참이거나 부분적으로 거짓
일 수 있습니다. 퍼지 논리는 소프트웨어가 진리의 영역에서 작동할 수 있도록 하기 위해 도입되었습니다. 진리의 정도(Degrees of Truth)
는 진리나 거짓을 나타내는 이진 시스템 대신 0.0과 1.0을 포함하는
무한 공간에서 작동합니다.
1963년 로트피 자데(Lofti Zadeh) 박사가 제안한 바를 충분히 이해하기 위해 퍼지 논리와 그 표현에 대한 더 많은 정보를 제공하는 여러 가지 예를 살펴보도록 하겠습니다.
__
@ 안될과학 - 퍼지이론
@ 선수, 이산수학 Boolead Logic - 집합
집합은 모임, 단 속하는가 속하지 않는가가 명확한
@ Rules Based System
if, 명제 같이 명확한 논리
이와 반대되는 애매모호한 정보들
애매모호한 정보를 처리하는 기술
컴퓨터는 애매모호한 정보를 그대로 처리할 수 없으니까
아무거나/적당함/정도/알잘딱을 수학적으로 알잘딱하게 분석하는 추론 방식
기존 집합 개념은 어떤 기준을 두고 조건을 충족하면 참, 아니면 거짓, 0 또는 1
퍼지 지합은
어떤 조건에 대해 어느 정도다, 0 ~ 1 의 실수 영역으로
이를 소속함수로 계산
동그라미의 집합,
‘어떤 모양이 동그라미다, 아니다’ 가 아니라
‘어떤 모양은 0.7 정도 동그라미다, 0.2 정도 동그라미다’
키 순으로 학생을 정렬했을 때,
‘어떤 경계선을 기준으로 작은 키 영역에 포함 되는가 안되는가’ 가 아니라 소속 함수를 기준으로 작다 아니다 (예를 들어 10명의 심사위원에게 이 사람이 작은가 작지 않은 가를 물어봤을 때, 7명은 작다고 하고, 3명은 작지 않다고 말하면, 0.7)
,
실세계 문제와 컴퓨터 구현의 다른 점을 극복하기 위해
어떻게 하면 실세계 문제를 다룰 때와 같은 방법으로 컴퓨터에서 처리할 수 있을까
컴퓨터는 참과 거짓, Binary로 문제를 처리, - Software Representations, Two-Valued System
반면 현실 세계는 참과 거짓만으로는 나뉘지 않음 - Real-Wrold Systeams
그 정도를 Degrees of truth, 0 ~ 1 inclusive
로 표현
예시 - Fuzzy QoS
Fuzzy QoS_
퍼지 논리의 힘은 언어학을 이용하여 시스템을 분석하기 시작할 때 나타납니다.
예를 들어 특정 링크를 통한 패킷의 출력을 관리하는 QoS(Quality of Service)
알고리듬을 구축하고 있다고 가정해 보겠습니다. QoS 알고리즘의 목적은 주어진 응용 프로그램에 링크의 대역폭을 일정하게 제공하는 것입니다. 응용 프로그램이 링크의 대역폭을 너무 많이 사용하려고 하면 우리는 주어진 응용 프로그램에 대해 패킷이 방출(Emit)되는 속도를 줄여야 합니다. 제어의 관점에서 보면 우리는 세 가지 요소를 가지고 있습니다. 첫 번째는 응용 프로그램으로부터의 패킷 도달 속도(Packet Arrival Rate)
이고, 두 번째는 측정된 링크의 활용도(Utilization of the Link)
이며, 세 번째는 응용 프로그램과 링크 사이의 패킷 흐름을 제어하는 게이트
입니다
@ 예시 - QoS with Rate Feedback
게이트의 목적
은 특정 애플리케이션에 할당된 대역폭을 주어진 시점에서 몇 개의 패킷이 통과할 수 있는지를 제어하는 것입니다. 우리는 이 문제를 언어학적인 측면에서 생각합니다.
예:
링크의 응용 프로그램 활용도가 높으면 응용 프로그램의 게이트를 통한 패킷 흐름 속도를 줄입니다.
반대로,
링크의 응용 프로그램 활용도가 낮으면 응용 프로그램의 게이트를 통한 패킷 흐름 속도를 높입니다.
이러한 규칙은 애플리케이션에 대해 “적당히” 높은 요금과 낮은 요금 사이에 데드존이 존재한다는 것을 의미합니다.
이제 문제(Question)는 지원율에 대해 “높음”과 “낮음”이 무엇이고 “옳음에 대해”는 무엇인가 하는 것입니다. 퍼지 논리는 소속 함수를 사용하여 이를 결정합니다.
@ 예시 - Membership Function for Packet Rate
Fuzzy QoS__
밥솥
밥이 차면 데워라, 뜨거우면 식혀라
QoS에 Fuzzy를 이용한다는 것은
링크 사용량이 많으면 비율을 줄이고
링크 사용량이 적으면 비율을 늘려라
같은 문제에서 알아서 조정하는
많으면, 적으면, 줄이고, 늘리고의 양, 기준, 정도 - Membership Functions 소속함수를 이용하여
Membership Function - 소속 함수
소속 함수는 소속 함수에서 주어진 실세계 가치의 소속 정도(Degree of Membership, Degree of Truth)
를 정의합니다. QoS 예에서 링크 활용 집합에 대한 멤버십 함수가 있습니다.
@ 예시 - QoS with Rate Feedback
m_low(x) =
{
0, if rate(x) >= 100
(100-rate(x))/20 if rate(x) > 80 AND rate(x) < 100
1, if rate(x) <= 80
}
@ 예시 - Membership Function for Packet Rate
m_low(x) =
{
0, if rate(x) <= 100
(100-rate(x))/20 if rate(x) > 100 AND rate(x) < 120
1, if rate(x) >= 120
}
Fuzzy Control
소속 기능을 설명하기 위해 표 9.1은 두 기능 내 소속 정도와 함께 샘플 데이터 패킷 속도를 식별합니다.
Packet Rate | m_low(x) | m_high(x) |
10 | 1.0 | 0.0 |
85 | 0.75 | 0.0 |
90 | 0.5 | 0.0 |
95 | 0.25 | 0.0 |
100 | 0.0 | 0.0 |
105 | 0.0 | 0.25 |
110 | 0.0 | 0.5 |
115 | 0.0 | 0.75 |
180 | 0.0 | 1.0 |
따라서 우리는 이 두 가지 소속 함수를 주어진 속도의 패킷 흐름에 대한 소속 정도를 결정할 수 있습니다. 그러나 이것이 어떻게 일관된 서비스 품질을 유지하기 위해 패킷 흐름을 조정하는 제어 전략의 관점에서 사용될 수 있을까요? 매우 간단한 메커니즘은 소속 정도를 포함하는 것입니다 게이팅 알고리즘에 대한 계수입니다.
우리의 게이팅 기능은 주어진 간격(예를 들어 1초) 동안 얼마나 많은 패킷이 통과할 수 있는지를 정의합니다. 매초, 애플리케이션에 대한 일관된 활용도를 유지하기 위해 통과가 허용되는 패킷의 수를 조정합니다. 활용도가 너무 높으면 패킷의 수를 줄입니다. 그렇지 않으면, 활용도가 너무 낮으면 그에 따라 증가시킵니다. 문제는, 얼마나 증가시킬 것인가 하는 것입니다?
간단한 메커니즘은 패킷 델타에 적용되는 계수로 우리의 멤버십 정도를 사용하는 것입니다.
rate = rate + (m_low(rate) x pdelta) - (m_high(rate) x pdelta)
초매개변수 pDelta 조절/Tuning할 값
변수 ‘rate’는 주어진 시간(1초) 동안 통과할 수 있는 패킷의 현재 개수입니다. 상수 ‘pdelta’는 레이트에 추가하거나 뺄 수 있는 최대 패킷 수를 정의하는 변수입니다. 그런 다음 멤버쉽 함수는 레이트 조정 알고리즘에서 계수로 사용되는 멤버쉽의 정도를 제공합니다.
10의 ‘pdelta’를 사용한 몇 가지 예를 보자. 우리의 비율은 정수가 아닌 값을 나타내겠지만, 우리는 동조 알고리즘에 대한 반올림을 할 것입니다.
Given a rate of 110,
rate = 110 + (0 x 10) - (0.5 x 10) = 105
On the Next Iteration, Given a rate of 110,
rate = 105 + (0 x 10) - (0.25 x 10) = 102.5
이 과정은 더 이상의 속도 변경이 수행되지 않는 100의 데드 밴드에 도달할 때까지 계속됩니다.
Given a rate of 80,
rate = 80 + (1 x 10) - (0 x 10) = 90
따라서 가입 정도를 비율 변화의 계수로 사용하면 매우 간단한 제어 메커니즘이 생성됩니다.
A Visual Fuzzy Control Example
이제 추적 시나리오를 이용한 퍼지 제어의 또 다른 예를 살펴보겠습니다. 단순한 2차원 세계에서는 포식자 역할을 하는 에이전트가 있습니다. 세계의 또 다른 에이전트는 먹잇감 역할을 합니다. 목표는 포식자가 먹이를 추적하여 궁극적으로 잡을 수 있는 기능을 제공하는 멤버십 함수 세트를 구축하는 것입니다. 멤버십 함수는 오차 각도를 제어에 사용
합니다 (식자의 현재 방향과 먹이의 방향 사이의 차이를 나타냅니다).
그림 9.3은 포식자 멤버쉽 함수의 도표입니다. 오류가 얼마나 존재하는지, 따라서 얼마나 많은 수정을 적용해야 하는지를 식별하는 7개의 별개의 그룹이 정의됩니다.
@ 예시
중심 그룹은 포식자의 현재 방향에 변화가 없는 유일한 그룹입니다. 좌, 우는 각각 [+1, -1]이고, 극좌와 극우는 [+8, -8]이며, 마지막으로 극좌와 극우는 [+15, -15]를 나타냅니다. 포식자의 오차각이 특정 멤버십 함수에 해당되면 해당 보정을 포식자의 방향으로 적용하고 다시 과정을 시작합니다. 각 단계에서 포식자는 보정할 때마다 한 단위씩 이동합니다. 그림 9.3의 멤버십 함수가 주어지면, 활동 중인 포식자의 플롯은 그림 9.4와 같습니다.
@ 예시
포식자는 먹이가 임의의 위치에서 시작하는 좌표 [100,100]에서 시작합니다(여기서 대략 [84,30]). 먹이는 단순히 처음 위치에서 45° 방향으로 이동합니다. 보이는 것처럼, 포식자는 먹이를 가로채기 위해 경로를 정확하게 바꿉니다(먹이의 5단위 이내로 옵니다).
The Fuzzy Axioms
@ U 기말고사 출제: 주어진 Fuzzy Voltage Membership Funcions
, Fuzzy Temperature Membership Funtions
에 대하여, if (m_valtage_high(주어진_Valtage)) OR (not m_temperature_hot(주어진_Temperature)))
에 대한 조건부 값을 구하시오.
기존의 Boolean 논리와 마찬가지로 퍼지 논리에도 기본 연산자들이 있습니다. 이들은 기존의 Boolean 연산자들을 따르지만 작동하는 방식에 차이가 있습니다. 퍼지 공리는 그림 9.5에 나와 있습니다.
Truth (A OR B) | MAX (truth(A), truth(B)) |
Truth (A AND B) | MIN (truth(A), truth(B)) |
Truth (NOT A) | 1 - truth(A) |
이 연산자들은 근사 퍼지 값들에 대한 논리 연산의 기초를 제공합니다. 수행 조건은 다음과 같습니다:
if (m_warm(board_temperature) AND
m_high(fan_speed)) then …
이 양식은 매우 판독 가능할 뿐만 아니라 시스템 상태를 더 잘 파악하고 더 나은 제어로 이어질 수 있습니다.
Hedge Functions
퍼지 시스템의 중요한 수식어는 헤지 또는 퍼지 멤버십의 수식어입니다. 이러한 수식어는 퍼지 논리와 수학적 일관성을 유지하기 위한 추가적인 언어적 구성을 제공합니다. Very와 NOT_VERY의 헤지 함수를 생각해 보세요. 헤지 함수는 멤버십 함수와 함께 사용되며 정의된 언어적 목적에 따라 값을 변경합니다. 헤지 함수는 아래의 수학식 9.4와 수학식 9.5로 정의됩니다.
VERY(m_x) = m_(x^2)
NOT_VERY(m_x) = m_(X^0.5)
예를 들어, 그림 9.2에 정의된 m_high 멤버십 함수와 함께 사용하는 것을 고려해보세요. 패킷 비율이 115일 때, m_high는 0.75가 됩니다. 만약 우리가 멤버십 함수에 VERY(m_high(rate)) 헤지 함수를 적용한다면, 결과 값은 0.5625가 될 것입니다. 만약 비율이 119였다면, m_high는 0.95가 될 것입니다. 여기에 VERY 헤지 함수를 적용하면 0.903(또는 매우 높음)이 될 것입니다.
Why Use Fuzzy Logic?
퍼지 논리는 정확한 값이 아닌 근사값을 사용하기 때문에 소프트웨어 설계에서 중요한 구성 요소입니다. 이는 인간의 추론 자체가 근사하기 때문에 퍼지 논리를 시스템 설계에 매핑하는 것이 더 쉽기 때문에 중요합니다.
Sample Application
퍼지 논리 기능을 입증하기 위해 매우 간단한 배터리 충전기 시뮬레이션을 구축할 것입니다(물리적 세부 정보가 부족합니다).
우리의 신화에 나오는 배터리 충전기는 때때로 충전 전압이 존재하고 (예를 들어, 태양 전지의 집합에서) 부하가 존재하는 환경에서 작동합니다. 태양 전지판의 전압은 부하가 배터리를 작동 회로로 방전시키는 동안 배터리를 충전하는 기능을 제공합니다. 우리의 충전기는 세류 충전 모드와 급속 충전 모드의 두 가지 작동 모드를 제공합니다. 세류 충전 모드에서는 매우 적은 양의 충전을 제공하기 위해 소량의 전류만 배터리로 전달되도록 허용됩니다. 급속 충전 모드에서는 온보드 배터리를 위해 사용 가능한 모든 전류가 충전기에 제공됩니다.
제어 시스템의 관점에서 필요한 것은 급속 충전 모드로 전환할 때와 세류 충전 모드로 전환할 때를 결정하는 방법입니다. 배터리가 충전되면 배터리의 온도가 올라갈 것입니다. 배터리가 완전히 충전되면 배터리에 도달하는 추가 전류가 열로 구현됩니다. 따라서 배터리가 뜨거워지면 배터리가 완전히 충전되었다는 것을 의미하고 세류 충전 모드로 전환하는 것은 아마도 좋은 표시일 것입니다. 또한 배터리의 전압을 측정하여 한계에 도달했는지 확인한 다음 세류 충전 모드로 전환할 수 있습니다. 배터리가 뜨겁지 않거나 배터리의 전압 한계에 도달하지 않았으면 급속 충전 모드로 전환하는 것이 안전합니다. 배터리 온도의 도함수가 배터리 충전의 더 나은 표시이므로 이것은 단순화된 규칙입니다.
Fuzzy Battery Charge Control
정의된 바와 같이 배터리 충전기에는 세류 및 급속 충전 모드의 두 가지 작동 모드가 있습니다. 배터리를 모니터링하기 위해 전압 및 온도의 두 가지 센서가 존재합니다. 배터리 충전을 제어하기 위해 우리는 다음 퍼지 규칙을 사용할 것입니다:
if m_voltage_high( voltage )
then mode = trickle_charge
if m_temperature_hot( temperature )
then mode = trickle_charge
if ( ( not(m_voltage_high( voltage ))) AND ( not(m_temperature_hot( temperature ))) )
then mode = fast_charge
마지막 규칙은 모든 경우를 포함할 수 있으므로 이 규칙들은 차선책임을 유의하십시오. 우리는 사용 가능한 퍼지 연산자를 더 많이 포함하기 위해 세 가지 규칙을 사용할 것입니다.
퍼지 규칙들을 식별하는 것은 첫 번째 단계들 중 하나입니다. 이것은 시스템 연산자들로부터 혹은 문제의 분석을 통해서 쉽게 알 수 있습니다. 언어학이 실제 세계에 어떻게 매핑되는지를 정의하는 것은 다음 문제입니다. 이것이 바로 멤버십 함수를 만드는 과정입니다.
Fuzzy Charge Membership Functions
멤버십 함수는 퍼지 언어 이름을 가져다가 특정 도메인의 실제 세계 값과 매핑됩니다. 이 예에서는 전압과 온도 두 가지 변수를 지정합니다. 전압과 온도 멤버십 그래프(실제 멤버십 함수를 보여줌)는 그림 9.6과 9.7에 나와 있습니다.
@ 예시 - Fuzzy voltage membership graph
@ 예시 - Fuzzy temperature membership graph
전압 멤버십 그래프는 전압 도메인 내에서 낮은, 중간, 높은 세 가지 멤버십 함수를 정의합니다. 마찬가지로 온도 도메인도 차가운, 따뜻한, 뜨거운 세 가지를 정의합니다. 이러한 인위적인 값은 단지 시연용일 뿐 어떤 종류의 배터리 기술도 나타내지 않습니다.
NOTE: 멤버쉽 기능에서 패턴을 쉽게 볼 수 있습니다. 이 때문에 소스에는 이러한 멤버쉽 모양을 쉽게 만들 수 있도록 여러 도우미 기능이 제공됩니다(이들 그래프에는 표시되지 않은 스파이크 패턴 포함).
@ 예시 - Charge curves for the battery charge control simulation.
시뮬레이션은 실제 물리적 배터리 시뮬레이션을 나타내지 않지만 전압 및 온도 제약 조건을 고려할 때 로딩 및 충전의 기본 개념 중 일부를 모델링합니다.
장점
퍼지 논리를 시스템 설계에 활용하면 여러 가지 장점이 있습니다. 퍼지 논리 연산자는 기존의 부울 논리 연산자처럼 단순합니다. 따라서 시스템 연산자는 연산 지식을 언어학적으로 우리 고유 언어로 모델링된 멤버십 함수와 퍼지 논리 규칙의 영역으로 확장하는 데 사용할 수 있습니다.
기존 시스템 개발자의 경우 퍼지 로직을 사용하는 결과 시스템의 복잡성을 훨씬 단순화할 수 있습니다. 다수의 입력 및 출력을 갖는 복잡한 애플리케이션은 퍼지 로직을 사용하여 매우 간단하게 모델링 및 구현될 수 있습니다.
또 다른 흥미로운 이점은 퍼지 로직이 시스템의 처리 요구사항을 감소시켜 결과적으로 임베디드 제어 하드웨어의 비용을 줄일 수 있다는 것입니다. 많은 경우 복잡한 수학적 모델링을 멤버십 함수와 set of fuzzy rules로 대체하여 시스템을 제어할 수 있습니다. 이러한 수학적 제약을 최소화하면 코드 크기를 줄일 수 있으므로 시스템이 더 빠르게 실행되거나 less advenced 하드웨어에서 실행될 수 있습니다.
예시 - 그 외
퍼지 로직은 매우 다양한 응용 분야에서 사용되어 왔습니다. 가장 눈에 띄는 용도는 퍼지 시스템이 상업적으로 성공한 제어 시스템입니다. 퍼지 로직은 또한 셀프 포커싱 카메라, 시멘트 혼합 시스템, 잠금 해제 방지 시스템을 포함한 차량 제어 및 규칙 기반 시스템에도 적용되었습니다.
아마도 가장 성공적인 응용 프로그램은 알려지지 않은 응용 프로그램일 것입니다. 퍼지 논리라는 이름 자체는 기술적으로 건전한 방법이라는 것을 알고 있지만 신뢰감을 촉진하지는 않습니다. 다른 많은 AI 방법과 마찬가지로 언젠가 퍼지 논리가 AI와 연관되지 않고 가시적인 표준 기술 솔루션으로 간주되는 실용적인 영역으로의 마이그레이션이 더 느립니다.
요약
퍼지 논리와 퍼지 제어에 대해 소개했습니다. 기본 퍼지 연산자는 세 가지 매우 다른 응용 프로그램(패킷 흐름, 목표 추적 및 전하 제어)을 사용하여 정의되었습니다. Hedge 함수는 또한 기존 퍼지 소속 함수의 언어적 수식어로 도입되었습니다. 그런 다음 소속 함수와 제어 요소가 fuzzy sementics를 사용하여 어떻게 생성되었는지 식별하기 위해 배터리 충전 제어의 샘플 응용 프로그램을 자세히 설명했습니다. 샘플 코드는 set of 일반 퍼지 논리 API를 포함하여 이 개념을 설명하는 데 사용되었습니다. 마지막으로 하드웨어 구현의 단순화 및 비용 절감을 포함하여 퍼지 논리의 장점 중 일부에 대해 논의했습니다.