omslag

 

Het januarinummer 2002 (omslag op de afbeelding) bevat de volgende artikelen:

  • Robosail as a Machine Learning Project, door prof. P. Adriaans
    Robosail is een zelflerend systeem voor de besturing van een zeewaardig zeiljacht. In dit engelstalige artikel (in interview-vorm) wordt globaal uitgelegd hoe het werkt. Ook wordt er meer in het algemeen gekeken naar de mogelijkheden en beperkingen van dergelijke systemen.
  • Artificiële Immuunsystemen, door Mannes Poel
    Veel ontwikkelingen in de AI zijn "afgekeken" van de natuur. Een van de nieuwste inspiratiebronnen is het immuunsysteem dat gewervelde dieren beschermt tegen infecties. De auteur beschrijft kort het natuurlijke immuunsysteem, en geeft aan waar enkele mogelijke toepassingsgebieden liggen.
  • Computer Immunology, door Stephanie Forrest, Steven A. Hofmeyr en Anil Somayaji In dit engelstalige artikel, eerder verschenen in CACM Vol.40 No.10, wordt beschreven hoe een kunstmatig immuunsysteem kan worden gebruikt om computersystemen te beveiligen.

Verder in dit nummer de uitslag van de enquete uit het julinummer, het beleids- en werkplan 2002 van het bestuur, projektgroepennieuws en -oproepen, en stukjes van redactie en bestuur.

 

Artikel uit Kennisgeving, jrg. 9, nr 2, november 1996, pp. 4-5

Een bijzondere vorm van programmeren.

'Tusschen droom en daad staan wetten in den weg en praktische bezwaren.' Willem Elsschot

In het boekje 'Over Micro-Elektronica' van Hans de Witte, uitgegeven door de Staatsuitgeverij in 1980, staat op blz.20 de volgende zin: "Microprocessoren kunnen de opgeslagen informatie foutloos en snel bewerken, zij het uitsluitend op basis van een programma dat in het algemeen door mensen moet zijn gemaakt.'

Het opmerkelijke in deze uitspraak is dat de mogelijkheid dat het programma anders dan door mensen moet zijn gemaakt niet geheel wordt uitgesloten.

Men kan zich voorstellen dat in een BASIC-programma een BASIC-regel wordt gegenereerd en in een stringvariabele wordt opgeslagen. Nu is het probleem van BASIC dat deze string wel op het scherm kan worden afgedrukt, maar niet kan worden uitgevoerd. Met andere woorden de aanwezige BASIC-interpreter is niet bereikbaar. Een oplossing zou zijn een BASIC-interpreter in BASIC te schrijven. Echter het is zelfs theoretisch de vraag of een volledige BASIC-interpreter, die ook nog de variabelen met de oorspronkelijke interpreter moet delen, in BASIC geschreven kan worden. Wel is het mogelijk de bestaande interpreter uit te breiden met een statement 'DO <stringexpressie>'. Dit laatste heb ik bij mijn in 1979 aangeschafte EXIDY-computer gedaan door de BASIC-interpreter te disassembleren, een stukje code toe te voegen en vervolgens weer te assembleren. (1984)

Een van de redenen om dit DO-statement te implementeren wordt hieronder weergegeven. De twee stel BASIC-regels doen hetzelfde, mits de invoer aan de gestelde voorwaarden voldoet.


10 rem Voorbeeld 1
20 clear999
30 print"Voer een num. expressie in met de tekens";
35 print" 0 t/m 9 en + en -."
40 AA$="":input"??? ";AA$
50 B=0
60 P=pos(2,AA$,"+"):Q=pos(2,AA$,"-")
65 ifP>QthenR=P:P=Q:Q=R
70 ifP=0thenP=Q:ifP=0thenB=B+val(AA$):goto90
80 B=B+val(left$(AA$,P-1)):AA$=mid$(AA$,P):goto60
90 print"Het resultaat is "B:goto30


100 rem Voorbeeld 2
110 clear999
120 print"Voer een num. expressie in met de tekens";
125 print" 0 t/m 9 en + en -."
130 AA$="":input"??? ";AA$
140 do"B="+AA$
150 print"Het resultaat is "B:goto120

De vergelijking van de regels 50 t/m 80 met 140 laat zien hoe krachtig dit DO-statement is.
Toen ik in 1992 een 'echte' PC aanschafte miste ik bij QBASIC en ook bij batch-programma's een soortgelijke mogelijkheid.

Het DO-statement is te vergelijken met het EVAL-statement in LISP. In het boek LISP van P.H. Winston en B.K.P. Horn wordt in het geheel geen aandacht geschonken aan het bijzondere van het EVAL-statement.

Een vluchtige oriëntatie bij de Open Universiteit (open dag 1994) en de Universiteit van Amsterdam (voorlichtingsdag 1996) om achter de theorie van een en ander te komen had tegen mijn verwachtingen in geen resultaat. Bij de hierboven genoemde voorbeelden koos men zonder meer voor voorbeeld 1, het voorbeeld met het DO-statement vond men niet correct. Ik kreeg de indruk dat bij deze instellingen dit (nog) niet als een wetenschappelijk probleem herkend wordt.

Ook in de literatuur wordt, bij de beschrijving van de Turing-machine, geen gewag gemaakt van de mogelijkheid dat de machine zijn eigen programma beïnvloedt.

Het is misschien ook wel begrijpelijk dat de wetenschap dit over het hoofd ziet, immers de theorie over computers dateert van zestig jaar geleden toen de voorhanden zijnde techniek duur, traag en onbetrouwbaar was. Pas met de moderne computer werd het concept van stored-program gerealiseerd. Voor die tijd was het programma opgenomen in de hardware. Ter verduidelijking, bij stored-program staan niet alleen de gegevens (data), maar ook het programma in het computergeheugen.

Mijn eigen kijk hierop is het volgende.

Een BASIC-interpreter kan ook gezien worden als een subroutine die een BASIC-statement, een BASIC-regel of een BASIC-programma als argument meekrijgt. Er is niets op tegen dat deze subroutine vanuit diezelfde subroutine wordt aangeroepen. Dat wordt ook wel recursieve aanroep genoemd. Was de theorie van de informatica misschien al helemaal afgerond, nu kan een heel nieuw terrein betreden worden. Dat deze vorm van recursie bij BASIC mogelijk is komt doordat BASIC de stringvariabele kent. In een string laat zich met gemak een BASIC-statement of -regel opslaan. Het wordt nu ook duidelijk dat het begrip taal uit twee delen bestaat:

  1. De statements, die aaneengeregen kunnen worden tot een programma.
  2. De interpreter(-subroutine), die opnieuw in twee delen gesplitst kan worden, eventueel enz. enz., totdat het hardwareniveau bereikt wordt.

Maar omgekeerd kan met het DO-statement taal gecreëerd worden met als interpreter een BASIC-programma.

Een ander probleem met eenzelfde soort oplossing kan wat meer duidelijkheid verschaffen. Een eenvoudige computer (bijv. de EXIDY of TRS80) start bij het aanzetten met een MONITOR-programma waarin verschillende commando's kunnen worden uitgevoerd. Met een van die commando's is ook BASIC bereikbaar. Vanuit BASIC kan weer teruggegaan worden naar de MONITOR met het commando 'BYE'. Met een aanpassing in de BASIC-interpreter is het statement 'BYE <string-expressie>' mogelijk. Het MONITOR-commando in de string-expressie wordt dan door de MONITOR-interpreter uitgevoerd en hierna wordt de uitvoering van het BASIC-programma voortgezet. De inhoud van de stringexpressie wordt volledig door het BASIC-programma bepaald. In het BASIC-statement staat bijvoorbeeld


bye"SA "+NM$+" 8000 "+L$

In NM$ staat 'ABCDE' en in L$ '9EFF'. De MONITOR voert dan het commando 'SA ABCDE 8000 9EFF' uit. (Schrijf de inhoud van de geheugenplaatsen 8000H t/m 9EFF weg naar het externe opslagmedium en geef ze daar de naam ABCDE.)

Het behoeft geen betoog dat het niet eenvoudig is om hetzelfde zonder BYE-statement te programmeren.

De statements 'BYE <stringexpressie> en 'DO <stringexpressie>' zijn wat werking betreft gelijk. BYE en DO hebben als interpreter respectievelijk de MONITOR en BASIC. Bij 'DO' wordt gesproken van recursie omdat 'DO' van BASIC naar BASIC werkt. 'BYE' zowel als 'DO' hebben iets van het 'RUN'-statement, het commande opgeslagen in de string wordt uitgevoerd, 'de gedachte wordt daad'.

Het was een groot gemis dat een MONITOR-commande of een los BASIC-statement of -regel alleen via het toetsenbord uitgevoerd kon worden.

Leek het principe van stored-program al een overeenkomst met het menselijk brein te hebben, bij de vorm van programmeren met het DO-statement dringt zich dat nog sterker op.

Het principe van het DO-statement kan wellicht de grondslag vormen voor een programma om het menselijk redeneren te imiteren.

Voor kunstmatige intelligentie kan dit DO-statement bijvoorbeeld gebruikt worden om een door een genetisch algoritme gegenereerde formule te testen.

Het is niet uitgesloten, dat een computerprogramma door dit DO-statement volkomen autonoom (zelfstandig) wordt. Dit kan een gevaar worden bij robotachtige toepassingen. Het is al voorgekomen dat mensen per ongeluk door een robot gedood werden. Met dit DO-statement is 'moord met voorbedachte rade' door de robot te verwachten.

Kortom met de hier beschreven vorm van programmeren kan de computer een geduchte concurrent voor de mens worden.

[Hoewel hier op eenvoudige wijze het nut van het 'DO-statement' is geschetst, raakt deze kwestie waarschijnlijk de grondslagen van de wiskunde en informatica. Ik vermoed dat een en ander samenhangt met de 'grundlagenstreit' die zich in het begin van de twintigste eeuw tussen wiskundigen van naam afspeelde. Gezien de vaak enigzins emotionele reactie die ik krijg bij de demonstratie van het DO-statement, is die strijd nog altijd actueel.]

Henk Palstra

LITERATUURLIJST

  1. Hans de Witte
    Over Micro-elektronica
    Staatsuitgeverij 1980
    ISBN 90 12 62871 X
  2. David Harel
    Algoritmiek, de essentie van de informatica
    Academic Service 1989
    ISBN 90 6233 328 1
  3. Patrick Henry Winston en Berthold Klaus Paul Horn
    LISP
    Addison-Wesley 1981
    ISBN 0-201-08329-9
  4. D. van Dalen
    Filosofische gronslagen van de wiskunde
    Van Gorkum, Assen/Amsterdam 1978
    ISBN 90 232 1540 0
Artificiële Intelligentie gebruikersgroep (AIgg)

Artikel uit Kennisgeving, jrg. 4, nr 2, juli 1991, pp. 12-15

titel

Reinforcement Learning

In de serie machine learning is het deze keer de beurt aan Aad Hogervorst. In dit artikel wordt reinforcement learning beschreven, een algoritme met als kenmerk dat terugkoppeling plaatsvindt op basis van zeer weinig informatie. Deze informatie komt bovendien pas na meerdere tijdsstappen ter beschikking.

Inleiding.

Er bestaan diverse typen neurale netwerken. Het meest populaire neurale netwerk is het type dat leert d.m.v. het zogenaamde backpropagationalgoritme. Dit algoritme is reeds in Kennisgeving (september 1990) beschreven door Bert Grootjans en gaat er van uit dat concrete voorbeelden aan het netwerk worden aangeboden. Elk voorbeeld bestaat uit een input (een patroon van activiteitswaarden van de inputneuronen) in combinatie met de gewenste output (activiteitswaarden van de outputneuronen). Het backpropagationalgoritme past bij elke presentatie van een voorbeeld de verbindingsgewichten tussen de neuronen aan. Op deze wijze lijkt de output van het netwerk steeds meer op de gewenste output.

Echter niet voor alle situaties is het populaire backpropagationalgoritme bruikbaar. Dit is bijvoorbeeld het geval als een neuraal netwerk voor elk van een aantal achtereenvolgens aangeboden inputs een output moet genereren voordat duidelijk is of een beoogd doel bereikt wordt of niet. ln plaats van telkens de gewenste output ter beschikking te hebben, is nu slechts bekend of de serie outputs als geheel goed genoeg was of niet. Dat levert niet veel informatie op voor het algoritme dat de verbindingsgewichten zodanig moet aanpassen dat het netwerk de volgende keer een beter resultaat geeft. Het is enerzijds onbekend welke outputs een (on)gunstige invloed op het totale resultaat hebben gehad en anderzijds is voor elk van de geleverde outputs onbekend welke outputneuronen wel of niet een goede waarde hadden. Dat op basis van gebrekkige informatie toch leeralgoritmen mogelijk zijn, wordt geïllustreerd door het volgende voorbeeld.

Rode of groene plant

In dit voorbeeld beweegt een zeer simpele "muis" zich voort met een constante snelheid in een vlakke ruimte, die omgeven is door een zwart gekleurde wand. In deze ruimte zijn verder nog twee planten aanwezig, namelijk een groene en een rode. De groene plant is lekker, de rode vies. De muis heeft twee ogen, met in elk oog twee lichtgevoelige cellen, één voor groen licht en één voor rood licht. Figuur 1 toont de vaste kijkrichtingen van de ogen, en de gevoeligheid van de ogen als functie van de invalshoek van het licht. Deze gevoeligheid is voor beide kleuren gelijk.

 

 

afb1Afbeelding 1: De vaste kijkrichtingen van de ogen van de muis en de gevoeligheid (L, voor beide kleuren gelijk) van de beide ogen als functie van de hoek van de lichtinval.

 

Elke lichtgevoelige cel is verbonden met een inputneuron van het neurale netwerk van de muis (zie figuur 2). Het signaal dat een lichtgevoelige cel afgeeft aan het corresponderende neuron is evenredig met de hoeveelheid licht die het detecteert. Het neurale netwerk van de muis heeft dus vier inputneuronen. Deze inputneuronen zijn door middel van vaste (niet door het leeralgoritme te beïnvloeden) koppelingsgewichten (+0.5 of -0.5) verbonden met de neuronen in de tweede laag. De koppelingsgewichten tussen de neuronen in de tweede laag en de outputneuronen hebben een beginwaarde 0. Het leeralgoritme moet ervoor zorgen dat deze koppelingsgewichten zinvolle waarden krijgen.

 

 

afb2Afbeelding 2: Het neurale netwerk van de muis. De koppelingsgewichten zijn aangegeven met pijlen en de verbindingslijnen tussen de neuronen (vierkanten).

 

Muisbesturing

Het neurale netwerk is een zogenaamd feedforward netwerk. Dat wil zeggen dat de activiteiten van de neuronen in de tweede laag alleen afhangen van de activiteitswaarden van de inputneuronen, en dat de activiteitswaarden van de outputneuronen alleen afhangen van de activiteitswaarden van de neuronen in de tweede laag. De activiteitswaarde van elk neuron wordt op de gebruikelijke manier berekend: de activiteitswaarden van de relevante neuronen in de erboven gelegen laag worden vermenigvuldigd met de corresponderende koppelingsgewichten, en de som hiervan geeft na transformatie de gezochte activiteitswaarde.

Deze transformatie wordt verzorgd door de zogenaamde "neuron transfer functie" (zie figuur 3). De neuron transfer functie zorgt ervoor dat de activiteitswaarden altijd tussen -1 en +1 liggen. Alleen voor de outputneuronen wordt nog een random getal tussen -0.05 en +0.05 opgeteld bij de som voordat de transformatie plaatsvindt. Voor elk inputneuron geeft het signaal van de corresponderende lichtgevoelige cel na transformatie door de neuron transfer functie de activiteitswaarde. Omdat de hoeveelheid licht die op een lichtgevoelige cel valt per definitie positief is, is de activiteitswaarde van een inputneuron altijd positief.

 

 

afb3Afbeelding 3: De "neuron transfer functie" (S) geeft de activiteitswaarde van een neuron als funktie van de gewogen som (P) van de activiteitswaarden van de neuronen in de erboven liggende laag.

 

De richting waarin de muis zich beweegt hangt af van de activiteitswaarden van de twee outputneuronen van het netwerk. Als het linker outputneuron een grotere activiteitswaarde heeft dan de rechter, dan stuurt de muis zijn richting bij naar links; als het rechter outputneuron een grotere activiteitswaarde heeft, dan draait de muis naar rechts. De mate van bijsturing is groter naarmate het verschil tussen beide activiteitswaarden groter is.

Simulatie.

De simulatie van de verplaatsingen van de muis gaat als volgt. Eerst wordt berekend hoeveel licht er op de vier lichtgevoelige cellen in de ogen van de muis valt. Op basis daarvan worden de activiteitswaarden van de neuronen in de drie opeenvolgende lagen berekend, om vervolgens de aanpassing van de bewegingsrichting van de muis te kunnen bepalen. Als laatste stap wordt de muis in de nieuwe richting gedraaid, en een zekere afstand in die richting verplaatst. In de nieuwe positie wordt weer berekend hoeveel licht er op de lichtgevoelige cellen valt, etc. Als de muis een wand bereikt, wordt de bewegingsrichting zo veranderd, dat de muis als het ware door de wand teruggekaatst wordt. Hetzelfde wordt gedaan als de muis een plant bereikt: de muis kaatst dan als een rubber balletje verder.

Aanpassing koppelingsgewichten

Het is de bedoeling dat het leeralgoritme de koppelingsgewichten tussen de neuronen in de tweede laag en de outputneuronen zodanig wijzigt, dat de muis zoveel mogelijk naar de lekkere groene plant toegaat, en de vieze rode plant mijdt. Het leeralgoritme moet dit doen op basis van summiere informatie. Alleen als de muis een van beide planten bereikt, is bekend of de voorafgaande acties van het netwerk een gunstig (groene plant bereikt) of een ongunstig resultaat (rode plant bereikt) hebben. In het eerste geval wordt de muis als het ware beloond (lekker), en in het tweede geval gestraft (vies). Deze informatie wordt in het Engels "reinforcement" (in het Nederlands: bekrachtiging) genoemd, en het leren op basis hiervan "reinforcement learning" (leren op basis van bekrachtiging).

Het leeralgoritme dat de koppelingsgewichten in de goede richting wijzigt wordt als volgt verklaard. Terwijl de muis zich verplaatst, wordt voor elk te wijzigen koppelingsgewicht een soort correlatie bijgehouden van de activiteiten van de beide neuronen. Deze correlatie is positief als de beide activiteitswaarden overwegend hetzelfde teken hebben, negatief als ze overwegend tegengesteld van teken zijn. De correlatie wordt berekend door in elke simulatiestap de oude waarde van de correlatie te vermenigvuldigen met een positief getal kleiner dan 1 (0.9), en vervolgens het produkt van beide activiteitswaarden erbij op te tellen. Op deze manier wordt de correlatie vooral door de meest recente stappen bepaald.

Als de muis een plant bereikt, wordt elk vrij koppelingsgewicht gewijzigd door er het produkt van de betreffende correlatie en een klein positief getal (0.01) bij op te tellen (groene plant) of van af te trekken (rode plant). In het eerste geval zal de kans groter zijn dat in het vervolg de correlaties hetzelfde teken hebben als op dit moment, en zal de kans dat de muis nogmaals naar de groene plant loopt groter zijn. Hierbij zijn vooral de koppelingsgewichten betrokken die met de groene kleur te maken hebben, omdat voornamelijk deze kleur is waargenomen vlak voor het bereiken van de groene plant. In het tweede geval is de kans juist kleiner geworden dat de correlaties weer hetzelfde zullen worden, en zal de kans op hetzelfde resultaat (de rode plant bereiken) kleiner zijn. Hierbij zijn vooral de "rode" koppelingsgewichten betrokken. Het resultaat van het leeralgoritme is dat de muis een steeds sterkere neiging krijgt om naar de groene plant toe te gaan, en om de rode plant te mijden.

Kanttekeningen

Omdat de muis op een gegeven moment nauwelijks meer de rode plant bereikt, zullen de koppelingsgewichten die betrekking hebben op deze kleur niet sterk meer wijzigen. De koppelingssterkten die met de groene kleur te maken hebben, veranderen echter steeds sterker: de bij deze koppelingsgewichten behorende correlaties zullen steeds sterker worden, en de groene plant wordt steeds vaker bereikt. Het gevolg van het onbegrensde groeien van de koppelingsgewichten is dat de richtingsveranderingen zo groot worden, dat de muis de groene plant telkens uit het oog verliest, en de groene plant wordt dan steeds minder bereikt. Deze tekortkoming van het leeralgoritme wordt in de simulatie gemaskeerd door de koppelingsgewichten te begrenzen tussen -0.5 en +0.5.

Na de hierboven gegeven beschrijving van het leeralgoritme zal het duidelijk zijn waarom gekozen is om de activiteitswaarden van de outputneuronen mede te laten bepalen door de random getallen tussen -0.05 en +0.05. Zonder deze ruis zouden de activiteitswaarden van de outputneuronen steeds 0 zijn omdat de koppelingsgewichten tussen deze neuronen en de neuronen in de tweede laag startwaarden 0 hebben. Dit betekent dat de correlaties steeds 0 zouden blijven en er dus geen wijzigingen van de koppelingssterkten zouden plaats vinden.

De tweede laag neuronen geeft eigenlijk een soort vertaling van de oorspronkelijke input, en zijn dus eigenlijk de echte inputneuronen. Met betrekking tot het leren is het netwerk dus eigenlijk een netwerk met alleen input- en outputneuronen. Het leren is in een dergelijk netwerk een stuk makkelijker dan in een netwerk waarin verborgen neuronen (neuronen die geen input- of outputneuronen zijn) aanwezig zijn, maar de mogelijkheden ervan zijn beperkter. Een netwerk met alleen input- en outputneuronen kan bijvoorbeeld nooit leren om wel naar groene en rode planten toe te gaan, maar niet naar een bruine plant (of een plant met zowel rode als groene blaadjes). Deze handicap wordt wel het XOR-probleem genoemd (naar de wiskundige formule die dit keuzevoorschrift weergeeft: eXclusive OR).


Aad Hogervorst was al in 1991 actief in de werkgroep Neurale Netwerken. Het programma van zijn hand, waarin de in dit artikel beschreven muis gesimuleerd werd (MOUSE8.EXE) was destijds tesamen met de Pascal source verkrijgbaar op een van de AIgg PD diskettes.


Terug naar informatiepagina Kennisgeving

Kennisgeving juli 2001

Het julinummer 2001 (omslag op de afbeelding) bevat de volgende artikelen:

  • Neural Vision 2.0: Visualisatie en Data-analyse met Neurale Netwerken, door Michiel van Wezel
    Neural Vision is een computerprogramma dat complexe gegevensverzamelingen zo op het computerscherm projecteert, dat het menselijk oog er patronen en strukturen in kan ontdekken. Het programma voert feitelijk een statistische analyse uit met behulp van neurale netwerken, en in dit artikel wordt uitgelegd hoe dat in zijn werk gaat.
  • Probabilistische netwerken, door Erica C. van de Stadt
    Een belangrijk probleem in de AI is hoe kennis vast te leggen en te gebruiken in redeneringen en beslissingen. Wanneer die kennis gepaard gaat met onzekerheid is dat een extra complicatie. In dit artikel wordt aan de hand van een eenvoudig medisch voorbeeld uitgelegd hoe probabilistische netwerken hierbij uitkomst kunnen bieden.
  • Van BEAM tot B+AL.ANS: de gedachtengang achter enkele robots, door Abraham Vreugdenhil
    Abraham is lid van de HCC Robotica g.g. en staat bekend om zijn originele robots. Hij vertelt hier hoe hij aan zijn interessante ideeën kwam en hoe hij ze heeft uitgewerkt.

Verder in dit nummer nieuws van de projektgroepen, een enquete waarin het bestuur en de redactie van Kennisgeving om uw mening en ideeën verzoeken, een uitnodiging van Patrick Molenaar om eens een kijkje te nemen op zijn homepage, en een stukje waarin het bestuur de uitgangsgedachten voor het beleid uiteenzet.

Kennisgeving maart 2001

Het maartnummer 2001 (omslag op de afbeelding) bevat de volgende artikelen:

  • Van gekoppelde slingers tot galopperende paarden, door Ko van der Weele
    Het besturen van bewegingen is vanouds een belangrijk onderwerp in de AI. Daarbij is het altijd een goed idee om gebruik te maken van wet- en regelmatigheden in de uit te voeren bewegingen. In dit artikel wordt onderzocht welke patronen er bestaan in de voortbeweging van dieren, en hoe we die patronen kunnen verklaren.
  • Evolutionaire algoritmen voor het oplossen van economische problemen, door David van Bragt en Han La Poutré
    In dit artikel een uitleg van evolutionaire modellen en toepassing daarvan op economische markten.
  • Wilt U witte of zwarte dozen?, door Martijn van Veelen
    De auteur vergelijkt voor ons twee methoden voor spraakherkenning: Hidden Markov Models en Neurale Netwerken.
  • Fuzzy Logic: logisch of vaag?, door R.B.J. Pijlgroms
    In dit artikel wordt op een duidelijke manier, mede aan de hand van vele verhelderende figuren, uitgelegd wat Fuzzy Logic precies is en wat je er mee kunt doen.

Verder in dit nummer een korte AI-toelichting van Rob Langeveld op het eerste artikel, een oproep van Dolf Eijkelboom aan alle AIgg-leden, en een kort projektgroepverslag door Gerard Vriens.