1
Kunstmatige intelligentie: de theorie Inleiding Intelligente machines spreken tot de verbeelding. Er zijn sinds de eerste opkomst van de computers talloze verhalen verschenen over denkende computers, zeer zelfstandig functionerende robots, zelfs een samengaan van mens en computer in de vorm van cyborgs. Diverse auteurs van science fiction hebben dit onderwerp voor hun verhalen gekozen. Een bekende naam is Isaac Asimov, die in zijn Robot-romans enkele zeer geavanceerde robots beschrijft, die gehoorzaam zijn aan drie wetten van de robotica. Er wordt een moord opgelost, een intelligente robot wordt zelf vermoord, en de belangrijkste robot begint zich af te vragen of de wetten van de robotica niet te beperkt zijn, en opnieuw moeten worden geformuleerd. Een schaakcomputer versloeg toenmalig wereldkampioen Kasparov (al vanaf de jaren vijftig van de vorige eeuw wordt er onderzoek gedaan naar dam- en schaakprogramma’s). Bovendien voorspelt men robots een gouden toekomst. De nieuwste film van Steven Spielberg heet zelfs A.I.! De volgende onderwerpen komen in dit theoretisch gedeelte aan bod: • intelligentie en AI; de geschiedenis van AI (hoofdstuk 1) • basistechnieken (hoofdstuk 2) • agents (hoofdstuk 3) • kunstmatig leven en computational intelligence (hoofdstuk 4) • robotica (hoofdstuk 5) • embedded systems (hoofdstuk 6) • nieuwe ontwikkelingen binnen de AI: neurale netwerken (hoofdstuk 7)
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
2
Hoofdstuk 1 – Intelligentie en AI Wat is ‘intelligent’? Om te bepalen of iets/iemand wel of niet intelligent is, is niet eenvoudig. Er staan vier benaderingen centraal, die ook kunnen gelden als definitie van AI (zie dia 8+9): 1. Een entiteit is " intelligent " wanneer het denkt zoals een mens. Om te kunnen bepalen of een entiteit op een menselijke manier denkt moet men natuurlijk eerst weten hoe het menselijk brein in elkaar zit. Deze tak van AI leunt dan ook zeer sterk aan bij de psychologie. Wetenschappers gaan proberen de verschillende stappen die een mens doorloopt bij de oplossing van een probleem te simuleren. 2. Een entiteit is " intelligent " wanneer het handelt zoals een mens. Wetenschappers die in dit domein actief zijn, proberen machines te bouwen die alle menselijk handelingen kunnen overnemen. De robots zullen dus voorzien zijn van zintuigen om voorwerpen waar te nemen en te verplaatsen. Ook moeten ze kunnen communiceren, informatie opslaan en verwerken om tot een bijleereffect te komen. Hierbij hoort ook de zgn. " Turing test ". Hierover leer je meer verderop in dit hoofdstuk. 3. Een entiteit is " intelligent " wanneer het rationeel denkt. Een programma denkt rationeel als het is opgebouwd volgens de wetten van de logica (bv: Loebas is een hond. Alle honden zijn zoogdieren. Dus Loebas is een zoogdier). In theorie kan deze software elk logisch probleem dat een oplossing heeft, hoe ingewikkeld het ook mag zijn, tot een goed einde brengen. In de praktijk zijn er echter twee grote hinderpalen. Ten eerste is het niet altijd even gemakkelijk om een probleem om te zetten in een logische notatie. En ten tweede is er nog altijd een beperking van geheugen en verwerkingstijd, een probleem met enkele honderden inputs kan het systeemgeheugen snel opgebruiken als het programma niet enkele richtlijnen meekrijgt over welke logische stappen eerst te nemen 4. Een entiteit is " intelligent " wanneer het rationeel handelt. In deze benadering van het begrip AI spreekt men nog al eens over het Engelse woord " agent " . Een agent handelt rationeel, het heeft de mogelijkheid om z'n omgeving waar te nemen en te beïnvloeden, elke mens kan zo ook beschouwd worden als een agent. Het doel is een ideale agent te maken, één die handelingen doet met het beste resultaat gebaseerd op wat de agent waarneemt en wat het heeft meegekregen aan kennis. De conclusie is dat een definitie van intelligentie niet te geven is. Daarom vervangen we de term intelligentie in de AI door het begrip rationeel gedrag (dus punt 4 hierboven).
Definitie AI Kunstmatige intelligentie wordt in twee Nederlandse ‘standaardwerken’ over informatica als volgt gedefinieerd: “Het door logische gegevensmanipulatie oplossen van steeds complexere problemen met behulp van computers, waarbij de wijze van oplossen overeenkomsten vertoont met het menselijke interpretatieproces.” (AIV, Informatiekunde voor het HBO, 6e druk, 2000, blz. 194)
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
3 “Het is een subdiscipline van de informatica die methoden en technieken ontwikkelt voor het uitvoeren van intellectuele functies met behulp van computers.” (ICT-zakboekje, 1999, blz. 482) Op deze manier lijken computers ‘menselijke eigenschappen’ te hebben, zoals waarnemen, communiceren, redeneren en leren. A.I. is al zo oud als de eerste computer(s). De steeds gunstiger prijs/prestatieverhouding van de laatste jaren heeft enkele toepassingen van AI commercieel haalbaar gemaakt en de AI enorm in de belangstelling gezet. Deze producten liggen vooral op het gebied van: robotica beeld- / patroonherkenning spraakherkenning expertsystemen Van deze onderwerpen komt de robotica in hoofdstuk 5 uitgebreid aan de orde.
Korte geschiedenis We beperken ons hier tot enige belangrijke grondleggers van de AI. De opsomming is verre van volledig. Een belangrijke publicatie met het oog op AI was in 1950 “Computing machinery and intelligence” van de fameuze Engelse wiskundige Alan Turing. In dit artikel werpt hij de vraag op of machines kunnen denken en stelt hij voor deze vraag uit te werken door middel van een imitation game, een vraag-en-antwoordspel dat later bekend geworden is als de Turing-test. Wat is de Turing test? In 1950 schreef de engelse wiskundige Alan Turing een artikel over Kunstmatige Intelligentie. Het artikel verscheen onder de titel ‘Computing Machinery and Intelligence’ in het tijdschrift Mind. Turings artikel begint met de zin ‘Laten we de vraag “Kunnen machines denken” eens overwegen’. Omdat hij wel wist dat deze vraag bij veel mensen nogal raar zou overkomen, stelde hij voor om deze vraag in een ‘imitatiespel’ te beantwoorden. Dit imitatiespel wordt tegenwoordig de turingtest genoemd. Turing beschrijft het spel als volgt: Het wordt met drie mensen gespeeld: een man A, een vrouw B en een vragensteller C die man of vrouw mag zijn De vragensteller zit niet in hetzelfde vertrek als de twee anderen. De vragensteller moet in dit spel uitvinden wie van de anderen de man is en wie de vrouw. Hij kent ze onder de aanduiding X en Y en aan het eind van het spel zegt hij ofwel X is A en Y is B ofwel X is B en Y is A.
Persoon C mag A en B vragen stellen, maar om te voorkomen dat C aan de stem kan horen wie de man en wie de vrouw is worden de vragen en antwoorden getypt. Volgens Turing was de meest ideale situatie om dit te laten verlopen via een telexverbinding. In de tijd van Turing (1950!) bestonden er nog vrijwel geen computers, laat staan personal computers. Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
4 Het is de bedoeling in dit spel dat A de vragensteller moet proberen om de tuin te leiden en dat persoon B de vragensteller moet helpen het goede antwoord te vinden. Persoon B (de vrouw) mag haar antwoorden voorzien van toevoegingen als “Ik ben de vrouw, luister niet naar hem!” We vragen ons nu af: “Stel dat een machine de rol van A in dit spel overneemt?” Komt de vragensteller dan even vaak tot een verkeerd antwoord als wanneer het spel wordt gespeeld met een man en een vrouw? Deze vragen komen in de plaats van onze oorspronkelijke vraag: “Kunnen machines denken?” aldus Alan Turing. Nadat Turing zijn test uitvoerig heeft beschreven, maakt hij vervolgens enkele opmerkingen bij zijn spel. Om te beginnen geeft hij aan de lezer een aantal vragen als voorbeeld van het gesprek tussen de ondervrager en de ondervraagde. Eén van de vragen was: V: Tel 34957 en 70764 bij elkaar op. A: (na ongeveer dertig seconden) 105621. De oplossing van het rekenvraagstuk is niet alleen fout maar duurt ook nog erg lang. Als dit antwoord door een mens is gegeven is dit eenvoudig te verklaren, het is gewoon een rekenfout zoals wij die wel vaker maken. Dus was de ondervraagde een mens? Stel nu dat de ondervraagde wel een machine is, waardoor kan het dan dat het antwoord fout was. Hiervoor geeft Turing een aantal mogelijkheden: • Een onbedoelde hardware of software fout, al dan niet reproduceerbaar. • Een opzettelijk aangebracht foefje van de programmeur. • Misschien kan het programma helemaal niet rekenen. • Een grapje van de machine? Zich bewust van de storm aan weerstand die zijn opvattingen ongetwijfeld zullen ontmoeten, analyseert Turing vervolgens beknopt en met humor een reeks bezwaren tegen het ideeën dat machines kunnen denken. Ik zal slechts de negen bezwaren kort weergeven. Opmerkelijk is toch wel dat Turing dit alles voorzag in een periode waarin computers absoluut nog geen gemeengoed waren. Verder valt op dat veel van zijn bezwaren heden ten dage nog steeds door veel mensen als argument tegen worden gebruikt. De negen categorieën van bezwaren zijn: 1. Het theologisch bezwaar. 2. Het ‘kop in het zand’ bezwaar. Als machines kunnen denken zijn de gevolgen verschrikkelijk. Laten we hopen en vertrouwen dat ze het niet kunnen. 3. Het wiskundig bezwaar. Een machine is altijd een formeel systeem. 4. Het bewustzijnsargument. Pas wanneer een machine een lied kan schrijven of muziek componeren naar aanleiding van gedachten en emoties dan zijn we het er mee eens dat de machine gelijkwaardig is aan de hersenen. 5. Argumenten gebaseerd op diverse onvermogens van machines. In de trend van ‘Ik geef toe dat machines dit en dit goed kennen maar ze zullen nooit …’. 6. Het bezwaar van lady Lovelace. Een machine kan alleen maar datgene doen waarvan we weten hoe we het haar moeten opdragen. 7. Argumenten gebaseerd op de werking van ons zenuwstelsel. 8. Het argument gebaseerd op het informele karakter van ons gedrag. Ons gedrag is niet gebaseerd op een verzameling van regels, was dat wel zo dan zijn wij niet meer dan een machine. 9. Het argument gebaseerd op buitenzintuiglijke waarneming. Het laatste argument is een argument waar Turing slecht weinig mee kon maar hij vond toch dat hij dit mee moest nemen in de lijst van argumenten. Ook schreef Turing in 1951 het allereerste computerprogramma dat een volledige partij kon schaken.
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
5
Alan Turing
Voor Turing al hadden Warren McCulloch en Walter Pitts in 1943 overeenkomsten ontdekt tussen de menselijke hersenen en een computer, door te suggereren dat de hersenen zijn als een computer. Net als de hersenen zou een goed ontwikkeld ‘neuraal netwerk’ kunnen leren. John McCarthy introduceerde in 1956 de naam AI, die vanaf dat moment gemeengoed werd. Ook ontwikkelde hij in 1958 één van de meest gebruikte AI programmeertalen, LISP, nog steeds in gebruik. Marvin Minsky tenslotte vestigde het AI laboratorium aan de MIT en werd beroemd vanwege zijn werk betreffende de organisatie en representatie van kennis. Via kleine problemen die intelligentie vereisten om te worden opgelost (‘microworlds’) hielp hij de AI stappen vooruit.
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
6
Hoofdstuk 2 – Basistechnieken in de AI Er zijn enkele groepen basistechnieken die in verschillende vorm terug te vinden zijn in de meeste AIsystemen: zoektechnieken, technieken voor kennisrepresentatie en interferentietechnieken. Hier werken we alleen de zoektechnieken uit.
Zoektechnieken De zoektechnieken zijn aan de orde als een probleem moet worden opgelost dat aan de volgende eigenschappen voldoet: - er is een begintoestand - er is een herkenbare eindtoestand (de ‘gewenste’ situatie, het doel); deze moet duidelijk geformuleerd zijn - er is een recept/pad gegeven om vanuit een gegeven toestand te berekenen welke volgende toestanden gegenereerd kunnen worden. Een voorbeeld: in een schaakspel staan twee spelers (waarvan er één de computer Deep Fritz is) er in een bepaalde stelling op een bepaalde manier voor; de computer kent de eindtoestand (nl. de koning van de tegenpartij uitschakelen) en heeft de bagage (kennis) om vanuit deze toestand de volgende (2 of meer) zetten te berekenen (combinatie) en de juiste combinatie te kiezen (het juiste pad). De ‘speler’ heeft zoekruimte, d.w.z. kent een verzameling toestanden die vanuit de begintoestand kan worden gegenereerd en kent het pad, de oplossing van begin- naar doeltoestand. Het betreft hier steeds een zoekalgoritme: de input is een probleem, de output een oplossing voor dat probleem in de vorm van een ‘stappenplan’(of: actieplan). Zoekstrategieën zijn te evalueren aan de hand van een viertal criteria: compleetheid: vind de strategie gegarandeerd een oplossing waar er één is? tijdsfactor: hoe lang duurt het voor de oplossing gevonden is? geheugenfactor: hoeveel geheugen kost het om het zoekalgoritme uit te voeren? optimalisering: vind de zoekstrategie de best mogelijke oplossing als er verschillende zijn? Er zijn een tweetal zoektechnieken, te weten de blinde zoekmethoden (ook wel: niet-geïnformeerde zoekmethode) en de heuristische zoekmethoden (ook wel: geïnformeerde zoekstrategie). De algemene opzet van een zoekmethode zie je hieronder.
Eenzelfde opzet, maar dan voor het spelletje boter-kaas-en-eieren, zie je hieronder.
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
7
Blinde zoekmethoden Hun naam ontlenen deze methoden aan het feit, dat er geen rekening wordt gehouden met de eindtoestand. Vanuit een gegeven toestand zijn veelal verschillende vervolgtoestanden mogelijk. De zoekruimte kan op verschillende manieren systematisch worden doorzicht. Het aantal stappen tot het doel is hierbij onbekend. De twee hoofdmethoden zijn: 1. breadth-first (‘eerst-in-de-breedte’, ‘horizontale’) methode: vanuit een begintoestand worden alle vervolgtoestanden onderzocht, voordat de vervolgtoestanden van deze eerste groep worden bekeken (zie de figuur hieronder). Anders gezegd: alle knooppunten op diepte D1 (in de figuur B en C) in de zoekmethode worden bekeken voordat diepte D2 (in de figuur D en D) aan bod komt.
Als er een oplossing is, wordt hij op deze manier altijd gevonden; zijn er meerdere oplossingen, dan wordt degene met de minste ‘diepgang’ het eerst gevonden. In termen van bovenstaande evaluatiecriteria is breadth-first compleet en optimaal, ervan uitgaande dat de kosten evenredig zijn met de zoekdiepte. De zwakke punten bij deze methode zitten in de hoeveelheid tijd en geheugen die zij kost. Als elk knooppunt 2 nieuwe knooppunten genereert, dan zitten er op diepte 1 in ons geval 2 knoppunten; op diepte 2 is dit 22 knooppunten, vervolgens 23, enz. De tijd en de geheugenruimte lopen op dezelfde manier op; beginnend met 100 bytes en 1 milliseconde op diepte 0, loopt dit al op tot 1 megabyte en 11 seconden op diepte 4 en 11 gigabyte en 31 uur op diepte 8! We mogen concluderen, dat de zoekproblemen bij breadth-first door de exponentiële component slechts tot een beperkte diepte kunnen lopen willen ze nog oplosbaar zijn.
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
8 2. depth-first (‘eerst-in-de-diepte’, ‘verticale’) methode: vanuit een gegeven toestand wordt één vervolgtoestand gekozen, en vervolgens weer één vervolgtoestand die op de eerste volgt, enz. (zie de figuur hieronder).
Alleen als de zoektocht in een doodlopende weg eindigt (bij een knooppunt dat niet de gewenste (eind) toestand geeft en geen uitbreiding in de diepte kent), gaat de zoektocht terug om knooppunten op een minder diep niveau te onderzoeken. Als in de figuur hierboven A noch G de juiste oplossing biedt, wordt teruggegaan naar diepte 2 en worden de andere takken van D nader bekeken. Depth-first vereist weinig geheugenruimte, aangezien slechts één pad in de diepte wordt onderzocht. Bij een vertakkingsfactor b en een diepte m, vraagt depth-first een opslag van slechts b*m knooppunten (wat bij breadt-first bm zou zijn). Op diepte 8 is zo geen 11 gigabyte, maar slechts 12 kilobyte nodig (= 10 miljard keer zo weinig!). Wat snelheid betreft, is depth-first in situaties met meerdere oplossingen, waarschijnlijk sneller dan breadt-first, omdat er een goede kans is, dat die oplossing gevonden wordt na slechts het bekijken van een deel van de zoekruimte. Anderzijds kan depth-first problemen geven, als de oplossing op een ondiep niveau ligt, maar een verkeerd knooppunt wordt ingeslagen en tot grote diepte wordt doorgezocht. Er kan dan een oneindige ‘loop’ ontstaan of er komt uiteindelijk een oplossing, die niet de meest optimale is. We zien dus dat depth-first zoekmethoden compleet noch optimaal zijn. Daarom moeten zij niet gebruikt worden voor zoekbomen met een grote of oneindige diepte. Soms wordt daarom ook van te voren een grens gesteld aan de aanvaardbare zoekdiepte (‘depth-bounded depth-first’).
Heuristische zoekmethoden Heuristische zoekmethoden maken gebruik van ‘vuistregels’ die aangeven hoe veelbelovend een bepaalde toestand is. De meest veelbelovende toestand wordt nader uitgewerkt. Door de al aanwezige informatie kan de zoektocht efficiënter plaatsvinden. Als er in een supermarkt vier kassa’s open zijn, is het het meest voor de hand liggend om bij de kortste rij aan te sluiten. Dit gaat in de meeste gevallen op (anders doet zich het Biesheuvel-effect voor!), behalve als die ene klant in de kortste rij drie winkelwagens vol met boodschappen heeft. Naar een lege kassa lopen (kortste rij!) heeft ook geen zin als deze kassa dicht is. Dit soort regels volgen wij bij een bezoek aan de supermarkt. Ze helpen ons, maar geven niet altijd de beste oplossing. Bij de heuristische methode berekenen we als het ware een evaluatiefunctie om te bepalen hoe goed elk knooppunt is. We bepalen een volgorde met eerst de beste (meest veelbelovende) knooppunten en ver daarachter de mindere knooppunten, die pas aan bod komen als de andere toch blijken tegen te vallen. Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
9
Hoofdstuk 3 – Agents Agenttechnologie In de moderne AI staan agents centraal. Een agent is in de AI iets dat waarneemt en doet” De onderstaande figuur laat dit zien (effectoren kennen wij beter als actuatoren). Een agent heeft de volgende kenmerken: Rationeel; het gedrag is, gegeven de kennis en de vaardigheden van de agent, het meest optimaal (bij een winstkans van 10% bij actie A en van 80% bij actie B kiest de agent altijd voor actie B) Autonoom; een agent functioneert en beslist tot op zekere hoogte zelfstandig, op basis van zijn eigen kennis en ervaring Gesitueerd; een agent maakt deel uit van een omgeving, groter dan hij zelf en hij heeft een bepaald, beperkt ‘beeld’ van de wereld om hem heen Belichaamd; een agent heeft op een bepaalde manier contact met zijn omgeving. De manier waarop een agent met zijn omgeving communiceert, hangt weer af van de positie van zijn sensoren en van de dingen die hij wel of niet waarneemt Interactief; een agent reageert op en naar zijn omgeving Pro-actief; een agent wacht niet uitsluitend op wat hem overkomt en neemt initiatief tot actie. Adaptief; een agent stelt zich in op de omgeving en leert van de geschiedenis. Dit zijn niet ‘de’ eigenschappen van een agent; ze kunnen in mindere of meerdere mate aanwezig zijn. Er geldt: hoe meer eigenschappen er aanwezig zijn, des te meer agent.
Agents interacteren met hun omgeving via sensoren en actuatoren De taak van de AI is om een agent programma te ontwerpen: een functie die ervoor zorgt dat de waarnemingen van de agent leiden tot actie(s). Dit programma moet draaien op het ‘bouwwerk’ agent. Een agent kan puur uit software bestaan, zoals een agent die het internet voor je afzoekt, maar kan ook fysiek zijn belichaamd, zoals Aibo, de robothond, of het karretje van de Mars Explorer. Er zijn agents die onmiddellijk reageren op waarnemingen, de zgn. Reflex-agents. Agents functioneren met een bepaald doel, soms zelfs met meerdere doelen tegelijk. Als meerdere doelen niet tegelijkertijd kunnen worden gehaald, heeft de agent een ingebouwd mechanisme nodig om keuzes te kunnen maken. Deze keuzes kunnen weer worden bijgesteld op basis van reacties uit de omgeving. Het ontwerp van een agent hangt van 4 zaken af: de percepties, de acties, de doelen en de omgeving; In het Engels is dit afgekort PAGE. Hieronder zie je enige voorbeelden van agent types en hun PAGE beschrijving. Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
10 Agent type
Perceptie
Actie
Doelen (Goals)
Medisch diagnose systeem
Symptomen, onderzoeken, antwoorden van de patiënt Pixels met verschillende intensiteit Getypte woorden
Vragen, tests, behandeling
Gezonde patiënt, minimale kosten
Pak de stenen op en sorteer ze in bakken Geprinte oefeningen, suggesties, verbeteringen
Plaats de stenen in Transportband met de juiste bakken stenen
Robot die legostenen oppakt Interactieve Engelse leraar
Omgeving (Environment) Patiënt, ziekenhuis
Maximaliseren van de score van de student op de toets
De verwachting is dat agents nieuwe standaard softwarecomponenten zullen worden in complexe informatiesystemen. Er ontstaat dan Agent Oriented Software Engineering (en daarmee de opvolger van Object Oriented Software Engineering).
Meerdere agents Vanaf 1980 wordt er ook gesproken over gedistribueerde AI. De hedendaagse term is Multi Agent Systems (MAS). Er zal gekozen worden voor een oplossing met meerdere agents als de applicatie fysiek gedistribueerd is, of een intuïtieve opdeling heeft in meerdere actieve, autonome componenten. Als kennis en besturing worden verdeeld kunnen de agents soms veel simpeler zijn. En in sommige toepassingen zul je altijd al met verschillende agents te maken hebben. In dat laatste geval ligt het voor de hand dat iedere agent zijn eigen rol heeft. Er zijn zowel toepassingen voor homogene agents in een MAS als voor heterogene. De interactie tussen verschillende agents kan rechtstreeks verlopen, of door beinvloeding van de omgeving (volg het spoor). Zo kunnen de agents elkaars gedrag beinvloeden.
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
11
Hoofdstuk 4 – Kunstmatig Leven en Computational Intelligence Kunstmatig Leven Sinds 1989 is artificial life (Kunstmatig Leven) een eigen vakgebied, waarin men onderzoek doet naar eigenschappen van het leven. Daarbij gaat men er van uit dat het fysieke medium niet belangrijk is. Kenmerkend voor artificial life is dat het gedistribueerd en parallel is. Een voorloper van artificial life zijn de cellulaire automaten, voor het eerst beschreven door John von Neumann. De bekendste ervan is Conway’s game of life. De cellulaire automaten zijn weer gebaseerd op een idee van Von Neumann (in 1940!) de universal constructor. Een universal constructor is een (hypothetische) machine die kopieën van zichzelf kan maken, iets dat erg handig is zodra we verre planeten willen koloniseren, en anders is het altijd nog een mooi onderwerp voor een stripboek (zie Storm “de von Neumannmachine”). Van software die in staat is zichzelf voort te planten ken je trouwens wel voorbeelden: virussen. Conway’s game of life wordt gespeeld op een oneindig ruitjespapier. Ieder ruitje (cel) kan of leven of leeg (dus dood) zijn. Aan het begin worden een (willekeurig) aantal cellen gevuld, dus levend gemaakt. De cellen voldoen vervolgens aan vier onderstaande regels: 1) Elke cel met één of nul buren sterft. 2) Elke cel met vier of meer buren sterft. 3) Elke cel met twee of drie buren blijft leven. 4) Elke (lege) cel met drie gaat leven
Computational intelligence Voor het gebruik van, rekenen met en leren op basis van soms zeer grote hoeveelheden data zijn technieken ontwikkeld op basis van analogieën met de natuur. Er zijn drie begrippen die hierbij vaak worden genoemd: genetische algoritmen, fuzzy logic en neurale netwerken. Deze laatste wordt in hoofdstuk 6 apart uitgewerkt.
Genetisch algoritme Bij een genetisch algoritme ga je een probleem dat waanzinnig veel mogelijke oplossingen heeft, die je dus nooit systematisch in beheersbare tijd allemaal kunt doorzoeken, te lijf door te beginnen met een populatie mogelijke oplossingen. Iedere oplossing krijgt een waarde toegekend, dat aangeeft hoe tevreden je bent met het behaalde resultaat. Nu volgt er een herhaling van zetten, telkens krijgen de sterkste of beste oplossingen de mogelijkheid om zich ‘voort te planten’. Er wordt een nieuwe populatie van oplossingen gemaakt, door twee oplossingen met elkaar te ‘kruisen’, de nieuwe generatie heeft dus eigenschappen van beide ouders. Af en toe geeft men de gelegenheid om mutaties Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
12 te laten optreden (een mutatie is een kleine verandering in de oplossing). In dit proces, gelijkend op regels uit de biologie, is het mogelijk om relatief snel een goede oplossing te vinden, vaak zal het zo zijn dat ondanks dat relatief snel vinden de machine de nodige uren staat te stampen voordat we een oplossing vinden.
Fuzzy logic Bij fuzzy logic gaan we anders te werk. We weten uit ons boek dat de logische schakelingen in een computer maar twee waarden kennen, 0 en 1 of onwaar en waar, in de fuzzy logic kennen we een meerwaardige logica. Deze logica is min of meer gelijk aan de logica die mensen in hun dagelijks leven hanteren. Het water in een zwembad is niet alleen maar warm of koud, maar kan ook lauw zijn. Zelfs het begrip koud is relatief. Stel het zwembadwater is 21°C, als we er in duiken terwijl de buitentemperatuur 30°C is zullen we waarschijnlijk roepen dat het water koud is, is de buitentemperatuur lager dan de temperatuur van het zwemwater dan vinden we het water heerlijk. In de fuzzy logic kennen we dus niet alleen de twee uiterste waarden maar ook een scala van tussenliggende waarden. Tegenwoordig wordt fuzzy logic al in veel huishoudelijke apparaten gebruikt.
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
13
Hoofdstuk 5 - Robotica
Inleiding Paul Ostendorf, als futuroloog werkzaam voor Cap Gemini, meent dat computers en robots de mens binnen afzienbare tijd op elk terrein voorbijstreven. Enige van zijn uitspraken, zoals gedaan in Automatisering Gids, 7 september 2001, in een artikel getiteld “Over dertig jaar verwelkomen we de robo sapiens.”: ”De huidige computers zijn leuke hulpmiddelen. Ze rekenen sneller dan wij en hebben onmiddellijke toegang tot alles wat in hun geheugen is opgeslagen. Maar ze hebben nog grote beperkingen, zoals een relatief klein geheugen en een zeer beperkt leervermogen en ze kunnen nog niet omgaan met nieuwe situaties.” Dat gaat de komende vijftig jaar in rap tempo veranderen, volgens Ostendorf. “Nog deze eeuw zullen we het meemaken dat de homo sapiens niet meer de hoogste trap op de evolutieladder bezet. Ga maar na: wij hebben er drieëneenhalf miljard jaar over gedaan om te evolueren van eencelligen tot de mensen die we nu zijn. De eerste computers verschenen vijfentwintig jaar geleden. Over vijfentwintig jaar hebben ze een verwerkingskracht die gelijk is aan die van de menselijke hersenen. Daarna breekt een tijdperk aan waarin computers ons op elk terrein waar denkwerk aan te pas komt zullen verslaan, van autorijden tot rechtspraak en van onderwijs tot het onderscheiden van kitsch en kunst.” We kunnen dan de robo sapiens verwachten. Grote woorden zijn dit. In de informatica gaan hierachter robots schuil en het onderzoeksterrein robotica, dat val onder het terrein van de AI. Dit, omdat ze ‘menselijke eigenschappen’ lijken te hebben, zoals we hieronder zullen zien. Robots wordt een grote toekomst voorspeld in allerlei praktische toepassingen. Zo verwacht de Japanse overheid dat robots bejaarden (die in 2005 25% van de Japanse bevolking uitmaken!) zullen kunnen helpen door ze eraan te herinneren dat ze hun medicijnen moeten innemen of dat ze een afspraak hebben. In de ziekenhuizen zijn in 2002 11.000 zgn. ‘dienstrobots’ actief, die de patiënten van hun dagelijkse voedsel voorzien. Over het hoe en wat van robots gaat dit hoofdstuk.
Wat zijn robots? Robots zijn gewoon voorbeelden van intelligente agents (zie hoofdstuk 3). Een robot is een machine, wiens gedrag kan worden geprogrammeerd. Dit is een ruime definitie, waaronder heel veel apparaten Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
14 uit het dagelijks leven vallen, zoals magnetrons en videorecorders. Dit is misschien wat anders dan de gedachten over robots die jij hebt opgedaan in musea, op televisie of in films. Het bekende woordenboek de Oxford Dictionary geeft als definitie van robot een ogenschijnlijk menselijk autonome, intelligente en gehoorzame, maar onpersoonlijke machine. Een handboek over AI definieert robot als: een actieve, kunstmatige ‘agent’ wiens omgeving de fysieke wereld is. Het woord robot komt van robota, Tsjechisch voor ‘gedwongen arbeid’. Oorspronkelijk werden robots dan ook ontwikkeld om menselijk werk dat saai, langdradig of gevaarlijk was, over te nemen. Pas de laatste jaren vertonen robots ook vormen van kunstmatige intelligentie.
‘Romolo II’, een robot uit 1957 (uit Rome)
Wat hebben alle robots gemeenschappelijk? 1. Ze hebben een bepaalde soort digitale computer of elektronisch circuit, dat de ‘hersenen’ van de robots vormt. De hersenen controleren de acties van de robot, krijgen informatie van sensoren en ‘besturen’ actuatoren (bijv. motoren). Hieruit blijkt dat ze ‘intelligent’ zijn. 2. Ze zijn gemaakt van mechanische onderdelen. De body van de robot is het fysieke deel, dat al deze onderdelen bij elkaar houdt. 3. Ze kunnen bewegen, door actuatoren als bijv. motoren. Daarnaast kunnen ze andere outputs hebben als geluid en licht. 4. Via sensoren krijgen ze informatie over en kunnen ze reageren op hun omgeving. Een druksensor geeft bijv. aan of ze in contact komt met iets anders. 5. Ze hebben een krachtbron (bijv. batterijen, zonne-energie); dit is de brandstof die nodig is om de ‘hersenen’, sensoren en actuatoren te laten werken. Denk bijv. aan een robot die auto’s verft (bijv. uit de Citroën Picasso reclame). De hersenen zitten waarschijnlijk in een gewone PC. De body is een grote arm met een verfspuit aan het eind. De actuatoren zijn motoren die de arm doen bewegen. Positie- en rotatiesensoren worden gebruikt om de robot duidelijk te maken waar de spuit is en in welke richting hij wijst. Het hele gevaarte heeft een wandcontactdoos als krachtbron. Eén van de meest opvallende zaken bij een robot is, dat hij sensoren heeft. Als wij een ruimtevaartstation naar Mars of de maan sturen, dan verzamelen sensoren belangrijke informatie aldaar. Een robot uitrusten zonder sensoren is gevaarlijk. Hoe weet de robot ooit wanneer hij ergens mee dreigt te botsen; hoe, wanneer hij van een tafel dreigt te rijden; hoe, of een andere robot in de buurt is?
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
15
Mobiele robots Waar wij hier over praten, zijn mobiele robots (i.t.t. statische). Dit type robots moet, vanwege zijn beweeglijkheid, op meerdere situaties voorbereid zijn. Mobiele robots zijn er in twee soorten: gebonden en autonome robots. De eerste soort kan wel bewegen, maar zit voor zijn hersenen en krachtbron via snoeren aan een PC en wandcontactdoos vast. Autonome robots zijn veel uitdagender. Ze moeten alles bij zich hebben, inclusief hersenen en krachtbron. Dit type robots heb je waarschijnlijk alleen eerder in films gezien. Deed de robot daarin iets nuttigs? Waarschijnlijk niet. Als dit soort robots niet zo moeilijk te maken was, stuikte het er waarschijnlijk van. Want een robot die stofzuigt of de afwas doet, wat wil je nog meer? Maar de werkelijkheid van alledag stelt een autonome robot voor de grootste problemen. Stel dat je een robot wilt maken die je huis stofzuigt. De taak is eenvoudig te omschrijven: de stofzuiger moet vooruit en achteruit kunnen bewegen over de vloer, tot de hele kamer gedaan is. We maken de stofzuiger zo, dat hij uit zichzelf kan bewegen, wat extra motoren en een klein computertje in zich heeft. De complexiteit wordt dan enorm: Hoe zorgt de robot ervoor dat hij niet in zijn eigen snoer verstrikt raakt, als het een gebonden robot is? Hoe weet de robot waar hij al geweest is, waar hij nu is en waar hij nog moet zijn? Hoe omzeilt de robot obstakels als tafelpoten en andere meubels? Hoe herkent de robot dingen die hij niet moet opzuigen als speelgoed, geld, e.d.? Deze vragen zijn wel te beantwoorden, maar niet goed, niet eenvoudig en niet goedkoop. Je kunt, na jaren knutselen een robot hebben ontwikkeld die de kamer zuigt. Maar alleen onder strikte voorwaarden. Zet een stoel op een vreemde plek erbij, of een stuk speelgoed en je kunt waarschijnlijk weer opnieuw beginnen. Robotica is ook uitdagend, omdat het een interdisciplinair karakter heeft. Je hebt deskundigen uit verschillende disciplines (vakgebieden) nodig om het voor elkaar te krijgen, waaronder elektriciens (voor hersenen, sensoren, actuatoren), mecaniciens (voor de ontwikkeling van de body), programmeurs (om de robot te programmeren) en misschien nog een specialist voor het ontwerp van een bepaald soort energietoevoer. Eén persoon heeft nooit al deze vaardigheden in zich.
Grote versus kleine robots In de AI is men traditioneel ingesteld op het ontwikkelen van zgn. ‘grote robots’. Deze robots moeten hun omgeving kennen en kunnen ‘denken’ zoals mensen dat doen. De robot krijgt hierbij input van sensoren en schetst een beeld van zijn omgeving. Dit is een zeer gecompliceerd proces, dat veel computerkracht vereist, evenals energie. Dit houdt automatisch in dat het om grote, dure robots met omvangrijke krachtbronnen gaat. Een voorbeeld zie je hieronder.
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
16
De Ambler: 5 meter hoog, 7 meter breed, 2500 kg. Ambler kan zich zo’n 35 cm per minuut verplaatsen. In stilstand verbruikt hij 1400 Watt; in beweging 4000 Watt.
Daar tegenover staat de laatste jaren een groep ontwikkelaars, die zich richt op zgn. ‘kleine robots’. Deze halen (bescheiden) resultaten die maar een fractie kosten en lang niet zo complex zijn, als die van de ‘grote robots’. Kwantiteit telt voor deze ontwikkelaars meer dan kwaliteit. Waarom één enorm grote, complexe, dure robot naar Mars sturen voor onderzoek, in plaats van duizenden robots ter grootte van een muis, die hetzelfde werk doen? De benodigde expertise is dan minder, hoewel nog steeds niet onbelangrijk. Maar een behoorlijk ontwikkelde hobbyist, met tijd en geld, kan al heel veel voor elkaar krijgen. Je kunt hierbij uitgaan van al bestaande kleine robotbodies. De Lego RCX-steen is daar een voorbeeld van. Uitgaande van de steen, kun je allerlei robots ontwikkelen die allerlei problemen aan kunnen pakken. In het Nederlands is er materiaal beschikbaar om met de Lego-steen allerhande robotachtige situaties uit te beelden, in de talen NQC, Visual Basic en Java (zie bronnen).
De RCX met in- en outputs
Een Lego robot
Wetenschappelijk versus commercieel Een ander onderscheid dat aangebracht kan worden tussen robots, is of ze op wetenschappelijke basis worden ontwikkeld of voor de commercie. Deels overlapt dit met het onderscheid groot/klein. In de eerste groep vallen bijvoorbeeld de robots die in het MIT robotlaboratorium worden ontwikkeld. Eén daarvan zie je in de figuur hieronder: KISMET. Dit is uitsluitend een nagemaakt hoofd, met twee ogen (2 embedded camera’s), oren, een mond en wenkbrauwen. Deze kunnen gecombineerd diverse gezichtsuitdrukkingen nabootsen, om de gevoelens en emoties van de robot uit te drukken. Hij is gemaakt met het doel om het sociale contact tussen robot en mens te onderzoeken
Lesmodule Kunstmatige Intelligentie
KWC, Culemborg
17
KISMET
Commerciële robots overspoelen de laatste jaren de markt. Naast de Legosteen zijn bekende voorbeelden de Furby en (wellicht minder bekend) Aibo. Furbies hebben diverse sensoren, een microfoon en een aantal knoppen. Ze hebben hun eigen taal, maar kunnen ook andere talen aanleren en die weer aanleren aan Furbies in hun omgeving. Aibo is een elektronische hond, die diverse trucjes kent en als hij valt, weer zelfstandig op kan staan! Aibo kent nog geen grote verspreiding vanwege de hoge prijs (enige duizenden gulden).
Aibo
Lesmodule Kunstmatige Intelligentie
Furby
KWC, Culemborg
Hoofdstuk 6 - Embedded systems Onderwerp Het verschijnsel embedded systems (waar embedded software een onderdeel van vormt) staat erg in de belangstelling. Dit is mede gekomen door de gevreesde millenniumbug, waarvan men dacht dat die vooral zou toeslaan bij apparaten waar dit type software in is verwerkt. We gebruiken hier afwisselend de Engelse term en de Nederlandse term ingebedde systemen.
Wat zijn embedded systems? Embedded systems zijn computersystemen die vaak (verborgen) ingebouwd zijn in een product of apparaat. Embedded software is dan de ingebouwde programmatuur in die producten en systemen en deze verzorgt ook vaak de besturing. Ze is bepalend voor het functioneren van die apparaten en systemen. Door toepassing van embedded software lijken producten en machines “kunstmatige” intelligentie te bezitten en kunnen ze communiceren met hun omgeving. Dit kan heel ver gaan. In het algemeen hebben embedded systems een intensieve interactie met hun omgeving, zowel met gebruikers als met andere (hardware) componenten zoals sensoren en actuatoren. Er is heel vaak sprake van real time processen.
Voorbeelden Embedded software vinden we overal om ons heen: in allerlei min of meer huishoudelijke apparaten zoals huis- en mobiele telefoons, stereo-installaties, wasdrogers, magnetrons, CD-spelers, videorecorders, digitale TV’s, fototoestellen en camera’s. Zelfs de nieuwste generatie koelkasten kun je zien als computers in een koude jas: de voorraad wordt bijgehouden en nieuwe aanvoer wordt zonder tussenkomst van de gebruiker besteld. In de medische hoek is de pacemaker heel bekend. Bij de pacemaker is de goede werking van het systeem van levensbelang voor de gebruiker en is er helemaal geen bewuste systeem ↔ gebruiker interactie. Het apparaat benut zeer specifieke inputs die het lichaam continu verstrekt; de output regelt onder andere de hartfrequentie. Maar ook auto’s kun je zien als computers op wielen, bijv. de autoremmen met antiblokkeervoorziening (ABS) en systemen die het rijgedrag interactief moeten optimaliseren (zij voeden de automobilist a.h.w.op). Motormanagement van verbrandingsmotoren is ook een mooi voorbeeld. Een dergelijk systeem dient er voor te zorgen dat de verbranding in alle voorkomende omstandigheden optimaal verloopt; d.w.z. minimaal gebruik van brandstoffen onder een minimale uitstoot van ongewenste verbrandingsgassen. Inputs voor een dergelijk systeem zijn toerental van de motor, belasting, temperatuur van de motor en voor de verbranding vereiste lucht, enz. Outputs zijn de regeling van brandstoftoevoer in zowel hoeveelheid als tijdstip, de hoeveelheid lucht en het tijdstip van ontsteking (indien te regelen). Een dergelijk systeem heeft slechts beperkte interactie met de gebruiker, namelijk alleen indirect via het door die gebruiker gevraagde gedrag. Dit systeem is ondergeschikt aan de automobilist. Een ander voorbeeld is automatische tolheffing: passerende voertuigen worden geobserveerd en snel en accuraat door een computersysteem verwerkt.
Er zijn nog veel meer bedrijfstoepassingen; als consument komen we er vaak ongemerkt mee in aanraking zoals bijvoorbeeld bij gebruik van de telefoon en PIN-automaten. In productieprocessen van bedrijven is embedded software al helemaal niet meer weg te denken. We kunnen denken aan bijv. verpakkingsmachines, automatische lasapparatuur, kopieermachines, stormvloedkeringen, etc. Nog weer een geheel andere klasse van embedded systems wordt gevormd door de systemen die ondersteuning bieden bij moeilijke, door mensen uitgevoerde taken zoals in ziekenhuis-toepassingen en bij luchtverkeersregeling (Avionica: computerbesturing in moderne vliegtuigen) Bij al deze voorbeelden van ingebedde systemen geldt, dat het computersysteem zonder de specifieke omgeving waarin het is ingebed een bepaalde betekenis heeft Andersom is de omgeving zonder het computersysteem zonder betekenis.
Nader bekeken Een embedded system is dus een informatieverwerkend systeem dat is "ingebouwd" of "ingebed" in een apparaat of (groter) systeem waarvan het de functionaliteit en de besturing geheel of gedeeltelijk bepaalt; het informatieverwerkende systeem en het omvattende systeem zijn zodanig van elkaar afhankelijk dat het één zonder het ander geen betekenis heeft. Er is een sterke koppeling. Het informatieverwerkende systeem kan, maar hoeft geen als zodanig herkenbare computer te bevatten; het kan bijvoorbeeld ook zijn opgebouwd uit een verzameling voor de toepassing specifieke, deels programmeerbare elementen. Embedded systems staan in nauwe interactie met hun omgeving. Vanuit de omgeving ontvangen zij stimuli, verkregen door een of meerdere (typen) sensoren of via een of meerdere communicatiekanalen. Ook geven zij signalen aan hun omgeving af, meestal als stuursignalen voor actuatoren, maar ook beelden en geluiden kunnen als output beschouwd worden. Onderstaande afbeelding zet e.e.a. nog eens op een rijtje.
Sensoren
Agent Toestand Hoe verandert de wereld?
Conditie-actie regels
Hoe is de wereld om me heen nu?
Omgeving
Wat doet mijn actie?
Welke actie moet ik nu doen?
Actuatoren Een reflex agent met interne toestand
Samenvattend: kenmerken van ingebedde systemen Enkele in het oog springende kenmerken van ingebedde systemen (deels al min of meer aan bod geweest) zijn: • Interfaces met de buitenwereld, met vaak een grote nauwkeurigheid van timing in de reactie door het computersysteem op de ontvangen signalen • Beperkingen t.a.v. geheugen, energieverbruik en ruimtebeslag (denk bijv. aan mobiele telefoons) • Het gebruik van speciale processoren voor specifieke soorten toepassingen • Foutloos en ononderbroken werking in systemen waar fouten tot levensbedreigende situaties of financiële verliezen zouden kunnen leiden • Functionaliteit en flexibiliteit van systemen. Hiervoor is geavanceerde en complexe software nodig • De architectuur van een ingebed systeem is doorgaans slechts zeer ten dele vrij te kiezen. Dit wordt (logischerwijs) vooral door de voorgaande punten veroorzaakt.
Ontwikkelingssnelheid in de maatschappij Om een idee te geven van de snelheid waarmee het belang van embedded software toeneemt, zij vermeld dat: - naar schatting er ongeveer 5 maal zoveel embedded software wordt gerealiseerd als "gewone" software. - het aantal microprocessors (met embedded software) dat een "gemiddeld" mens per dag "tegenkomt" is gestegen van 5 in 1985 tot 40 in 1995; - de overgrote meerderheid van CPU chips, die heden ten dage wereldwijd wordt geproduceerd, voor de “embedded” markt gebruikt wordt (meer dan een miljard stuks per jaar); slechts een klein deel van alle CPU's komt in PC's terecht (in 1995 werden er wereldwijd 60 miljoen PC's verkocht); Sommigen schatten dat wereldwijd het aantal softwareconstructeurs van embedded software zal groeien van 2 miljoen in 1994 naar 10 miljoen in 2010; het aantal constructeurs van softwareproducten neemt "slechts" toe van 0.6 naar 1.1 miljoen. Deze tak van de informatica zal zich dus alleen maar uitbreiden. Het artikel in bijlage 1 vertelt hier meer over.
Nadelen, of de kwalijke kant van embedded software Nog veel zwaarder dan bij de niet-embedded systems, zoals bestuurlijke informatiesystemen en systemen voor wetenschappelijk rekenen, zijn de eisen die er aan embedded systems worden gesteld ten aanzien van tijdafhankelijk gedrag, correctheid, foutentolerantie, geheugengebruik, bestendigheid tegen onvriendelijke milieus en dergelijke. Uit het voorgaande blijkt dat er tegenwoordig vrijwel geen elektrische apparatuur te bedenken valt waarin geen embedded software wordt toegepast. Dat is heel mooi. Alleen jammer dat bij veel embedded systems het vaak nog niet mogelijk is om de boel efficiënt (dwz zonder schroef- en breekwerk) te updaten. Soms lukt dit wel; bij de pacemaker bijv. is deze ontwikkeling volop gaande. Dit is begrijpelijk en logisch, omdat een operatie behalve ingrijpend ook risicovol is. Dat “openmaken, vervangen en weer dichtdoen” is veelal te duur (vervang liever het hele (deel)systeem, inclusief software, bijvoorbeeld bij defecten), of simpelweg onmogelijk (bijv. bij een satelliet). Ook commerciële redenen spelen vaak een rol: nieuwe software past niet in al wat oudere apparaten, fabrikanten willen hun verkoop stimuleren en letten er lang niet altijd op of de opvolger wel compatibel is met de voorganger. Het gevolg is dat heel veel nog lang niet afgeschreven apparaten toch op de schroothoop belanden. Inmiddels wordt de meeste apparatuur gerecycled (denk aan de verwijderingsbijdrage!).
Falende embedded software kan dramatische gevolgen hebben, zoals bij de Boeing 757 die neerstortte voor de kust van de Dominicaanse Republiek in 1996, of de beroemde Interliner die zijn eigen gang ging in het station van Eindhoven (dat kostte mensenlevens, er waren hoge schadeclaims en hoge reparatiekosten).
Hoofdstuk 7 - Nieuwe ontwikkelingen binnen AI: neurale netwerken Een kunstmatig neuraal netwerk is een netwerk bestaande uit een (groot) aantal kleine simpele verwerkingseenheden, ieder mogelijk met een (kleine) hoeveelheid geheugen. Deze eenheden zijn met elkaar verbonden via een unidirectionaal communicatiekanaal. Unidirectionaal wil zeggen dat de communicatie maar één kant op gaat. De verwerkingseenheden, van een kunstmatig neuraal netwerk, werken alleen met lokale data en met de input die zij ontvangen via de communicatiekanalen. Iedere verwerkingseenheid voert een relatief eenvoudige taak uit, namelijk het ontvangen van signalen van buureenheden of van de buitenwereld, vervolgens een berekening uitvoeren op de binnengekomen signalen om een outputsignaal naar buureenheden of naar de buitenwereld te versturen. Dit systeem is (uiteraard) parallel omdat alle eenheden min of meer tegelijkertijd hun berekeningen kunnen uitvoeren. Binnen een kunstmatig neuraal netwerk onderscheiden we drie type verwerkingseenheden: de inputeenheden, de outputeenheden en de verborgen eenheden. De inputeenheden ontvangen signalen van de buitenwereld, de outputeenheden sturen hun uitvoer naar de buitenwereld terwijl de input- en outputsignalen van verborgen eenheden binnen het neurale netwerk blijven. De bovenstaande beschrijving lijkt redelijk op de wijze waarop neuronen in onze hersenen werken. Zij bestaan uit een cellichaam met een aantal korte uitlopers via welke prikkels /signalen worden aangevoerd en één zeer lange axon. Via het axon kan een neuron signalen doorgeven naar andere neuronen.