FUZZY LOGIC - Var går gränsen?
Sammanfattning Det här fördjupningsarbetet är gjort I kursen Artificiell Intelligens 2 på Linköpings Universitet. Syftet med arbetet är att ta upp och förklara ämnet Fuzzy Logic, då detta är något man använt sig av för att bland annat skapa AI. Fuzzy Logic är en logik som skiljer sig från den vanliga tvåvärdiga logiken, det vill säga den logik vars påståenden bara kan ha två olika värden, vanligtvis True/False. Med den här logiken kan ett värde anda ett sanningsvärde mellan 0 och 1. Det gör att Fuzzy Logic kan behandla världen som de tvåvärdiga logikerna inte klarar av, så kallade oskarpa värden, eller Fuzzy Sets. Det gör att man kan översätta och skriva logik som är mer likt det naturliga språket. De olika delarna inom Fuzzy Logic det här arbetet tar upp är Fuzzy Sets och dess operationer, medlemskap och medlemskapsfunktioner, Fuzzy Relations, Lingvistiska variabler och oskarpa (fuzzy) regler. 2
Innehållsförteckning Sammanfattning... 2 1. Inledning... 4 1.1Syfte... 4 2. Fuzzy Logic... 5 2.1 Bakgrund... 5 2.2 Hur fungerar Fuzzy Logic?... 5 2.2.1 Operationer... 6 3. Fuzzy Sets... 7 3.1 Vad är Fuzzy Sets?... 7 3.1.1 Operationer... 7 3.2 Medlemskap... 8 3.2.1 Medlemskapsfunktion... 8 3.3 Fuzzy Relations... 12 Matrix Notation... 12 4. Lingvistiska Variabler... 13 4.1 Hedges... 13 5. Oskarpa regler... 14 6. Användning av Fuzzy Logic... 15 7. Diskussion... 18 8. Referenser... 19 3
1. Inledning I det här fördjupningsarbetet kommer jag att ta upp ämnet Fuzzy Logic. Jag ska förklara vad det innebär, olika centrala delar inom ämnet, hur det fungerar samt ta upp lite kort vad det kan användas till. Ämnet har många olika komplicerade delar som man kan dyka djupare i, men jag har valt att försöka få med grunderna av det mesta istället för att fokusera för mycket på mindre delar inom ämnet. Jag har använt mig av svenska begrepp i den mån det gått, då jag anser att det är lättare att få flyt på texten då man kan böja orden som man vill. I vissa fall har jag inte hittat någon bra översättning och har därför valt att använda de engelska uttrycken. 1.1Syfte Syftet med det här arbetet är att förklara vad Fuzzy Logic är, hur det fungerar och hur man med hjälp av det kan göra artificiell intelligens. 4
2. Fuzzy Logic Med hjälp av att använda sig av logik så har man på flera olika sätt lyckats översätta det vanliga, oformella, mänskliga talspråket till något mer formellt. Något som en dator skulle klara av att behandla. Genom att bara använda sig av första ordningens predikatlogik (FOPL) har man kommit långt. Trots detta har FOPL, tillsammans med andra två-värdiga logiker (logiker vars predikat endast kan anta två värden, vanligtvis true/false) många begränsningar, för i många avseenden är inte den verkliga världen svart och vit. Vi människor är bra på att klara av osäkerhet i världen, osäkra händelser och en språkanvändning med oskarpa gränser. För att klara av att hantera osäkerhet i en värld till exempel Om tåget är försenat får jag ta bussen har den probabilistiska logiken införts, vilket har gjort att ytterligare framsteg gjorts. Men för att kunna representera den verkliga världen på ett så bra sätt som möjligt behöver man även kunna hantera osäkerheter som finns I språket. Hur avgör man till exempel när någon är lång, medellång eller kort? När går det från att vara ljust ute, till att bli mörkt? Hur ska man kunna representera ordet lagom med ett maskinellt språk? Det är här Fuzzy Logic kommer in I bilden. Fuzzy Logic, som på svenska brukar översättas till oskarp logik, är gjord just för att kunna klara av dessa språkliga svårigheter, genom att räkna ut hur stor sannolikhet det är att något tillhör en viss mängd. 2.1 Bakgrund Fuzzy Logic uppfanns på 1960.talet av Lofti A. Zadeh. Hans syfte var att med hjälp av denna logik kunna efterlikna det naturliga språket och därmed det mänskiga tänkandet, på ett bättre sätt än man kunnat med tidigare logiker. Efter detta har både Zadeh och andra arbetat med att gå igenom och utveckla logiken. [ 1 ] 2.2 Hur fungerar Fuzzy Logic? Fuzzy Logic är den logik som man med hjälp av kan redogöra för i vilken grad en delmängd tillhör ett Fuzzy Set, en delmängd utan skarpa gränser. Istället för att endast säga att något kan vara sant eller falsk har man infört ett sanningsvärde för dessa delmängder, som går mellan värdena 0 och 1. Här är 0 falskt och 1 är sant, men det finns ett oändligt antal värden däremellan. Det gör att man kan ta ett steg längre än den tvåvärdiga logiken. 5
2.2.1 Operationer Enligt Russel och Norvig [ 2 ] är det här standardmodellen för att räkna ut sanningsvärdet (T) för en komplex mening med två oskarpa mängder, Fuzzy sets, vilka jag kommer att återkomma till senare. T (A B) = min (T(A), T(B)) T (A V B) = max (T(A), T(B)) T (-A) = 1 T(A). Formeln innebär att sanningsvärdet för A och B tillsammans är minimivärdet för T(A) och T(B). Att sanningsvärdet för A eller B är maxvärdet för T(A) och T(B), samt att sanningsvärdet för ett negativt A är samma som 1 minus sanningsvärdet för A. Detta då det totala sanningsvärdet är 1. I avsnittet om Fuzzy Sets kommer jag att återvända till dessa formler och hur man kan räkna på och visa union, komplement och snitt med hjälp av dessa. De logiska operatorerna ovan, som introducerades av Zadeh på 1960-talet, skiljer sig i skrivsätt från de vanliga logiska operatorerna AND, OR och NOT. När man använder sig av AND krävs det att båda satserna x och y är sanna. I OR behöver bara en av dem vara sann, och NOT negerar satsen x. Trots detta kan man likställa de olika logiska operatorerna med varandra. Till exempel, AND kan likställas med min(a, B). [ 3 ] 6
3. Fuzzy Sets 3.1 Vad är Fuzzy Sets? Som jag nämnt tidigare är Fuzzy Sets till exempel predikat som kort och lång, det vill säga predikat som inte har några skarpa gränser. I sin artikel FUZZY SETS från 1965 [ 4 ] skriver Lofti A. Zadeh om att ett Fuzzy Set kan liknas vid en klass och att man kan ha en viss grad av tillhörande inom den klassen. Ett Fuzzy Set brukar man säga tillhör ett nonfuzzy universe of discourse, det vill säga det universum eller den mängd som till exempel predikatet lång tillhör. Detta består av något med tydliga gränser någonting nonfuzzy som till exempel en samling objekt som alla som läser kursen 729G11, eller heltal. Med hjälp av dessa kan man sedan räkna ut hur hög grad av medlemskap en längd, som till exempel 1,65, tillhör predikatet lång. Hur man räknar ut graden av medlemskap återkommer jag till i avsnittet under rubriken Medlemskap. 3.1.1 Operationer Precis som man i tvåvärdig logik använder sig av operatorer som union, snitt och komplement, gör man även inom Fuzzy Logic. Som jag beskrev i avsnittet om operationerna för Fuzzy Logic, brukar man använda sig av detta sätt att räkna ut sanningsvärdet för komplexare meningar. T (A B) = min (T(A), T(B)) T (A V B) = max (T(A), T(B)) T (-A) = 1 T(A) Men man kan även visa det genom union, snitt och komplement. Dessa operatorer kan likställas med formlerna ovan. [ 3 ] Unionen av A och B, som inom Fuzzy logic kan ses som T (A V B) = max (T(A), T(B)), är det då x är sant i antingen A eller B. Det vill säga x har ett medlemskap inom någon av A och B. Graden av medlemskap kan variera.[ 3 ] 7
Snittet av A och B, som inom Fuzzy logic kan ses som T (A B) = min (T(A), T(B)) är det då x är sant i både A eller B. Det vill säga x har ett medlemskap inom både A och B. Graden av medlemskap kan variera. [ 3 ] Komplementet av A och B, som inom Fuzzy logic kan ses som T (-A) = 1 T(A) är det då x inte är medlem i mängden. [ 3 ] 3.2 Medlemskap 3.2.1 Medlemskapsfunktion En medlemskapsfunktion definierar alltså, med hjälp av en matematisk uträkning, i vilken grad ett element tillhör ett Fuzzy set. Ett fuzzy subset A i mängden U kan beskrivas med medlemskapsfunktionen [ 4 ] μ A : U [0,1] 8
Den associerar varje element u, tillhörande mängden U, med ett nummer μ A (u) i intervallet [0,1], där μ A (u) representerar graden av medlemskap. Ett exempel som L. A. Zadeh använder sig av i sin artikel FUZZY SETS från 1979, är följande [ 4 ] Låt Mängden Ålder (U) vara ett intervall mellan [0,100] där u är en ålder och en delmängd (fuzzy subset) av mängden U är gammal. Då kan man med hjälp av följande funktion räkna ut vilken grad av medlemskap en ålder (u) hör till delmängden gammal. μ A (u) = 0 då 0 u < 50 μ A (u) = (1+((u-50)/5) -2 ) -1 då 50 u 100 Det ekvationen säger är att man har dragit en gräns genom att visa att innan 50års ålder kan man inte alls räknas som gammal. Är man däremot mellan 50 och hundra kan man tillhöra delmängden gammal till olika grad. För att räkna ut detta tar man den totala sanningsmängden, 1, och subtraherar denna med en formel baserad på empiriska data om när man anses vara gammal. μ A (90) är till exempel 0,985, vilken är ett väldigt högt sanningsvärde, om man jämför med μ A (55) vars sanningsvärde är 0.5. Här kan man se att det här sättet att räkna på skiljer sig från den tvåvärdiga logiken. I den tvåvärdiga logiken skulle åldern 55 år ha sanningsvärdet True, lika så skulle sanningsvärdet för en 90åring vara. Men med hjälp av den här medlemskapfunktions uträkningen kan man istället säga i vilken grad 55, respektive 90år tillhör gammal, vilket ger en bättre representation av den verkliga världen. Den röda grafen nedan visar ett exempel på hur sanningsvärdet för gammal skulle sättas i den tvåvärdiga logiken, om gränsen låg på 70 år. Den blåa grafen visar ett exempel på hur en fuzzy logic graf kan se ut, när den går från 50 och närmar sig sanningsvärdet 1. 9
Det finns även andra funktioner som resulterar i grafer med andra utseenden. Ett par axempel är den Trapeziodal Funktionen, triangulära funktionen samt den Gaussianska funktionen. Se graferna nedan. Dessa är hämtade från hemsidan emathteacher s avsnitt om Fuzzy Logic[ 6 ] Triangel Den triangelformade funktionen. Formlerna till vänster om grafen anger att medlemskapsgraden för x är 0 innan a, att den är kvoten av x-a/ m-a, då x ligger mellan a och m. Efter m, då x är mellan m och b räknas medlemskapet ut som kvoten av b-x/b-m. Efter b är den återigen 0. Trapezoidal Den trapezoidalformade funktionen. Formlerna till vänster om grafen anger att medlemskapsgraden för x är 0före a och efter d, 1 mellan b och c samt kvoten av x-a/b-a då x är mellan a och b. då x ligger mellan c och d är medlemskapsgraden kvoten av d-x/d-c 10
Gaussiansk Den Gaussianskformade funktionen. Formeln till vänster om grafen anger medlemskapsgraden för x. Man kan även räkna ut till hur stor del en godtycklig delmängd tillhör en mängd med hjälp av liknande operatorer. Man räknar ut dessa med hjälp av en integral A μ (u) /u A U Det som formeln säger är att A är definierad att vara integralen över en godtycklig ålders medlemskap i mängden, dividerat på åldern. Integralen betecknar unionen av μ A (u) /u där u är en delmängd av U. Ett annat Ett exempel som L. A. Zadeh använder sig av i sin artikel [ 4 ], på hur man kan använda sig av detta för att räkna ut medlemskapet för en godtycklig ålder av någon som är gammal till mängden ålder, är följande 100 Gammal = (1+((u-50)/5) -2 ) -1 du 50 Här går integralen över alla medlemsgrader i åldern 50 till 100 år. 11
3.3 Fuzzy Relations Även relationer mellan element kan vara Fuzzy. I till exempel en binär relation, en relation med två element, kan förbindelsen mellan dem påverka hur mycket de tillhör en viss mängd. Ett exempel är siffror och hur lika de är varandra. I en tvåvärdig lokig skulle till exempel (1,1) vara sann, medan (1,2) skulle vara falskt. Men som tidigare konstaterat kan man med hjälp av Fuzzy Logic tillhöra ett fuzzy set, som till exempel lika olika mycket. Relationen mellan (1,2) behöver inte vara 0, den är ju mer sann än till exempel (1,3). Följande exempel som kommer från Åbo Akademis hemsida [7] med information om Fuzzy Relations, visar på sanningsvärdet R i de olika binära relationerna samt medlemskapsfunktionen. R(1, 1) = R(2, 2) = R(3,3) = 1 R(1, 2) = R(2, 1) = R(2, 3) = R(3,2) = 0.8 R(1, 3) = R(3,1) = 0.3 R (a, b) = 1 om a = b 0.8 om u v = 1 0.3 om u v = 2 Matrix Notation 12
4. Lingvistiska Variabler Inom Fuzzy Logic är de lingvistiska variablerna en viktig del. Under sin utveckling av Fuzzy Logic bestämde Zadeh att kalla dem lingvistiska variabler, istället för oskarpa (fuzzy) variabler, då han ville skilja dem åt från numeriska variabler med osäkra värden. [ 3 ] Bandemer.H och Siegfried.G tar även upp den kvalitativa och kvantitativa aspekten av Fuzzy Logic. Världen kan beskrivas med både kvalitativa och kvantitativa metoder, och något som är bra med de lingvistiska variablerna är att man med hjälp av dem beskriver världen både kvalitativa värdet med den lingvistiska variabeln, samt får ett kvantitativt värde när man räknar ut graden av medlemskap hos ett element, till den lingvistiska variabeln. Ett exempel är Planeten Merkurius är liten där ordet liten, som är den lingvistiska variabeln beskriver omvärlden. Men då ordet liten inte har några bestämda gränser kan man med hjälp av Fuzzy Logic räkna ut hur stor medlemsgrad planeten har inom mängden liten Se exempel på uträkning under rubriken Medlemskap ovan. 4.1 Hedges Med hjälp av begreppet lingvistiska variabler har man inom logiken kunnat beskriva den verkliga världen på ett bättre sätt. Men Bandemer.H och Siegfried.G tar även upp att man med hjälp av så kallade hedges kan påverka i vilken grad ett element är medlem i en mängd. Hedges är lingvistiska modifierare som till exempel mycket, extremt, lite. Dessa modifierare påverkar semantiken i språket, och därmed påverkar de även medlemsgraden. På vilket sätt de påverkar är olika, beroende på situation, och därför finns det inte bara en uträkning för varje modifierare utan väldigt många olika. Ett exempel på hur Zadeh tänkte sig den matematiska uträkningen för ordet very är följande ekvation [ 3 ] μ very old (x) = def ( μ old (x) ) 2 Vilken säger att medlemskapsgraden för very ska tolkas som medlemskapen för variabeln, i det här fallet old, upphöjt till 2. Modifieraren skulle då förstärka variabeln, men ett problem som uppkommer med det här räknesättet. Om man skulle säga att 70år har medlemskapsgraden 1 till old, skulle även 70år få har medlemskapsgraden 1 till very old, då 1 2 är 1. Därför använder man sig ofta av en funktion där man förstorar lutningen på den lingvistiska variabelns grafs kurva. 13
5. Oskarpa regler För att kunna använda sig av Fuzzy Logic i praktiken är det mycket, bland annat expert- och bildigenkänningssystem, som använder sig av så kallade oskarpa regler. Dessa liknar Om så regler som man använder sig av i många system som använder sig av tvåvärdig logik. Den stora skillnaden är dock att man använder sig av oskarpa, det vill säga Fuzzy, variabler. Ett exempel på hur det kan skrivas är If x = A 1 y = B 2 Man använder sig av tre olika sorters regler för godtyckliga lingvistiska variabler. Det är Assignment statements, som till exempel kan ge variabeln x ett värde., Conditional statements, som till exempel om-så regler samt den tredje, Unsonditional statements, som till exempel kan vara en uppmaning till en handling. [ 8 ] Ett exempel som de visar på i uppsatsen Computational Intelligence: Fuzzy relations, rules, and inference [ 8 ] är hur hastighet och tryck kan regleras i en ångmaskin med hjälp av oskarpa om så regler. If Speed is Slow Then Pressure should be High 14
6. Användning av Fuzzy Logic Fuzzy logic används idag på flera olika sätt, men vanligast förekommer det i expertsystem, neuro-fuzzy system eller som ett kontrollsystem. Jag kommer att återkomma med korta exempel på dessa senare i texten. För att kunna använda sig utav fuzzy logic på olika system behöver man ibland omvandla data eller information om omvärlden till fuzzy- respektive nonfuzzy-data. Det kallas för Fuzzification och Defuzzification. Med fuzzyfication kan man omvandla ett (skarpt) numeriskt värde till fuzzy indata. Ett generellt sätt att skriva detta på är [ 8 ] Där man säger att medlemskapsgraden i för u i A är 1 om u är samma som u i, och att det i annat fall sjunker ju längre ifrån u är från u i. Det kan visar i grafen Här kan man se flera olika sätt grafen kan koma att de ut på. Defuzzification är i princip motsatsen till fuzzyfication. Om man till exempel har använt sig av Fuzzy Logic i ett expertsystem kan det vara högst relevant att utdatan vi får är till exempel 15
reella tal, eller något annat som inte är fuzzy. Det finns många olika metoder för att utföra detta och jag har valt att inte gå djupare in på dessa än att ge ett exempel. Det finns en metod som kallas för Max-membership method eller The heigt method. Den går ut på att man tar maximivärdet för alla fuzzy sets och bygger den vägda summan med dessa. Detta skrivs matematiskt med formeln [ 8 ] Och kan uttryckas i grafen När det gäller Fuzzyfication och Defuzzyfication är huvudregeln att datan som man utför Fuzzyfication på, ska bli densamma om man genast efter utför Defuzzyfication på den. Inom kontrollsystemen är Fuzzy Logic vanligt som ett slags reglagesystem. Ett vanligt exempel jag stött på i flera texter är hastighetsreglering av olika temperaturer på till exempel fläktar och hushållsapparater. Det kan vara att ställa in hastigheten på en fläkt så att rumstemeraturen är sval, vilket kräver fuzzy logic om man inte kan säga att sval alltig ligger på 18grader C för alla, överallt. Neuro-fuzzy system är en kombination av Fuzzy Logic i form av oskarpa om-så regler och neurala nätverk. De neurala nätverken är uppbyggda på ett sätt som går ut på att efterlikna de biologiska nätverken. Det består av en massa noder som kan ta information och bearbeta den för att sedan skicka vidare. Dessa sitter alla sammankopplade i ett nätverk. Neurala nätverk 16
kan träna sig själva och det är det som man använder sig av i Neuro-fuzzy system, där man övar på att förbättra om-så reglerna för att kunna lösa problem bättre. [ 10 ] I expertsystem, som till exempel ett system som kan räkna ut hur högt en persons blodtryck kommer att vara vid en viss tidpunkt, har användningen av Fuzzy Logic bidragit till att det har blivit enklare att designa och underhålla expertsystemen. Detta är då man kan, vid till exempel en förbättring av systemet, kan göra ändringar i de oskarpa om-så reglerna som ofta används. Detta gör att man slipper göra om hela systemet, som man hade varit om man byggt expertsystemet på traditionellt sätt. Att göra själva designen hos systemet kan även vara enklare då man kan använda sig av sin kunskap om området på ett annat sätt, då fuzzy logic är närmare det naturliga språket. [ 9 ] 17
7. Diskussion Efter att ha läst in mig på och skrivit om Fuzzy Logic har jag kommit fram till att jag anser det vara en väldigt intressant utvidgning av den logik vi tidigare läst i den första delen av kursen. Trots sitt flummiga namn, så anser att det är ett bra komplement till tidigare system som använt sig av mer begränsad logik, till exempel tvåvärdiga logiker som första ordningens predikatlogik. Med hjälp av Fuzzy Logic kan man få en bättre representation av omvärlden då man kommer mycket närmare det naturliga språket. Det är till exempel till stor användning inom expertsystem och andra system som tillämpar sig av Fuzzy Logic eller delar av det. Jag tror att användandet kommer att öka allteftersom det visar sig framgångsrikt i sina olika områden. Att kunna representera världen på ett bra sätt är ett ständigt problem när man ska göra AI och inom andra ämnen, men jag tror att man med hjälp av Fuzzy logic kan komma ganska mycket längre, vilket man på flera sätt redan gjort. Jag förstår att det kan finnas kritik mot det här logiken, att den kanske inte tas så seriöst, bland annat på grund av sitt oskarpa namn. Men trots detta skulle jag säga att delmängden Fuzzy logics, i mängden logiker, skulle ha en medlemsgrad mycket närmare 1 än 0. 18
8. Referenser [ 1 ] George J. Klir, Bo Yuan. 1996. FUZZY SETS, FUZZY LOGIC AND FUZZY SYSTEMS, Selected Papers by Lofti A. Zadeh. [ 2 ] Stuart Russel, Peter Norvig. 2003. Artificial Intelligence A Modern Approach. Upper Saddle River 2003 [ 3 ] Hans Bandemer, Siegfried Gottwald, 1995. Fuzzy Sets, Fuzzy Logic, Fuzzy Methods with Applications. John Wiley And Sons [ 4 ] Zadeh. Lofti A. 1979. FUZZY SETS. Operations Research Support Methodology. pp. 569-606 [ 5 ] J.F Baldwin. 1996. Fuzzy Logic. University of Bristol. John Wiley And Sons [ 6 ] E-math Teacher Fuzzy Inference Method, MEMBERSHIP FUNCTIONS 2010-09-12 http://www.dma.fi.upm.es/java/fuzzy/fuzzyinf/funpert_en.htm [ 7 ] Åbo Akademi, FS II: Fuzzy relations 2010-09-12 http://users.abo.fi/rfuller/nfs2.pdf [ 8 ] University of Ulster, Computational Intelligence: Fuzzy relations, rules, and inference 2010-09-12 http://www.infm.ulst.ac.uk/~siddique/ci/ci-week2.pdf [ 9 ] Aptronix, Why Fuzzy 2010-09-19 http://www.aptronix.com/fide/whyfuzzy.htm [ 10 ] Neuro-Fuzzy Systems 2010-09-19 http://fuzzy.cs.uni-magdeburg.de/nfdef.html 19