Päätösmoottori - Inference engine
Alalla tekoälyn An päättelykonetta on osa järjestelmää, joka koskee loogisia sääntöjä tietopohjaa päätellä uutta tietoa. Ensimmäiset päättelymoottorit olivat osa asiantuntijajärjestelmiä . Tyypillinen asiantuntijajärjestelmä koostui tietopohjasta ja päättelymoottorista. Tietopohjaan on tallennettu tosiasioita maailmasta. Päätelmämoottori soveltaa loogisia sääntöjä tietopohjaan ja johtaa uutta tietoa. Tämä prosessi toistuu, koska jokainen tietokannan uusi tosiasia voi laukaista lisäsääntöjä päättelymoottorissa. Päätelmämoottorit toimivat pääasiassa jossakin kahdesta tilasta, joko erityissäännöistä tai tosiasioista: ketju eteenpäin ja taaksepäin . Eteenpäin ketjutus alkaa tunnetuista tosiasioista ja väittää uusia tosiasioita. Taaksepäin suuntautuva ketjutus alkaa tavoitteista ja toimii taaksepäin määrittääkseen, mitkä tosiasiat on esitettävä, jotta tavoitteet voidaan saavuttaa.
Arkkitehtuuri
Päätelmämoottorin käyttämä logiikka esitetään tyypillisesti IF-THEN-sääntöinä. Tällaisten sääntöjen yleinen muoto on JOS <looginen lauseke> THEN <looginen lauseke>. Ennen asiantuntijajärjestelmien ja päättelymoottorien kehittämistä tekoälyn tutkijat keskittyivät tehokkaampiin lauseiden todistajaympäristöihin, jotka tarjosivat paljon täydellisempiä ensimmäisen asteen logiikan toteutuksia . Esimerkiksi yleiset lausumat, jotka sisälsivät yleisen kvantifioinnin (kaikille X: lle jokin väite on totta) ja eksistentiaalinen kvantifiointi (on olemassa joitakin X: iä, joiden perusteella jokin väite on totta). Tutkijat havaitsivat, että näiden lauseita osoittavien ympäristöjen voima oli myös niiden haitta. Vielä vuonna 1965 oli aivan liian helppoa luoda loogisia ilmaisuja, joiden päättyminen voi kestää määrittelemättömän tai jopa loputtoman ajan. Esimerkiksi yleisessä kvantifioinnissa on tavallista antaa lausuntoja äärettömälle joukolle, kuten kaikkien luonnollisten lukujen joukolle. Tällaiset lausunnot ovat täysin kohtuullisia ja vaativat jopa matemaattisissa todisteissa, mutta kun ne sisältyvät automatisoituun lauseen sananlaskuun, tietokoneen suorittaminen saattaa aiheuttaa tietokoneen putoamisen äärettömään silmukkaan. Keskittyminen IF-THEN-lausuntoihin (joita logiikat kutsuvat modus ponensiksi ) antoivat kehittäjille edelleen erittäin tehokkaan yleisen mekanismin logiikan esittämiseksi, mutta sellaista, jota voitaisiin käyttää tehokkaasti laskentaresursseilla. Lisäksi on olemassa joitakin psykologisia tutkimuksia, jotka osoittavat, että ihmiset suosivat myös IF-THEN-esityksiä monimutkaisen tiedon tallentamisessa.
Yksinkertainen esimerkki modus ponensista, jota usein käytetään johdanto -logiikkakirjoissa, on "Jos olet ihminen, olet kuolevainen". Tämä voidaan esittää pseudokoodina seuraavasti:
Rule1: Human(x) => Mortal(x)
Seuraava triviaali esimerkki siitä, miten tätä sääntöä käytettäisiin päättelymoottorissa, on seuraava. Vuonna eteenpäin ketjutus , päättelykonetta löytäisi mitään tosiasioita tietopohja täsmäsi Human (x) ja kunkin asiassa se löysi lisäisi uuden tiedon Mortal (x) tietopohjaa. Joten jos se löysi Sokrates -nimisen esineen, joka oli ihminen, se päättelisi, että Sokrates oli kuolevainen. Vuonna taaksepäin ketjuttamalla järjestelmä saisi tavoite, esimerkiksi kysymykseen on Sokrates kuolevainen? Se etsisi tietopohjaa ja määrittäisi, oliko Sokrates ihminen, ja jos olisi, väittäisi olevansa myös kuolevainen. Kuitenkin taaksepäin ketjutuksessa yleinen tekniikka oli integroida päättelymoottori käyttöliittymään. Tällä tavalla järjestelmä voisi olla interaktiivinen sen sijaan, että se olisi vain automatisoitu. Tässä vähäisessä esimerkissä, jos järjestelmälle annettiin tavoite vastata kysymykseen, onko Sokrates kuolevainen, eikä se vielä tiedä, onko hän ihminen, se luo ikkunan, jossa käyttäjä voi kysyä kysymyksen "Onko Sokrates ihminen?" ja käyttää sitten tietoja vastaavasti.
Tämä innovaatio, jossa päättelymoottori integroitiin käyttöliittymään, johti asiantuntijajärjestelmien toiseen varhaiseen kehitykseen: selitysominaisuudet. Tietämyksen selkeä esitys sääntöinä eikä koodina mahdollisti selitysten luomisen käyttäjille: sekä selityksiä reaaliajassa että jälkikäteen. Joten jos järjestelmä kysyi käyttäjältä "Onko Sokrates ihminen?", Käyttäjä voi ihmetellä, miksi häneltä kysyttiin kyseinen kysymys, ja järjestelmä käyttäisi sääntöjen ketjua selittääkseen, miksi se yritti parhaillaan saada selvää siitä tiedosta: , sen on selvitettävä, onko Sokrates kuolevainen, ja tehdäkseen sen on selvitettävä, onko hän ihminen. Aluksi nämä selitykset eivät olleet paljon erilaisia kuin tavalliset virheenkorjaustiedot, joita kehittäjät käsittelivät virheenkorjauksessa mistä tahansa järjestelmästä. Kuitenkin aktiivinen tutkimusalue käytti luonnollista kieliteknologiaa kysymysten esittämiseen, ymmärtämiseen ja kysymysten ja selitysten luomiseen käyttämällä luonnollisia kieliä eikä tietokoneformalismeja.
Päätelmämoottori käy läpi kolme peräkkäistä vaihetta: sovita säännöt , valitse säännöt ja suorita säännöt . Sääntöjen täytäntöönpano johtaa usein siihen, että tietopohjaan lisätään uusia tosiasioita tai tavoitteita, jotka saavat syklin toistumaan. Tämä sykli jatkuu, kunnes uusia sääntöjä ei voida yhdistää.
Ensimmäisessä vaiheessa vastaavuussäännöt päättelymoottori löytää kaikki säännöt, jotka tietopohjan nykyinen sisältö laukaisee. Etuketjussa moottori etsii sääntöjä, joissa edeltäjä (vasen puoli) vastaa jotakin tietopohjan faktaa. Taaksepäin ketjutuksessa moottori etsii edeltäjiä, jotka voivat täyttää jonkin nykyisistä tavoitteista.
Toisessa vaiheessa valitse säännöt, päättelymoottori priorisoi eri säännöt, jotka sovitettiin niiden suoritusjärjestyksen määrittämiseksi. Viimeisessä vaiheessa, suorita säännöt, moottori suorittaa jokaisen sovitetun säännön vaiheessa 2 määritetyssä järjestyksessä ja toistaa sitten takaisin vaiheeseen yksi uudelleen. Sykli jatkuu, kunnes uusia sääntöjä ei ole sovittu.
Toteutukset
Varhaisen päättelyn moottorit keskittyivät pääasiassa eteenpäin ketjutukseen. Nämä järjestelmät toteutettiin yleensä Lisp -ohjelmointikielellä. Lisp oli usein alusta varhaiselle tekoälytutkimukselle, koska sillä oli vahva kyky tehdä symbolista manipulointia. Lisäksi se tarjosi tulkittuna kielenä tuottavia kehitysympäristöjä, jotka sopivat monimutkaisten ohjelmien virheenkorjaukseen . Välttämätön seuraus näistä eduista oli se, että Lisp ohjelmat taipumus olla hitaampaa ja vähemmän kestäviä kuin koottu kieliä ajasta, kuten C . Yleinen lähestymistapa näinä alkuaikoina oli ottaa asiantuntijajärjestelmäsovellus ja pakata järjestelmässä käytetty päättelymoottori uudelleenkäytettäväksi työkaluksi, jota muut tutkijat voisivat käyttää muiden asiantuntijajärjestelmien kehittämiseen. Esimerkiksi MYCIN oli varhainen asiantuntijajärjestelmä lääketieteelliseen diagnosointiin ja EMYCIN oli päättelymoottori, joka on ekstrapoloitu MYCIN: stä ja joka on saatavana muille tutkijoille.
Asiantuntijajärjestelmien siirtyessä tutkimusprototyypeistä käytössä oleviin järjestelmiin keskityttiin enemmän esimerkiksi nopeuteen ja kestävyyteen. Yksi ensimmäisistä ja suosituimmista eteenpäin ketjutetuista moottoreista oli OPS5, joka käytti Rete -algoritmia sääntöjen ampumisen tehokkuuden optimointiin. Toinen erittäin suosittu tekniikka, joka kehitettiin, oli Prolog- logiikan ohjelmointikieli. Prolog keskittyi pääasiassa taaksepäin ketjutukseen ja esitteli myös erilaisia kaupallisia versioita ja optimointeja tehokkuuden ja kestävyyden saavuttamiseksi.
Koska Expert Systems herätti suurta kiinnostusta liike -elämässä eri yrityksiltä, monet niistä aloittivat tai johtivat merkittävät tekoälytutkijat, jotka loivat tuotteistettuja versioita päättelymoottoreista. Esimerkiksi Intellicorpia ohjasi alun perin Edward Feigenbaum . Näitä päättelymoottorituotteita kehitettiin aluksi usein myös Lispissä. Halvempien ja kaupallisesti elinkelpoisten alustojen vaatimukset tekivät kuitenkin henkilökohtaiset tietokonealustat erittäin suosituksi.
Katso myös
- Geometriset ja topologiset viittaukset
- Toimintojen valintamekanismi
- Taaksepäin ketjutus
- Asiantuntijajärjestelmä
- Ketjutus eteenpäin
- Induktiivinen päättely