Inferensmotor - Inference engine
Inden for kunstig intelligens er en slutningsmotor en komponent i systemet, der anvender logiske regler på vidensbasen for at udlede ny information. De første inferensmotorer var komponenter i ekspertsystemer . Det typiske ekspertsystem bestod af en vidensbase og en slutningsmotor. Vidensbasen lagrede fakta om verden. Inferensmotoren anvender logiske regler på vidensbasen og udledte ny viden. Denne proces ville gentage sig, da hver ny kendsgerning i vidensbasen kunne udløse yderligere regler i slutningsmotoren. Inferensmotorer fungerer primært i en af to tilstande enten speciel regel eller fakta: fremadkædning og bagudkædning . Forward chaining starter med de kendte fakta og hævder nye fakta. Baglæns kæde starter med mål og arbejder baglæns for at bestemme, hvilke fakta der skal hævdes, så målene kan nås.
Arkitektur
Logikken, som en slutningsmotor anvender, repræsenteres typisk som IF-THEN-regler. Det generelle format for sådanne regler er HVIS <logisk udtryk> SÅ <logisk udtryk>. Inden udviklingen af ekspertsystemer og inferensmotorer fokuserede forskere på kunstig intelligens på mere kraftfulde teorem-bevismiljøer , der tilbød meget fyldigere implementeringer af første ordens logik . For eksempel generelle udsagn, der omfattede universel kvantificering (for alle X er noget udsagn sandt) og eksistentiel kvantificering (der findes noget X, så noget udsagn er sandt). Hvad forskere opdagede er, at kraften i disse teorembevisende miljøer også var deres ulempe. Tilbage i 1965 var det alt for let at skabe logiske udtryk, der kunne tage en ubestemt eller endda uendelig lang tid at afslutte. For eksempel er det almindeligt inden for universel kvantificering at komme med udsagn over et uendeligt sæt, såsom mængden af alle naturlige tal. Sådanne udsagn er helt rimelige og endda påkrævede i matematiske beviser, men når de indgår i en automatisk sætningsprover, der udføres på en computer, kan det få computeren til at falde i en uendelig sløjfe. Fokus på IF-THEN-udsagn (hvad logikere kalder modus ponens ) gav stadig udviklere en meget kraftfuld generel mekanisme til at repræsentere logik, men en der kunne bruges effektivt med beregningsressourcer. Desuden er der en del psykologisk forskning, der indikerer, at mennesker også har en tendens til at favorisere HVIS-SÅ repræsentationer, når de gemmer kompleks viden.
Et enkelt eksempel på modus ponens, der ofte bruges i indledende logiske bøger, er "Hvis du er et menneske, er du dødelig". Dette kan repræsenteres i pseudokode som:
Rule1: Human(x) => Mortal(x)
Et trivielt eksempel på, hvordan denne regel ville blive brugt i en slutningsmotor, er som følger. Ved fremadkædning ville slutningsmotoren finde alle fakta i den vidensbase, der matchede Human (x), og for hvert faktum, den fandt, ville tilføje den nye information Mortal (x) til vidensbasen. Så hvis den fandt et objekt kaldet Sokrates, der var menneskeligt, ville det udlede, at Sokrates var dødelig. Ved baglæns kæde ville systemet få et mål, f.eks. Besvare spørgsmålet om Sokrates er dødelig? Det ville søge gennem vidensbasen og afgøre, om Sokrates var et menneske og i så fald ville hævde, at han også er dødelig. Ved baglæns kæde var en almindelig teknik imidlertid at integrere slutningsmotoren med en brugergrænseflade. På den måde kunne systemet nu være interaktivt frem for blot at blive automatiseret. I dette trivielle eksempel, hvis systemet fik målet om at besvare spørgsmålet, hvis Sokrates var dødelig, og det endnu ikke vidste, om han var et menneske, ville det generere et vindue til at stille brugeren spørgsmålet "Er Sokrates menneske?" og ville derefter bruge disse oplysninger i overensstemmelse hermed.
Denne innovation med at integrere slutningsmotoren med en brugergrænseflade førte til den anden tidlige udvikling af ekspertsystemer: forklaringsmuligheder. Den eksplicitte repræsentation af viden som regler frem for kode gjorde det muligt at generere forklaringer til brugerne: både forklaringer i realtid og efter det faktum. Så hvis systemet spurgte brugeren "Er Sokrates menneske?", Kan brugeren undre sig over, hvorfor hun blev stillet det spørgsmål, og systemet ville bruge regelsættet til at forklare, hvorfor det i øjeblikket forsøgte at fastslå den smule viden: det er , skal den afgøre, om Sokrates er dødelig, og for at gøre det skal den afgøre, om han er menneske. I første omgang var disse forklaringer ikke meget anderledes end standardfejlfindingsoplysningerne, som udviklere beskæftiger sig med, når de fejler ethvert system. Et aktivt forskningsområde var imidlertid at udnytte naturligt sprogteknologi til at stille, forstå og generere spørgsmål og forklaringer ved hjælp af naturlige sprog frem for computerformalismer.
En slutningsmotor cykler gennem tre sekventielle trin: match regler , vælg regler og udfør regler . Udførelsen af reglerne vil ofte resultere i, at nye fakta eller mål føjes til vidensbasen, hvilket vil få cyklen til at gentages. Denne cyklus fortsætter, indtil ingen nye regler kan matches.
I det første trin, matchregler, finder slutningsmotoren alle de regler, der udløses af det aktuelle indhold i vidensbasen. Ved fremadkædning søger motoren efter regler, hvor antecedenten (venstre side) matcher et eller andet faktum i vidensbasen. Ved baglæns kæde leder motoren efter antecedenter, der kan opfylde et af de nuværende mål.
I det andet trin vælger regler, prioriterer slutningsmotoren de forskellige regler, der blev matchet for at bestemme rækkefølgen for at udføre dem. I det sidste trin, udfør regler, udfører motoren hver matchede regel i den rækkefølge, der er bestemt i trin to, og gentager derefter tilbage til trin et igen. Cyklussen fortsætter, indtil der ikke matches nye regler.
Implementeringer
Tidlige inferensmotorer fokuserede primært på fremadkædning. Disse systemer blev normalt implementeret i programmeringssproget Lisp . Lisp var en hyppig platform for tidlig AI -forskning på grund af dets stærke evne til at udføre symbolsk manipulation. Som et fortolket sprog tilbød det også produktive udviklingsmiljøer, der er egnede til fejlfinding af komplekse programmer. En nødvendig konsekvens af disse fordele var, at Lisp-programmer tendens til at være langsommere og mindre robust end kompilerede sprog i den tid, såsom C . En almindelig fremgangsmåde i disse tidlige dage var at tage en ekspert systemapplikation og ompakke den slutningsmotor, der blev brugt til systemet, som et genanvendeligt værktøj, andre forskere kunne bruge til udvikling af andre ekspertsystemer. Eksempelvis var MYCIN et tidligt ekspertsystem til medicinsk diagnose, og EMYCIN var en slutningsmotor ekstrapoleret fra MYCIN og stillet til rådighed for andre forskere.
Da ekspertsystemer flyttede fra forskningsprototyper til implementerede systemer, var der mere fokus på spørgsmål som hastighed og robusthed. En af de første og mest populære fremadkædede motorer var OPS5, som brugte Rete -algoritmen til at optimere effektiviteten af regelaffyring . En anden meget populær teknologi, der blev udviklet, var programmeringssproget Prolog logic. Prolog fokuserede primært på bagudkædning og havde også forskellige kommercielle versioner og optimeringer for effektivitet og robusthed.
Da ekspertsystemer tilskyndede betydelig interesse fra forskellige virksomheder i erhvervslivet, startede eller ledede mange af dem af fremtrædende AI -forskere produktiserede versioner af slutningsmotorer. For eksempel blev Intellicorp oprindeligt guidet af Edward Feigenbaum . Disse slutninger motorprodukter blev også ofte udviklet i Lisp i starten. Kravene til mere overkommelige og kommercielt levedygtige platforme gjorde til sidst PC -platforme meget populære.
Se også
- Geometrisk og topologisk inferens
- Handlingsvalgmekanisme
- Baglæns kæde
- Ekspert system
- Fremadkædning
- Induktiv slutning