02.09.2013 Views

Vinterväghållning och expertsystem – en kunskapsöversikt - VTI

Vinterväghållning och expertsystem – en kunskapsöversikt - VTI

Vinterväghållning och expertsystem – en kunskapsöversikt - VTI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2 Expertsystem<br />

2.1 Allmänt<br />

Expertsystem är <strong>en</strong> del av vad datavärld<strong>en</strong> kallar för artificiell intellig<strong>en</strong>s (AI). AI<br />

har sitt ursprung långt tillbaka i tid<strong>en</strong> då man började tänka att d<strong>en</strong> mänskliga<br />

hjärnan arbetade som <strong>en</strong> maskin. Expertsystem eller kunskapssystem är datorsystem<br />

som försöker att efterlikna mänskliga experters metodik för problemlösning.<br />

Kapitlet är i huvudsak <strong>en</strong> översikt över <strong>expertsystem</strong>. Det gör inga anspråk på<br />

att vara heltäckande eller inkludera all d<strong>en</strong> s<strong>en</strong>aste teknik<strong>en</strong>.<br />

2.1.1 Historisk utveckling<br />

Det var först med datorns tillkomst som dessa tidiga tankar om AI kunde testas.<br />

Under 50-talet utvecklades <strong>en</strong>kla program för att t.ex. spela dam. År 1958<br />

utvecklade John McCarthy programspråket LISP, list programming, som blev det<br />

dominerande språket för AI-programmering (Russell & Norvig, 1995).<br />

Ett språk eller programspråk för programmering är <strong>en</strong> typ av program. Språk<strong>en</strong><br />

består av olika kommandon, regler <strong>och</strong> algoritmer. G<strong>en</strong>om att använda dessa<br />

byggst<strong>en</strong>ar tillsammans med eg<strong>en</strong> information kan man bygga program.<br />

Språket LISP är ett symbolspråk. Det är skapat för att hantera logiska resonemang<br />

<strong>och</strong> symboler. LISP klarar att hantera abstrakta resonemang. I konv<strong>en</strong>tionella<br />

språk, t.ex. C, är det inte lika <strong>en</strong>kelt, äv<strong>en</strong> om de kan hantera rekursion. LISP<br />

använder rekursion medan vanliga språk normalt använder iteration för<br />

problemlösning. Ett exempel på rekursion är om programmet söker efter ett värde<br />

på c <strong>och</strong> upptäcker att värdet på a är nödvändigt för att veta c så börjar programmet<br />

om med samma procedur, m<strong>en</strong> söker efter ett värde på a. Ett exempel på<br />

iteration är att programmet börjar med ett värde, t.ex. a, <strong>och</strong> gör <strong>en</strong> beräkning.<br />

Svaret, t.ex. b, används sedan som nytt ingångsvärde. När skillnad<strong>en</strong> mellan ingångsvärde<br />

<strong>och</strong> svar är mindre än ett bestämt värde slutar programmet att göra<br />

beräkningar <strong>och</strong> ger det sista värdet som svar.<br />

LISP program t<strong>en</strong>derar att bli mycket stora <strong>och</strong> därför översätts ofta LISPprogram<br />

till konv<strong>en</strong>tionella språk för att minska storlek<strong>en</strong> <strong>och</strong> öka exekveringshastighet<strong>en</strong>.<br />

Idag har LISP:s kod översatts till modernare språk som C++. D<strong>en</strong><br />

mesta programmering, inom <strong>expertsystem</strong>området, som sker idag är i moderna<br />

språk. Anledning<strong>en</strong> är att språk<strong>en</strong> ger mindre <strong>och</strong> snabbare program. Dessutom<br />

har dag<strong>en</strong>s programmerare mer utbildning på dessa än på LISP-liknande språk.<br />

Med ökad datorkraft <strong>och</strong> kunskap gick man vidare <strong>och</strong> 1968 utvecklades ett<br />

program för diagnostik av blodinfektioner, som heter MYCIN. MYCIN är baserat<br />

på expertintervjuer <strong>och</strong> inte <strong>en</strong> teoretisk modell. Programmet fungerade <strong>en</strong>ligt<br />

tester bättre än nyutexaminerade läkare.<br />

G<strong>en</strong>om att fler <strong>och</strong> fler <strong>expertsystem</strong> utvecklades som hanterade verkliga problem,<br />

ökade krav<strong>en</strong> på att kunskapsrepres<strong>en</strong>tation<strong>en</strong> i språk<strong>en</strong> skulle vara hanterbar.<br />

Med kunskapsrepres<strong>en</strong>tation<strong>en</strong> m<strong>en</strong>as d<strong>en</strong> form d<strong>en</strong> från expert<strong>en</strong> inhämtade<br />

kunskap<strong>en</strong> måste skrivas på för att programspråket ska kunna förstås. I LISP är<br />

det äv<strong>en</strong> för experter svårt att skriva om vanlig kunskap till <strong>en</strong> form som LISP kan<br />

förstå. Ett av de programspråk som utvecklades för att hantera detta är Prolog. Det<br />

är ett språk som bygger på grundläggande logiska resonemang <strong>och</strong> symbolhantering<br />

<strong>och</strong> använder bakåtlänkning, se kap. 2.2, för problemlösning. Prolog utvecklades<br />

av fransmann<strong>en</strong> Alain Colmerauer 1972.<br />

14 <strong>VTI</strong> meddelande 902

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!