BAYESIANSKA NÄTVERK OCH EXPERTSYSTEM I PRAKTIKEN Då, nu, för alltid? 729G43 EMMA JONSSON 2017
Abstract How useful are Bayesian networks as expert systems, and more importantly, are they outdated in comparison to modern day systems? This paper discusses the implementation of Bayesian networks in expert systems, its early practical uses and limitations, as well as the potential future usage of expert systems as part of more complex systems. 1
Innehållsförteckning Abstract... 1 Inledning... 3 Bakgrund... 4 Expertsystem... 4 Bayesianska nätverk... 5 Konstruktion... 7 Bayesianska nätverk och expertsystem... 8 DENDRAL det första expertsystemet... 8 Bakgrund... 8 Process... 9 DENDRAL i praktiken... 10 Kritik... 11 Modern användning av expertsystem... 12 Indri och Watson... 12 Diskussion... 13 Referenser... 15 2
Inledning Denna rapport kommer att ta upp användningen av bayesianska nätverk i expertsystem, hur dessa system kan användas i praktiken och begränsningarna som medföljer, samt framtidsutsikter och vidareutveckling av systemen. Dessa system intresserade mig först och främst för att de var revolutionerande inom området artificiell intelligens; ett system som teoretiskt sätt skulle kunna ersätta en expert inom sitt område gällande råd och problemlösning, genom att använda sig av bayesianska nätverk. Detta var något som jag tyckte lät spännande, och framförallt användbart inom många olika domäner. Dock märkte jag snart att utvecklingen av dessa system avstannade i slutet av 1900- talet, vilket fick mig att reflektera över möjliga begränsningar med systemen. Vid jämförelse av renodlade expertsystem och dagens moderna system märkte jag att inga av de moderna systemen, utvecklade under 2000-talet, definierades som eller ens nämde ordet expertsystem. Detta gav mig en bild av att man snarare tog avstånd av begreppet, vilket vidare fick mig att undersöka hur tidiga expertsystem faktiskt fungerade i praktiken. I rapporten som följer kommer jag dels att gå djupare in på vad expertsystem faktiskt är, och hur bayesianska nätverk är relevanta för dessa. Vidare kommer jag att diskutera det första, renodlade expertsystemet DENDRAL och vad vi kan lära oss av detta. Jag kommer även att ta upp allmän kritik av expertsystem, och hur dessa system är begränsade i praktiken. Slutligen kommer jag att diskutera expertsystemens moderna användning, samt ge ett exempel på detta. 3
Bakgrund Expertsystem Den exakta definitionen av en expert skiljer sig bland forskare, men sammanfattat och övergripligt är en expert någon med exeptionell kunskap eller färdighet inom ett visst område. Expertsystem är datorsystem med syfte att göra logiskt grundade bedömningar inom en komplex domän där den mänskliga kunskapen är bristfällig eller felbar. Kort sagt ska expertsystem kunna hjälpa en novis att fatta samma beslut och dra samma slutsats som en faktisk expert skulle göra, eller möjligen överträffa denne. Dessa system består av en kunskapsbas och en inferensmotor, där kunskapsbasen består av lagrad fakta om domänen i form av nätverk, regler och ramar. Inferensmotorns syfte är att sedan applicera den lagrade kunskapen från kunskapsbasen på det givna fallet genom logiska regler, och därigenom generera ny kunskap som ska överträffa eller mäta sig med experterns utlåtande. Detta sker genom att inferensmotorn drar inferenser slutsatser utifrån de givna premisserna för fallet. Ofta sker detta uteslutande genom logiska steg, medan det i andra fall exempelvis inom vården, där dessa system har haft stora genombrott krävs mer än så för att generera ett grundat och framförallt korrekt utlåtande. I dessa fall behöver systemet mer än den information som finns lagrad i kunskapsbasen. Här krävs även information om patieten och dennes unika stadie, som inte nödvändigtvis stämmer överens exakt med vad som finns lagrat i kunskapsbasen, vilket innebär att premisserna inte helt stämmer överrens med reglerna systemet förväntas följa. Därför krävs ett användargränssnitt, som tillåter användaren att interagera med systemet genom input och output. Denna funktion är den primära skillnaden mellan eller expertsystem och ett vanligt system, då detta tillåter interaktion som påverkar den slutsats som expertsystemet genererar. 4
Figur 1. En ritning av ett expertsystem. Detta visar hur experten lagrar information i kunskapsbasen. Inferensmotorn använder sedan denna lagrade kunskap och applicerar den på det givna fallet för att kunna dra inferenser välgrundade slutsatser. Detta förmedlas sedan genom ett användargränssnitt som tillåter användaren att interagera med systemet. (G.M. Marakas 2003, S.L. Lauritzen, D.J. Spiegelhalter 1988) Bayesianska nätverk Bayesianska nätverk, är en grafisk sannolikhetsmodell som beskriver sambandet mellan orsak och verkan, s.k. kausalitet. De kan representeras som riktade, acykliska grafer bestående av noder och kanter. Det krävs att graferna ska vara acykliska för att processen ska kunna nå ett slut och en slutsats, vore grafen cyklisk skulle en lösning aldrig nås. Noderna har en betingad sannolikhetsfördelning och representerar stokastiska osäkra variabler, medan kanterna representerar sambandet eller relationen mellan variablerna. 5
Figur 2. Ett enkelt bayesianskt nätverk. Här visar pilarna att Context1 och Context2 är föräldrar till Hypothesis, som i sin tur är förälder till Activity1 och activity2. Det visar även den acykliska strukturen hos grafen. Bayesianska nätverk kan användas för att fatta beslut under osäkerhet, för att generera den mest optimala lösningen genom att resonera kring det givna problemet. Bayesianska nätverk har visat sig vara särskilt användbara inom besluts- och riskanalyser, tack vare dess förmåga att uppskatta möjliga utfall utifrån samtliga givna premisser i varje unikt fall. Detta gör att bayesianska nätverk kan leda till ett mer effektivt och välgrundat beslutsfattande, vilket förklarar varför dessa kallas just expertsystem. Specifikationen av bayesianska nätverk kan delas upp i två underkategorier; en kvalitativ del och en kvantitativ. Den kvalitativa delen utgörs av nätverkets grafiska struktur, medan den kvantitativa delen består av sannolikhetsfördelningen eller sannolikhetstabellerna, conditional probability tables (CPT). För att närmare förklara BN s uppbyggnad och dess verkliga nytta i expertsystem kommer här en genomgång av hur nätverken fungerar. I en bayesianskt nätverk representerar varje nod i grafen en variabel. Om det går en pil mellan nod X och nod Y anses nod X vara förälder till nod Y.Varje nod Xi har en betingad sannolikthetsfördelning, P(Xi Förälder(Xi)), som anger förälderns effekt på noden. Varje nod i bayesianska nätverk måste kunna knytas till ett sanningsvärde Q. Detta värde kan vara sant eller falskt, där Q = sant betyder att en händelse eller ett tillstånd inträffat, medan Q = falskt innebär att det inte gör det. Vidare presenteras betingad sannolikhet som följande; om 6
Q = sant givet att R = falskt skrivs detta som P(Q = sant R = falskt). Sannolikheten för Q definieras som P(Q). Varje möjligt tillstånd som Q kan ha tilldelas en sannolikhet. Exempelvis om Q kan ha värdet a, b eller c så betecknas sannolikheten för detta som P(Q = a), P(Q = b) och P(Q = c). Figur 3. Ovan är ett bayesianskt nätverk med fem variabler; Context1, Context2, Hypothesis, Activity1 och Activity2 med motsvarande sannolikhetstabell vid varje nod. (T. Gustavi et. al 2011, P. Norvig, S. Russel 2010) Konstruktion Först och främst skrivs entiteterna i form av betingad sannolikhet, som togs upp tidigare. För att skriva om dessa entiteter används produktregeln, som är definitionen av den betingade sannolikheten: Denna regel innebär att för att a och b ska vara sanna måste b vara sann, och även att a måste vara sann givet b. Detta skrivs sedan om för samtliga entiteter, där xn representerar möjliga värden för X. 7
Denna process repeteras sedan. Här reduceras varje konjunktiv sannolikhet till en mindre och betingad sannolikhet som resulterar i en enda stor slutprodukt. Denna process kallas för kedjeregeln. (P. Norvig, S. Russel 2010, W. Burgers, B. Kappen, W. Wiegerinck 2010) Bayesianska nätverk och expertsystem Bayesianska nätverk har blivit ett välutvecklat och vanligt modelleringsverktyg för expertsystem, tack vare dess förmåga att hantera domäner med osäkerhet. En av de primära anledningarna till detta är att dess representation av probabilistiska modeller sannolikhetsmodeller i form av nätverk. Dess grafiska representationen underlättar dessutom för oss människor att se relationer mellan variabler och hur dessa är beroende eller oberoende av varandra. Samtidigt baseras slutsatserna i bayesianska nätverk på observationer av det givna fallet, vilket innebär att alla antaganden finns i modellen; variablerna, premisserna och den grafiska strukturen. Detta ökar i sin tur tillförlitligheten hos systemet. DENDRAL det första expertsystemet Bakgrund Det råder delade meningar gällande huruvida DENDRAL faktiskt var det första expertsystemet, men det var det första systemet där en kunskapsbas kunde redigeras och omdefinieras för nya problem tack vare ett användargränssnitt men samtidigt kunde använda sin ursprungliga kod för att tolka den nya informationen. Det var även det första regelbaserade systemet som på ett fungerande sätt kunde applicera sin kunskap och slutledningsförmåga på verkliga problem. Baserat på detta väljer jag att kalla DENDRAL för det första expertsystemet. DENDRAL utvecklades 1965 av Edward Feigenbaum, Bruce Buchanan och Joshua Lederberg vid Standford University. Systemet hade som syfte att identifiera okända organiska molekyler 8
genom masspektrometri, som innebär att molekylen i fråga joniseras och delas upp i mindre bitar som sedan kan analyseras vidare, samt en kemiskt inriktad kunskapsbas. Detta var också det första systemet som lyckades rivalisera med forskare inom området (i vissa fall) genom att framgångsrikt simulera den vetenskapliga processen som innebar att forma en hypotes, söka efter liknande strukturer och slutligen hitta och dra den mest rimliga slutsatsen. (B.G. Buchanan, E.A. Feigenbaum, J. Lederberg, R.K. Lindsay 1993, Y. Cai 2015) Process DENDRAL s process består utav tre delar; 1. PLAN Denna del syftar på planeringen av problemlösningen, vilket i praktiken innebär att omdefiniera problemet så att systemet med enkelhet kan hantera det och reducera komplexiteten. I DENDRALS fall kunde detta innebära att problemet att hitta samtliga möjliga molekyler omdefinieras 2. GENERATE Här genererar DENDRAL s algoritm kemiska grafer av de funna molekylerna. Detta inkluderade endast dem som inte inkluderade av icke godkända atomer samt de som inte exkluderade obligatoriska atomer. Begränsningarna ovan bestämdes av kemisten som använde sig av programmet, och inte av själva planeringsdelen. Detta är också ett exempel på hur användargränssnittet implementerades i systemet och kunde användas i praktiken. 3. TEST I test-delen analyseras alla möjliga kandidater som genererades i stadie två och därmed följde riktlinjerna och begränsningarna för det givna fallet. De som inte följer samtliga premisser förbises. De kvarvarande alternativen rankas genom att deras beteende simuleras i masspektrometern. Det som mest liknar beteendet hos det empiriska provet rankas högst. (A. Barr, E.A. Feigenbaum 1982) 9
DENDRAL i praktiken Trots att DENDRAL visade sig vara ett lyckat projekt inom sin domän hade systemet sina begränsningar. Först och främst så var DENDRAL bäst på att hantera mindre problem vid vilka forskaren inte behövde speciellt mycket assistans. Även om detta inte är något negativt så motgår det syftet med ett expertsystem, som ju ska kunna hjälpa till att lösa problem och dra slutsatser i miljöer som är för komplexa, även för en expert. Samtidigt menade experter att det i DENDRAL s fall faktiskt var lättare för dem att använda penna och papper än systemet för att lösa denna typ av enkla problem. Ur detta perspektiv kan användningen av DENDRAL anses vara limiterad; att ett system vars ursprungliga syfte var att dra välgrundade slutsatser i komplexa miljöer varken kan hantera komplexa problem eller dra inferenser gällande dessa gör det lätt att ifrågasätta den verkliga funktionaliteten hos programmet. Att experter inom dess tilltänkta användningsområde dessutom valde att använda penna och papper eller ett uppslagsverk för att lösa de problem som DENDRAL faktiskt kunde hantera, exempelvis vid identifikation av giftiga substanser, ger en bild av att systemet till och med var överflödigt, även på sin tid. Detta är dock inte fallet. Trots kritiken så användes DENDRAL i praktiken och hade flera stora framgångar inom medicin. Man upptäckte även att DENDRAL hade alternativa användningsområden. Ett av dessa områden var vid kontroll av lösningar. Detta innebar exempelvis att om en kemist tyckte sig ha hittat en lösning, och DENDRAL kunde utesluta denna som ett alternativ, så innebar det att kemisten antingen hade gjort en felaktig analys av materialet, eller att begränsningar i datan blivit felaktigt definierade. Detta var möjligt tack vare DENDRAL s nogranna beaktande av de regler och begränsingar som datan medfört i varje specifikt fall. Vidare erbjöd DENDRAL i många fall alternativa lösningar till de framställda av forskare. Något som tagits upp tidigare är expertsystems förmåga att resonera kring konsekvenser av olika beslut för att hitta det mest optimala, och så även DENDRAL. Även om detta har visat sig vara bristfälligt i praktiken i många fall så innebär denna förmåga att systemet ofta har möjlighet att hitta fler lösningar än en forskare tack vare dess grundlighet gällande just alternativa lösningar, samt att systemet med korrekta premisser kan uppskatta alla potentiella utfall. Detta för att människor inte alltid ser samtliga möjliga lösningar på problem, och därmed kan missa alternativ. 10
Samtidigt innebär begränsningarna hos systemet även att forskaren kan ha tagit andra faktorer och begräsningar i beaktning som inte kunnat formuleras hos systemet. I en studie visades detta genom att jämföra tolv fall där DENDRAL hittat alternativa lösningar till de presenterade av forskare. Vid vidare analys visade det sig sedan att de mest optimala lösningarna var de presenterade av forskare i elva av fallen. (B.G. Buchanan, E.A. Feigenbaum, J. Lederberg, R.K. Lindsay 1993) Kritik En stor fördel med just bayesianska nätverk att dess förmåga att dra inferenser, eller slutledningar, ur de givna premisserna baserat på regler. Ett enkelt expempel på detta kan exempelvis vara; Om det regnar blir marken blöt, Det regnar, alltså är marken blöt. Samtidigt kan denna funktion kritiseras när det kommer till användning av systemet i praktiken. Trots att bayesianska nätverk har ett stort användningsområde inom expertis och komplexa domäner så utgår modellen ifrån att alla möjliga premisser är givna, vilket inte alltid är fallet. Detta togs upp redan under Expertsystem, men för att gå djupare in på vad detta innebär måste vi även se till strukturen av bayesianska närverk. Följande är ett teoretiskt exempel som gjorts mycket enkelt, i verkligheten skulle just detta fall inte vara speciellt komplext för ett expertsystem, och det skulle heller inte krävas någon expert för att ställa diagnosen. Antag att en patient vill ha en diagnos. Denna ska ställas av ett expertsystem inom vården. Patienten lider av halsont och feber, vilket skulle leda expertsystemet till att diagnotisera denne med halsfluss. Dock klagar patienten även på huvudvärk, vilket inte är listat som en av premisserna för halsfluss hos systemet. Detta skulle alltså komplicera diagnosen, eftersom att premisserna inte helt överrensstämmer med det unika fallet. Detta problem är något som kan åtgärdas tack vare användarsgränssnittet som tillåter användaren att interagera med systemet och därmed uppdatera premisserna, men samtidigt är det mer tidskrävande och kan försvåra arbetet om fallet är mer komplext än det ovan. Ytterligare kritik har riktats mot effektiviteten hos bayesianska nätverk i praktiken. Variablerna i grafen är statiska, sålänge de inte tilldelas ett nytt värde. Detta är inget problem när systemet gör en mindre representation, men i verkligheten kan det komplicera användandet. Antag t.ex. att man vill mäta vattennivån dagligen på en plats för att undersöka förändringar. Detta skulle då innebära att så fort en förändring sker måste initialtillståndet ändras för att stämma överrens med den givna dagen. För att göra detta skulle input- och outputnoder behöva uppdateras så 11
fort värdena gör det, vilket leder till orimligt stora modeller. Denna representation är i relativt liten skala jämfört med vad som kan krävas i praktiken, vilket ger oss en uppfattning om hur komplexa modellerna och hanteringen av dessa skulle bli. Vidare är bayesianska nätverk och algoritmerna för dessa anpassade för diskreta variabler, och kan endast dra inferenser utifrån dessa, och kan inte hantera kontinuerliga noder. Detta innebär i praktiken exempelvis att om en nod ska representera antaler fel funna i ett system så måste intervallet specifieras och omdefinieras till ett diskret värde. Ju fler och mindre intervall som specificeras, desto större tillförlitlighet. Det går alltså inte att sätta intervallet mellan noll och oändligt, en begränsning hos systemet som ökar komplexiteten hos systemet och minskar dessutom tillförlitligheten eftersom att det kräver att en människa uppskattar ett godtyckligt intervall. Att experten själv måste anpassa intervallen tar dessutom tid och bidrar till en osäkerhet gällande hur stora eller små intervallen bör vara. För att kunna hantera kontinuerliga variabler har man försökt att utveckla underklasser till bayesianska nätverk, men i dessa fall märkte man att de usprungliga algoritmerna antingen var för ineffektiva eller inte fungerade alls. (N. Fenton, M. Neil 2007, W. Burgers, B. Kappen, W. Wiegerinck 2010) Modern användning av expertsystem Något som togs upp i inledningen var huruvida expertsystem är utdöende eller omoderna. Expertsystem tycks inte längre stå i fokus när det kommer till utvecklling av nya intelligenta system, vilket kan göra att expertsystem och dess nytta kan ifrågasättas. Även om renodlade expertsystem idag inte är lika populära så används bayesisanska nätverk och dess funktion hos expertsystem fortfarande inom artificiell intelligens. Nedan beskrivs ett alternativt användningsområde och implementering av expertsystem i ett modernt samhälle. Indri och Watson Watson är ett datorsystem utvecklat av IBM som till en börjar hade ett QA-fokus frågor-ochsvar-fokus där systemet skulle kunna använda sig av naturligt språk och därigenom kunna kommunicera med människor. Detta skulle sedan testas i den amerikanska frågesporten Jeopardy!, där systemet skulle utmana mänskliga deltagare. 2007 skapades systemet, och 2011 nåddes målet när Watson vann tävlingen. Fokuset skiftade från att kunna hantera naturligt mänskligt språk till att istället kunna utföra flera tjänster, och framför allt att kunna imitera 12
mänskligt lärande och våra kognitiva processer. Systemet har använts i appar för matlagning, självstyrande bilar och inom flera områden. Vidare har Watson haft stora framgångar inom vården, framför allt vid diagnoser och cancer-behandlingar. På många sätt kan Watson liknas vid ett klassiskt expertsystem; det stödjer beslutsfattande i komplexa domäner och har ett interaktivt gränssnitt. Samtidigt skiljer sig systemet i många avseenden, och därför anses det inte vara just ett expertsystem. Expertsystem som beskrivet tidigare av bayesianska nätverk, vilket medför att hela systemet och dess funktion är regelbaserat. All kunskap används enligt dessa regler, och systemet kan inte själv lära sig ny kunskap. Även om Watson till stor del använder sig av regler och algoritmer så finns det ingen enda algoritm som generar den slutgiltiga lösningen. Istället uppdaterar sig systemet efter att ha hanterat ny information, och dess processer och effektivitet leder till att systemet kan hantera mycket mer komplexa problem än ett vanligt expertsystem. Hur är Watson då relevant för expertsystem, och tvärt om? Jo, för att kunna hitta och hantera ny information krävs sökmotorer som är implementerade hos Watson. En av dessa är Indri, en sökmotor som använder sig av bayesianska nätverk för att ranka sökresultat. Indri fungerar på samma sätt som tidigare expertsystem, genom att använda sig av noder och kluster av dessa för att hitta det mest optimala sökresultatet. Indri kan alltså klassas som ett expertsystem baserat på regler, och använder bayesianska nätverk på samma sätt som tidigare expertsystem. Detta visar expertsystems relevans för moderna datorsystem, och hur de kan utgöra byggstenar i något mycket mer komplext än det egna systemet. (K. Krempels, A. Stocker 2013, C.M. Bhatt, S.K Pedoju 2016) Diskussion Denna rapport har fokuserat på expertsystems användande av bayesianska nätverk och dess effektivitet gällande beslutsstödjande vid komplexa problem. I många avseende kan dessa anses omderna och ineffektiva. Jag har bland annat tagit upp dess faktiska ineffektivitet vid hantering av komplexa problem, samt hur hanteringen av bayesianska nätverk kan anses komplicerade tack vare dess statiska variabler. Även om användargränssnittet självklart förbättrar förutsättningarna för systemet så kan det vid komplexa fall vara både tidskrävande och ineffektivt att behöva ändra premisser och uppdatera variblers värden för att kuna hantera det givna fallet. 13
Även det första expertsystemet DENDRAL har tagits upp och begränsningarna med detta system. Vid första anblick kan det tyckas ineffektivt för användare att använda sig av ett system som komplicerar problemet mer än om användaren skulle använda penna och papper för att lösa det. Detta stämmer såklart, men samtidigt anser jag att man bör uppskatta de alternativa användningsområdena för DENDRAL (och tidiga expertsystem i allmänhet). I det givna exemplet menade man att systemet kunde generera alternativa lösningar, som visserligen i detta fall var sämre än expertens egna lösning p.g.a svårigheterna att definiera vissa premisser i systemet. Dock ser jag fortfarande detta som ett positivt alternativt användningsområde inte specifikt för DENDRAL, utan för expertsystem i allmänhet. Alternativa lösningar som användaren inte själv tänkt på kan inte bara leda till en bättre lösning (även om detta visade sig fallet särskilt ofta i exemplet), utan även till en mer nyanserad syn på problemet som förhoppningsvis kan resultera i ökat kunskap, både om det specifika problemet men också om området i allmänhet. Dessa alternativa användningsområden är också anledningen till att jag skulle vilja hävda att expertsystem inte är omoderna eller föråldrade inom området artificiell intelligens. Exemplet med Indri och Watson visar hur ett expertsystem kan användas som en del av ett större system, och även utgöra en väsentlig del av informationsbeabetningsprocessen. Indri använder bayesianska nätverk på samma sätt som tidiga expertsystem, men i detta fall för att ranka sökresultat. Detta kan tyckas vara en nedgradering i betydelse; att användas som sökmotor istället för identifiering av molekyler, men jag tror knappast att användningsområdet är limiterat till just detta. För det första så nämdes det tidigare i rapporten hur Watson kan ställa diagnoser. Även detta kräver någon form av expertsystem för att ranka möjliga utfall efter optimalitet utifrån de givna premisserna. Vidare så utgör just denna funktion en viktig byggsten i alla system som måste resonera kring vilken lösning som är den bästa i ett specifikt fall. Trots att expertsystem inte kunde hantera alltför komplexa problem och miljöer så anser jag definitivt att de har en viktig roll inom framtida intelligenta system, även om de inte nödvändigtvis utgör huvuddelen av systemet. Därför vill jag hävda att expertsystem varken är föråldrade, omoderna eller ineffektiva, de är istället vitala delar i utvecklingen av mer komplexa system. 14
Referenser Barr, A., & Feigenbaum, E. (1982). The Handbook of Artificial Intelligence. Stanford: HeurisTech Press. Bhatt, C., & Peddoju, S. (2016). Cloud Computing Systems and Applications in Healthcare. Roorkee: Indian Institute of Technology. Buchanan, B., Feigenbaum, E., Lederberg, J., & Lindsay, R. (1993). DENDRAL: a case study of the first expert system for scientific hypothesis formation. Elsevier Science Publishers. Burgers, W., Kappen, B., & Wiegerinck, W. (2010). Bayesian Networks for Expert Systems: Theory and Practical Applications. Springer. Cai, Y. (2015). Ambient Diagnostics. Pittsburgh: CRC Press. Fenton, N., & Neil, M. (2007). Managing Risks in the Modern World: Applications of Bayesian Networks. London: London Mathematical Society. Krempels, K., & Stocker, A. (2013). Web Information Systems and Technologies. Springer. Lauritzen, S. L., & Spiegelhalter, D. (1988). Local Computations with Probabilities on Graphical Structures and Their Application to Expert Systems. Blackwell Publishing for the Royal Statistical Society. Marakas, G. (2003). Decision support systems: In the 21st century. London: Prentice Hall. Norvig, P., & Russel, S. (2010). Artificial Intelligence: A Modern Approach. New Jersey: Pearson Education. Tove et. al. (2011). Analytiska Verktyg. Stockholm: FOI. 15