Het Elman Netwerk Joris IJsselmuiden Rijksuniversiteit Groningen Mei 2005 INLEIDING Het verschijnsel tijd is een belangrijk onderdeel van veel menselijk gedrag, bij het verwerken van geluid en bewegende beelden spelen tijd reeksen een grote rol. Het gebruik van tijd in neurale netwerken is problematisch. Vaak wordt om het probleem heen gewerkt door de tijd te parallelizeren. Meerdere tijdstappen worden dan tegelijk aangeboden aan het netwerk. Het aantal input neuronen dat nodig zou zijn voor één input vector wordt dus vermenigvuldigd met het aantal tijdstappen dat tegelijk wordt aangeboden. Deze methode heeft echter een aantal nadelen. Ten eerste is de oplossing niet biologisch plausibel. Het spatieel aanbieden van temporele informatie gaat gepaard met buffering, in biologische systemen wordt niet van een buffer gebruik gemaakt. Ten tweede moet elke input sequentie van dezelfde lengte zijn. In de echte wereld wordt niet aan deze eis voldaan, woorden bijvoorbeeld, hebben een variabele lengte. Het niet om kunnen gaan met inputs van variabele lengte is een probleem van neurale netwerken in het algemeen, één van de redenen dat neurale netwerken voor lang niet alle problemen geschikt zijn. Ten slotte is er nog een probleem dat zich het best laat illustreren aan de hand van een voorbeeld. De sequentie (0, 1, 0, 1, 0, 0, 0, 0) is volgens bovenstaande benadering een andere input dan de sequentie (0, 0, 0, 1, 0, 1, 0, 0), terwijl het in werkelijkheid om dezelfde input gaat die twee stappen in de tijd verschoven is. Vanwege deze problemen is het paralellizeren van de tijd niet de beste oplossing. Het is beter om gebruik te maken van een geheugen waarin de toestand van het netwerk wordt opgeslagen. Door dit geheugen in de volgende tijdstap weer aan te bieden als input, kan het neurale netwerk met tijd omgaan. In het artikel van Elman (1990) [1] wordt een neuraal netwerk beschreven waarin een dergelijk geheugen gebruikt wordt. Elman besteedt in dit werk speciale aandacht aan natuurlijke taal verwerking. Het artikel dat voor u ligt is voor een groot deel gebaseerd op het artikel van Elman (1990) [1]. NETWERKEN MET GEHEUGEN Bij de geparallelizeerde representatie van tijd die hierboven is beschreven, wordt tijd behandeld als een expliciet onderdeel van de input. Een andere benadering is om de input vectoren één voor één aan te bieden en dynamische eigenschappen aan het netwerk toe te voegen die reageren op tijd reeksen. Dit kan op vele manieren en er is veel onderzoek naar gedaan. Eén van de meest succesvolle methoden is die van Jordan (1986) [2]. Het Jordan netwerk behoort tot de recurrente netwerken. Deze netwerken danken hun naam aan het feit dat ze beschikken over verbindingen die tegen de normale richting in lopen. Een ander netwerk dat tot deze groep behoort is het Elman netwerk. Beide netwerken zijn gebaseerd op het multi layer perceptron, ze hebben naast de hidden layer en de output layer een zogenaamde context layer. Het belangrijkste verschil tussen Jordan en Elman netwerken is hoe de recurrente verbindinge lopen. Bij Jordan lopen ze van de output layer naar de context layer en bestaat het geheugen uit de vorige output, bij Elman lopen ze van de hidden layer naar de context layer en vormt de vorige interne toestand van het netwerk het geheugen. De recurrente verbindingen zijn niet onderhevig aan leren. In Figuur 1 is een Elman netwerk weergegeven met 2 inputs, 2 output neurons, 4 hidden neurons en 4 context neurons. De standaard taak van Elman netwerken bestaat uit het voorspellen van de volgende input, daarom is het aantal output neurons gelijk aan het aantal inputs. Bovendien is het aantal context neurons gelijk aan het aantal hidden neurons, omdat de context layer steeds de vorige toestand van de hidden layer moet opslaan. output layer hidden layer context layer Figuur 1: Een Elman netwerk met 2 inputs en 4 hidden neurons. Op het eerste gezicht lijkt het alsof er slechts een geheugen is bereikt van één tijdstap, maar door de recurrente eigenschappen bestreikt het geheugen in werkelijkheid meerdere tijdstappen. Dit is makkelijk in te zien als je het netwerk gedurende een aantal tijdstappen observeert. Het netwerk gedraagt zich als volgt. Op tijdstip 0 wordt input 0 aangeboden (een vector van nullen en enen). Deze input bepaalt samen met de context layer activaties in de hidden layer. De outputs van de context neurons zijn geïnnitialiseerd op 0,5, omdat er geen verleden is. De output van de hidden layer wordt doorgegeven aan de output layer. Bovendien wordt de output van de hidden layer gekopiëerd naar de context layer via één-op-één verbindingen, er is van hidden naar context dus geen sprake van full connectivity. Vervolgens vindt er een back propagation leerstap plaats, zoals in een multi layer perceptron. Naast de gewichten tussen input en hidden layer en de gewichten tussen hidden layer en output layer, worden ook de gewichten tussen context layer en hidden layer aangepast. Op tijdstip 1 wordt input 1 aangeboden en het proces herhaalt zich. De input en de context bepalen de activatie van de hidden layer. Dit maal is er wel een verleden in de context layer aanwezig, de hidden layer van de vorige tijdstap is immers opgeslagen. De interne toestand van het netwerk wordt bepaald door de interne toestand in de vorige tijdstap, dus de output is ook afhankelijk van de vorige interne toestand. De hidden layer wordt weer 2 gekopiëerd naar de context, maar let op, daar zit ook activatie bij uit tijdstip 0, dit is waardoor het geheugen meerdere tijdstappen bestreikt. Er vindt weer een leerstap plaats en het hele proces herhaalt zich voor iedere input die wordt aangeboden. EXPERIMENTEN Het XOR probleem Om de werking van het Elman netwerk te begrijpen is het goed om te beginnen met een eenvoudig probleem. Elman heeft hiervoor het XOR probleem in tijd reeksen gegoten. Elke tijdstap representeert de waarheidswaarde van achtereenvolgens de linker operand, de rechter operand en de bijbehorende waarheidswaarde van de XOR operator. Er wordt steeds een enkel bit aangeboden en het doel is om de volgende input te voorspellen. Het netwerk heeft 1 input, 2 hidden neurons, 2 context neurons en 1 output neuron. Een voorbeeld van een input sequentie is | 0, 0, 0 | 1, 0, 1 | 1, 1, 0 | 1, ... Het netwerk heeft geen kennis van het feit dat de input uit groepjes van drie bestaat, laat staan dat het XOR triples zijn (De verticale strepen in het voorbeeld zijn geen onderdeel van de input). De derde input is steeds te voorspellen door een getraind netwerk, die wordt namelijk deterministisch bepaald door de eerste twee inputs. De error is steeds hoog bij het voorspellen van het eerste en tweede bit, omdat die willekeurig gegenereerd zijn, de error is laag bij het voorspellen van het derde bit. Letter sequenties XOR triples kun je zien als woorden van drie letters waar de derde letter wordt bepaald door de eerste twee. Het geheugen van het netwerk hoeft slechts twee tijdstappen te onthouden in zijn gewichtswaardes en er zijn maar vier mogelijke input sequenties. In natuurlijke taal zijn er meer dan twee mogelijke letters, waardoor een input vector langer is. De woorden zijn van variabele lengte en het netwerk moet een geheugen hebben van meer dan twee tijdstappen. Bovendien is er geen sprake van determinisme, er zijn meerdere letters mogelijk na een bepaalde sequentie. Het volgende experiment dat Elman gedaan heeft, komt een stap dichter bij natuurlijke taal, al is er vanaf daar nog een lange weg te gaan. De input bij dit tweede experiment is gegenereerd door 1.000 medeklinkers uit de verzameling {b, d, g} in willekeurige volgorde achter elkaar te zetten. Daarna wordt elke medeklinker voorzien van een vast patroon klinkers, zo ontstaan de woorden {ba, dii, guuu}. De volgorde waarin deze 1.000 woorden voorbij komen is dus willekeurig, maar de medeklinker bepaalt deterministisch de rest van het woord. Een mogelijke input sequentie is diibaguuubadiidiiguuu... Nu rest ons nog het representeren van elke letter afzonderlijk. Een letter is een vector met 6 binaire componenten: (consonant, vowel, interrupted, high, back, voiced) Elke component staat voor een eigenschap van de letter, zo is de eerste component 1 en de tweede component 0 bij alle medeklinkers. Het netwerk bestaat uit 6 inputs, 20 hidden units, 20 context units en 6 output units. Om het netwerk te trainen worden één voor één de letters aangeboden, de taak van het netwerk is om steeds de volgende letter te voorspellen. Door de output vector te vergelijken met de daadwerkelijke volgende letter, kan leren door backpropagation plaatsvinden. In de trainings procedure wordt 200 keer de semi-random sequentie van 1.000 letters doorlopen. Na afloop van deze procedure wordt het netwerk getest op een nieuwe, soortgelijke sequentie. Een stuk van de error curve van de test fase is weergegeven in Figuur 2. Wat meteen opvalt is de op en neer gaande vorm van de curve, dit gedrag zagen we ook bij het XOR experiment en het is opnieuw eenvoudig te verklaren. De klinkers zijn voor 3 het netwerk makkelijk te voorspellen, omdat die direct bepaald worden door de medekliner die eraan vooraf gaat. Tijdens het leren zijn de gewichten zo ingesteld dat het netwerk de volgende letter juist voorspelt, omdat elke input zich aan de hierboven beschreven grammaticale regels houdt. Wat het netwerk niet kan voorspellen zijn de medeklinkers. De volgorde van de medeklinkers is willekeurig en tijdens het leren heeft het netwerk hier dus geen regelmaat in kunnen ontdekken. Dit experiment zou je ook door mensen kunnen laten doen, zonder ze van te voren te vertellen over de grammatica waar de letter sequenties zich aan houden. Na een leer fase zouden mensen de grammatica zelf ontdekken en tijdens de test fase een error grafiek van dezelfde vorm produceren. Als een dergelijk experiment dezelfde resultaten oplevert als het experiment van Elman, zou dat pleiten voor de biologische plausibiliteit van zijn systeem. In Figuur 2 is de error over de hele output vector geplot, je zou ook kunnen kijken naar de error van de 6 losse componenten van de vector. Met deze afzonderlijke errors is iets interessants aan de hand, ze zijn namelijk verschillend en dat is als volgt te verklaren. Elke component representeert een andere eigenschap van de letters. Component 1 geeft aan of een letter een medeklinker is of niet. Het netwerk “weet” hoeveel klinkers er moeten komen na elke medeklinker en voorspelt component 1, consonant, zeer nauwkeurig, waar de error over de hele vector een hoge waarde heeft (word-onset). Wat het netwerk niet kan voorspellen is welke medeklinker het is. Component 6 bijvoorbeeld, of de letter stemhebbend is, vertoont een error gedrag van dezelfde vorm als de gehele vector. g g d RMS error d b i i u u a i a u i u u u input # Figuur 2: Grafiek van de root mean square error over de hele output vector in de letter voorspellingstaak. De labels geven aan wat de correcte output is (volgende letter). Waarden op de y-as tussen 0 en 1, 6D output. Woorden ontdekken Het derde experiment dat in het artikel van Elman [1] behandeld wordt doet nog een stap richting echte natuurlijke taal verwerking, maar het gaat nogsteeds alleen om het voorspellen van de volgende letter, een taak die nog niet echt in de buurt komt van het leren van een taal. Het belangrijkste verschil met het hierboven beschreven experiment is dat het lexicon nu 4 RMS error bestaat uit 15 woorden uit het Engels. Elman gebruikt voor het genereren van de input een programma dat met deze 15 woorden semi-willekeurige zinnen maakt van 4 tot 9 woorden. De volgorde van de woorden is niet volkomen willekeurig, het programma houdt zich qua woordvolgorde aan de Engelse grammatica. Elman gebruikt 200 van dit soort zinnen om het netwerk te trainen, ze vormen een aaneengesloten sequentie van 4963 letters (1270 woorden), waarbij elke letter wordt gerepresenteerd door een willekeurig gekozen 5-bits vector. Het netwerk heeft dus 5 inputs en 5 output neuronen, verder bestaat het uit 20 hidden units en 20 context units. Tijdens het trainen, wordt de hele letter sequentie 10 keer aangeboden. Het testen gebeurt op een andere sequentie die op dezelfde manier gegenereerd is. In Figuur 3 is de RMS error op een stuk van de test sequentie weergegeven, we zien dezelfde op en neer gaande beweging als in Figuur 2, de verklaring van de curve is hier iets ingewikkelder, vanwege de hogere complexiteit van het probleem. Het belangrijkste verschil is dat nu de rest van een woord niet meer deterministisch wordt bepaald door de eerste letter. De error is het hoogst bij de eerste letter van elk woord, want na het einde van een woord zijn er meerdere opvolgers mogelijk. Na de word-onset daalt de curve, de tweede letter van een woord is beter te voorspellen dan de eerste, de derde is beter te voorspellen dan de tweede, enzovoort. De verklaring hiervoor is eenvoudig,: Hoe meer letters je van een woord kent, hoe groter de kans dat je de volgende letter ook weet. Er zijn bewust woorden in het lexicon opgenomen waarvan het begin op elkaar lijkt. Als we proefpersonen hetzelfde zouden laten doen, krijgen we waarschijnlijk eenzelfde vorm in de error curve te zien, net als bij het vorige experiment. Opnieuw zijn de resultaten van het Elman netwerk natuurgetrouw. ma ny y e a r s a g o a b oy a n d g i r l l i v ed b y t h e s e a th e y p l a y e d h a p p i l y input # Figuur 3: Grafiek van de root mean square error over de hele output vector in de letter-in-woord voorspellingstaak. De labels geven aan wat de correcte output is (volgende letter). Waarden op de y-as tussen 0 en 3,5, 5D output. Woordvolgordes voorspellen In plaats van het leren van letter-volgorde zijn we nu geïnteresseerd in woord-volgorde. In natuurlijke taal zijn er allerlei beperkingen op de volgorde waarin woorden in een zin mogen 5 staan. Deze beperkingen zijn per taal verschillend, maar Chomsky (1957) heeft aangetoond dat alle talen zich “onder water” aan een universele grammatica houden, ook al is de uiteindelijke woordvolgorde verschillend per taal. Inmiddels is er een nieuwe speler op het taal-toneel verschenen, de optimality theory. Deze wetenschappelijke ontwikkeling lijkt op de Newtoniaanse natuurkunde die verdrongen wordt door relativiteitstheorie en quantum mechanica, omdat de Newtoniaanse natuurkunde, net als de Chomskiaanse taal-theorie, bepaalde verschijnselen niet kan verklaren. Dat wil niet zeggen dat de theorieën van Newton en Chomsky ineens hun wetenschappelijke waarde zijn verloren. De vraag die Elman probeert te beanwoorden is of een PDP netwerk (parallel distrubuted processing) een (universele) grammatica kan leren, of dat daar symbolische representaties voor nodig zijn. Aangezien ons brein gebruik maakt van parallel gedistribueerde verwerking moet het in principe mogelijk zijn. De nadruk van dit experiment ligt dus op de biologische plausibiliteit. Voor de input wordt weer gebruik gemaakt van een zinnen-generator. Een zin bestaat uit twee of drie woorden en er zijn 29 verschillende woorden, onderverdeeld in 13 klasses (Tabel 1). Deze klasses worden samen met een set sentence-templates (Tabel 2) gebruikt om 10.000 semi-willekeurige zinnen te genereren. In dit experiment worden hele woorden aan het netwerk aangeboden in plaats van letters. Een woord bestaat uit een 29-bits vector, waarvan steeds maar één bit tegelijk aan is. Bijvoorbeeld woman: (00000000000000000000000000010). Deze omslachtige representatie is gekozen om te zorgen dat er geen correlatie bestaat tussen de verschillende woorden, alle vectoren staan loodrecht op elkaar in de 29 dimensionale ruimte. De vector bevat dus geen informatie over welke woorden op elkaar lijken qua letters of qua betekenis, het netwerk moet namelijk zelf dit soort correlaties ontdekken door te trainen op de testset. De zinnen-generator maakt 10.000 zinnen (27.534 woorden) waarin geen grenzen zijn aangegeven tussen de verschillende zinnen. Het netwerk bevat 29 inputs en 150 hidden units en het wordt getraind door 6 maal de sequentie van 27.534 29-bits vectoren te doorlopen. Categorie voorbeeld NOUN-HUM man, woman NOUN-ANIM cat, mouse NOUN-INANIM book, rock NOUN-AGRESS dragon, monster NOUN-FRAG glass, plate NOUN-FOOD Cookie VERB-INTRAN think, sleep VERB-TRAN see, chase VERB-AGPAT move, break VERB-PERCEPT smell, see VERB-DESTROY break, smash VERB-EAT eat Tabel 1: Woord categoriën met voorbeelden die gebruikt worden door de zinnen-generator. Het netwerk heeft geen kennis van deze indeling. 6 WOORD 1 WOORD 2 NOUN-HUM VERB-EAT NOUN-HUM VERB-PERCEPT NOUN-HUM VERB-DESTROY NOUN-HUM VERB-INTRAN NOUN-HUM VERB-TRAN NOUN-HUM VERB-AGPAT NOUN-HUM VERB-AGPAT NOUN-ANIM VERB-EAT NOUN-ANIM VERB-TRAN NOUN-ANIM VERB-AGPAT NOUN-ANIM VERB-AGPAT NOUN-INANIM VERB-AGPAT NOUN-AGRESS VERB-DESTROY NOUN-AGRESS VERB-EAT NOUN-AGRESS VERB-EAT NOUN-AGRESS VERB-EAT Tabel 2: Templates die gebruikt worden door de zinnen-generator. WOORD 3 NOUN-FOOD NOUN-INANIM NOUN-FRAG NOUN-HUM NOUN-INANIM NOUN-FOOD NOUN-ANIM NOUN-INANIM NOUN-FRAG NOUN-HUM NOUN-ANIM NOUN-FOOD De output van een goed getraind netwerk heeft output-componenten die recht evenredig zijn met de frequenties van voorkomen van een woord (29 componenten voor 29 frequenties van woorden), gegeven de zin tot nu toe, terwijl de target-outputs vectoren zijn waarvan één bit aan staat en de rest uit.Voor het trainen is dat geen probleem en wordt de output vector gewoon vergeleken met de letter die het netwerk had moeten voorspellen. Voor de prestatiemaat is deze vergelijking echter niet zinvol. Daarom is er een andere methode gebruikt. De output vector wordt vergeleken met een vector die de frequentie van elk woord weergeeft, gegeven de zin tot nu toe. Deze vector is dus een Bayesiaanse kansverdeling, verkregen uit het training corpus (10.000 zinnen), de som van de componenten van deze vector is 1, de som van de componenten van de output vector niet. Het netwerk presteert goed als elke output vector recht evenredig is met de Bayesiaanse kans vector, beide vectoren moeten dus de zelfde richting hebben, maar niet dezelfde lengte. De RMS error op de testset is gemiddeld 0,053, met een standaard deviatie van 0,100. De error is het hoogst bij het voorspellen van het eerste woord van een zin. Naast de vergelijking van de output van het netwerk met de statistiek van de training set heeft Elman de interne toestanden (hidden layer activatie) van het netwerk geanalyseerd. De resultaten van deze analyse laten zien dat de interne representaties van de woorden hierarchisch gerangschikt zijn op een zeer natuurlijke manier. Met behulp van hierarchische cluster analyse is Figuur 4 tot stand gekomen, de natuurlijke indeling spreekt voor zichzelf. Om helemaal uit te wijden hoe dat werkt, gaat te ver, het komt erop neer dat hidden layer activaties die veel op elkaar lijken, dicht bij elkaar zitten in de boom. Het netwerk heeft interne representaties ontwikkeld voor de input vectoren die feiten weerspiegelen over de mogelijke woordvolgordes in de training corpus. Er is bijvoorbeeld een klasse van inputs, namelijk VERB-*, die vaak gevolgd worden door een andere klasse, namelijk NOUN-*. 7 Figuur 4: De hierarchisce structuur van de interne representatie van elk woord. Elman heeft zijn hierarchisce cluster analyse tot in het extreme doorgevoerd, in Figuur 5 is het resultaat hiervan te zien. De bladeren van de boom zijn nu woorden in een bepaalde context. Een woord heeft namelijk meerdere interne representaties, één voor elke context waarin het woord kan voorkomen, de context layer staat immers ook in verbinding met de hidden layer. In Figuur 4 zijn de woorden de bladeren van de boom, maar de vertakking gaat in werkelijkheid verder. De verdere vertakking van de woorden “boy” en “girl” is in Figuur 5 weergegeven. Deze twee woorden behoren tot dezelfde categorie en ze komen dus voor in dezelfde zinnen. De verdere vertakking van de hierarchische structuur is voor deze twee woorden ongeveer hetzelfde. Dit resultaat is gunstig voor de biologische plausibiliteit van het Elman netwerk. 8 Figuur 5: De verdere vertakking van de interne representaties van de woorden in verschillende context. CONCLUSIES Door het onderzoek van Elman, is de methode van paralellizeren (spatieel aanbieden) van temporele informatie verder ontkracht. Het is niet alleen onnatuurlijk, ook uit een engineering perspectief is het niet de beste oplossing. Door gebruik te maken van een context layer kunnen input sequenties van verschillende lengte verwerkt worden en wordt er geen gebruik gemaakt van buffering. Verder blijkt uit het laatste experiment over woordvolgorde dat een Elman netwerk de klasse kan voorspellen van het woord dat komt, maar niet het woord zelf. Dit resultaat is naar verwachting, omdat er in het training corpus steeds meerdere opvolgers mogelijk zijn. Het resultaat is bovendien natuur getrouw. 9 In praktijk is het Elman netwerk niet echt interessant voor engineers. In het domein van de natuurlijke taalverwerking winnen de hidden-Markov-modellen het van de neurale netwerken. Het Elman netwerk bereikt wel zijn doel als onderzoeksmiddel. Met het Elman netwerk kunnen voorspellingstaken uitgevoerd worden, om vervolgens de resulaten te vergelijken met die van proefpersonen. De belangrijkste conclusie uit het werk van Elman, is dat sub-symbolische systemen hierarchische structuren en verwachtingspatronen kunnen leren uit temporele informatie. REFERENTIES Dit artikel is hoofdzakelijk gebaseerd op de volgende bron: [1] Elman J.L. (1990) Finding structure in time. Cognitive science 14, 179 – 211 Naast deze hoofdbron is gebruik gemaakt van het volgende: [2] Jordan M.I. (1986) Serial order: A parallel distributed processing approach (Tech. Rep. No. 8604). San Diego: University of California, Institute for Cognitive Science [3] “Elman net” in Google, Google scholar en Google image search 10