Fuzzy logic 880328-2535
Innehåll Fuzzy logic... 1 1. Inledning... 4 2. Jämförelse mellan fuzzy logic och tvåvärdeslogik.... 4 3. Fuzzy sets.... 4 4. Linvistiska variabler... 5 5. Operatorer... 5 6. If- then... 7 7. Fuzzy inference.... 7 1. Fuzzification of the input variable... 7 2. Apply fuzzy operator... 7 3. Aggregate all outputs... 8 4. Defuzzification... 8 8. Litteraturförteckning... 10
1. Inledning I det här arbetet ska jag förklara vad fuzzy logic är. Jag kommer kort jämföra fuzzy logic med traditionell tvåvärdeslogik för att sedan gå in mer i detalj på olika delar i fuzzy logic. Jag kommer också att försöka visa på hur fuzzy logic kan användas och fördjupa mig i vissa viktiga begrepp. Detta är ett försök att på ett överskådligt sätt visa hur fuzzy logic fungerar, illustrerat med både bilder och text, för att göra det så lätt att förstå som möjligt. 2. Jämförelse mellan fuzzy logic och tvåvärdeslogik. I den traditionella logiken använder man sig ofta av värdena sant eller falskt. Alla delar i världen delas sedan upp mellan värdena sant respektive falskt. Antingen är ett påstående sant eller falskt, alltså är påståendet glaset är fullt antingen sant eller falskt. I grunden är det ingenting konstigt med den vanliga tvåvärdeslogiken, men i vardagligt tal mellan människor, och ute i världen, så är saker sällan så bestämda. Lofti A. Zadeh föreslog därför 1965 en teori som bygger på det som kallas för fuzzy sets, därav fick teorin namnet fuzzy set theory. Teorin bygger på att istället för att någonting är sant eller inte, kan det vara sant till olika grader. Ett exempel är om ett glas med vatten är fullt eller inte, hur mycket vatten måste det vara i glaset för att det ska vara fullt? I fuzzy logic kan glaset istället delas upp i flera olika mängder exempelvis fullt, halvfullt eller tomt. Då kan mängden vatten i glaset ingå i exempelvis fullt och halvfullt till olika grader. Dessa grader ligger fortfarande mellan värdet 1=sant och 0=falskt, men till olika grader. Detta är inte det samma som probabilistisk logik, där sannolikheten för någonting räknas ut, utan hanterar endast olika grader av sanning. 3. Fuzzy sets. I traditionell tvåvärdelogik använder man sig av så kallade crisp sets, som skulle kunna ses som en rak linje vid ett visst värde. Säg till exempel att en person är ung om den är under 18 år, då kommer en person antingen att ingå i mängden ung eller inte. Om personen är mellan 0-18 år, är alltså sanningsvärdet för att personen är ung=1- Figur 1 Crisp sets och fuzzy sets Om en person då är 20 år, indikerat av det grå strecket, kommer personen att ingå i kategorin gammal, och sanningsvärdet för ung=0, medan sanningsvärdet för gammal=1. Detta ger en värld med hårda värden, som är enkla att urskilja från varandra, men som inte stämmer särskilt bra överens med hur vi människor ser på världen. För att beskriva delar i världen som inte är skarpt definierade Lofti A. Zadeh 1965 en ny sorts logik, baserad på det som istället kallas för fuzzy sets, eller oskarpa set. Setens intervall ändras, så att
gammal ung är 0-18, och gammal 22-100, vilket ger en graf som ser ut som den till höger. Nu ingår en person som är gammal i båda seten, ung och gammal, men till olika grader. För att se till hur många grader någonting ingår i varje set mäter man ut höjden på y- axeln där värdet på x- axeln korsar de olika seten. I exemplet ovan ser man att en 20- åring ingår i setet gammal=0,6 och setet ung=0,3. 0,3 + 0,6 blir inte 1, vilket också visar på skillnaden mot probabilistisk logik, då det inte är sannolikheten att man är med i ett av seten man räknar ut, utan med hur mycket man tillhör de olika seten. 4. Linvistiska variabler Ord som ung och gammal, full eller tom, har inga fasta värden i världen. Om man säger att x är 20 år har vi direkt en variabel x som har ett fast värde = 20. Men om man säger att x är gammal, då har variabeln x inget fast värde, vilket gör att det är en variabel av ett annat slag, nämligen en lingvistisk variabel. Detta används inom fuzzy logic för att tillåta en mer flexibel världsbild, där man inte måste veta exakta gränser för olika saker i världen. Istället kan man använda sig av variabler som för tungt lastad och använda operatorer på det. 5. Operatorer Att räkna på fuzzy sets skiljer sig inte mycket från att räkna på den vanliga tvåvärdeslogiken. Man kan göra ungefär samma saker trots att det är medlemskapsgrad man räknar på istället för sanningsvärden. Man använder ungefär samma operatorer; and, or och nor, men de ser inte riktigt likadana ut som i tvåvärdeslogiken. (Riza C. Berkan, Sheldon L. Trubatch, 1997) Snitt liknar or i sitt utförande och räknas ut genom att ta det minsta medlemskapsvärdet. Vi använder oss av medlemskapsvärdet som en viss variabel har. Om vi använder exemplet från tidigare med att vara ung eller inte skulle formeln för det kunna se ut som följer, där snittet är symbolen?. MIN {μa(x)?μb(x)} = MIN (0.3, 0.6) = 0.3 Figur 2 snitt Union liknar and i sitt utförande och representeras genom att ta det högsta medlemskapsvärdet. Det är alltså likadant som snitt fast tvärtom och representeras av symbolen U. Precis som innan används siffrorna från exemplet med att vara ung eller gammal och ger följande formel.
MAX{µA(x)UµB(x)} = MAX (0.3, 0.6) = 0.6 Figur 3 Union Komplement - linkar not I sitt utförande, och är alltså en sorts negering. Detta får man fram genom att ta 1- µa(x). För exemplet med att vara ung skulle det alltså bli, då man tillhör ung med 0,3; 1-µA(x) = 1-0,3 = 0,7. Figur 4 Komplement
6. If- then En viktig del inom fuzzy logic är IF- THEN regler, eller om- så regler. Dessa är regler som är uppdelade i ett eller flera inputvärden (antecedenten), och ett outputvärde (konsekvensen). Regeln blir då If antecedenten then konsekvensen Man kan byta antecedenten och konsekvensen till vilka värden man vill, och det kan också ingå flera antecedenter före en konsekvens, men då måste dessa vara uppdelade av en operator. Exempelvis; If x and y then z Där x och y är antecedenter medan z är en konsekvens. 7. Fuzzy inference. Fuzzy inference är den process som sammankopplar alla delar i fuzzy logic, och ger en output givet en input. Detta sker i fem steg, innehållandes de delar som beskrivits ovan. Problemet som kommer användas för att beskriva de fem stegen är hur man ska gå till väga för att ge dricks på en restaurang. 1. Fuzzification of the input variable Det första steget är att ta input, och bestämma till vilken grad den tillhör ett visst fuzzy set. Om maten kan rankas på en skala mellan 1-10 och vi har en lingvistisk variabel delicious, försöker man sedan att bestämma hur mycket maten ingår i variabeln delicious. I fallet nedan rankas maten som en 8, och får då tillhörighet 0,7 i delicios. Figur 5 Fuzzification (källa mathworks) 2. Apply fuzzy operator Om vi har flera variabler att utgå ifrån, exempelvis hur maten smakar och hur servicen var, för att bestämma hur mycket dricks vi ska ge måste vi använda en fuzzy operator, snitt eller union. Låt oss säga att servicen får värdet 3, och att detta inte ingår i setet good, då får servicen 0,0 som värde, alltså var den inte särskilt bra. Nu kan vi använda oss av snitt- regeln för att bestämma värdet på restaurangen (ta det högsta värdet för maten och servicen och använd det).
Figur 6 Beskriver hur fuzzy operators fungerar. (källa mathworks) 3. Aggregate all outputs Om man kan ge olika mycket dricks beroende på hur servicen har varit måste man i detta steg slå ihop alla regler man har för att bestämma hur mycket dricks man ska ge. Om man kan ge tre olika nivåer av dricks, dåligt, medel eller mycket så måste man ha med regler som kan behandla detta. Regel 1: Om servicen är dålig och maten är äcklig då ska man ge dåligt med dricks Regel 2: Om Servicen är bra då ska man ge medel med dricks Regel 3: Om servicen är perfekt eller maten är utmärkt då ska man ge generöst med dricks 4. Defuzzification I defuzzification ska man göra det oskarpa värdet som man nu har skarpt igen. Det finns flera metoder för att göra detta, och de har lite olika användningsområden. En av de enklaste att förklara är center of area, som går ut på att man räknar ut areans mittpunkt för hela setet, och låter detta blir det slutliga värdet för opperationen.
8. Diskussion Fuzzy logic är en logik skapad för att beskriva att det finns gånger när världen inte är varken sann eller falsk, utan till olika grader sann och falsk. Att ett glas vatten kan vara både fullt eller tomt är givet, men det kan också vara olika mycket fullt eller tomt nästan in i oändlighet. Detta är något som den traditionella tvåvärdeslogiken inte tar hänsyn till, där är det antingen sant eller falskt, och jar tror att fuzzy logic tack vare sina mer oskarpa linjer kan komma visa sig vara rätt väg att gå för att kunna få maskiner att faktiskt röra sig själva ute i världen. Inte enbart att utföra beräkningar på platsen där de står, utan att faktiskt kunna röra sig i en ständigt föränderlig värld där objekt rör på sig, förändrar sig och är oskarpt definierade. Det kan kanske i slutändan även vara vägen att gå för att få maskiner att tänka mer likt människor än de gör i dag, om nu detta skulle vara ett mål att försöka uppnå.
8. Litteraturförteckning Riza C. Berkan, Sheldon L. Trubatch Fuzzy systems design principles- Building fuzzy if-then rule bases ( 1997) Shigeo Abe - Neural networks and fuzzy systems - theory and application(1995) http://blog.peltarion.com/2006/10/25/fuzzy-math-part-1-the-theory/ http://www.mathworks.se/help/fuzzy/fuzzy- inference- process.html;jsessionid=696705b5c0a5c2846a61b04c21c0?s_tid=doc_12b (18/6 2013)