Fuzzy Logic När oskarpa definitioner blir kristallklara Linköpings Universitet Linköping
Sammanfattning I denna fördjupningsuppgift har jag fokuserat på Fuzzy Logic och försökt att beskriva det på ett enkelt och förståligt sätt. Jag kommer bland annat ta upp bakgrunden till fuzzy logic, vad fuzzy logic är och några enkla operatorer som finns. Jag kommer även kort ta upp hur man använder fuzzy logic och när man använder det. På slutet finns en diskussion där jag själv argumenterar för det jag tycker är bra respektive dåligt med fuzzy logic. Fuzzy logic är en del av Artificiell Intelligens så jag tyckte att det var rimligt att skriva om det. Fuzzy logic är en lokig som är väldigt olik den vanliga tvåvärdiga logiken som de flesta är vana vid, där man använder endast två värden, antingen är det sant =1 eller så är det falskt = 0. Men genom fuzzy logic kan man istället ha grader av sanningsvärden och genom det kan det bli enklare att definiera vad som är vad. Inom den tvåvärdiga logiken kan man inte använda sig av dessa sanningsvärden utan endast sant eller falskt, så fuzzy logic kan använda sig av de värden som inte den tvåvärdiga logiken kan, så kallade oskarpa värden. 2
Innehållsförteckning 1. Inledning... 4 2. Fuzzy Logic... 5 2.1 Bakgrund... 5 2.2 Beskrivning av Fuzzy Logic... 5 3.Fuzzy Set... 6 4. Operatorer... 7 4.1 IF-THEN-regeln... 7 4.2 AND, OR och NOT... 9 4.3 Union, snitt och komplement... 10 5. Fuzzification och Defuzzification... 11 6. När ska man använda Fuzzy Logic?... 11 7. Diskussion... 12 Referenser... 13 3
1. Inledning I detta arbete har jag fokuserat på fuzzy logic, vad det är och hur man använder det. Tanken med fuzzy logic är att man vill komma närmare det mänskliga beslutsfattandet med hjälp av det naturliga språket, istället för att använda sig av kvantitativa villkor. Fuzzy logic kommer in i bilden när den vanliga tvåvärdiga logiken brister. Med hjälp av fuzzy logic kan man nu hantera nästan alla typer av uttryck i det naturliga språket. Ett exempel på detta är uttrycket Det är osannolikt att priset på vatten kommer öka inom den närmaste framtiden, detta uttryck ligger utanför den klassiska första ordningens predikatlogik men är perfekt hanterbar inom fuzzy logic. I den tvåvärdiga logiken finns det bara två värden, antingen är det sant eller så är det falskt. Dessa två värden representeras med en siffra, där sant = 1 och falsk = 0. Det finns alltså bara två alternativ, antingen så är du lång eller så är du kort, det finns inget annat alternativ som till exempel medellång. Men med hjälp av fuzzy logic kan vi nu definiera vad som är medellångt. I fuzzy logic finns det även där två värden där sant = 1 och falskt = 0 men däremellan finns det ett oändligt antal värden, så att vi till exempel kan definiera vad medellång är. Det är detta jag kommer ta upp i texten framöver och försöka förklara hur man använder fuzzy logic och när man använder det. 4
2. Fuzzy Logic Det mänskliga talspråket är idag väldigt komplext och det kan vara väldigt svårt att beskriva vissa saker, till exempel hur mycket vatten man vill ha i ett glas. Man kanske inte vill ha fullt, kanske inte heller tomt utan lite eller lagom. Det är alltså svårt att veta hur mycket som är lite, lagom eller mycket. Men nu med hjälp av logik kan vi göra vårt talspråk lite mer formellt så att även vi kan förstå och använda oss av det i datorerna. En dator kan inte säga hur mycket lagom är men med hjälp av fuzzy logic kan vi nu översätta vårt talspråk och våra problem i språket så att även datorena förstår det, detta genom att sätta in sanningsvärden och räkna ut hur stor sannolikheten är att det är del av en viss mängd. 2.1 Bakgrund Fuzzy logic (på svenska suddig logik eller oskarp logik) utvecklades under 1960- och 70-talet av Lotfi Asker Zadeh. För hans stora framsteg inom forskningen har Zadeh fått många utmärkelser och priser. År 1995 fick Zadeh IEEE Medal of Honor, det största priset man kan få av IEEE för hans banbrytande utveckling av fuzzy logic och dess många tillämpningar ( pioneering development of fuzzy logic and its many diverse applications (FUZZY SETS, FUZZY LOGIC AND FUZZY SYSTEMS, 1996)). Tillsammans med Zadeh finns det många forskare som har varit med och utvecklat logiken. Zadeh valde att låta andra personer utveckla hans idéer när han själv hade kommit på dem, han utvecklade alltså sina idéer till en viss nivå och sedan överlät han dem på andra personer. Detta gjorde han antagligen för att han ville få in fler synsätt i sina idéer. 2.2 Beskrivning av Fuzzy Logic Fuzzy logic är en form av logik som beskriver hur väl ett objekt uppfyller en diffus beskrivning. Fuzzy logic använder inte lagen om det uteslutna tredje. Det är alltså en form av logik som använder sig av nivåer av logik. I vanlig logik finns det bara två värden, antingen är det sant eller så är det falsk. Det finns inget som kan vara delvis falskt eller kanske sant. Men i fuzzy logic så finns det grader av sant eller falskt. Det innebär att till exempel ett glas kan vara fullt med vatten, tomt, halvfyllt, 2/3 fyllt med vatten och så vidare. Istället för att säga att något är sant eller falsk använder man sig av sanningsvärden där värdet 0 står för tveklöst falsk och värdet 1 står för tveklöst sant, däremellan finns det sedan ett oändligt antal värden. 5
Zadeh valde att kalla sina oskarpa variabler för lingvistiska variabler för att han ville skilja mellan oskarpa värden och numeriska värden. Värden i matematik brukar ta numeriska värden medan man i fuzzy logic använder sig av icke-numeriska värden för att underlätta formuleringen av regler. 3.Fuzzy Set Fuzzy set teorin är en definition av operatorer på fuzzy set. Fuzzy set är en klass av objekt där varje objekt har ett värde som är allt mellan 1 och 0. För att förklara detta lite närmare kan man kolla på klassen djur som består av olika medlemmar, till exempel katt, gris och insekter. Men det finns dock objekt som har en oklar status till denna klass så som bakterier. Samma typ av tvetydighet finns med siffror. En medlemsfunktion definierar vilken grad en medlem eller objekt tillhör ett fuzzy set. Med hjälp av crisp set kan vi nu enkelt förklara vad man menar med medlemsfunktion, detta kan vi kolla på med en graf. Med crisp set menas det att man sätter ett intervall mellan två värden. Grafen nedan består av en Y-axeln och en X-axel. Y-axeln (μ) visar grader av sanning medan X-axeln visar i detta fall grader mätt i Celsius. Figur 1. Vi ser här nu att crisp set intervall ligger mellan 0-10. Detta menas att om värdet ligger inom detta område så är graden av sannolikhet = 1. Här kan vi då enkelt definiera vad som är kallt. Ligger crisp set mellan 0 och 10 kan vi då säga att det är kallt. Crisp set hjälper oss 6
alltså att definiera vad som i talspråket kan vara svårt att veta vad som är kallt (det är många personer som uppfattar ordet kallt olika). Figur 2. I figur två ser vi nu här att vi har flera värden på x-axeln. Detta betyder att vi har flera intervaller. I förra figuren sa vi att om värdet låg mellan 0-10 så var det kallt. Då kan vi även definiera vad som är ljummet, i detta fall passar det bra om värdet ligger i intervallen 10-20. Så kan vi även göra med ordet varmt, om det värdet ligger i intervallet mellan 20-30 så är det varmt. Så säger vi att det är 9 grader C ute, så är det alltså kallt. Är det 22 grader C ute så menas det med att det är ljummet. Problemet är om det är 10,7 grader C ute. Är det då kallt eller ljummet? Enligt crisp set så är graden av sanning att det är kallt ute = 0. 4. Operatorer Fuzzy set definierar alltså suddiga eller oklara värden i fuzzy logic. Men detta kan bli ett problem då de rätta operatorerna kanske inte är kända. 4.1 IF-THEN-regeln För att undvika det problemet använder fuzzy logic sig av IF-THEN -regeln. Regelbasen innehåller ett kontrollsystems alla regler, bland annat IF-THEN regeln som används för att styra handlingar hos ett system efter principen om ett eller flera specificerade villkor är uppfyllda så ska en bestämd handling utföras, alltså Om-Så. IF är villkoret och THEN är handlingen. Detta är en regel som är uppdelad i två delar, antecedenten och konsekventen. Antecedenten är den aktiva eller första delen i en logisk implikation och konsekventen är den senare delen av en implikation. Detta kan se ut på följande sätt: 7
IF antecedenten THEN konsekventen För att göra detta lite tydligare kan man byta ut antecedenten till värden, till exempel x är A. X är en lingvistisk variabel som har en viss grad av medlemskap i setet A. Likadant kan vi göra med konsekventen för att det ska bli lite tydligare, vi sätter då konsekventen till y är B, här är då y en lingvistisk variabel som har en viss grad av medlemskap i setet B. Vi får då följande implikation: IF x är A THEN y är B A och B är alltså lingvistiska variabler i de fuzzy mängderna definierade av x och y. För att ta detta ett steg längre kan man sätta in meningar istället för variablerna. Istället för x är A så kan vi sätta in temperaturen är jättevarmt, detta är antecedenten i IF-THEN regeln. Likadant gör vi för y är B där vi istället sätter in stäng av elementet, detta är konsekventen i IF- THEN regeln. Några exempel på detta är: IF temperaturen IS jättevarmt THEN stäng av elementet. IF temperaturen IS varmt THEN skruva ner elementet. IF temperaturen IS lagom THEN ändra inte på elementet. IF temperaturen IS kallt THEN skruva upp elementet. I allmänhet kan man använda denna IF-THEN regel när man har en relation mellan två lingvistiska variabler, som refererar till oskarpa mängder. Det finns dock inget ELSE i denna regel då alla värden utvärderas, till exempel så kan en temperatur både vara varm och lagom samtidigt vid olika grader. Detta betyder att en temperatur kan ha en grad av medlemskap i både fuzzy setet varmt och i fuzzy setet lagom samtidigt. Är temperaturen varm är graden av medlemskap hög och om temperaturen är lagom är graden av medlemskap mindre hög. Antecedenten är en interpretation som returnerar ett värde mellan 0 och 1. 0 betyder att x inte är medlem i setet alls, 1 betyder att x definitivt är medlem i setet och värdena däremellan anger till vilken grad x har medlemskap i setet. För att ge ett exempel på hur man kan leverera ett värde mellan 0 och 1 så använder vi återigen exemplet med temperaturen där mängden temperatur är ett intervall mellan [0-100]. X är en temperatur och en delmängd av mängden varmt. Man kan använda sig av en funktion för att räkna ut till vilken grad av medlemskap temperatur tillhör delmängden varmt (Zadeh, 1979). 8
μ A (x) = 0 då 0 x < 50 μ A (x) = (1+((x-50)/5) -2 ) -1 då 50 x 100 Denna funktion betyder att man har delat in temperaturen där 0-50 tillhör delmängden kallt av olika grad och 50-100 tillhör delmängden varmt till olika grad. Genom att använda sig av den totala sanningsmängden, 1, kan man då räkna ut detta med en formel som är baserat på empirisk data. I detta exempel kan vi då få fram att μ A (90) är 0.98 och μ A (55) är 0.50. 0.98 är då ett högt sanningsvärde om man jämför med 0.50. Med hjälp av detta kan man då säga till vilken grad 90 tillhör varmt. IF-THEN regler, eller så att säga beräkning med ord, fungerar bra för system där mänsklig erfarenhet finns men där matematisk exakthet saknas eller om ett program ska utföra handlingar som kan vara baserade på oskarpa mängder. Oskarpa IF-THEN regler kan man säga utgör kärnan i den oskarpa logiken. 4.2 AND, OR och NOT I fuzzy logic finns det även OR, NOT och AND som man kan sätta in mellan antecedenten och konsekventen. Det kan se ut på följande sätt: IF x är A AND/OR y är B THEN p är C. AND, OR och NOT brukar användas för att definiera maxvärden, minivärden och komplementvärden. Det finns en såkallad standardmodell för detta enligt Russel och Norvig (Artificial Intelligence A Modern Approach, 2010) som ser ut såhär: T (A B) = min (T(A), T(B)) T (A V B) = max (T(A), T(B)) T (-A) = 1 T(A) Detta betyder att sanningsvärdet för A och B är minimum värdet för T(A) och T(B). På andra raden kan vi utläsa att sanningsvärdet för A eller B är maxvärdet för T(A) och T(B). På tredje raden kan vi sedan utläsa att ett negativt A är lika med 1 minus T(A). Om vi skulle sätta in AND, OR och NOT i denna formel skulle det kunna se ut såhär: 9
x AND y = minimum(sant(x), sant(y)) x OR y = maximum(sant(x), sant(y)) NOT x = (1 - sant(x)) 4.3 Union, snitt och komplement Union, snitt och komplement är operatorer som är vanliga i fuzzy logic. Vi återgår från formeln i avsnitt 3.3 som såg ut såhär: T (A B) = min (T(A), T(B)) T (A V B) = max (T(A), T(B)) T (-A) = 1 T(A) Med hjälp av denna formel kan vi nu säga att snittet av A och B (T (A B) = min (T(A), T(B))) är att x är sant i både A och B, x har alltså ett medlemskap både i A och B. Kollar vi istället på unionen av A och B (T (A V B) = max (T(A), T(B))) så är x sant i antingen A eller B, x kan inte vara sant i båda. Då har x ett medlemskap i antingen A eller B. Med komplement menas att x inte kan ha något medlemskap i mängden, detta kan vi se genom exemplet: T (-A) = 1 T(A) 10
5. Fuzzification och Defuzzification Fuzzification innebär att man omvandlar skarpa numeriska variabler, eller crisp values, till grader av medlemskap för lingvistiska termer i fuzzy set, alltså inputs för fuzzy sets. Medlemskapet är till för att hitta en grad av den lingvistiska termen i fuzzy set. Defuzzification är ett sätt att ta fram kvantifierbara resultat inom fuzzy logic. Det är alltså motsatsen till att fuzzifiera, med det menas att man alltså ska göra värdena skarpa igen, alltså inte fuzzy. Detta kan man göra genom ett flertal metoder. 6. När ska man använda Fuzzy Logic? Fuzzy control är ett kontrollsystem som används inom fuzzy logic för att analysera analoga ingångsvärden, inputs, i form av logiska variabler som tar kontinuerliga värden mellan 1 och 0, alltså flera värden mellan 1 och 0. Istället för digital logik som tar ett diskret värde som är antingen 0 = falskt, eller 1 = sant, så använder man alltså kontinuerliga värden som innebär att det finns flera värden mellan 0 och 1. Fuzzy logic brukar förekomma i expertsystem och i fuzzy control. Man brukar använda defuzzification i fuzzy control. Inom kontrollsystem brukar fuzzy logic förekomma som en typ av regleringsanordning. Som jag nämnt tidigare så används fuzzy logic när man inte vet om ett värde är antingen sant eller falskt, alltså till exempel om man inte vet om det är kallt eller varmt i ett rum, det kanske är ljummet eller lagom. Fuzzy logic kan även användas för att förbättra expertsystem. Med hjälp av IF-THEN-regeln kan man istället göra om systemet istället för att bygga om det helt och hållet. Med hjälp av fuzzy logic kan de som använder det få lägre kostnader, bättre funktioner och att produkterna dessutom kan komma ut på marknaden tidigare. Fuzzy Logic har redan används en del inom artificiell intelligens och med hjälp av denna logik kan man göra maskiner mer som människor, att de kan tänka, inte tänka som en människa men att det har kommit en bit på vägen, genom att vi nu kan använda det naturliga språket i maskiner genom Fuzzy Logic. 11
7. Diskussion Efter att ha läst på om fuzzy logic och förstår hur och när man använder det så anser jag att det är ett väldigt bra komplement till de tvåvärdiga logikerna, som är väldigt begränsade. Detta för att den vanliga logiken endast tar två värden och att fuzzy logic kan ta flera sanningsvärden. Med Fuzzy Logic kan vi även komma närmare det naturliga språket och därmed få en bättre bild av omvärlden och kunna representera den. Med hjälp av fuzzy logic kan vi komma åt de variabler som är svåra att definiera, så som längd där man kan vara, lång, kort eller medellång, alltså i de kategorier som kräver fler variabler. Fuzzy logic har redan börjat användas i Artificiell Intelligens men jag tror att framtiden har mer att erbjuda av fuzzy logic då detta är en form av logik som inte är ute på hela marknaden än och att det är en form av logik som är så olik den tidigare logiken som använts inom AI. Med Fuzzy Logic kommer det nog underlättas mycket för oss inom AI och kunna förbättra flera olika system och vi kan hitta en snabbare och lättare lösning på problem. Jag kan dock förstå att många kan tycka att Fuzzy Logic är en luddig logik, vilket den på många plan är, och att folk kan ha svårt att förstå den. Detta kan nog ha att göra med att folk inte är van vid att det kan vara på flera sätt än bara antingen sant eller falskt, utan att det finns värden däremellan. Jag tror att Fuzzy Logic kommer att breda ut sig över AI:n och få en större roll i framtiden med det nya tankesättet som den är grundad på. Jag tror att med hjälp av denna logik så kan vi få maskiner att tänka mer som människor, men självklart inte exakt som människor, men att maskinerna med hjälp av denna logik är ett steg på vägen till att kunna tänka lite mera som oss. För med denna logik kan vi få maskiner att se och förstå saker som människan inte förut kunde använda på maskiner, så som suddiga variabler som är svåra att definiera. Vi människor ser på omvärlden på ett suddigt sätt i jämförelse med maskinerna och det är nu bra att vi kan överföra en del av det till maskinerna och genom det förenkla saker för oss själva. Min åsikt är att Fuzzy Logic är någonting vi kan räkna med i framtiden och jag hoppas vi kommer använda oss av det när vi bygger nya maskiner, då denna logik går utanför den tvåvärdiga logiken. Det är en smart logik som jag tror är användbar i många system och att vi kan få stor hjälp av den i framtiden. 12
8. Referenser George J. Klir, Bo Yuan. 1996. FUZZY SETS, FUZZY LOGIC AND FUZZY SYSTEMS, Selected Papers by Lofti A. Zadeh. Stuart Russel, Peter Norvig. 2010. Artificial Intelligence A Modern Approach. Upper Saddle River Zadeh. Lofti A. 1979. FUZZY SETS. Operations Research Support Methodology. pp. 569-606 http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/sbaa/report.html, 2011-09-13, 17.00 http://www.fortunecity.com/emachines/e11/86/fuzzylog.html, 2011-09-13, 17.00 http://www-bisc.cs.berkeley.edu/zadeh-1965.pdf, 2011-09-14, 18.00 http://ieeexplore.ieee.org.lt.ltag.bibl.liu.se/stamp/stamp.jsp?tp=&arnumber=1635021, 2011-09-14, 18.00 13